Changeset 262212 in webkit


Ignore:
Timestamp:
May 27, 2020 1:38:43 PM (4 years ago)
Author:
Kate Cheney
Message:

Make sure bundle identifier testing override is set in the network process
https://bugs.webkit.org/show_bug.cgi?id=212288
<rdar://problem/63539061>

Reviewed by Chris Dumez.

Set the bundle identifier in the network process if a layout test
updates it. This value usually only gets updated when a new network
process is initialized, which does not happen for every test. So it
should be set/cleared as needed.

Source/WebKit:

No new tests, will fix http/tests/in-app-browser-privacy/ tests.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::updateBundleIdentifierInNetworkProcess):

  • NetworkProcess/NetworkProcess.h:
  • NetworkProcess/NetworkProcess.messages.in:
  • UIProcess/API/C/WKWebsiteDataStoreRef.cpp:

(WKWebsiteDataStoreUpdateBundleIdentifierInNetworkProcess):

  • UIProcess/API/C/WKWebsiteDataStoreRef.h:
  • UIProcess/Network/NetworkProcessProxy.cpp:

(WebKit::NetworkProcessProxy::updateBundleIdentifierInNetworkProcess):

  • UIProcess/Network/NetworkProcessProxy.h:
  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::updateBundleIdentifierInNetworkProcess):

  • UIProcess/WebsiteData/WebsiteDataStore.h:

Tools:

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::createWebViewWithOptions):
(WTR::TestController::updateBundleIdentifierInNetworkProcess):

  • WebKitTestRunner/TestController.h:
Location:
trunk
Files:
13 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/ChangeLog

    r262207 r262212  
     12020-05-27  Kate Cheney  <katherine_cheney@apple.com>
     2
     3        Make sure bundle identifier testing override is set in the network process
     4        https://bugs.webkit.org/show_bug.cgi?id=212288
     5        <rdar://problem/63539061>
     6
     7        Reviewed by Chris Dumez.
     8
     9        Set the bundle identifier in the network process if a layout test
     10        updates it. This value usually only gets updated when a new network
     11        process is initialized, which does not happen for every test. So it
     12        should be set/cleared as needed.
     13
     14        No new tests, will fix http/tests/in-app-browser-privacy/ tests.
     15
     16        * NetworkProcess/NetworkProcess.cpp:
     17        (WebKit::NetworkProcess::updateBundleIdentifierInNetworkProcess):
     18        * NetworkProcess/NetworkProcess.h:
     19        * NetworkProcess/NetworkProcess.messages.in:
     20        * UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
     21        (WKWebsiteDataStoreUpdateBundleIdentifierInNetworkProcess):
     22        * UIProcess/API/C/WKWebsiteDataStoreRef.h:
     23        * UIProcess/Network/NetworkProcessProxy.cpp:
     24        (WebKit::NetworkProcessProxy::updateBundleIdentifierInNetworkProcess):
     25        * UIProcess/Network/NetworkProcessProxy.h:
     26        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
     27        (WebKit::WebsiteDataStore::updateBundleIdentifierInNetworkProcess):
     28        * UIProcess/WebsiteData/WebsiteDataStore.h:
     29
    1302020-05-27  Per Arne Vollan  <pvollan@apple.com>
    231
  • trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp

    r261963 r262212  
    27552755}
    27562756
     2757void NetworkProcess::updateBundleIdentifier(String&& bundleIdentifier, CompletionHandler<void()>&& completionHandler)
     2758{
     2759#if PLATFORM(COCOA)
     2760    WebCore::clearApplicationBundleIdentifierTestingOverride();
     2761    WebCore::setApplicationBundleIdentifier(bundleIdentifier);
     2762#endif
     2763    completionHandler();
     2764}
     2765
     2766void NetworkProcess::clearBundleIdentifier(CompletionHandler<void()>&& completionHandler)
     2767{
     2768#if PLATFORM(COCOA)
     2769    WebCore::clearApplicationBundleIdentifierTestingOverride();
     2770#endif
     2771    completionHandler();
     2772}
     2773
    27572774} // namespace WebKit
  • trunk/Source/WebKit/NetworkProcess/NetworkProcess.h

    r261963 r262212  
    356356
    357357    void broadcastConsoleMessage(PAL::SessionID, JSC::MessageSource, JSC::MessageLevel, const String& message);
     358    void updateBundleIdentifier(String&&, CompletionHandler<void()>&&);
     359    void clearBundleIdentifier(CompletionHandler<void()>&&);
    358360
    359361private:
  • trunk/Source/WebKit/NetworkProcess/NetworkProcess.messages.in

    r261963 r262212  
    185185    ClearServiceWorkerEntitlementOverride() -> () Async
    186186#endif
     187    UpdateBundleIdentifier(String bundleIdentifier) -> () Async
     188    ClearBundleIdentifier() -> () Async
    187189}
  • trunk/Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreRef.cpp

    r261963 r262212  
    806806#endif
    807807}
     808
     809void WKWebsiteDataStoreUpdateBundleIdentifierInNetworkProcess(WKWebsiteDataStoreRef dataStoreRef, const WKStringRef bundleIdentifier, void* context, WKWebsiteDataStoreUpdateBundleIdentifierInNetworkProcessFunction completionHandler)
     810{
     811    WebKit::toImpl(dataStoreRef)->updateBundleIdentifierInNetworkProcess(WebKit::toImpl(bundleIdentifier)->string(), [context, completionHandler] {
     812        completionHandler(context);
     813    });
     814}
     815
     816void WKWebsiteDataStoreClearBundleIdentifierInNetworkProcess(WKWebsiteDataStoreRef dataStoreRef, void* context, WKWebsiteDataStoreClearBundleIdentifierInNetworkProcessFunction completionHandler)
     817{
     818    WebKit::toImpl(dataStoreRef)->clearBundleIdentifierInNetworkProcess([context, completionHandler] {
     819        completionHandler(context);
     820    });
     821}
  • trunk/Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreRef.h

    r261963 r262212  
    178178WK_EXPORT void WKWebsiteDataStoreReinitializeAppBoundDomains(WKWebsiteDataStoreRef dataStoreRef);
    179179
     180typedef void (*WKWebsiteDataStoreUpdateBundleIdentifierInNetworkProcessFunction)(void* functionContext);
     181WK_EXPORT void WKWebsiteDataStoreUpdateBundleIdentifierInNetworkProcess(WKWebsiteDataStoreRef dataStoreRef, WKStringRef bundleIdentifier, void* context, WKWebsiteDataStoreUpdateBundleIdentifierInNetworkProcessFunction completionHandler);
     182
     183typedef void (*WKWebsiteDataStoreClearBundleIdentifierInNetworkProcessFunction)(void* functionContext);
     184WK_EXPORT void WKWebsiteDataStoreClearBundleIdentifierInNetworkProcess(WKWebsiteDataStoreRef dataStoreRef, void* context, WKWebsiteDataStoreClearBundleIdentifierInNetworkProcessFunction completionHandler);
     185
    180186#ifdef __cplusplus
    181187}
  • trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp

    r262022 r262212  
    15381538}
    15391539
     1540void NetworkProcessProxy::updateBundleIdentifier(const String& bundleIdentifier, CompletionHandler<void()>&& completionHandler)
     1541{
     1542    sendWithAsyncReply(Messages::NetworkProcess::UpdateBundleIdentifier(bundleIdentifier), WTFMove(completionHandler));
     1543}
     1544
     1545void NetworkProcessProxy::clearBundleIdentifier(CompletionHandler<void()>&& completionHandler)
     1546{
     1547    sendWithAsyncReply(Messages::NetworkProcess::ClearBundleIdentifier(), WTFMove(completionHandler));
     1548}
     1549
    15401550} // namespace WebKit
    15411551
  • trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.h

    r261963 r262212  
    234234    // ProcessThrottlerClient
    235235    void sendPrepareToSuspend(IsSuspensionImminent, CompletionHandler<void()>&&) final;
     236    void updateBundleIdentifier(const String&, CompletionHandler<void()>&&);
     237    void clearBundleIdentifier(CompletionHandler<void()>&&);
    236238
    237239private:
  • trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp

    r261963 r262212  
    24862486#endif
    24872487
    2488 }
     2488void WebsiteDataStore::updateBundleIdentifierInNetworkProcess(const String& bundleIdentifier, CompletionHandler<void()>&& completionHandler)
     2489{
     2490    auto callbackAggregator = CallbackAggregator::create(WTFMove(completionHandler));
     2491
     2492    for (auto& processPool : processPools())
     2493        processPool->ensureNetworkProcess().updateBundleIdentifier(bundleIdentifier, [callbackAggregator = callbackAggregator.copyRef()] { });
     2494}
     2495
     2496void WebsiteDataStore::clearBundleIdentifierInNetworkProcess(CompletionHandler<void()>&& completionHandler)
     2497{
     2498    auto callbackAggregator = CallbackAggregator::create(WTFMove(completionHandler));
     2499
     2500    for (auto& processPool : processPools())
     2501        processPool->ensureNetworkProcess().clearBundleIdentifier([callbackAggregator = callbackAggregator.copyRef()] { });
     2502}
     2503
     2504}
  • trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h

    r261963 r262212  
    300300    void reinitializeAppBoundDomains();
    301301    static void setAppBoundDomainsForTesting(HashSet<WebCore::RegistrableDomain>&&, CompletionHandler<void()>&&);
    302 
     302    void updateBundleIdentifierInNetworkProcess(const String&, CompletionHandler<void()>&&);
     303    void clearBundleIdentifierInNetworkProcess(CompletionHandler<void()>&&);
     304   
    303305private:
    304306    enum class ForceReinitialization : bool { No, Yes };
  • trunk/Tools/ChangeLog

    r262209 r262212  
     12020-05-27  Kate Cheney  <katherine_cheney@apple.com>
     2
     3        Make sure bundle identifier testing override is set in the network process
     4        https://bugs.webkit.org/show_bug.cgi?id=212288
     5        <rdar://problem/63539061>
     6
     7        Reviewed by Chris Dumez.
     8
     9        Set the bundle identifier in the network process if a layout test
     10        updates it. This value usually only gets updated when a new network
     11        process is initialized, which does not happen for every test. So it
     12        should be set/cleared as needed.
     13
     14        * WebKitTestRunner/TestController.cpp:
     15        (WTR::TestController::createWebViewWithOptions):
     16        (WTR::TestController::updateBundleIdentifierInNetworkProcess):
     17        * WebKitTestRunner/TestController.h:
     18
    1192020-05-27  Wenson Hsieh  <wenson_hsieh@apple.com>
    220
  • trunk/Tools/WebKitTestRunner/TestController.cpp

    r262065 r262212  
    796796    m_mainWebView->changeWindowScaleIfNeeded(1);
    797797   
    798     if (!options.applicationBundleIdentifier.isEmpty())
     798    if (!options.applicationBundleIdentifier.isEmpty()) {
    799799        reinitializeAppBoundDomains();
     800        updateBundleIdentifierInNetworkProcess(options.applicationBundleIdentifier);
     801    }
    800802}
    801803
     
    11651167        clearApplicationBundleIdentifierTestingOverride();
    11661168#endif
     1169        clearBundleIdentifierInNetworkProcess();
    11671170    }
    11681171
     
    39053908}
    39063909
     3910void TestController::updateBundleIdentifierInNetworkProcess(const String& bundleIdentifier)
     3911{
     3912    InAppBrowserPrivacyCallbackContext context(*this);
     3913    WKWebsiteDataStoreUpdateBundleIdentifierInNetworkProcess(TestController::websiteDataStore(), adoptWK(WKStringCreateWithUTF8CString(bundleIdentifier.utf8().data())).get(), &context, inAppBrowserPrivacyVoidResultCallback);
     3914    runUntil(context.done, noTimeout);
     3915}
     3916
     3917void TestController::clearBundleIdentifierInNetworkProcess()
     3918{
     3919    InAppBrowserPrivacyCallbackContext context(*this);
     3920    WKWebsiteDataStoreClearBundleIdentifierInNetworkProcess(TestController::websiteDataStore(), &context, inAppBrowserPrivacyVoidResultCallback);
     3921    runUntil(context.done, noTimeout);
     3922}
     3923
    39073924#if !PLATFORM(COCOA)
    39083925void TestController::platformAddTestOptions(TestOptions&) const
  • trunk/Tools/WebKitTestRunner/TestController.h

    r261963 r262212  
    276276    void clearAppBoundSession();
    277277    void reinitializeAppBoundDomains();
     278    void updateBundleIdentifierInNetworkProcess(const String& bundleIdentifier);
     279    void clearBundleIdentifierInNetworkProcess();
    278280
    279281    WKArrayRef openPanelFileURLs() const { return m_openPanelFileURLs.get(); }
Note: See TracChangeset for help on using the changeset viewer.