Title: [196997] trunk
Revision
196997
Author
[email protected]
Date
2016-02-23 14:29:01 -0800 (Tue, 23 Feb 2016)

Log Message

WKProcessPool should conform to NSCoding
https://bugs.webkit.org/show_bug.cgi?id=154608

Reviewed by Sam Weinig.

Source/WebKit2:

Add +[WKProcessPool _sharedProcessPool] and encode/decode whether the process pool is shared.

* UIProcess/API/Cocoa/WKProcessPool.h:
* UIProcess/API/Cocoa/WKProcessPool.mm:
(-[WKProcessPool encodeWithCoder:]):
(-[WKProcessPool initWithCoder:]):
(+[WKProcessPool _sharedProcessPool]):
* UIProcess/API/Cocoa/WKProcessPoolPrivate.h:

Tools:

Add tests.

* TestWebKitAPI/Tests/WebKit2Cocoa/Coding.mm:
(TEST):

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (196996 => 196997)


--- trunk/Source/WebKit2/ChangeLog	2016-02-23 22:17:24 UTC (rev 196996)
+++ trunk/Source/WebKit2/ChangeLog	2016-02-23 22:29:01 UTC (rev 196997)
@@ -1,5 +1,21 @@
 2016-02-23  Anders Carlsson  <[email protected]>
 
+        WKProcessPool should conform to NSCoding
+        https://bugs.webkit.org/show_bug.cgi?id=154608
+
+        Reviewed by Sam Weinig.
+
+        Add +[WKProcessPool _sharedProcessPool] and encode/decode whether the process pool is shared.
+
+        * UIProcess/API/Cocoa/WKProcessPool.h:
+        * UIProcess/API/Cocoa/WKProcessPool.mm:
+        (-[WKProcessPool encodeWithCoder:]):
+        (-[WKProcessPool initWithCoder:]):
+        (+[WKProcessPool _sharedProcessPool]):
+        * UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
+
+2016-02-23  Anders Carlsson  <[email protected]>
+
         WKWebsiteDataStore should conform to NSCoding
         https://bugs.webkit.org/show_bug.cgi?id=154605
 

Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKProcessPool.h (196996 => 196997)


--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKProcessPool.h	2016-02-23 22:17:24 UTC (rev 196996)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKProcessPool.h	2016-02-23 22:29:01 UTC (rev 196997)
@@ -36,7 +36,7 @@
  with the same process pool end up sharing web content processes.
  */
 WK_CLASS_AVAILABLE(10_10, 8_0)
-@interface WKProcessPool : NSObject
+@interface WKProcessPool : NSObject <NSCoding>
 @end
 
 #endif

Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKProcessPool.mm (196996 => 196997)


--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKProcessPool.mm	2016-02-23 22:17:24 UTC (rev 196996)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKProcessPool.mm	2016-02-23 22:29:01 UTC (rev 196997)
@@ -51,6 +51,8 @@
 #import "WKGeolocationProviderIOS.h"
 #endif
 
+static WKProcessPool *sharedProcessPool;
+
 @implementation WKProcessPool {
     WebKit::WeakObjCPtr<id <_WKAutomationDelegate>> _automationDelegate;
     WebKit::WeakObjCPtr<id <_WKDownloadDelegate>> _downloadDelegate;
@@ -88,6 +90,28 @@
     [super dealloc];
 }
 
+- (void)encodeWithCoder:(NSCoder *)coder
+{
+    if (self == sharedProcessPool) {
+        [coder encodeBool:YES forKey:@"isSharedProcessPool"];
+        return;
+    }
+}
+
+- (instancetype)initWithCoder:(NSCoder *)coder
+{
+    if (!(self = [self init]))
+        return nil;
+
+    if ([coder decodeBoolForKey:@"isSharedProcessPool"]) {
+        [self release];
+
+        return [[WKProcessPool _sharedProcessPool] retain];
+    }
+
+    return self;
+}
+
 - (NSString *)description
 {
     return [NSString stringWithFormat:@"<%@: %p; configuration = %@>", NSStringFromClass(self.class), self, wrapper(_processPool->configuration())];
@@ -116,6 +140,16 @@
 
 @implementation WKProcessPool (WKPrivate)
 
++ (WKProcessPool *)_sharedProcessPool
+{
+    static dispatch_once_t onceToken;
+    dispatch_once(&onceToken, ^{
+        sharedProcessPool = [[WKProcessPool alloc] init];
+    });
+
+    return sharedProcessPool;
+}
+
 + (NSURL *)_websiteDataURLForContainerWithURL:(NSURL *)containerURL
 {
     return [WKProcessPool _websiteDataURLForContainerWithURL:containerURL bundleIdentifierIfNotInContainer:nil];

Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKProcessPoolPrivate.h (196996 => 196997)


--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKProcessPoolPrivate.h	2016-02-23 22:17:24 UTC (rev 196996)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKProcessPoolPrivate.h	2016-02-23 22:29:01 UTC (rev 196997)
@@ -38,6 +38,8 @@
 
 @interface WKProcessPool (WKPrivate)
 
++ (WKProcessPool *)_sharedProcessPool;
+
 @property (nonatomic, readonly) _WKProcessPoolConfiguration *_configuration;
 
 - (void)_setAllowsSpecificHTTPSCertificate:(NSArray *)certificateChain forHost:(NSString *)host;

Modified: trunk/Tools/ChangeLog (196996 => 196997)


--- trunk/Tools/ChangeLog	2016-02-23 22:17:24 UTC (rev 196996)
+++ trunk/Tools/ChangeLog	2016-02-23 22:29:01 UTC (rev 196997)
@@ -1,5 +1,17 @@
 2016-02-23  Anders Carlsson  <[email protected]>
 
+        WKProcessPool should conform to NSCoding
+        https://bugs.webkit.org/show_bug.cgi?id=154608
+
+        Reviewed by Sam Weinig.
+
+        Add tests.
+
+        * TestWebKitAPI/Tests/WebKit2Cocoa/Coding.mm:
+        (TEST):
+
+2016-02-23  Anders Carlsson  <[email protected]>
+
         WKWebsiteDataStore should conform to NSCoding
         https://bugs.webkit.org/show_bug.cgi?id=154605
 

Modified: trunk/Tools/TestWebKitAPI/Tests/WebKit2Cocoa/Coding.mm (196996 => 196997)


--- trunk/Tools/TestWebKitAPI/Tests/WebKit2Cocoa/Coding.mm	2016-02-23 22:17:24 UTC (rev 196996)
+++ trunk/Tools/TestWebKitAPI/Tests/WebKit2Cocoa/Coding.mm	2016-02-23 22:29:01 UTC (rev 196997)
@@ -27,7 +27,7 @@
 
 #if WK_API_ENABLED
 
-#import <WebKit/WKPreferences.h>
+#import <WebKit/WKProcessPoolPrivate.h>
 #import <wtf/RetainPtr.h>
 
 template<typename T>
@@ -65,6 +65,18 @@
 #endif
 }
 
+TEST(Coding, WKProcessPool_Shared)
+{
+    auto a = encodeAndDecode([WKProcessPool _sharedProcessPool]);
+    EXPECT_EQ([WKProcessPool _sharedProcessPool], a.get());
+}
+
+TEST(Coding, WKProcessPool)
+{
+    auto a = encodeAndDecode(adoptNS([[WKProcessPool alloc] init]).get());
+    EXPECT_NE([WKProcessPool _sharedProcessPool], a.get());
+}
+
 TEST(Coding, WKWebsiteDataStore_Default)
 {
     auto a = encodeAndDecode([WKWebsiteDataStore defaultDataStore]);
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to