WebKit Bugzilla
Attachment 347371 Details for
Bug 188601
: Add script to generate WebContent service resource files and change XPC service main SPI to have it's own header
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-188601-20180817112525.patch (text/plain), 17.58 KB, created by
Ben Richards
on 2018-08-17 11:25:26 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Ben Richards
Created:
2018-08-17 11:25:26 PDT
Size:
17.58 KB
patch
obsolete
>Subversion Revision: 234891 >diff --git a/Source/WebKit/ChangeLog b/Source/WebKit/ChangeLog >index 65b78a253c9de6d06d570c6bdfef158d67ac774b..75e1e7259dc8b79325eecf720c377f86e1ce759c 100644 >--- a/Source/WebKit/ChangeLog >+++ b/Source/WebKit/ChangeLog >@@ -1,3 +1,27 @@ >+2018-08-17 Ben Richards <benton_richards@apple.com> >+ >+ Add script to generate WebContent service resource files and change XPC service main SPI to have it's own header >+ https://bugs.webkit.org/show_bug.cgi?id=188601 >+ >+ Reviewed by Dan Bernstein. >+ >+ Added a script to the process entitlements build phase of the WebContent service that copies resource >+ files to WebKit.framework/PrivateHeaders/CustomWebContentResources. These resource files are to >+ be used by clients who would like to make a custom WebContent service. >+ >+ * Scripts/copy-webcontent-resources-to-private-headers.sh: Added. >+ * WebKit.xcodeproj/project.pbxproj: >+ >+ Changed XPCServiceMain SPI from being a class method of WKProcessPool to having its own header >+ and seperate C function. >+ >+ * Shared/API/c/WKXPCServiceMain.cpp: Added. >+ (WKXPCServiceMain): >+ * Shared/API/c/WKXPCServiceMain.h: Added. >+ * UIProcess/API/Cocoa/WKProcessPool.mm: >+ (+[WKProcessPool _webContentProcessXPCMain]): Deleted. >+ * UIProcess/API/Cocoa/WKProcessPoolPrivate.h: >+ > 2018-08-15 Michael Catanzaro <mcatanzaro@igalia.com> > > [WPE][GTK] WaylandCompositor fails to properly remove surface from its page map >diff --git a/Source/WebKit/Scripts/copy-webcontent-resources-to-private-headers.sh b/Source/WebKit/Scripts/copy-webcontent-resources-to-private-headers.sh >new file mode 100755 >index 0000000000000000000000000000000000000000..de2d96189d7d3fe97a0874b53837a27a23d23541 >--- /dev/null >+++ b/Source/WebKit/Scripts/copy-webcontent-resources-to-private-headers.sh >@@ -0,0 +1,31 @@ >+#!/bin/sh >+set -e >+ >+WEB_CONTENT_RESOURCES_PATH="${BUILT_PRODUCTS_DIR}/WebKit.framework/PrivateHeaders/CustomWebContentResources" >+mkdir -p "${WEB_CONTENT_RESOURCES_PATH}" >+ >+echo "Copying WebContent entitlements to ${WEB_CONTENT_RESOURCES_PATH}" >+ENTITLEMENTS_FILE="${TEMP_FILE_DIR}/${FULL_PRODUCT_NAME}.xcent" >+ditto "${ENTITLEMENTS_FILE}" "${WEB_CONTENT_RESOURCES_PATH}/WebContent.entitlements" >+ >+echo "Copying WebContentProcess.xib to ${WEB_CONTENT_RESOURCES_PATH}" >+WEBCONTENT_XIB="${SRCROOT}/Resources/WebContentProcess.xib" >+ditto "${WEBCONTENT_XIB}" "${WEB_CONTENT_RESOURCES_PATH}/WebContentProcess.xib" >+ >+echo "Copying Info.plist to ${WEB_CONTENT_RESOURCES_PATH}" >+PROCESSED_INFOPLIST="${BUILT_PRODUCTS_DIR}/${INFOPLIST_PATH}" >+UNPROCESSED_INFOPLIST="${INFOPLIST_FILE}" >+COPIED_INFOPLIST="${WEB_CONTENT_RESOURCES_PATH}/Info.plist" >+ditto "${UNPROCESSED_INFOPLIST}" "${COPIED_INFOPLIST}" >+ >+echo "Setting fixed entry values for ${COPIED_INFOPLIST}" >+if [[ ${WK_PLATFORM_NAME} == "macosx" ]]; then >+ FIXED_ENTRIES=( ":XPCService:RunLoopType" ) >+else >+ FIXED_ENTRIES=() >+fi >+ >+for ((i = 0; i < ${#FIXED_ENTRIES[@]}; ++i)); do >+ ENTRY_VALUE=$(/usr/libexec/PlistBuddy -c "Print ${FIXED_ENTRIES[$i]}" "${PROCESSED_INFOPLIST}") >+ /usr/libexec/PlistBuddy -c "Set ${FIXED_ENTRIES[$i]} ${ENTRY_VALUE}" "${COPIED_INFOPLIST}" >+done >diff --git a/Source/WebKit/Shared/API/c/WKXPCServiceMain.cpp b/Source/WebKit/Shared/API/c/WKXPCServiceMain.cpp >new file mode 100644 >index 0000000000000000000000000000000000000000..0bade3a42de50f7e444ba5773559f53f5e530207 >--- /dev/null >+++ b/Source/WebKit/Shared/API/c/WKXPCServiceMain.cpp >@@ -0,0 +1,34 @@ >+/* >+ * 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. 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. >+ */ >+ >+#include "config.h" >+#include "WKXPCServiceMain.h" >+ >+#include "XPCServiceEntryPoint.h" >+ >+int WKXPCServiceMain() >+{ >+ return WebKit::XPCServiceMain(); >+} >diff --git a/Source/WebKit/Shared/API/c/WKXPCServiceMain.h b/Source/WebKit/Shared/API/c/WKXPCServiceMain.h >new file mode 100644 >index 0000000000000000000000000000000000000000..80842f5d1867bcb891d6f1f058a28af04f510499 >--- /dev/null >+++ b/Source/WebKit/Shared/API/c/WKXPCServiceMain.h >@@ -0,0 +1,38 @@ >+/* >+ * 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. 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 >+ >+#include <WebKit/WKBase.h> >+ >+#ifdef __cplusplus >+extern "C" { >+#endif >+ >+WK_EXPORT int WKXPCServiceMain(); >+ >+#ifdef __cplusplus >+} >+#endif >diff --git a/Source/WebKit/UIProcess/API/Cocoa/WKProcessPool.mm b/Source/WebKit/UIProcess/API/Cocoa/WKProcessPool.mm >index ab319e79edd17915fe9b15b69a8dbcaab5de1263..acefae518de852bc7ff00d39cb5c749a1d78e004 100644 >--- a/Source/WebKit/UIProcess/API/Cocoa/WKProcessPool.mm >+++ b/Source/WebKit/UIProcess/API/Cocoa/WKProcessPool.mm >@@ -40,7 +40,6 @@ > #import "WebCookieManagerProxy.h" > #import "WebProcessMessages.h" > #import "WebProcessPool.h" >-#import "XPCServiceEntryPoint.h" > #import "_WKAutomationDelegate.h" > #import "_WKAutomationSessionInternal.h" > #import "_WKDownloadDelegate.h" >@@ -182,11 +181,6 @@ + (NSURL *)_websiteDataURLForContainerWithURL:(NSURL *)containerURL bundleIdenti > return [url URLByAppendingPathComponent:@"WebsiteData" isDirectory:YES]; > } > >-+ (int)_webContentProcessXPCMain >-{ >- return WebKit::XPCServiceMain(); >-} >- > - (void)_setAllowsSpecificHTTPSCertificate:(NSArray *)certificateChain forHost:(NSString *)host > { > _processPool->allowSpecificHTTPSCertificateForHost(WebKit::WebCertificateInfo::create(WebCore::CertificateInfo((__bridge CFArrayRef)certificateChain)).ptr(), host); >diff --git a/Source/WebKit/UIProcess/API/Cocoa/WKProcessPoolPrivate.h b/Source/WebKit/UIProcess/API/Cocoa/WKProcessPoolPrivate.h >index 364535a5f273d6aba1a9b07f91c5a6d70dc834cd..7099a4464416239408586243d579cec41282e04e 100644 >--- a/Source/WebKit/UIProcess/API/Cocoa/WKProcessPoolPrivate.h >+++ b/Source/WebKit/UIProcess/API/Cocoa/WKProcessPoolPrivate.h >@@ -79,8 +79,6 @@ > > - (void)_registerURLSchemeAsCanDisplayOnlyIfCanRequest:(NSString *)scheme WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA)); > >-+ (int)_webContentProcessXPCMain WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA)); >- > // Test only. Should be called only while no web content processes are running. > - (void)_terminateStorageProcess; > - (void)_terminateNetworkProcess; >diff --git a/Source/WebKit/WebKit.xcodeproj/project.pbxproj b/Source/WebKit/WebKit.xcodeproj/project.pbxproj >index c833c1fee5b333a6a57a1f213946975309605754..a6cfd733d0c84928cd2f9d0dae1639ebd7ee7bed 100644 >--- a/Source/WebKit/WebKit.xcodeproj/project.pbxproj >+++ b/Source/WebKit/WebKit.xcodeproj/project.pbxproj >@@ -935,6 +935,7 @@ > 411A8DDB20DDD1AC0060D34F /* WKMockMediaDevice.h in Headers */ = {isa = PBXBuildFile; fileRef = 411A8DD920DDB6050060D34F /* WKMockMediaDevice.h */; settings = {ATTRIBUTES = (Private, ); }; }; > 411A8DDC20DDD23F0060D34F /* WKMockMediaDevice.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 411A8DDA20DDB6050060D34F /* WKMockMediaDevice.cpp */; }; > 411B22641E371BA6004F7363 /* LibWebRTCNetwork.h in Headers */ = {isa = PBXBuildFile; fileRef = 411B22621E371244004F7363 /* LibWebRTCNetwork.h */; }; >+ 4129912021273E1F008206D3 /* WKXPCServiceMain.h in Headers */ = {isa = PBXBuildFile; fileRef = 41C2B96221273B3B0087CE02 /* WKXPCServiceMain.h */; settings = {ATTRIBUTES = (Private, ); }; }; > 413075A91DE85F2C0039EC69 /* NetworkRTCSocket.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 413075981DE84FB00039EC69 /* NetworkRTCSocket.cpp */; }; > 413075AA1DE85F300039EC69 /* NetworkRTCMonitor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4130759A1DE84FB00039EC69 /* NetworkRTCMonitor.cpp */; }; > 413075AB1DE85F330039EC69 /* NetworkRTCSocket.h in Headers */ = {isa = PBXBuildFile; fileRef = 413075991DE84FB00039EC69 /* NetworkRTCSocket.h */; }; >@@ -966,6 +967,7 @@ > 41897ED91F415D8A0016FA42 /* CacheStorageEngineConnection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 41897ED31F415D850016FA42 /* CacheStorageEngineConnection.cpp */; }; > 41897EDA1F415D8A0016FA42 /* CacheStorageEngineConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 41897ED41F415D850016FA42 /* CacheStorageEngineConnection.h */; }; > 41B28B0A1F83AD4200FB52AC /* RTCPacketOptions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 41B28B091F83AD3E00FB52AC /* RTCPacketOptions.cpp */; }; >+ 41C2B96421273BCB0087CE02 /* WKXPCServiceMain.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 41C2B96321273BCB0087CE02 /* WKXPCServiceMain.cpp */; }; > 41C8581A1F5136CA0065E085 /* CacheStorageEngineCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 41C858191F510DEE0065E085 /* CacheStorageEngineCache.cpp */; }; > 41D129DA1F3D101800D15E47 /* WebCacheStorageProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 41D129D91F3D101400D15E47 /* WebCacheStorageProvider.h */; }; > 41DC45961E3D6E2200B11F51 /* NetworkRTCProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 41DC45941E3D6E1E00B11F51 /* NetworkRTCProvider.h */; }; >@@ -3443,6 +3445,7 @@ > 4135FBCF1F4FB7F20074C47B /* CacheStorageEngineCaches.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CacheStorageEngineCaches.cpp; sourceTree = "<group>"; }; > 4135FBD01F4FB7F20074C47B /* CacheStorageEngineCaches.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CacheStorageEngineCaches.h; sourceTree = "<group>"; }; > 413CCD4F20DEBC2F0065A21A /* com.google.googletalkbrowserplugin.sb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = com.google.googletalkbrowserplugin.sb; sourceTree = "<group>"; }; >+ 413E67632125E75400C0F09E /* copy-webcontent-resources-to-private-headers.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = "copy-webcontent-resources-to-private-headers.sh"; sourceTree = "<group>"; }; > 4143751B20EAEA1E00FAD06C /* cn.microdone.cmb.safari.sb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = cn.microdone.cmb.safari.sb; sourceTree = "<group>"; }; > 414DD37820BF43EA006959FB /* com.cisco.webex.plugin.gpc64.sb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = com.cisco.webex.plugin.gpc64.sb; sourceTree = "<group>"; }; > 414DEDD51F9EDDDF0047C40D /* ServiceWorkerProcessProxy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ServiceWorkerProcessProxy.h; sourceTree = "<group>"; }; >@@ -3468,6 +3471,8 @@ > 41B7ED6F206965900087D853 /* NetworkMDNSRegister.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = NetworkMDNSRegister.cpp; path = NetworkProcess/webrtc/NetworkMDNSRegister.cpp; sourceTree = "<group>"; }; > 41B7ED70206965900087D853 /* NetworkMDNSRegister.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NetworkMDNSRegister.h; path = NetworkProcess/webrtc/NetworkMDNSRegister.h; sourceTree = "<group>"; }; > 41B7ED71206965900087D853 /* NetworkMDNSRegister.messages.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = NetworkMDNSRegister.messages.in; path = NetworkProcess/webrtc/NetworkMDNSRegister.messages.in; sourceTree = "<group>"; }; >+ 41C2B96221273B3B0087CE02 /* WKXPCServiceMain.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WKXPCServiceMain.h; sourceTree = "<group>"; }; >+ 41C2B96321273BCB0087CE02 /* WKXPCServiceMain.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = WKXPCServiceMain.cpp; sourceTree = "<group>"; }; > 41C858191F510DEE0065E085 /* CacheStorageEngineCache.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CacheStorageEngineCache.cpp; sourceTree = "<group>"; }; > 41D129D91F3D101400D15E47 /* WebCacheStorageProvider.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WebCacheStorageProvider.h; sourceTree = "<group>"; }; > 41DC45941E3D6E1E00B11F51 /* NetworkRTCProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NetworkRTCProvider.h; path = NetworkProcess/webrtc/NetworkRTCProvider.h; sourceTree = "<group>"; }; >@@ -8437,6 +8442,8 @@ > F6113E26126CE19B0057D0A7 /* WKUserContentURLPattern.cpp */, > F6113E27126CE19B0057D0A7 /* WKUserContentURLPattern.h */, > 377EAD4717E2C77B002D193D /* WKUserScriptInjectionTime.h */, >+ 41C2B96321273BCB0087CE02 /* WKXPCServiceMain.cpp */, >+ 41C2B96221273B3B0087CE02 /* WKXPCServiceMain.h */, > ); > name = C; > path = c; >@@ -8653,6 +8660,7 @@ > children = ( > 7CDE73A21F9DA59700390312 /* PreferencesTemplates */, > 0FC0856E187CE0A900780D86 /* __init__.py */, >+ 413E67632125E75400C0F09E /* copy-webcontent-resources-to-private-headers.sh */, > C0CE73361247F70E00BC0EC4 /* generate-message-receiver.py */, > C0CE73371247F70E00BC0EC4 /* generate-messages-header.py */, > 7CDE73A11F9DA41400390312 /* GeneratePreferences.rb */, >@@ -10009,6 +10017,7 @@ > 1AD60F6018E20F740020C034 /* WKWindowFeaturesInternal.h in Headers */, > 6A5080BF1F0EDAAA00E617C5 /* WKWindowFeaturesPrivate.h in Headers */, > 1A7C0DF71B7D1F1000A9B848 /* WKWindowFeaturesRef.h in Headers */, >+ 4129912021273E1F008206D3 /* WKXPCServiceMain.h in Headers */, > BCBECDE816B6416800047A1A /* XPCServiceEntryPoint.h in Headers */, > ); > runOnlyForDeploymentPostprocessing = 0; >@@ -10141,7 +10150,7 @@ > BC3DE46215A91763008D26FC /* Sources */, > BCDC308D15FDB99A006B6695 /* Frameworks */, > BC3DE46415A91763008D26FC /* Resources */, >- 7AFCBD5420B8911D00F55C9C /* Process WebContent entitlements */, >+ 7AFCBD5420B8911D00F55C9C /* Process WebContent Entitlements and Copy Custom WebContent Resources to Framework Private Headers */, > ); > buildRules = ( > ); >@@ -10603,20 +10612,22 @@ > shellPath = /bin/sh; > shellScript = "Scripts/process-webcontent-or-plugin-entitlements.sh\n"; > }; >- 7AFCBD5420B8911D00F55C9C /* Process WebContent entitlements */ = { >+ 7AFCBD5420B8911D00F55C9C /* Process WebContent Entitlements and Copy Custom WebContent Resources to Framework Private Headers */ = { > isa = PBXShellScriptBuildPhase; > buildActionMask = 2147483647; > files = ( > ); > inputPaths = ( > "$(TEMP_FILE_DIR)/$(FULL_PRODUCT_NAME).xcent", >+ "$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)", >+ "$(SRCROOT)/Resources/WebContentProcess.xib", > ); >- name = "Process WebContent entitlements"; >+ name = "Process WebContent Entitlements and Copy Custom WebContent Resources to Framework Private Headers"; > outputPaths = ( > ); > runOnlyForDeploymentPostprocessing = 0; > shellPath = /bin/sh; >- shellScript = "Scripts/process-webcontent-or-plugin-entitlements.sh\n"; >+ shellScript = "Scripts/process-webcontent-or-plugin-entitlements.sh\nScripts/copy-webcontent-resources-to-private-headers.sh\n"; > }; > 7AFCBD5520B8917D00F55C9C /* Process WebContent entitlements */ = { > isa = PBXShellScriptBuildPhase; >@@ -11770,6 +11781,7 @@ > 2DC6D9C418C44A610043BAD4 /* WKWebViewContentProviderRegistry.mm in Sources */, > 1AD60F5D18E20F4C0020C034 /* WKWindowFeatures.mm in Sources */, > 1A7C0DF61B7D1F1000A9B848 /* WKWindowFeaturesRef.cpp in Sources */, >+ 41C2B96421273BCB0087CE02 /* WKXPCServiceMain.cpp in Sources */, > BCBECDE716B6416800047A1A /* XPCServiceEntryPoint.mm in Sources */, > 41639A89211933ED001CEF14 /* XPCServiceMain.mm in Sources */, > );
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 188601
:
347162
|
347166
|
347178
|
347228
|
347285
|
347297
|
347371
|
347405
|
347418
|
349958
|
350038
|
350047