Changeset 238593 in webkit


Ignore:
Timestamp:
Nov 27, 2018 5:44:28 PM (5 years ago)
Author:
commit-queue@webkit.org
Message:

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

Patch by Alex Christensen <achristensen@webkit.org> 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:
Location:
trunk
Files:
13 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/ChangeLog

    r238585 r238593  
     12018-11-27  Alex Christensen  <achristensen@webkit.org>
     2
     3        Make synchronous IPC introduced in r237267 asynchronous
     4        https://bugs.webkit.org/show_bug.cgi?id=190757
     5
     6        Reviewed by Chris Dumez.
     7
     8        * UIProcess/API/Cocoa/WKProcessPool.mm:
     9        (-[WKProcessPool _getActivePagesOriginsInWebProcessForTesting:completionHandler:]):
     10        (-[WKProcessPool _getActivePagesOriginsInWebProcessForTesting:]): Deleted.
     11        * UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
     12        * UIProcess/WebProcessPool.cpp:
     13        (WebKit::WebProcessPool::activePagesOriginsInWebProcessForTesting):
     14        * UIProcess/WebProcessPool.h:
     15        * UIProcess/WebProcessProxy.cpp:
     16        (WebKit::WebProcessProxy::activePagesDomainsForTesting):
     17        * UIProcess/WebProcessProxy.h:
     18        * WebProcess/WebProcess.cpp:
     19        (WebKit::WebProcess::getActivePagesOriginsForTesting):
     20        * WebProcess/WebProcess.messages.in:
     21        * WebProcess/cocoa/WebProcessCocoa.mm:
     22        (WebKit::WebProcess::getActivePagesOriginsForTesting):
     23
    1242018-11-27  Alex Christensen  <achristensen@webkit.org>
    225
  • trunk/Source/WebKit/UIProcess/API/Cocoa/WKProcessPool.mm

    r238248 r238593  
    5050#import <pal/spi/cf/CFNetworkSPI.h>
    5151#import <pal/spi/cocoa/NSKeyedArchiverSPI.h>
     52#import <wtf/BlockPtr.h>
    5253#import <wtf/RetainPtr.h>
    5354#import <wtf/WeakObjCPtr.h>
     
    580581}
    581582
    582 - (NSArray<NSString *> *)_getActivePagesOriginsInWebProcessForTesting:(pid_t)pid
    583 {
    584     auto activePagesOrigins = _processPool->activePagesOriginsInWebProcessForTesting(pid);
    585 
    586     NSMutableArray<NSString *> *array = [[NSMutableArray alloc] initWithCapacity:activePagesOrigins.size()];
    587     for (auto& origin : activePagesOrigins)
    588         [array addObject:(NSString *)origin];
    589     return [array autorelease];
     583- (void)_getActivePagesOriginsInWebProcessForTesting:(pid_t)pid completionHandler:(void(^)(NSArray<NSString *> *))completionHandler
     584{
     585    _processPool->activePagesOriginsInWebProcessForTesting(pid, [completionHandler = makeBlockPtr(completionHandler)] (Vector<String>&& activePagesOrigins) {
     586        NSMutableArray<NSString *> *array = [[[NSMutableArray alloc] initWithCapacity:activePagesOrigins.size()] autorelease];
     587        for (auto& origin : activePagesOrigins)
     588            [array addObject:origin];
     589        completionHandler(array);
     590    });
    590591}
    591592
  • trunk/Source/WebKit/UIProcess/API/Cocoa/WKProcessPoolPrivate.h

    r237830 r238593  
    115115- (void)_registerURLSchemeServiceWorkersCanHandle:(NSString *)scheme WK_API_AVAILABLE(macosx(10.13.4), ios(11.3));
    116116- (void)_setMaximumNumberOfProcesses:(NSUInteger)value WK_API_AVAILABLE(macosx(10.13.4), ios(11.3));
    117 - (NSArray<NSString *> *)_getActivePagesOriginsInWebProcessForTesting:(pid_t)pid WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA));
     117- (void)_getActivePagesOriginsInWebProcessForTesting:(pid_t)pid completionHandler:(void(^)(NSArray<NSString *> *))completionHandler WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA));
    118118- (BOOL)_networkProcessHasEntitlementForTesting:(NSString *)entitlement WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA));
    119119
  • trunk/Source/WebKit/UIProcess/WebProcessPool.cpp

    r238525 r238593  
    13441344}
    13451345
    1346 Vector<String> WebProcessPool::activePagesOriginsInWebProcessForTesting(ProcessID pid)
     1346void WebProcessPool::activePagesOriginsInWebProcessForTesting(ProcessID pid, CompletionHandler<void(Vector<String>&&)>&& completionHandler)
    13471347{
    13481348    for (auto& process : m_processes) {
    13491349        if (process->processIdentifier() == pid)
    1350             return process->activePagesDomainsForTesting();
    1351     }
    1352     return { };
     1350            return process->activePagesDomainsForTesting(WTFMove(completionHandler));
     1351    }
     1352    completionHandler({ });
    13531353}
    13541354
  • trunk/Source/WebKit/UIProcess/WebProcessPool.h

    r238248 r238593  
    216216
    217217    ProcessID networkProcessIdentifier();
    218     Vector<String> activePagesOriginsInWebProcessForTesting(ProcessID);
     218    void activePagesOriginsInWebProcessForTesting(ProcessID, CompletionHandler<void(Vector<String>&&)>&&);
    219219    bool networkProcessHasEntitlementForTesting(const String&);
    220220
  • trunk/Source/WebKit/UIProcess/WebProcessProxy.cpp

    r238388 r238593  
    14151415}
    14161416
    1417 Vector<String> WebProcessProxy::activePagesDomainsForTesting()
    1418 {
    1419     Vector<String> activeDomains;
    1420     sendSync(Messages::WebProcess::GetActivePagesOriginsForTesting(), Messages::WebProcess::GetActivePagesOriginsForTesting::Reply(activeDomains), 0);
    1421     return activeDomains;
     1417void WebProcessProxy::activePagesDomainsForTesting(CompletionHandler<void(Vector<String>&&)>&& completionHandler)
     1418{
     1419    connection()->sendWithAsyncReply(Messages::WebProcess::GetActivePagesOriginsForTesting(), WTFMove(completionHandler));
    14221420}
    14231421
  • trunk/Source/WebKit/UIProcess/WebProcessProxy.h

    r238388 r238593  
    126126    unsigned visiblePageCount() const { return m_visiblePageCounter.value(); }
    127127
    128     Vector<String> activePagesDomainsForTesting(); // This is what is reported to ActivityMonitor.
     128    void activePagesDomainsForTesting(CompletionHandler<void(Vector<String>&&)>&&); // This is what is reported to ActivityMonitor.
    129129
    130130    virtual bool isServiceWorkerProcess() const { return false; }
  • trunk/Source/WebKit/WebProcess/WebProcess.cpp

    r238490 r238593  
    13441344}
    13451345
    1346 void WebProcess::getActivePagesOriginsForTesting(Vector<String>&)
    1347 {
     1346void WebProcess::getActivePagesOriginsForTesting(CompletionHandler<void(Vector<String>&&)>&& completionHandler)
     1347{
     1348    completionHandler({ });
    13481349}
    13491350
  • trunk/Source/WebKit/WebProcess/WebProcess.h

    r238490 r238593  
    193193
    194194    void updateActivePages();
    195     void getActivePagesOriginsForTesting(Vector<String>&);
     195    void getActivePagesOriginsForTesting(CompletionHandler<void(Vector<String>&&)>&&);
    196196    void pageActivityStateDidChange(uint64_t pageID, OptionSet<WebCore::ActivityState::Flag> changed);
    197197
  • trunk/Source/WebKit/WebProcess/WebProcess.messages.in

    r238388 r238593  
    131131    MarkIsNoLongerPrewarmed()
    132132    UpdateActivePages()
    133     GetActivePagesOriginsForTesting() -> (Vector<String> activeOrigins) LegacySync
     133    GetActivePagesOriginsForTesting() -> (Vector<String> activeOrigins) Async
    134134
    135135#if PLATFORM(MAC)
  • trunk/Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm

    r238332 r238593  
    515515}
    516516
    517 void WebProcess::getActivePagesOriginsForTesting(Vector<String>& activeOrigins)
     517void WebProcess::getActivePagesOriginsForTesting(CompletionHandler<void(Vector<String>&&)>&& completionHandler)
    518518{
    519519#if PLATFORM(MAC)
    520520    auto activeOriginsAsNSStrings = activePagesOrigins(m_pageMap);
    521     activeOrigins.reserveCapacity([activeOriginsAsNSStrings count]);
     521    Vector<String> activeOrigins;
     522    activeOrigins.reserveInitialCapacity([activeOriginsAsNSStrings count]);
    522523    for (NSString* activeOrigin in activeOriginsAsNSStrings.get())
    523524        activeOrigins.uncheckedAppend(activeOrigin);
    524 #else
    525     UNUSED_PARAM(activeOrigins);
     525    completionHandler(WTFMove(activeOrigins));
     526#else
     527    completionHandler({ });
    526528#endif
    527529}
  • trunk/Tools/ChangeLog

    r238590 r238593  
     12018-11-27  Alex Christensen  <achristensen@webkit.org>
     2
     3        Make synchronous IPC introduced in r237267 asynchronous
     4        https://bugs.webkit.org/show_bug.cgi?id=190757
     5
     6        Reviewed by Chris Dumez.
     7
     8        * TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:
     9
    1102018-11-27  Jonathan Bedard  <jbedard@apple.com>
    211
  • trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm

    r238565 r238593  
    765765
    766766    auto webkitPID = [webView _webProcessIdentifier];
    767     auto* activeDomains = [processPool _getActivePagesOriginsInWebProcessForTesting:webkitPID];
    768     EXPECT_EQ(1u, activeDomains.count);
    769     EXPECT_WK_STREQ(@"pson://www.webkit.org", activeDomains[0]);
     767    [processPool _getActivePagesOriginsInWebProcessForTesting:webkitPID completionHandler:^(NSArray<NSString *> *activeDomains) {
     768        EXPECT_EQ(1u, activeDomains.count);
     769        EXPECT_WK_STREQ(@"pson://www.webkit.org", activeDomains[0]);
     770        done = true;
     771    }];
     772    TestWebKitAPI::Util::run(&done);
     773    done = false;
    770774
    771775    request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"pson://www.google.com/main.html"]];
     
    778782    EXPECT_NE(webkitPID, googlePID);
    779783
    780     activeDomains = [processPool _getActivePagesOriginsInWebProcessForTesting:googlePID];
    781     EXPECT_EQ(1u, activeDomains.count);
    782     EXPECT_WK_STREQ(@"pson://www.google.com", activeDomains[0]);
    783 
    784     activeDomains = [processPool _getActivePagesOriginsInWebProcessForTesting:webkitPID];
    785     EXPECT_EQ(1u, activeDomains.count);
    786     EXPECT_WK_STREQ(@"pson://www.webkit.org", activeDomains[0]);
     784    [processPool _getActivePagesOriginsInWebProcessForTesting:googlePID completionHandler:^(NSArray<NSString *> *activeDomains) {
     785        EXPECT_EQ(1u, activeDomains.count);
     786        EXPECT_WK_STREQ(@"pson://www.google.com", activeDomains[0]);
     787        done = true;
     788    }];
     789    TestWebKitAPI::Util::run(&done);
     790    done = false;
     791
     792    [processPool _getActivePagesOriginsInWebProcessForTesting:webkitPID completionHandler:^(NSArray<NSString *> *activeDomains) {
     793        EXPECT_EQ(1u, activeDomains.count);
     794        EXPECT_WK_STREQ(@"pson://www.webkit.org", activeDomains[0]);
     795        done = true;
     796    }];
     797    TestWebKitAPI::Util::run(&done);
     798    done = false;
    787799
    788800    [webView goBack]; // Back to webkit.org.
     
    796808    EXPECT_EQ(webkitPID, pidAfterBackNavigation);
    797809
    798     activeDomains = [processPool _getActivePagesOriginsInWebProcessForTesting:googlePID];
    799     EXPECT_EQ(1u, activeDomains.count);
    800     EXPECT_WK_STREQ(@"pson://www.google.com", activeDomains[0]);
    801 
    802     activeDomains = [processPool _getActivePagesOriginsInWebProcessForTesting:webkitPID];
    803     EXPECT_EQ(1u, activeDomains.count);
    804     EXPECT_WK_STREQ(@"pson://www.webkit.org", activeDomains[0]);
    805 }
     810    [processPool _getActivePagesOriginsInWebProcessForTesting:googlePID completionHandler:^(NSArray<NSString *> *activeDomains) {
     811        EXPECT_EQ(1u, activeDomains.count);
     812        EXPECT_WK_STREQ(@"pson://www.google.com", activeDomains[0]);
     813        done = true;
     814    }];
     815    TestWebKitAPI::Util::run(&done);
     816    done = false;
     817
     818    [processPool _getActivePagesOriginsInWebProcessForTesting:webkitPID completionHandler:^(NSArray<NSString *> *activeDomains) {
     819        EXPECT_EQ(1u, activeDomains.count);
     820        EXPECT_WK_STREQ(@"pson://www.webkit.org", activeDomains[0]);
     821        done = true;
     822    }];
     823    TestWebKitAPI::Util::run(&done);
     824    done = false;
     825}
     826
    806827#endif // PLATFORM(MAC)
    807828
Note: See TracChangeset for help on using the changeset viewer.