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)