Title: [238593] trunk
Revision
238593
Author
[email protected]
Date
2018-11-27 17:44:28 -0800 (Tue, 27 Nov 2018)

Log Message

Make synchronous IPC introduced in r237267 asynchronous
https://bugs.webkit.org/show_bug.cgi?id=190757

Patch by Alex Christensen <[email protected]> on 2018-11-27
Reviewed by Chris Dumez.

Source/WebKit:

* UIProcess/API/Cocoa/WKProcessPool.mm:
(-[WKProcessPool _getActivePagesOriginsInWebProcessForTesting:completionHandler:]):
(-[WKProcessPool _getActivePagesOriginsInWebProcessForTesting:]): Deleted.
* UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::activePagesOriginsInWebProcessForTesting):
* UIProcess/WebProcessPool.h:
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::activePagesDomainsForTesting):
* UIProcess/WebProcessProxy.h:
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::getActivePagesOriginsForTesting):
* WebProcess/WebProcess.messages.in:
* WebProcess/cocoa/WebProcessCocoa.mm:
(WebKit::WebProcess::getActivePagesOriginsForTesting):

Tools:

* TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:

Modified Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (238592 => 238593)


--- trunk/Source/WebKit/ChangeLog	2018-11-28 01:14:50 UTC (rev 238592)
+++ trunk/Source/WebKit/ChangeLog	2018-11-28 01:44:28 UTC (rev 238593)
@@ -1,5 +1,28 @@
 2018-11-27  Alex Christensen  <[email protected]>
 
+        Make synchronous IPC introduced in r237267 asynchronous
+        https://bugs.webkit.org/show_bug.cgi?id=190757
+
+        Reviewed by Chris Dumez.
+
+        * UIProcess/API/Cocoa/WKProcessPool.mm:
+        (-[WKProcessPool _getActivePagesOriginsInWebProcessForTesting:completionHandler:]):
+        (-[WKProcessPool _getActivePagesOriginsInWebProcessForTesting:]): Deleted.
+        * UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
+        * UIProcess/WebProcessPool.cpp:
+        (WebKit::WebProcessPool::activePagesOriginsInWebProcessForTesting):
+        * UIProcess/WebProcessPool.h:
+        * UIProcess/WebProcessProxy.cpp:
+        (WebKit::WebProcessProxy::activePagesDomainsForTesting):
+        * UIProcess/WebProcessProxy.h:
+        * WebProcess/WebProcess.cpp:
+        (WebKit::WebProcess::getActivePagesOriginsForTesting):
+        * WebProcess/WebProcess.messages.in:
+        * WebProcess/cocoa/WebProcessCocoa.mm:
+        (WebKit::WebProcess::getActivePagesOriginsForTesting):
+
+2018-11-27  Alex Christensen  <[email protected]>
+
         Safe browsing warning text needs to be visible on High Sierra
         https://bugs.webkit.org/show_bug.cgi?id=192022
 

Modified: trunk/Source/WebKit/UIProcess/API/Cocoa/WKProcessPool.mm (238592 => 238593)


--- trunk/Source/WebKit/UIProcess/API/Cocoa/WKProcessPool.mm	2018-11-28 01:14:50 UTC (rev 238592)
+++ trunk/Source/WebKit/UIProcess/API/Cocoa/WKProcessPool.mm	2018-11-28 01:44:28 UTC (rev 238593)
@@ -49,6 +49,7 @@
 #import <WebCore/PluginData.h>
 #import <pal/spi/cf/CFNetworkSPI.h>
 #import <pal/spi/cocoa/NSKeyedArchiverSPI.h>
+#import <wtf/BlockPtr.h>
 #import <wtf/RetainPtr.h>
 #import <wtf/WeakObjCPtr.h>
 
@@ -579,14 +580,14 @@
     return wrapper(_processPool->resumeDownload(API::Data::createWithoutCopying(resumeData).ptr(), path));
 }
 
-- (NSArray<NSString *> *)_getActivePagesOriginsInWebProcessForTesting:(pid_t)pid
+- (void)_getActivePagesOriginsInWebProcessForTesting:(pid_t)pid completionHandler:(void(^)(NSArray<NSString *> *))completionHandler
 {
-    auto activePagesOrigins = _processPool->activePagesOriginsInWebProcessForTesting(pid);
-
-    NSMutableArray<NSString *> *array = [[NSMutableArray alloc] initWithCapacity:activePagesOrigins.size()];
-    for (auto& origin : activePagesOrigins)
-        [array addObject:(NSString *)origin];
-    return [array autorelease];
+    _processPool->activePagesOriginsInWebProcessForTesting(pid, [completionHandler = makeBlockPtr(completionHandler)] (Vector<String>&& activePagesOrigins) {
+        NSMutableArray<NSString *> *array = [[[NSMutableArray alloc] initWithCapacity:activePagesOrigins.size()] autorelease];
+        for (auto& origin : activePagesOrigins)
+            [array addObject:origin];
+        completionHandler(array);
+    });
 }
 
 - (BOOL)_networkProcessHasEntitlementForTesting:(NSString *)entitlement

Modified: trunk/Source/WebKit/UIProcess/API/Cocoa/WKProcessPoolPrivate.h (238592 => 238593)


--- trunk/Source/WebKit/UIProcess/API/Cocoa/WKProcessPoolPrivate.h	2018-11-28 01:14:50 UTC (rev 238592)
+++ trunk/Source/WebKit/UIProcess/API/Cocoa/WKProcessPoolPrivate.h	2018-11-28 01:44:28 UTC (rev 238593)
@@ -114,7 +114,7 @@
 - (void)_setAllowsAnySSLCertificateForServiceWorker:(BOOL)allows WK_API_AVAILABLE(macosx(10.13.4), ios(11.3));
 - (void)_registerURLSchemeServiceWorkersCanHandle:(NSString *)scheme WK_API_AVAILABLE(macosx(10.13.4), ios(11.3));
 - (void)_setMaximumNumberOfProcesses:(NSUInteger)value WK_API_AVAILABLE(macosx(10.13.4), ios(11.3));
-- (NSArray<NSString *> *)_getActivePagesOriginsInWebProcessForTesting:(pid_t)pid WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA));
+- (void)_getActivePagesOriginsInWebProcessForTesting:(pid_t)pid completionHandler:(void(^)(NSArray<NSString *> *))completionHandler WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA));
 - (BOOL)_networkProcessHasEntitlementForTesting:(NSString *)entitlement WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA));
 
 @property (nonatomic, getter=_isCookieStoragePartitioningEnabled, setter=_setCookieStoragePartitioningEnabled:) BOOL _cookieStoragePartitioningEnabled WK_API_DEPRECATED("Partitioned cookies are no longer supported", macosx(10.12.3, WK_MAC_TBA), ios(10.3, WK_IOS_TBA));

Modified: trunk/Source/WebKit/UIProcess/WebProcessPool.cpp (238592 => 238593)


--- trunk/Source/WebKit/UIProcess/WebProcessPool.cpp	2018-11-28 01:14:50 UTC (rev 238592)
+++ trunk/Source/WebKit/UIProcess/WebProcessPool.cpp	2018-11-28 01:44:28 UTC (rev 238593)
@@ -1343,13 +1343,13 @@
     return m_networkProcess->processIdentifier();
 }
 
-Vector<String> WebProcessPool::activePagesOriginsInWebProcessForTesting(ProcessID pid)
+void WebProcessPool::activePagesOriginsInWebProcessForTesting(ProcessID pid, CompletionHandler<void(Vector<String>&&)>&& completionHandler)
 {
     for (auto& process : m_processes) {
         if (process->processIdentifier() == pid)
-            return process->activePagesDomainsForTesting();
+            return process->activePagesDomainsForTesting(WTFMove(completionHandler));
     }
-    return { };
+    completionHandler({ });
 }
 
 void WebProcessPool::setAlwaysUsesComplexTextCodePath(bool alwaysUseComplexText)

Modified: trunk/Source/WebKit/UIProcess/WebProcessPool.h (238592 => 238593)


--- trunk/Source/WebKit/UIProcess/WebProcessPool.h	2018-11-28 01:14:50 UTC (rev 238592)
+++ trunk/Source/WebKit/UIProcess/WebProcessPool.h	2018-11-28 01:44:28 UTC (rev 238593)
@@ -215,7 +215,7 @@
     void clearSupportedPlugins();
 
     ProcessID networkProcessIdentifier();
-    Vector<String> activePagesOriginsInWebProcessForTesting(ProcessID);
+    void activePagesOriginsInWebProcessForTesting(ProcessID, CompletionHandler<void(Vector<String>&&)>&&);
     bool networkProcessHasEntitlementForTesting(const String&);
 
     WebPageGroup& defaultPageGroup() { return m_defaultPageGroup.get(); }

Modified: trunk/Source/WebKit/UIProcess/WebProcessProxy.cpp (238592 => 238593)


--- trunk/Source/WebKit/UIProcess/WebProcessProxy.cpp	2018-11-28 01:14:50 UTC (rev 238592)
+++ trunk/Source/WebKit/UIProcess/WebProcessProxy.cpp	2018-11-28 01:44:28 UTC (rev 238593)
@@ -1414,11 +1414,9 @@
     processPool().didCollectPrewarmInformation(domain, prewarmInformation);
 }
 
-Vector<String> WebProcessProxy::activePagesDomainsForTesting()
+void WebProcessProxy::activePagesDomainsForTesting(CompletionHandler<void(Vector<String>&&)>&& completionHandler)
 {
-    Vector<String> activeDomains;
-    sendSync(Messages::WebProcess::GetActivePagesOriginsForTesting(), Messages::WebProcess::GetActivePagesOriginsForTesting::Reply(activeDomains), 0);
-    return activeDomains;
+    connection()->sendWithAsyncReply(Messages::WebProcess::GetActivePagesOriginsForTesting(), WTFMove(completionHandler));
 }
 
 #if PLATFORM(WATCHOS)

Modified: trunk/Source/WebKit/UIProcess/WebProcessProxy.h (238592 => 238593)


--- trunk/Source/WebKit/UIProcess/WebProcessProxy.h	2018-11-28 01:14:50 UTC (rev 238592)
+++ trunk/Source/WebKit/UIProcess/WebProcessProxy.h	2018-11-28 01:44:28 UTC (rev 238593)
@@ -125,7 +125,7 @@
     unsigned pageCount() const { return m_pageMap.size(); }
     unsigned visiblePageCount() const { return m_visiblePageCounter.value(); }
 
-    Vector<String> activePagesDomainsForTesting(); // This is what is reported to ActivityMonitor.
+    void activePagesDomainsForTesting(CompletionHandler<void(Vector<String>&&)>&&); // This is what is reported to ActivityMonitor.
 
     virtual bool isServiceWorkerProcess() const { return false; }
 

Modified: trunk/Source/WebKit/WebProcess/WebProcess.cpp (238592 => 238593)


--- trunk/Source/WebKit/WebProcess/WebProcess.cpp	2018-11-28 01:14:50 UTC (rev 238592)
+++ trunk/Source/WebKit/WebProcess/WebProcess.cpp	2018-11-28 01:44:28 UTC (rev 238593)
@@ -1343,8 +1343,9 @@
 {
 }
 
-void WebProcess::getActivePagesOriginsForTesting(Vector<String>&)
+void WebProcess::getActivePagesOriginsForTesting(CompletionHandler<void(Vector<String>&&)>&& completionHandler)
 {
+    completionHandler({ });
 }
 
 void WebProcess::updateCPULimit()

Modified: trunk/Source/WebKit/WebProcess/WebProcess.h (238592 => 238593)


--- trunk/Source/WebKit/WebProcess/WebProcess.h	2018-11-28 01:14:50 UTC (rev 238592)
+++ trunk/Source/WebKit/WebProcess/WebProcess.h	2018-11-28 01:44:28 UTC (rev 238593)
@@ -192,7 +192,7 @@
 #endif
 
     void updateActivePages();
-    void getActivePagesOriginsForTesting(Vector<String>&);
+    void getActivePagesOriginsForTesting(CompletionHandler<void(Vector<String>&&)>&&);
     void pageActivityStateDidChange(uint64_t pageID, OptionSet<WebCore::ActivityState::Flag> changed);
 
     void setHiddenPageDOMTimerThrottlingIncreaseLimit(int milliseconds);

Modified: trunk/Source/WebKit/WebProcess/WebProcess.messages.in (238592 => 238593)


--- trunk/Source/WebKit/WebProcess/WebProcess.messages.in	2018-11-28 01:14:50 UTC (rev 238592)
+++ trunk/Source/WebKit/WebProcess/WebProcess.messages.in	2018-11-28 01:44:28 UTC (rev 238593)
@@ -130,7 +130,7 @@
 
     MarkIsNoLongerPrewarmed()
     UpdateActivePages()
-    GetActivePagesOriginsForTesting() -> (Vector<String> activeOrigins) LegacySync
+    GetActivePagesOriginsForTesting() -> (Vector<String> activeOrigins) Async
 
 #if PLATFORM(MAC)
     SetScreenProperties(struct WebCore::ScreenProperties screenProperties)

Modified: trunk/Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm (238592 => 238593)


--- trunk/Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm	2018-11-28 01:14:50 UTC (rev 238592)
+++ trunk/Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm	2018-11-28 01:44:28 UTC (rev 238593)
@@ -514,15 +514,17 @@
 #endif
 }
 
-void WebProcess::getActivePagesOriginsForTesting(Vector<String>& activeOrigins)
+void WebProcess::getActivePagesOriginsForTesting(CompletionHandler<void(Vector<String>&&)>&& completionHandler)
 {
 #if PLATFORM(MAC)
     auto activeOriginsAsNSStrings = activePagesOrigins(m_pageMap);
-    activeOrigins.reserveCapacity([activeOriginsAsNSStrings count]);
+    Vector<String> activeOrigins;
+    activeOrigins.reserveInitialCapacity([activeOriginsAsNSStrings count]);
     for (NSString* activeOrigin in activeOriginsAsNSStrings.get())
         activeOrigins.uncheckedAppend(activeOrigin);
+    completionHandler(WTFMove(activeOrigins));
 #else
-    UNUSED_PARAM(activeOrigins);
+    completionHandler({ });
 #endif
 }
 

Modified: trunk/Tools/ChangeLog (238592 => 238593)


--- trunk/Tools/ChangeLog	2018-11-28 01:14:50 UTC (rev 238592)
+++ trunk/Tools/ChangeLog	2018-11-28 01:44:28 UTC (rev 238593)
@@ -1,3 +1,12 @@
+2018-11-27  Alex Christensen  <[email protected]>
+
+        Make synchronous IPC introduced in r237267 asynchronous
+        https://bugs.webkit.org/show_bug.cgi?id=190757
+
+        Reviewed by Chris Dumez.
+
+        * TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:
+
 2018-11-27  Jonathan Bedard  <[email protected]>
 
         webkitpy: Add watchOS ports

Modified: trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm (238592 => 238593)


--- trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm	2018-11-28 01:14:50 UTC (rev 238592)
+++ trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm	2018-11-28 01:44:28 UTC (rev 238593)
@@ -764,9 +764,13 @@
     done = false;
 
     auto webkitPID = [webView _webProcessIdentifier];
-    auto* activeDomains = [processPool _getActivePagesOriginsInWebProcessForTesting:webkitPID];
-    EXPECT_EQ(1u, activeDomains.count);
-    EXPECT_WK_STREQ(@"pson://www.webkit.org", activeDomains[0]);
+    [processPool _getActivePagesOriginsInWebProcessForTesting:webkitPID completionHandler:^(NSArray<NSString *> *activeDomains) {
+        EXPECT_EQ(1u, activeDomains.count);
+        EXPECT_WK_STREQ(@"pson://www.webkit.org", activeDomains[0]);
+        done = true;
+    }];
+    TestWebKitAPI::Util::run(&done);
+    done = false;
 
     request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"pson://www.google.com/main.html"]];
     [webView loadRequest:request];
@@ -777,13 +781,21 @@
     auto googlePID = [webView _webProcessIdentifier];
     EXPECT_NE(webkitPID, googlePID);
 
-    activeDomains = [processPool _getActivePagesOriginsInWebProcessForTesting:googlePID];
-    EXPECT_EQ(1u, activeDomains.count);
-    EXPECT_WK_STREQ(@"pson://www.google.com", activeDomains[0]);
+    [processPool _getActivePagesOriginsInWebProcessForTesting:googlePID completionHandler:^(NSArray<NSString *> *activeDomains) {
+        EXPECT_EQ(1u, activeDomains.count);
+        EXPECT_WK_STREQ(@"pson://www.google.com", activeDomains[0]);
+        done = true;
+    }];
+    TestWebKitAPI::Util::run(&done);
+    done = false;
 
-    activeDomains = [processPool _getActivePagesOriginsInWebProcessForTesting:webkitPID];
-    EXPECT_EQ(1u, activeDomains.count);
-    EXPECT_WK_STREQ(@"pson://www.webkit.org", activeDomains[0]);
+    [processPool _getActivePagesOriginsInWebProcessForTesting:webkitPID completionHandler:^(NSArray<NSString *> *activeDomains) {
+        EXPECT_EQ(1u, activeDomains.count);
+        EXPECT_WK_STREQ(@"pson://www.webkit.org", activeDomains[0]);
+        done = true;
+    }];
+    TestWebKitAPI::Util::run(&done);
+    done = false;
 
     [webView goBack]; // Back to webkit.org.
 
@@ -795,14 +807,23 @@
     auto pidAfterBackNavigation = [webView _webProcessIdentifier];
     EXPECT_EQ(webkitPID, pidAfterBackNavigation);
 
-    activeDomains = [processPool _getActivePagesOriginsInWebProcessForTesting:googlePID];
-    EXPECT_EQ(1u, activeDomains.count);
-    EXPECT_WK_STREQ(@"pson://www.google.com", activeDomains[0]);
+    [processPool _getActivePagesOriginsInWebProcessForTesting:googlePID completionHandler:^(NSArray<NSString *> *activeDomains) {
+        EXPECT_EQ(1u, activeDomains.count);
+        EXPECT_WK_STREQ(@"pson://www.google.com", activeDomains[0]);
+        done = true;
+    }];
+    TestWebKitAPI::Util::run(&done);
+    done = false;
 
-    activeDomains = [processPool _getActivePagesOriginsInWebProcessForTesting:webkitPID];
-    EXPECT_EQ(1u, activeDomains.count);
-    EXPECT_WK_STREQ(@"pson://www.webkit.org", activeDomains[0]);
+    [processPool _getActivePagesOriginsInWebProcessForTesting:webkitPID completionHandler:^(NSArray<NSString *> *activeDomains) {
+        EXPECT_EQ(1u, activeDomains.count);
+        EXPECT_WK_STREQ(@"pson://www.webkit.org", activeDomains[0]);
+        done = true;
+    }];
+    TestWebKitAPI::Util::run(&done);
+    done = false;
 }
+
 #endif // PLATFORM(MAC)
 
 TEST(ProcessSwap, BackWithoutSuspendedPage)
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to