Skip to content

Commit

Permalink
Add a WKWebPushToolMain for webpushtool to use
Browse files Browse the repository at this point in the history
https://bugs.webkit.org/show_bug.cgi?id=261235
rdar://115079480

Reviewed by Tim Horton and Andy Estes.

Upcoming webpushtool work requires its code to be part of the WebKit build, as opposed to it being a WebKit client.
So let's make it use WKMain like our daemons do.

* Source/WebKit/Configurations/WebKit.xcconfig:
* Source/WebKit/Configurations/webpushtool.xcconfig:
* Source/WebKit/Shared/API/Cocoa/WKMain.h:
* Source/WebKit/Shared/API/Cocoa/WKMain.mm:
(WKWebPushToolMain):
* Source/WebKit/WebKit.xcodeproj/project.pbxproj:
* Source/WebKit/webpushd/webpushtool/WebPushToolMain.h: Copied from Source/WebKit/Shared/API/Cocoa/WKMain.h.
* Source/WebKit/webpushd/webpushtool/WebPushToolMain.mm:
(WebKit::WebPushToolMain):
(main): Deleted.
* Source/WebKit/webpushd/webpushtool/webpushtool.cpp: Copied from Source/WebKit/Shared/API/Cocoa/WKMain.mm.
(main):

Canonical link: https://commits.webkit.org/267714@main
  • Loading branch information
beidson committed Sep 7, 2023
1 parent 9d73c49 commit a12bd84
Show file tree
Hide file tree
Showing 8 changed files with 111 additions and 37 deletions.
6 changes: 5 additions & 1 deletion Source/WebKit/Configurations/WebKit.xcconfig
Original file line number Diff line number Diff line change
Expand Up @@ -202,7 +202,11 @@ WK_NETWORK_EXTENSION_LDFLAGS_watchsimulator = -framework NetworkExtension;
WK_NETWORK_EXTENSION_LDFLAGS_maccatalyst = -framework NetworkExtension;
WK_NETWORK_EXTENSION_LDFLAGS_macosx = -weak_framework NetworkExtension;

FRAMEWORK_AND_LIBRARY_LDFLAGS = -lobjc -framework CFNetwork -framework CoreAudio -framework CoreFoundation -framework CoreGraphics -framework CoreText -framework Foundation -framework ImageIO -framework IOKit -framework IOSurface -framework WebKitLegacy -lnetwork -framework Metal $(WK_ACCESSIBILITY_LDFLAGS) $(WK_APPKIT_LDFLAGS) $(WK_APPLE_PUSH_SERVICE_LDFLAGS) $(WK_BACKBOARD_SERVICES_LDFLAGS) $(WK_RUNNINGBOARD_SERVICES_LDFLAGS) $(WK_AUTHKIT_LDFLAGS) $(WK_CARBON_LDFLAGS) $(WK_CONTACTS_LDFLAGS) $(WK_CORE_PREDICTION_LDFLAGS) $(WK_CORE_SERVICES_LDFLAGS) $(WK_GRAPHICS_SERVICES_LDFLAGS) $(WK_LIBNETWORKEXTENSION_LDFLAGS) $(WK_LIBSANDBOX_LDFLAGS) $(WK_LIBWEBRTC_LDFLAGS) $(WK_MOBILE_CORE_SERVICES_LDFLAGS) $(WK_MOBILE_GESTALT_LDFLAGS) $(WK_PDFKIT_LDFLAGS) $(WK_PROTOTYPE_TOOLS_LDFLAGS) $(WK_SAFE_BROWSING_LDFLAGS) $(WK_SECURITY_INTERFACE_LDFLAGS) $(WK_UIKIT_LDFLAGS) $(WK_MRUIKIT_LDFLAGS) $(WK_UNIFORM_TYPE_IDENTIFIERS_LDFLAGS) $(WK_URL_FORMATTING_LDFLAGS) $(WK_WEBINSPECTORUI_LDFLAGS) $(WK_COORDINATOR_LDFLAGS) $(WK_INSTALL_COORDINATION_LDFLAGS) $(WK_APP_STORE_DAEMON_LDFLAGS) $(WK_POWERLOG_LDFLAGS) $(WK_FRONTBOARDSERVICES_LDFLAGS) $(WK_LIBBSM_LDFLAGS) $(WK_NETWORK_EXTENSION_LDFLAGS);
WK_APPSERVERSUPPORT_LDFLAGS[sdk=macosx*] = -framework AppServerSupport
WK_APPSERVERSUPPORT_LDFLAGS[sdk=iphone*] = -framework AppServerSupport

FRAMEWORK_AND_LIBRARY_LDFLAGS = -lobjc -framework CFNetwork -framework CoreAudio -framework CoreFoundation -framework CoreGraphics -framework CoreText -framework Foundation -framework ImageIO -framework IOKit -framework IOSurface -framework WebKitLegacy -lnetwork -framework Metal $(WK_APPSERVERSUPPORT_LDFLAGS) $(WK_ACCESSIBILITY_LDFLAGS) $(WK_APPKIT_LDFLAGS) $(WK_APPLE_PUSH_SERVICE_LDFLAGS) $(WK_BACKBOARD_SERVICES_LDFLAGS) $(WK_RUNNINGBOARD_SERVICES_LDFLAGS) $(WK_AUTHKIT_LDFLAGS) $(WK_CARBON_LDFLAGS) $(WK_CONTACTS_LDFLAGS) $(WK_CORE_PREDICTION_LDFLAGS) $(WK_CORE_SERVICES_LDFLAGS) $(WK_GRAPHICS_SERVICES_LDFLAGS) $(WK_LIBNETWORKEXTENSION_LDFLAGS) $(WK_LIBSANDBOX_LDFLAGS) $(WK_LIBWEBRTC_LDFLAGS) $(WK_MOBILE_CORE_SERVICES_LDFLAGS) $(WK_MOBILE_GESTALT_LDFLAGS) $(WK_PDFKIT_LDFLAGS) $(WK_PROTOTYPE_TOOLS_LDFLAGS) $(WK_SAFE_BROWSING_LDFLAGS) $(WK_SECURITY_INTERFACE_LDFLAGS) $(WK_UIKIT_LDFLAGS) $(WK_MRUIKIT_LDFLAGS) $(WK_UNIFORM_TYPE_IDENTIFIERS_LDFLAGS) $(WK_URL_FORMATTING_LDFLAGS) $(WK_WEBINSPECTORUI_LDFLAGS) $(WK_COORDINATOR_LDFLAGS) $(WK_INSTALL_COORDINATION_LDFLAGS) $(WK_APP_STORE_DAEMON_LDFLAGS) $(WK_POWERLOG_LDFLAGS) $(WK_FRONTBOARDSERVICES_LDFLAGS) $(WK_LIBBSM_LDFLAGS) $(WK_NETWORK_EXTENSION_LDFLAGS);


// Prevent C++ standard library basic_stringstream, operator new, delete and their related exception types from being exported as weak symbols.
UNEXPORTED_SYMBOL_LDFLAGS = -Wl,-unexported_symbol -Wl,__ZTISt9bad_alloc -Wl,-unexported_symbol -Wl,__ZTISt9exception -Wl,-unexported_symbol -Wl,__ZTSSt9bad_alloc -Wl,-unexported_symbol -Wl,__ZTSSt9exception -Wl,-unexported_symbol -Wl,__ZdlPvS_ -Wl,-unexported_symbol -Wl,__ZnwmPv -Wl,-unexported_symbol -Wl,__Znwm -Wl,-unexported_symbol -Wl,__ZTVNSt3__117bad_function_callE -Wl,-unexported_symbol -Wl,__ZTCNSt3__118basic_stringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEEE0_NS_13basic_istreamIcS2_EE -Wl,-unexported_symbol -Wl,__ZTCNSt3__118basic_stringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEEE0_NS_14basic_iostreamIcS2_EE -Wl,-unexported_symbol -Wl,__ZTCNSt3__118basic_stringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEEE16_NS_13basic_ostreamIcS2_EE -Wl,-unexported_symbol -Wl,__ZTTNSt3__118basic_stringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEEE -Wl,-unexported_symbol -Wl,__ZTVNSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEEE -Wl,-unexported_symbol -Wl,__ZTVNSt3__118basic_stringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEEE -Wl,-unexported_symbol -Wl,__ZTCNSt3__118basic_stringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEEE8_NS_13basic_ostreamIcS2_EE;
Expand Down
10 changes: 1 addition & 9 deletions Source/WebKit/Configurations/webpushtool.xcconfig
Original file line number Diff line number Diff line change
Expand Up @@ -31,16 +31,8 @@ SKIP_INSTALL_maccatalyst = YES;
EXCLUDED_SOURCE_FILE_NAMES[sdk=appletv*] = *;
EXCLUDED_SOURCE_FILE_NAMES[sdk=watch*] = *;

WK_APPSERVERSUPPORT_LDFLAGS = $(WK_APPSERVERSUPPORT_LDFLAGS_$(WK_PLATFORM_NAME));
WK_APPSERVERSUPPORT_LDFLAGS_macosx = $(WK_APPSERVERSUPPORT_LDFLAGS$(WK_MACOS_1200));
WK_APPSERVERSUPPORT_LDFLAGS_MACOS_SINCE_1200 = -framework AppServerSupport;
WK_APPSERVERSUPPORT_LDFLAGS_maccatalyst = -framework AppServerSupport;
WK_APPSERVERSUPPORT_LDFLAGS_iphoneos = $(WK_APPSERVERSUPPORT_LDFLAGS$(WK_IOS_15));
WK_APPSERVERSUPPORT_LDFLAGS_iphonesimulator = $(WK_APPSERVERSUPPORT_LDFLAGS$(WK_IOS_15));
WK_APPSERVERSUPPORT_LDFLAGS_IOS_SINCE_15 = -framework AppServerSupport;

CLANG_INSTRUMENT_FOR_OPTIMIZATION_PROFILING = NO; // Disable PGO profile generation
OTHER_LDFLAGS = $(WK_COMMON_OTHER_LDFLAGS) -framework Foundation -framework CoreFoundation -framework WebKit -framework JavaScriptCore $(WK_APPSERVERSUPPORT_LDFLAGS) $(SOURCE_VERSION_LDFLAGS);
OTHER_LDFLAGS = $(WK_COMMON_OTHER_LDFLAGS) -framework Foundation -framework CoreFoundation -framework WebKit -framework JavaScriptCore $(SOURCE_VERSION_LDFLAGS);
LIBRARY_SEARCH_PATHS = $(BUILT_PRODUCTS_DIR);

CODE_SIGN_ENTITLEMENTS = Resources/webpushtool.entitlements;
1 change: 1 addition & 0 deletions Source/WebKit/Shared/API/Cocoa/WKMain.h
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ extern "C" {
WK_EXPORT int WKXPCServiceMain(int argc, const char** argv) WK_API_AVAILABLE(macos(10.15), ios(13.0));
WK_EXPORT int WKAdAttributionDaemonMain(int argc, const char** argv) WK_API_AVAILABLE(macos(13.0), ios(16.0));
WK_EXPORT int WKWebPushDaemonMain(int argc, char** argv) WK_API_AVAILABLE(macos(13.0), ios(16.0));
WK_EXPORT int WKWebPushToolMain(int argc, char** argv) WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));

#ifdef __cplusplus
}
Expand Down
6 changes: 6 additions & 0 deletions Source/WebKit/Shared/API/Cocoa/WKMain.mm
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@

#import "PCMDaemonEntryPoint.h"
#import "WebPushDaemonMain.h"
#import "WebPushToolMain.h"
#import "XPCServiceEntryPoint.h"

int WKXPCServiceMain(int argc, const char** argv)
Expand All @@ -44,3 +45,8 @@ int WKWebPushDaemonMain(int argc, char** argv)
{
return WebKit::WebPushDaemonMain(argc, argv);
}

int WKWebPushToolMain(int argc, char** argv)
{
return WebKit::WebPushToolMain(argc, argv);
}
33 changes: 14 additions & 19 deletions Source/WebKit/WebKit.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -1103,8 +1103,6 @@
517A530F1F47A86200DCDC0A /* WebSWClientConnectionMessageReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 517A530E1F47A84300DCDC0A /* WebSWClientConnectionMessageReceiver.cpp */; };
517A53101F47A86200DCDC0A /* WebSWClientConnectionMessages.h in Headers */ = {isa = PBXBuildFile; fileRef = 517A530D1F47A84300DCDC0A /* WebSWClientConnectionMessages.h */; };
517B5F2E2757382A002DC22D /* WebPushDaemonConnectionConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 517B5F2D2757382A002DC22D /* WebPushDaemonConnectionConfiguration.h */; };
517B5F65275A8D7F002DC22D /* WebPushToolMain.mm in Sources */ = {isa = PBXBuildFile; fileRef = 517B5F64275A8D7E002DC22D /* WebPushToolMain.mm */; };
517B5F68275A9A78002DC22D /* WebPushToolConnection.mm in Sources */ = {isa = PBXBuildFile; fileRef = 517B5F67275A9A78002DC22D /* WebPushToolConnection.mm */; };
517B5F73275E9609002DC22D /* WebPushDaemonMain.h in Headers */ = {isa = PBXBuildFile; fileRef = 517B5F72275E9609002DC22D /* WebPushDaemonMain.h */; };
517B5F78275E9795002DC22D /* webpushd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 517B5F77275E9795002DC22D /* webpushd.cpp */; };
517B5F79275E97A1002DC22D /* WebPushDaemonMain.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5C157A0B2717CA1C00ED5280 /* WebPushDaemonMain.mm */; };
Expand Down Expand Up @@ -1137,6 +1135,11 @@
51ACBB82127A8BAD00D203B9 /* WebContextMenuProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = 51ACBB81127A8BAD00D203B9 /* WebContextMenuProxy.h */; };
51ACBBA0127A8F2C00D203B9 /* WebContextMenuProxyMac.h in Headers */ = {isa = PBXBuildFile; fileRef = 51ACBB9E127A8F2C00D203B9 /* WebContextMenuProxyMac.h */; };
51B15A8513843A3900321AD8 /* EnvironmentUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 51B15A8313843A3900321AD8 /* EnvironmentUtilities.h */; settings = {ATTRIBUTES = (Private, ); }; };
51BE6C572AA92480001745C1 /* WebPushToolMain.mm in Sources */ = {isa = PBXBuildFile; fileRef = 517B5F64275A8D7E002DC22D /* WebPushToolMain.mm */; };
51BE6C5A2AA9250D001745C1 /* webpushtool.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51BE6C582AA92503001745C1 /* webpushtool.cpp */; };
51BE6C5B2AA92519001745C1 /* WebPushToolConnection.mm in Sources */ = {isa = PBXBuildFile; fileRef = 517B5F67275A9A78002DC22D /* WebPushToolConnection.mm */; };
51BE6C5C2AA92521001745C1 /* WebPushToolMain.h in Headers */ = {isa = PBXBuildFile; fileRef = 51BE6C552AA92406001745C1 /* WebPushToolMain.h */; };
51BE6C5D2AA92533001745C1 /* WebPushToolConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 517B5F66275A9A78002DC22D /* WebPushToolConnection.h */; };
51BEB62C1F3A5AD7005029B9 /* WebServiceWorkerProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 51BEB62A1F3A5ACD005029B9 /* WebServiceWorkerProvider.h */; };
51C0C9741DDD76000032CAD3 /* IconLoadingDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 51C0C9721DDD74F00032CAD3 /* IconLoadingDelegate.h */; };
51CD1C5E1B3493B400142CA5 /* WKSecurityOriginRef.h in Headers */ = {isa = PBXBuildFile; fileRef = 51CD1C5A1B3493A900142CA5 /* WKSecurityOriginRef.h */; settings = {ATTRIBUTES = (Private, ); }; };
Expand Down Expand Up @@ -1549,7 +1552,6 @@
8644890F27B5CB43007A1C66 /* _WKSystemPreferencesInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 8644890E27B5CB43007A1C66 /* _WKSystemPreferencesInternal.h */; };
866623F929C2248E0029405A /* WebAutocorrectionData.mm in Sources */ = {isa = PBXBuildFile; fileRef = 866623F829C2248D0029405A /* WebAutocorrectionData.mm */; };
86760A6B28DB30DE00D07D06 /* GeneratedSerializers.mm in Sources */ = {isa = PBXBuildFile; fileRef = 86760A6928DB305F00D07D06 /* GeneratedSerializers.mm */; };
86D196E129AD19460083B077 /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8DC2EF5B0486A6940098B216 /* WebKit.framework */; };
86D1970929AE4E930083B077 /* NetworkProcessConnectionParameters.h in Headers */ = {isa = PBXBuildFile; fileRef = 86D1970829AE4E930083B077 /* NetworkProcessConnectionParameters.h */; };
86DD519028EF28E800DF2A58 /* WebEventModifier.h in Headers */ = {isa = PBXBuildFile; fileRef = 86DD518F28EF28E800DF2A58 /* WebEventModifier.h */; };
86E67A251910B9D100004AB7 /* ProcessThrottler.h in Headers */ = {isa = PBXBuildFile; fileRef = 86E67A21190F411800004AB7 /* ProcessThrottler.h */; };
Expand Down Expand Up @@ -2399,13 +2401,6 @@
remoteGlobalIDString = E1AC2E2720F7B94C00B0897D;
remoteInfo = "Unlock Keychain";
};
519797C827627B2300BE0F83 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
proxyType = 1;
remoteGlobalIDString = 8DC2EF4F0486A6940098B216;
remoteInfo = WebKit;
};
5C1579D027165B2F00ED5280 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
Expand Down Expand Up @@ -5035,6 +5030,8 @@
51ACC9351628064800342550 /* NetworkProcessMessages.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NetworkProcessMessages.h; sourceTree = "<group>"; };
51B15A8213843A3900321AD8 /* EnvironmentUtilities.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = EnvironmentUtilities.cpp; path = unix/EnvironmentUtilities.cpp; sourceTree = "<group>"; };
51B15A8313843A3900321AD8 /* EnvironmentUtilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = EnvironmentUtilities.h; path = unix/EnvironmentUtilities.h; sourceTree = "<group>"; };
51BE6C552AA92406001745C1 /* WebPushToolMain.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebPushToolMain.h; sourceTree = "<group>"; };
51BE6C582AA92503001745C1 /* webpushtool.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = webpushtool.cpp; sourceTree = "<group>"; };
51BEB6291F3A5ACD005029B9 /* WebServiceWorkerProvider.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = WebServiceWorkerProvider.cpp; sourceTree = "<group>"; };
51BEB62A1F3A5ACD005029B9 /* WebServiceWorkerProvider.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WebServiceWorkerProvider.h; sourceTree = "<group>"; };
51C0C9721DDD74F00032CAD3 /* IconLoadingDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IconLoadingDelegate.h; sourceTree = "<group>"; };
Expand Down Expand Up @@ -7353,7 +7350,6 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
86D196E129AD19460083B077 /* WebKit.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
Expand Down Expand Up @@ -10895,8 +10891,10 @@
517B5F63275A8D5C002DC22D /* webpushtool */ = {
isa = PBXGroup;
children = (
51BE6C582AA92503001745C1 /* webpushtool.cpp */,
517B5F66275A9A78002DC22D /* WebPushToolConnection.h */,
517B5F67275A9A78002DC22D /* WebPushToolConnection.mm */,
51BE6C552AA92406001745C1 /* WebPushToolMain.h */,
517B5F64275A8D7E002DC22D /* WebPushToolMain.mm */,
);
path = webpushtool;
Expand Down Expand Up @@ -15115,6 +15113,8 @@
512CD69A2721F0A900F7F8EC /* WebPushDaemonConstants.h in Headers */,
517B5F73275E9609002DC22D /* WebPushDaemonMain.h in Headers */,
517B5F97275EC5E5002DC22D /* WebPushMessage.h in Headers */,
51BE6C5D2AA92533001745C1 /* WebPushToolConnection.h in Headers */,
51BE6C5C2AA92521001745C1 /* WebPushToolMain.h in Headers */,
5C2397D52949235800BB4E10 /* WebRemoteFrameClient.h in Headers */,
461CCCA6231485AA00B659B9 /* WebRemoteObjectRegistry.h in Headers */,
A5860E71230F67FC00461AAE /* WebResourceInterceptController.h in Headers */,
Expand Down Expand Up @@ -15693,7 +15693,6 @@
buildRules = (
);
dependencies = (
519797C927627B2300BE0F83 /* PBXTargetDependency */,
519797C727627B1D00BE0F83 /* PBXTargetDependency */,
);
name = webpushtool;
Expand Down Expand Up @@ -17000,8 +16999,7 @@
5C20F679276A6DB6006CAC22 /* ArgumentCoders.cpp in Sources */,
517B5F9C275F3C37002DC22D /* DaemonEncoder.cpp in Sources */,
517B5F9B275F3A98002DC22D /* DaemonUtilities.mm in Sources */,
517B5F68275A9A78002DC22D /* WebPushToolConnection.mm in Sources */,
517B5F65275A8D7F002DC22D /* WebPushToolMain.mm in Sources */,
51BE6C5A2AA9250D001745C1 /* webpushtool.cpp in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
Expand Down Expand Up @@ -17517,6 +17515,8 @@
517B5F7A275E97A4002DC22D /* WebPushDaemon.mm in Sources */,
517B5F79275E97A1002DC22D /* WebPushDaemonMain.mm in Sources */,
517B5F99275EC601002DC22D /* WebPushMessageCocoa.mm in Sources */,
51BE6C5B2AA92519001745C1 /* WebPushToolConnection.mm in Sources */,
51BE6C572AA92480001745C1 /* WebPushToolMain.mm in Sources */,
51F060E11654318500F3281B /* WebResourceLoaderMessageReceiver.cpp in Sources */,
51F060E11654318500F3281F /* WebRTCMonitorMessageReceiver.cpp in Sources */,
51F060E11654318500F3282C /* WebRTCResolverMessageReceiver.cpp in Sources */,
Expand Down Expand Up @@ -17640,11 +17640,6 @@
target = E1AC2E2720F7B94C00B0897D /* Unlock Keychain */;
targetProxy = 519797C627627B1D00BE0F83 /* PBXContainerItemProxy */;
};
519797C927627B2300BE0F83 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 8DC2EF4F0486A6940098B216 /* WebKit */;
targetProxy = 519797C827627B2300BE0F83 /* PBXContainerItemProxy */;
};
5C1579CF27165B2F00ED5280 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = E1AC2E2720F7B94C00B0897D /* Unlock Keychain */;
Expand Down
32 changes: 32 additions & 0 deletions Source/WebKit/webpushd/webpushtool/WebPushToolMain.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
/*
* Copyright (C) 2023 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
* THE POSSIBILITY OF SUCH DAMAGE.
*/

#pragma once

namespace WebKit {

int WebPushToolMain(int, char**);

} // namespace WebKit
28 changes: 20 additions & 8 deletions Source/WebKit/webpushd/webpushtool/WebPushToolMain.mm
Original file line number Diff line number Diff line change
Expand Up @@ -24,13 +24,16 @@
*/

#import "config.h"
#import "WebPushToolMain.h"

#import "PushMessageForTesting.h"
#import "WebPushToolConnection.h"
#import <Foundation/Foundation.h>
#import <optional>
#import <wtf/MainThread.h>
#import <wtf/WTFProcess.h>

#if HAVE(OS_LAUNCHD_JOB) && (PLATFORM(MAC) || PLATFORM(IOS))

using WebKit::WebPushD::PushMessageForTesting;

__attribute__((__noreturn__))
Expand Down Expand Up @@ -86,7 +89,6 @@ static void printUsageAndTerminate(NSString *message)
return makeUniqueWithoutFastMallocCheck<PushMessageForTesting>(WTFMove(pushMessage));
}

#if HAVE(OS_LAUNCHD_JOB)
static bool registerDaemonWithLaunchD(WebPushTool::PreferTestService preferTestService)
{
// For now webpushtool only knows how to host webpushd when they're in the same directory
Expand Down Expand Up @@ -142,9 +144,10 @@ static bool registerDaemonWithLaunchD(WebPushTool::PreferTestService preferTestS

return true;
}
#endif // #if HAVE(OS_LAUNCHD_JOB)

int main(int, const char **)
namespace WebKit {

int WebPushToolMain(int, char **)
{
WTF::initializeMainThread();

Expand All @@ -170,10 +173,8 @@ int main(int, const char **)
action = WebPushTool::Action::StreamDebugMessages;
else if ([argument isEqualToString:@"--reconnect"])
reconnect = WebPushTool::Reconnect::Yes;
#if HAVE(OS_LAUNCHD_JOB)
else if ([argument isEqualToString:@"--host"])
host = true;
#endif
else if ([argument isEqualToString:@"--push"]) {
pushMessage = pushMessageFromArguments(enumerator);
if (!pushMessage)
Expand All @@ -188,10 +189,8 @@ int main(int, const char **)
if (!action && !pushMessage)
printUsageAndTerminate(@"No action provided");

#if HAVE(OS_LAUNCHD_JOB)
if (host && !registerDaemonWithLaunchD(preferTestService))
printUsageAndTerminate(@"Unable to install plist to host the service");
#endif

auto connection = WebPushTool::Connection::create(action, preferTestService, reconnect);
if (pushMessage)
Expand All @@ -202,3 +201,16 @@ int main(int, const char **)
CFRunLoopRun();
return 0;
}

} // namespace WebKit

#else

namespace WebKit {
int WebPushToolMain(int, char **)
{
return -1;
}
}

#endif // #if HAVE(OS_LAUNCHD_JOB) && (PLATFORM(MAC) || PLATFORM(IOS))
Loading

0 comments on commit a12bd84

Please sign in to comment.