Title: [227582] trunk/Source/WebKit
Revision
227582
Author
m...@apple.com
Date
2018-01-24 15:30:23 -0800 (Wed, 24 Jan 2018)

Log Message

Enable library validation on the Web Content service
Part 1 of https://bugs.webkit.org/show_bug.cgi?id=172365
<rdar://problem/26470661>

Reviewed by David Kilzer.

This makes the Web Content process signed with the Library Validation flag in production
builds. Because doing so would prevent engineering builds of Apple apps that use an
injected bundle from working, this also adds a Development version of the service, which
does not enforce Library Validation. The UI process chooses to use the Development service
iff it would need to load an injected bundle that is not part of the OS.

* Configurations/DebugRelease.xcconfig: Disable Library Validation in engineering builds.

* Configurations/WebContentService.Development.xcconfig: Added. Like the normal service, but
  only installed when WebKit is installed in the OS, and uses a Development variant.

* Configurations/WebContentService.xcconfig: For the Development variant, append
  ".Development" to the product name, which is also the service identifier. Enable Library
  Validation for the Normal variant of the service when WK_LIBRARY_VALIDATION_ENABLED allows
  it.

* UIProcess/Launcher/ProcessLauncher.h: Add nonValidInjectedCodeAllowed member to
  LaunchOptions, false by default.

* UIProcess/Launcher/mac/ProcessLauncherMac.mm:
(WebKit::serviceName): Use the Development variant if nonValidInjectedCodeAllowed is true.

* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::getLaunchOptions): Initialize nonValidInjectedCodeAllowed using
   the new shouldAllowNonValidInjectedCode().
(WebKit::WebProcessProxy::shouldAllowNonValidInjectedCode const): Generic implementation
  that returns false.
* UIProcess/WebProcessProxy.h: Declared shouldAllowNonValidInjectedCode.
* UIProcess/mac/WebProcessProxyMac.mm:
(WebKit::WebProcessProxy::shouldAllowNonValidInjectedCode const): Return true if this is
  system WebKit with a non-system injected bundle.

* WebKit.xcodeproj/project.pbxproj: Added new service target.

Modified Paths

Added Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (227581 => 227582)


--- trunk/Source/WebKit/ChangeLog	2018-01-24 23:23:18 UTC (rev 227581)
+++ trunk/Source/WebKit/ChangeLog	2018-01-24 23:30:23 UTC (rev 227582)
@@ -1,3 +1,45 @@
+2018-01-24  Dan Bernstein  <m...@apple.com>
+
+        Enable library validation on the Web Content service
+        Part 1 of https://bugs.webkit.org/show_bug.cgi?id=172365
+        <rdar://problem/26470661>
+
+        Reviewed by David Kilzer.
+
+        This makes the Web Content process signed with the Library Validation flag in production
+        builds. Because doing so would prevent engineering builds of Apple apps that use an
+        injected bundle from working, this also adds a Development version of the service, which
+        does not enforce Library Validation. The UI process chooses to use the Development service
+        iff it would need to load an injected bundle that is not part of the OS.
+
+        * Configurations/DebugRelease.xcconfig: Disable Library Validation in engineering builds.
+
+        * Configurations/WebContentService.Development.xcconfig: Added. Like the normal service, but
+          only installed when WebKit is installed in the OS, and uses a Development variant.
+
+        * Configurations/WebContentService.xcconfig: For the Development variant, append
+          ".Development" to the product name, which is also the service identifier. Enable Library
+          Validation for the Normal variant of the service when WK_LIBRARY_VALIDATION_ENABLED allows
+          it.
+
+        * UIProcess/Launcher/ProcessLauncher.h: Add nonValidInjectedCodeAllowed member to
+          LaunchOptions, false by default.
+
+        * UIProcess/Launcher/mac/ProcessLauncherMac.mm:
+        (WebKit::serviceName): Use the Development variant if nonValidInjectedCodeAllowed is true.
+
+        * UIProcess/WebProcessProxy.cpp:
+        (WebKit::WebProcessProxy::getLaunchOptions): Initialize nonValidInjectedCodeAllowed using
+           the new shouldAllowNonValidInjectedCode().
+        (WebKit::WebProcessProxy::shouldAllowNonValidInjectedCode const): Generic implementation
+          that returns false.
+        * UIProcess/WebProcessProxy.h: Declared shouldAllowNonValidInjectedCode.
+        * UIProcess/mac/WebProcessProxyMac.mm:
+        (WebKit::WebProcessProxy::shouldAllowNonValidInjectedCode const): Return true if this is
+          system WebKit with a non-system injected bundle.
+
+        * WebKit.xcodeproj/project.pbxproj: Added new service target.
+
 2018-01-24  Chris Dumez  <cdu...@apple.com>
 
         Add a IPC::SendSyncOption indicating we should not process incoming IPC while waiting for the sync reply

Modified: trunk/Source/WebKit/Configurations/DebugRelease.xcconfig (227581 => 227582)


--- trunk/Source/WebKit/Configurations/DebugRelease.xcconfig	2018-01-24 23:23:18 UTC (rev 227581)
+++ trunk/Source/WebKit/Configurations/DebugRelease.xcconfig	2018-01-24 23:30:23 UTC (rev 227582)
@@ -47,6 +47,7 @@
 WK_XPC_SERVICE_SUFFIX[sdk=macosx*] = .Development;
 WK_XPC_SERVICE_SUFFIX[sdk=*simulator*] = .Development;
 
+WK_LIBRARY_VALIDATION_ENABLED = NO;
 WK_WEBCONTENT_SERVICE_NEEDS_XPC_DOMAIN_EXTENSION_ENTITLEMENT = NO;
 WK_WEBCONTENT_SERVICE_NEEDS_VERSIONED_FRAMEWORK_PATH_LDFLAG[sdk=macosx*] = YES;
 

Copied: trunk/Source/WebKit/Configurations/WebContentService.Development.xcconfig (from rev 227581, trunk/Source/WebKit/Configurations/DebugRelease.xcconfig) (0 => 227582)


--- trunk/Source/WebKit/Configurations/WebContentService.Development.xcconfig	                        (rev 0)
+++ trunk/Source/WebKit/Configurations/WebContentService.Development.xcconfig	2018-01-24 23:30:23 UTC (rev 227582)
@@ -0,0 +1,29 @@
+// Copyright (C) 2018 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. ``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
+// 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. 
+
+#include "WebContentService.xcconfig"
+
+SKIP_INSTALL = YES;
+SKIP_INSTALL[sdk=macosx*] = $(WK_RELOCATABLE_FRAMEWORKS);
+
+WK_XPC_SERVICE_VARIANT = Development;

Modified: trunk/Source/WebKit/Configurations/WebContentService.xcconfig (227581 => 227582)


--- trunk/Source/WebKit/Configurations/WebContentService.xcconfig	2018-01-24 23:23:18 UTC (rev 227581)
+++ trunk/Source/WebKit/Configurations/WebContentService.xcconfig	2018-01-24 23:30:23 UTC (rev 227582)
@@ -27,9 +27,13 @@
 
 CODE_SIGN_ENTITLEMENTS[sdk=macosx*] = $(CODE_SIGN_ENTITLEMENTS_OSX_WITH_XPC_DOMAIN_EXTENSION_$(WK_WEBCONTENT_SERVICE_NEEDS_XPC_DOMAIN_EXTENSION_ENTITLEMENT));
 CODE_SIGN_ENTITLEMENTS_OSX_WITH_XPC_DOMAIN_EXTENSION_YES = Configurations/WebContent-OSX.entitlements;
-OTHER_CODE_SIGN_FLAGS[sdk=macosx*] = $(WK_XPC_DOMAIN_EXTENSION_CODE_SIGN_FLAGS);
+OTHER_CODE_SIGN_FLAGS[sdk=macosx*] = $(WK_LIBRARY_VALIDATION_CODE_SIGN_FLAGS);
 
-PRODUCT_NAME = com.apple.WebKit.WebContent;
+PRODUCT_NAME = $(PRODUCT_NAME_$(WK_XPC_SERVICE_VARIANT));
+PRODUCT_NAME_ = $(PRODUCT_NAME_Normal);
+PRODUCT_NAME_Normal = com.apple.WebKit.WebContent;
+PRODUCT_NAME_Development = com.apple.WebKit.WebContent.Development;
+
 PRODUCT_BUNDLE_IDENTIFIER = $(PRODUCT_NAME);
 INFOPLIST_FILE[sdk=iphone*] = WebProcess/EntryPoint/mac/XPCService/WebContentService/Info-iOS.plist;
 INFOPLIST_FILE[sdk=macosx*] = WebProcess/EntryPoint/mac/XPCService/WebContentService/Info-OSX.plist;
@@ -42,13 +46,20 @@
 WK_WEBCONTENT_SERVICE_NEEDS_XPC_DOMAIN_EXTENSION_ENTITLEMENT_NO = $(WK_WEBCONTENT_SERVICE_NEEDS_XPC_DOMAIN_EXTENSION_ENTITLEMENT);
 WK_WEBCONTENT_SERVICE_NEEDS_XPC_DOMAIN_EXTENSION_ENTITLEMENT_YES = $(WK_RELOCATABLE_FRAMEWORKS);
 
+WK_LIBRARY_VALIDATION_ENABLED = $(WK_LIBRARY_VALIDATION_ENABLED_$(WK_EMPTY_$(WK_LIBRARY_VALIDATION_ENABLED)));
+WK_LIBRARY_VALIDATION_ENABLED_ = $(WK_LIBRARY_VALIDATION_ENABLED_NO);
+WK_LIBRARY_VALIDATION_ENABLED_NO = $(WK_LIBRARY_VALIDATION_ENABLED);
+WK_LIBRARY_VALIDATION_ENABLED_YES = YES;
+
 WK_WEBCONTENT_SERVICE_NEEDS_VERSIONED_FRAMEWORK_PATH_LDFLAG = $(WK_WEBCONTENT_SERVICE_NEEDS_VERSIONED_FRAMEWORK_PATH_LDFLAG_$(WK_EMPTY_$(WK_WEBCONTENT_SERVICE_NEEDS_VERSIONED_FRAMEWORK_PATH_LDFLAG)));
 WK_WEBCONTENT_SERVICE_NEEDS_VERSIONED_FRAMEWORK_PATH_LDFLAG_ = $(WK_WEBCONTENT_SERVICE_NEEDS_VERSIONED_FRAMEWORK_PATH_LDFLAG_NO);
 WK_WEBCONTENT_SERVICE_NEEDS_VERSIONED_FRAMEWORK_PATH_LDFLAG_NO = $(WK_WEBCONTENT_SERVICE_NEEDS_VERSIONED_FRAMEWORK_PATH_LDFLAG);
 WK_WEBCONTENT_SERVICE_NEEDS_VERSIONED_FRAMEWORK_PATH_LDFLAG_YES = $(USE_STAGING_INSTALL_PATH);
 
-WK_XPC_DOMAIN_EXTENSION_CODE_SIGN_FLAGS = $(WK_XPC_DOMAIN_EXTENSION_CODE_SIGN_FLAGS_$(WK_WEBCONTENT_SERVICE_NEEDS_XPC_DOMAIN_EXTENSION_ENTITLEMENT));
-WK_XPC_DOMAIN_EXTENSION_CODE_SIGN_FLAGS_YES = -o library;
+WK_LIBRARY_VALIDATION_CODE_SIGN_FLAGS = $(WK_LIBRARY_VALIDATION_CODE_SIGN_FLAGS_$(WK_XPC_SERVICE_VARIANT));
+WK_LIBRARY_VALIDATION_CODE_SIGN_FLAGS_ = $(WK_LIBRARY_VALIDATION_CODE_SIGN_FLAGS_Normal);
+WK_LIBRARY_VALIDATION_CODE_SIGN_FLAGS_Normal = $(WK_LIBRARY_VALIDATION_CODE_SIGN_FLAGS_$(WK_LIBRARY_VALIDATION_ENABLED));
+WK_LIBRARY_VALIDATION_CODE_SIGN_FLAGS_YES = -o library;
 
 RUNLOOP_TYPE[sdk=macosx*] = NSRunLoop;
 RUNLOOP_TYPE[sdk=macosx10.13*] = _NSApplicationMain;

Modified: trunk/Source/WebKit/UIProcess/Launcher/ProcessLauncher.h (227581 => 227582)


--- trunk/Source/WebKit/UIProcess/Launcher/ProcessLauncher.h	2018-01-24 23:23:18 UTC (rev 227581)
+++ trunk/Source/WebKit/UIProcess/Launcher/ProcessLauncher.h	2018-01-24 23:30:23 UTC (rev 227582)
@@ -60,6 +60,7 @@
         ProcessType processType;
         WebCore::ProcessIdentifier processIdentifier;
         HashMap<String, String> extraInitializationData;
+        bool nonValidInjectedCodeAllowed { false };
 
 #if ENABLE(DEVELOPER_MODE) && (PLATFORM(GTK) || PLATFORM(WPE))
         String processCmdPrefix;

Modified: trunk/Source/WebKit/UIProcess/Launcher/mac/ProcessLauncherMac.mm (227581 => 227582)


--- trunk/Source/WebKit/UIProcess/Launcher/mac/ProcessLauncherMac.mm	2018-01-24 23:23:18 UTC (rev 227581)
+++ trunk/Source/WebKit/UIProcess/Launcher/mac/ProcessLauncherMac.mm	2018-01-24 23:30:23 UTC (rev 227582)
@@ -51,7 +51,7 @@
 {
     switch (launchOptions.processType) {
     case ProcessLauncher::ProcessType::Web:
-        return "com.apple.WebKit.WebContent";
+        return launchOptions.nonValidInjectedCodeAllowed ? "com.apple.WebKit.WebContent.Development" : "com.apple.WebKit.WebContent";
     case ProcessLauncher::ProcessType::Network:
         return "com.apple.WebKit.Networking";
     case ProcessLauncher::ProcessType::Storage:

Modified: trunk/Source/WebKit/UIProcess/WebProcessProxy.cpp (227581 => 227582)


--- trunk/Source/WebKit/UIProcess/WebProcessProxy.cpp	2018-01-24 23:23:18 UTC (rev 227581)
+++ trunk/Source/WebKit/UIProcess/WebProcessProxy.cpp	2018-01-24 23:30:23 UTC (rev 227582)
@@ -167,6 +167,8 @@
         }
         launchOptions.extraInitializationData.add(ASCIILiteral("OverrideLanguages"), languageString.toString());
     }
+
+    launchOptions.nonValidInjectedCodeAllowed = shouldAllowNonValidInjectedCode();
 }
 
 void WebProcessProxy::connectionWillOpen(IPC::Connection& connection)
@@ -610,6 +612,13 @@
 }
 #endif
 
+#if !PLATFORM(MAC)
+bool WebProcessProxy::shouldAllowNonValidInjectedCode() const
+{
+    return false;
+}
+#endif
+
 void WebProcessProxy::didReceiveMessage(IPC::Connection& connection, IPC::Decoder& decoder)
 {
     if (dispatchMessage(connection, decoder))

Modified: trunk/Source/WebKit/UIProcess/WebProcessProxy.h (227581 => 227582)


--- trunk/Source/WebKit/UIProcess/WebProcessProxy.h	2018-01-24 23:23:18 UTC (rev 227581)
+++ trunk/Source/WebKit/UIProcess/WebProcessProxy.h	2018-01-24 23:30:23 UTC (rev 227582)
@@ -247,6 +247,7 @@
     void getStorageProcessConnection(PAL::SessionID initialSessionID, Ref<Messages::WebProcessProxy::GetStorageProcessConnection::DelayedReply>&&);
 
     bool platformIsBeingDebugged() const;
+    bool shouldAllowNonValidInjectedCode() const;
 
     static const HashSet<String>& platformPathsWithAssumedReadAccess();
 

Modified: trunk/Source/WebKit/UIProcess/mac/WebProcessProxyMac.mm (227581 => 227582)


--- trunk/Source/WebKit/UIProcess/mac/WebProcessProxyMac.mm	2018-01-24 23:23:18 UTC (rev 227581)
+++ trunk/Source/WebKit/UIProcess/mac/WebProcessProxyMac.mm	2018-01-24 23:30:23 UTC (rev 227582)
@@ -24,6 +24,7 @@
  */
  
 #import "config.h"
+#import "WebProcessPool.h"
 #import "WebProcessProxy.h"
 
 #if PLATFORM(MAC)
@@ -37,6 +38,24 @@
     return [WKFullKeyboardAccessWatcher fullKeyboardAccessEnabled];
 }
 
+bool WebProcessProxy::shouldAllowNonValidInjectedCode() const
+{
+    static bool isSystemWebKit = [] {
+#if WK_API_ENABLED
+        NSBundle *webkit2Bundle = [NSBundle bundleForClass:NSClassFromString(@"WKWebView")];
+#else
+        NSBundle *webkit2Bundle = [NSBundle bundleForClass:NSClassFromString(@"WKView")];
+#endif
+        return [webkit2Bundle.bundlePath hasPrefix:@"/System/"];
+    }();
+
+    if (!isSystemWebKit)
+        return false;
+
+    const String& path = m_processPool->configuration().injectedBundlePath();
+    return !path.isEmpty() && !path.startsWith("/System/");
+}
+
 } // namespace WebKit
 
 #endif // PLATFORM(MAC)

Modified: trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj (227581 => 227582)


--- trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj	2018-01-24 23:23:18 UTC (rev 227581)
+++ trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj	2018-01-24 23:30:23 UTC (rev 227582)
@@ -16,6 +16,7 @@
 			);
 			dependencies = (
 				BCA8D46815BCE0D6009DC1F1 /* PBXTargetDependency */,
+				372EBB492017E6CF00085064 /* PBXTargetDependency */,
 				51A60B2E180CCF1700F3BF50 /* PBXTargetDependency */,
 				BC77F95616D0459100F8F78A /* PBXTargetDependency */,
 				BC82844616B4FF6600A278FE /* PBXTargetDependency */,
@@ -794,6 +795,10 @@
 		371E695B1AED7A6700495E48 /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8DC2EF5B0486A6940098B216 /* WebKit.framework */; };
 		372CAF0B1833FD910040AC27 /* WKNSError.h in Headers */ = {isa = PBXBuildFile; fileRef = 372CAF091833FD910040AC27 /* WKNSError.h */; };
 		372CAF0C1833FD910040AC27 /* WKNSError.mm in Sources */ = {isa = PBXBuildFile; fileRef = 372CAF0A1833FD910040AC27 /* WKNSError.mm */; };
+		372EBB3C2017E64300085064 /* XPCServiceMain.mm in Sources */ = {isa = PBXBuildFile; fileRef = BC82839616B47EC400A278FE /* XPCServiceMain.mm */; };
+		372EBB3E2017E64300085064 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BC3DE46815A91763008D26FC /* Foundation.framework */; };
+		372EBB3F2017E64300085064 /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8DC2EF5B0486A6940098B216 /* WebKit.framework */; };
+		372EBB412017E64300085064 /* WebContentProcess.xib in Resources */ = {isa = PBXBuildFile; fileRef = E1D26A4C1759634E0095BFD1 /* WebContentProcess.xib */; };
 		373CEAD5185417AE008C363D /* WKNSData.mm in Sources */ = {isa = PBXBuildFile; fileRef = 373CEAD3185417AE008C363D /* WKNSData.mm */; };
 		373CEAD6185417AE008C363D /* WKNSData.h in Headers */ = {isa = PBXBuildFile; fileRef = 373CEAD4185417AE008C363D /* WKNSData.h */; };
 		373CEAD81859553F008C363D /* WKPagePolicyClientInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 373CEAD71859553F008C363D /* WKPagePolicyClientInternal.h */; };
@@ -2128,6 +2133,20 @@
 /* End PBXBuildFile section */
 
 /* Begin PBXContainerItemProxy section */
+		372EBB3A2017E64300085064 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = 8DC2EF4F0486A6940098B216;
+			remoteInfo = WebKit;
+		};
+		372EBB482017E6CF00085064 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = 372EBB382017E64300085064;
+			remoteInfo = WebContent.Development;
+		};
 		375E0626191EA8CC004E3CAF /* PBXContainerItemProxy */ = {
 			isa = PBXContainerItemProxy;
 			containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
@@ -3125,6 +3144,8 @@
 		371A19401824D29300F32A5E /* WKNSDictionary.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKNSDictionary.h; sourceTree = "<group>"; };
 		372CAF091833FD910040AC27 /* WKNSError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKNSError.h; sourceTree = "<group>"; };
 		372CAF0A1833FD910040AC27 /* WKNSError.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WKNSError.mm; sourceTree = "<group>"; };
+		372EBB462017E64300085064 /* com.apple.WebKit.WebContent.Development.xpc */ = {isa = PBXFileReference; explicitFileType = "wrapper.xpc-service"; includeInIndex = 0; path = com.apple.WebKit.WebContent.Development.xpc; sourceTree = BUILT_PRODUCTS_DIR; };
+		372EBB4A2017E76000085064 /* WebContentService.Development.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = WebContentService.Development.xcconfig; sourceTree = "<group>"; };
 		373CEAD3185417AE008C363D /* WKNSData.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WKNSData.mm; sourceTree = "<group>"; };
 		373CEAD4185417AE008C363D /* WKNSData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKNSData.h; sourceTree = "<group>"; };
 		373CEAD71859553F008C363D /* WKPagePolicyClientInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKPagePolicyClientInternal.h; sourceTree = "<group>"; };
@@ -4614,6 +4635,15 @@
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
+		372EBB3D2017E64300085064 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				372EBB3E2017E64300085064 /* Foundation.framework in Frameworks */,
+				372EBB3F2017E64300085064 /* WebKit.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
 		510031EE1379CACB00C8DFE4 /* Frameworks */ = {
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
@@ -4700,6 +4730,7 @@
 				510031F61379CACB00C8DFE4 /* SecItemShim.dylib */,
 				8DC2EF5B0486A6940098B216 /* WebKit.framework */,
 				CDC3830617211799008A2FC3 /* WebProcessShim.dylib */,
+				372EBB462017E64300085064 /* com.apple.WebKit.WebContent.Development.xpc */,
 			);
 			name = Products;
 			sourceTree = "<group>";
@@ -4929,6 +4960,7 @@
 				7C0BB9A818DCDE890006C086 /* WebContent-iOS.entitlements */,
 				37B418EB1C9624F20031E63B /* WebContent-OSX.entitlements */,
 				BCACC40E16B0B8A800B6E092 /* WebContentService.xcconfig */,
+				372EBB4A2017E76000085064 /* WebContentService.Development.xcconfig */,
 				BCB86F4B116AAACD00CE20B7 /* WebKit.xcconfig */,
 				A1EDD2DD1884B9E300BBFE98 /* WebProcessShim.xcconfig */,
 			);
@@ -9570,6 +9602,24 @@
 			productReference = 1AC25FB012A48EA700BD2671 /* PluginProcessShim.dylib */;
 			productType = "com.apple.product-type.library.dynamic";
 		};
+		372EBB382017E64300085064 /* WebContent.Development */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 372EBB422017E64300085064 /* Build configuration list for PBXNativeTarget "WebContent.Development" */;
+			buildPhases = (
+				372EBB3B2017E64300085064 /* Sources */,
+				372EBB3D2017E64300085064 /* Frameworks */,
+				372EBB402017E64300085064 /* Resources */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+				372EBB392017E64300085064 /* PBXTargetDependency */,
+			);
+			name = WebContent.Development;
+			productName = WebKit2Service;
+			productReference = 372EBB462017E64300085064 /* com.apple.WebKit.WebContent.Development.xpc */;
+			productType = "com.apple.product-type.xpc-service";
+		};
 		510031EA1379CACB00C8DFE4 /* SecItemShim */ = {
 			isa = PBXNativeTarget;
 			buildConfigurationList = 510031F21379CACB00C8DFE4 /* Build configuration list for PBXNativeTarget "SecItemShim" */;
@@ -9766,6 +9816,7 @@
 				510031EA1379CACB00C8DFE4 /* SecItemShim */,
 				CDC382FB17211799008A2FC3 /* WebProcessShim */,
 				BC3DE46515A91763008D26FC /* WebContent */,
+				372EBB382017E64300085064 /* WebContent.Development */,
 				BC8283B016B4BF7700A278FE /* Networking */,
 				BC8283F816B4FDDE00A278FE /* Plugin.32 */,
 				BC82841E16B4FDF600A278FE /* Plugin.64 */,
@@ -9776,6 +9827,14 @@
 /* End PBXProject section */
 
 /* Begin PBXResourcesBuildPhase section */
+		372EBB402017E64300085064 /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				372EBB412017E64300085064 /* WebContentProcess.xib in Resources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
 		51F7DC45180CC93600212CA3 /* Resources */ = {
 			isa = PBXResourcesBuildPhase;
 			buildActionMask = 2147483647;
@@ -10069,6 +10128,7 @@
 				"$(BUILT_PRODUCTS_DIR)/com.apple.WebKit.Plugin.32.xpc",
 				"$(BUILT_PRODUCTS_DIR)/com.apple.WebKit.Plugin.64.xpc",
 				"$(BUILT_PRODUCTS_DIR)/$(WK_STORAGE_SERVICE_PRODUCT_NAME).xpc",
+				"$(BUILT_PRODUCTS_DIR)/com.apple.WebKit.WebContent.Development.xpc",
 			);
 			name = "Copy XPC services for engineering builds";
 			outputPaths = (
@@ -10077,6 +10137,7 @@
 				"$(BUILT_PRODUCTS_DIR)/WebKit.framework/XPCServices/com.apple.WebKit.Plugin.32.xpc",
 				"$(BUILT_PRODUCTS_DIR)/WebKit.framework/XPCServices/com.apple.WebKit.Plugin.64.xpc",
 				"$(BUILT_PRODUCTS_DIR)/WebKit.framework/XPCServices/$(WK_STORAGE_SERVICE_PRODUCT_NAME).xpc",
+				"$(BUILT_PRODUCTS_DIR)/WebKit.framework/XPCServices/com.apple.WebKit.WebContent.Development.xpc",
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 			shellPath = /bin/sh;
@@ -10107,6 +10168,14 @@
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
+		372EBB3B2017E64300085064 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				372EBB3C2017E64300085064 /* XPCServiceMain.mm in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
 		510031EC1379CACB00C8DFE4 /* Sources */ = {
 			isa = PBXSourcesBuildPhase;
 			buildActionMask = 2147483647;
@@ -11123,6 +11192,16 @@
 /* End PBXSourcesBuildPhase section */
 
 /* Begin PBXTargetDependency section */
+		372EBB392017E64300085064 /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = 8DC2EF4F0486A6940098B216 /* WebKit */;
+			targetProxy = 372EBB3A2017E64300085064 /* PBXContainerItemProxy */;
+		};
+		372EBB492017E6CF00085064 /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = 372EBB382017E64300085064 /* WebContent.Development */;
+			targetProxy = 372EBB482017E6CF00085064 /* PBXContainerItemProxy */;
+		};
 		375E0627191EA8CC004E3CAF /* PBXTargetDependency */ = {
 			isa = PBXTargetDependency;
 			target = 8DC2EF4F0486A6940098B216 /* WebKit */;
@@ -11282,6 +11361,27 @@
 			};
 			name = Release;
 		};
+		372EBB432017E64300085064 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			baseConfigurationReference = 372EBB4A2017E76000085064 /* WebContentService.Development.xcconfig */;
+			buildSettings = {
+			};
+			name = Debug;
+		};
+		372EBB442017E64300085064 /* Release */ = {
+			isa = XCBuildConfiguration;
+			baseConfigurationReference = 372EBB4A2017E76000085064 /* WebContentService.Development.xcconfig */;
+			buildSettings = {
+			};
+			name = Release;
+		};
+		372EBB452017E64300085064 /* Production */ = {
+			isa = XCBuildConfiguration;
+			baseConfigurationReference = 372EBB4A2017E76000085064 /* WebContentService.Development.xcconfig */;
+			buildSettings = {
+			};
+			name = Production;
+		};
 		510031F31379CACB00C8DFE4 /* Debug */ = {
 			isa = XCBuildConfiguration;
 			baseConfigurationReference = A1EDD2DC1884B9B500BBFE98 /* SecItemShim.xcconfig */;
@@ -11554,6 +11654,16 @@
 			defaultConfigurationIsVisible = 0;
 			defaultConfigurationName = Production;
 		};
+		372EBB422017E64300085064 /* Build configuration list for PBXNativeTarget "WebContent.Development" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				372EBB432017E64300085064 /* Debug */,
+				372EBB442017E64300085064 /* Release */,
+				372EBB452017E64300085064 /* Production */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Production;
+		};
 		510031F21379CACB00C8DFE4 /* Build configuration list for PBXNativeTarget "SecItemShim" */ = {
 			isa = XCConfigurationList;
 			buildConfigurations = (
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to