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)