Title: [272637] trunk/Source/WebKit
Revision
272637
Author
[email protected]
Date
2021-02-09 21:22:35 -0800 (Tue, 09 Feb 2021)

Log Message

Use CompletionHandler instead of ApplicationManifestCallback
https://bugs.webkit.org/show_bug.cgi?id=221627

Reviewed by Chris Dumez.

* UIProcess/API/C/WKPage.cpp:
(WKPageGetApplicationManifest_b):
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _getApplicationManifestWithCompletionHandler:]):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::getApplicationManifest):
(WebKit::WebPageProxy::applicationManifestCallback): Deleted.
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::getApplicationManifest):
(WebKit::WebPage::didFinishLoadingApplicationManifest):
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:

Modified Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (272636 => 272637)


--- trunk/Source/WebKit/ChangeLog	2021-02-10 05:21:11 UTC (rev 272636)
+++ trunk/Source/WebKit/ChangeLog	2021-02-10 05:22:35 UTC (rev 272637)
@@ -1,5 +1,27 @@
 2021-02-09  Alex Christensen  <[email protected]>
 
+        Use CompletionHandler instead of ApplicationManifestCallback
+        https://bugs.webkit.org/show_bug.cgi?id=221627
+
+        Reviewed by Chris Dumez.
+
+        * UIProcess/API/C/WKPage.cpp:
+        (WKPageGetApplicationManifest_b):
+        * UIProcess/API/Cocoa/WKWebView.mm:
+        (-[WKWebView _getApplicationManifestWithCompletionHandler:]):
+        * UIProcess/WebPageProxy.cpp:
+        (WebKit::WebPageProxy::getApplicationManifest):
+        (WebKit::WebPageProxy::applicationManifestCallback): Deleted.
+        * UIProcess/WebPageProxy.h:
+        * UIProcess/WebPageProxy.messages.in:
+        * WebProcess/WebPage/WebPage.cpp:
+        (WebKit::WebPage::getApplicationManifest):
+        (WebKit::WebPage::didFinishLoadingApplicationManifest):
+        * WebProcess/WebPage/WebPage.h:
+        * WebProcess/WebPage/WebPage.messages.in:
+
+2021-02-09  Alex Christensen  <[email protected]>
+
         Use CompletionHandler instead of DataCallback
         https://bugs.webkit.org/show_bug.cgi?id=221639
 

Modified: trunk/Source/WebKit/UIProcess/API/C/WKPage.cpp (272636 => 272637)


--- trunk/Source/WebKit/UIProcess/API/C/WKPage.cpp	2021-02-10 05:21:11 UTC (rev 272636)
+++ trunk/Source/WebKit/UIProcess/API/C/WKPage.cpp	2021-02-10 05:22:35 UTC (rev 272637)
@@ -2900,7 +2900,7 @@
 void WKPageGetApplicationManifest_b(WKPageRef page, WKPageGetApplicationManifestBlock block)
 {
 #if ENABLE(APPLICATION_MANIFEST)
-    toImpl(page)->getApplicationManifest([block](const Optional<WebCore::ApplicationManifest> &manifest, CallbackBase::Error) {
+    toImpl(page)->getApplicationManifest([block](const Optional<WebCore::ApplicationManifest>& manifest) {
         block();
     });
 #else // ENABLE(APPLICATION_MANIFEST)

Modified: trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm (272636 => 272637)


--- trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm	2021-02-10 05:21:11 UTC (rev 272636)
+++ trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm	2021-02-10 05:22:35 UTC (rev 272637)
@@ -2566,8 +2566,7 @@
 - (void)_getApplicationManifestWithCompletionHandler:(void (^)(_WKApplicationManifest *))completionHandler
 {
 #if ENABLE(APPLICATION_MANIFEST)
-    _page->getApplicationManifest([completionHandler = makeBlockPtr(completionHandler)](const Optional<WebCore::ApplicationManifest>& manifest, WebKit::CallbackBase::Error error) {
-        UNUSED_PARAM(error);
+    _page->getApplicationManifest([completionHandler = makeBlockPtr(completionHandler)](const Optional<WebCore::ApplicationManifest>& manifest) {
         if (completionHandler) {
             if (manifest) {
                 auto apiManifest = API::ApplicationManifest::create(*manifest);

Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.cpp (272636 => 272637)


--- trunk/Source/WebKit/UIProcess/WebPageProxy.cpp	2021-02-10 05:21:11 UTC (rev 272636)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.cpp	2021-02-10 05:22:35 UTC (rev 272637)
@@ -7167,17 +7167,6 @@
 
 #endif
 
-#if ENABLE(APPLICATION_MANIFEST)
-void WebPageProxy::applicationManifestCallback(const Optional<WebCore::ApplicationManifest>& manifestOrNull, CallbackID callbackID)
-{
-    auto callback = m_callbacks.take<ApplicationManifestCallback>(callbackID);
-    if (!callback)
-        return;
-
-    callback->performCallbackWithReturnValue(manifestOrNull);
-}
-#endif
-
 inline API::DiagnosticLoggingClient* WebPageProxy::effectiveDiagnosticLoggingClient(ShouldSample shouldSample)
 {
     // Diagnostic logging is disabled for ephemeral sessions for privacy reasons.
@@ -9841,16 +9830,9 @@
 #endif // ENABLE(ATTACHMENT_ELEMENT)
 
 #if ENABLE(APPLICATION_MANIFEST)
-void WebPageProxy::getApplicationManifest(Function<void(const Optional<WebCore::ApplicationManifest>&, CallbackBase::Error)>&& callbackFunction)
+void WebPageProxy::getApplicationManifest(CompletionHandler<void(const Optional<WebCore::ApplicationManifest>&)>&& callback)
 {
-    if (!hasRunningProcess()) {
-        callbackFunction(WTF::nullopt, CallbackBase::Error::Unknown);
-        return;
-    }
-
-    auto callbackID = m_callbacks.put(WTFMove(callbackFunction), m_process->throttler().backgroundActivity("WebPageProxy::getApplicationManifest"_s));
-    m_loadDependentStringCallbackIDs.add(callbackID);
-    send(Messages::WebPage::GetApplicationManifest(callbackID));
+    sendWithAsyncReply(Messages::WebPage::GetApplicationManifest(), WTFMove(callback));
 }
 #endif
 

Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.h (272636 => 272637)


--- trunk/Source/WebKit/UIProcess/WebPageProxy.h	2021-02-10 05:21:11 UTC (rev 272636)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.h	2021-02-10 05:22:35 UTC (rev 272637)
@@ -397,10 +397,6 @@
 };
 #endif
 
-#if ENABLE(APPLICATION_MANIFEST)
-typedef GenericCallback<const Optional<WebCore::ApplicationManifest>&> ApplicationManifestCallback;
-#endif
-
 #if ENABLE(DATE_AND_TIME_INPUT_TYPES)
 class WebDateTimePicker;
 #endif
@@ -1635,7 +1631,7 @@
 #endif
 
 #if ENABLE(APPLICATION_MANIFEST)
-    void getApplicationManifest(Function<void(const Optional<WebCore::ApplicationManifest>&, CallbackBase::Error)>&&);
+    void getApplicationManifest(CompletionHandler<void(const Optional<WebCore::ApplicationManifest>&)>&&);
 #endif
 
     WebPreferencesStore preferencesStore() const;
@@ -2161,9 +2157,6 @@
     void voidCallback(CallbackID);
     void stringCallback(const String&, CallbackID);
     void invalidateStringCallback(CallbackID);
-#if ENABLE(APPLICATION_MANIFEST)
-    void applicationManifestCallback(const Optional<WebCore::ApplicationManifest>&, CallbackID);
-#endif
 #if PLATFORM(MAC)
     void didUpdateRenderingAfterCommittingLoad();
     void fontAtSelectionCallback(const FontInfo&, double, bool, CallbackID);

Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.messages.in (272636 => 272637)


--- trunk/Source/WebKit/UIProcess/WebPageProxy.messages.in	2021-02-10 05:21:11 UTC (rev 272636)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.messages.in	2021-02-10 05:22:35 UTC (rev 272637)
@@ -166,9 +166,6 @@
     VoidCallback(WebKit::CallbackID callbackID)
     StringCallback(String resultString, WebKit::CallbackID callbackID)
     InvalidateStringCallback(WebKit::CallbackID callbackID)
-#if ENABLE(APPLICATION_MANIFEST)
-    ApplicationManifestCallback(Optional<WebCore::ApplicationManifest> manifest, WebKit::CallbackID callbackID)
-#endif
 #if PLATFORM(IOS_FAMILY)
     InterpretKeyEvent(struct WebKit::EditorState state, bool isCharEvent) -> (bool handled) Synchronous
     DidReceivePositionInformation(struct WebKit::InteractionInformationAtPosition information)

Modified: trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp (272636 => 272637)


--- trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp	2021-02-10 05:21:11 UTC (rev 272636)
+++ trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp	2021-02-10 05:22:35 UTC (rev 272637)
@@ -995,6 +995,13 @@
 
     for (auto& completionHandler : std::exchange(m_markLayersAsVolatileCompletionHandlers, { }))
         completionHandler(false);
+    
+#if ENABLE(APPLICATION_MANIFEST)
+    for (auto& completionHandler : m_applicationManifestFetchCallbackMap.values()) {
+        if (completionHandler)
+            completionHandler(WTF::nullopt);
+    }
+#endif
 }
 
 IPC::Connection* WebPage::messageSenderConnection() const
@@ -6941,30 +6948,24 @@
 #endif // ENABLE(ATTACHMENT_ELEMENT)
 
 #if ENABLE(APPLICATION_MANIFEST)
-void WebPage::getApplicationManifest(CallbackID callbackID)
+void WebPage::getApplicationManifest(CompletionHandler<void(const Optional<WebCore::ApplicationManifest>&)>&& completionHandler)
 {
-    ASSERT(callbackID.isValid());
     Document* mainFrameDocument = m_mainFrame->coreFrame()->document();
     DocumentLoader* loader = mainFrameDocument ? mainFrameDocument->loader() : nullptr;
+    if (!loader)
+        return completionHandler(WTF::nullopt);
 
-    if (!loader) {
-        send(Messages::WebPageProxy::ApplicationManifestCallback(WTF::nullopt, callbackID));
-        return;
-    }
-
     auto coreCallbackID = loader->loadApplicationManifest();
-    if (!coreCallbackID) {
-        send(Messages::WebPageProxy::ApplicationManifestCallback(WTF::nullopt, callbackID));
-        return;
-    }
+    if (!coreCallbackID)
+        return completionHandler(WTF::nullopt);
 
-    m_applicationManifestFetchCallbackMap.add(coreCallbackID, callbackID.toInteger());
+    m_applicationManifestFetchCallbackMap.add(coreCallbackID, WTFMove(completionHandler));
 }
 
 void WebPage::didFinishLoadingApplicationManifest(uint64_t coreCallbackID, const Optional<WebCore::ApplicationManifest>& manifest)
 {
-    auto callbackID = CallbackID::fromInteger(m_applicationManifestFetchCallbackMap.take(coreCallbackID));
-    send(Messages::WebPageProxy::ApplicationManifestCallback(manifest, callbackID));
+    if (auto callback = m_applicationManifestFetchCallbackMap.take(coreCallbackID))
+        callback(manifest);
 }
 #endif // ENABLE(APPLICATION_MANIFEST)
 

Modified: trunk/Source/WebKit/WebProcess/WebPage/WebPage.h (272636 => 272637)


--- trunk/Source/WebKit/WebProcess/WebPage/WebPage.h	2021-02-10 05:21:11 UTC (rev 272636)
+++ trunk/Source/WebKit/WebProcess/WebPage/WebPage.h	2021-02-10 05:22:35 UTC (rev 272637)
@@ -1259,7 +1259,7 @@
 #endif
 
 #if ENABLE(APPLICATION_MANIFEST)
-    void getApplicationManifest(CallbackID);
+    void getApplicationManifest(CompletionHandler<void(const Optional<WebCore::ApplicationManifest>&)>&&);
     void didFinishLoadingApplicationManifest(uint64_t, const Optional<WebCore::ApplicationManifest>&);
 #endif
 
@@ -2190,7 +2190,7 @@
     HashMap<uint64_t, Function<void(bool granted)>> m_storageAccessResponseCallbackMap;
 
 #if ENABLE(APPLICATION_MANIFEST)
-    HashMap<uint64_t, uint64_t> m_applicationManifestFetchCallbackMap;
+    HashMap<uint64_t, CompletionHandler<void(const Optional<WebCore::ApplicationManifest>&)>> m_applicationManifestFetchCallbackMap;
 #endif
 
     OptionSet<LayerTreeFreezeReason> m_layerTreeFreezeReasons;

Modified: trunk/Source/WebKit/WebProcess/WebPage/WebPage.messages.in (272636 => 272637)


--- trunk/Source/WebKit/WebProcess/WebPage/WebPage.messages.in	2021-02-10 05:21:11 UTC (rev 272636)
+++ trunk/Source/WebKit/WebProcess/WebPage/WebPage.messages.in	2021-02-10 05:22:35 UTC (rev 272637)
@@ -571,7 +571,7 @@
 #endif
 
 #if ENABLE(APPLICATION_MANIFEST)
-    GetApplicationManifest(WebKit::CallbackID callbackID)
+    GetApplicationManifest() -> (Optional<WebCore::ApplicationManifest> manifest) Async
 #endif
 
     SetDefersLoading(bool defersLoading)
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to