Diff
Modified: trunk/Source/WebKit/ChangeLog (282888 => 282889)
--- trunk/Source/WebKit/ChangeLog 2021-09-22 23:07:09 UTC (rev 282888)
+++ trunk/Source/WebKit/ChangeLog 2021-09-22 23:18:25 UTC (rev 282889)
@@ -1,3 +1,16 @@
+2021-09-22 Ryan Haddad <ryanhad...@apple.com>
+
+ Unreviewed, (manually) reverting r282856.
+ https://bugs.webkit.org/show_bug.cgi?id=230634
+
+ Caused ProcessSwap API test failures on iOS.
+
+ Reverted changest:
+
+ "Remove GenericCallback"
+ https://bugs.webkit.org/show_bug.cgi?id=229366
+ https://trac.webkit.org/changeset/282856/webkit
+
2021-09-22 Alex Christensen <achristen...@webkit.org>
PCM should include the bundle ID of the app from which it originated
Modified: trunk/Source/WebKit/Shared/CallbackID.h (282888 => 282889)
--- trunk/Source/WebKit/Shared/CallbackID.h 2021-09-22 23:07:09 UTC (rev 282888)
+++ trunk/Source/WebKit/Shared/CallbackID.h 2021-09-22 23:18:25 UTC (rev 282889)
@@ -98,6 +98,7 @@
ASSERT(newID != HashTraits<uint64_t>::emptyValue());
}
+ friend class CallbackMap;
template <typename CallbackType> friend class SpecificCallbackMap;
friend struct WTF::CallbackIDHash;
friend HashTraits<WebKit::CallbackID>;
Modified: trunk/Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTreeTransaction.h (282888 => 282889)
--- trunk/Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTreeTransaction.h 2021-09-22 23:07:09 UTC (rev 282888)
+++ trunk/Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTreeTransaction.h 2021-09-22 23:18:25 UTC (rev 282889)
@@ -25,10 +25,10 @@
#pragma once
-#include "CallbackID.h"
#include "DrawingAreaInfo.h"
#include "DynamicViewportSizeUpdate.h"
#include "EditorState.h"
+#include "GenericCallback.h"
#include "PlatformCAAnimationRemote.h"
#include "RemoteLayerBackingStore.h"
#include "TransactionID.h"
Modified: trunk/Source/WebKit/UIProcess/API/APIAttachment.h (282888 => 282889)
--- trunk/Source/WebKit/UIProcess/API/APIAttachment.h 2021-09-22 23:07:09 UTC (rev 282888)
+++ trunk/Source/WebKit/UIProcess/API/APIAttachment.h 2021-09-22 23:18:25 UTC (rev 282889)
@@ -28,6 +28,7 @@
#if ENABLE(ATTACHMENT_ELEMENT)
#include "APIObject.h"
+#include "GenericCallback.h"
#include "WKBase.h"
#include <wtf/RefPtr.h>
#include <wtf/WeakPtr.h>
Modified: trunk/Source/WebKit/UIProcess/API/APIIconLoadingClient.h (282888 => 282889)
--- trunk/Source/WebKit/UIProcess/API/APIIconLoadingClient.h 2021-09-22 23:07:09 UTC (rev 282888)
+++ trunk/Source/WebKit/UIProcess/API/APIIconLoadingClient.h 2021-09-22 23:18:25 UTC (rev 282889)
@@ -25,6 +25,7 @@
#pragma once
+#include "GenericCallback.h"
#include <WebCore/LinkIcon.h>
#include <wtf/CompletionHandler.h>
#include <wtf/Function.h>
@@ -31,14 +32,12 @@
namespace API {
-class Data;
-
class IconLoadingClient {
WTF_MAKE_FAST_ALLOCATED;
public:
virtual ~IconLoadingClient() { }
- virtual void getLoadDecisionForIcon(const WebCore::LinkIcon&, CompletionHandler<void(CompletionHandler<void(Data*)>&&)>&& completionHandler)
+ virtual void getLoadDecisionForIcon(const WebCore::LinkIcon&, CompletionHandler<void(CompletionHandler<void(API::Data*)>&&)>&& completionHandler)
{
completionHandler(nullptr);
}
Modified: trunk/Source/WebKit/UIProcess/API/APIInspectorExtension.cpp (282888 => 282889)
--- trunk/Source/WebKit/UIProcess/API/APIInspectorExtension.cpp 2021-09-22 23:07:09 UTC (rev 282888)
+++ trunk/Source/WebKit/UIProcess/API/APIInspectorExtension.cpp 2021-09-22 23:18:25 UTC (rev 282889)
@@ -28,7 +28,6 @@
#if ENABLE(INSPECTOR_EXTENSIONS)
-#include "APISerializedScriptValue.h"
#include "InspectorExtensionTypes.h"
#include "WebInspectorUIExtensionControllerProxy.h"
#include <WebCore/ExceptionDetails.h>
Modified: trunk/Source/WebKit/UIProcess/API/APIUIClient.h (282888 => 282889)
--- trunk/Source/WebKit/UIProcess/API/APIUIClient.h 2021-09-22 23:07:09 UTC (rev 282888)
+++ trunk/Source/WebKit/UIProcess/API/APIUIClient.h 2021-09-22 23:18:25 UTC (rev 282889)
@@ -26,7 +26,6 @@
#pragma once
#include "APIInspectorConfiguration.h"
-#include "APISecurityOrigin.h"
#include "WKPage.h"
#include "WebEvent.h"
#include "WebHitTestResultData.h"
Modified: trunk/Source/WebKit/UIProcess/API/C/WKPage.cpp (282888 => 282889)
--- trunk/Source/WebKit/UIProcess/API/C/WKPage.cpp 2021-09-22 23:07:09 UTC (rev 282888)
+++ trunk/Source/WebKit/UIProcess/API/C/WKPage.cpp 2021-09-22 23:18:25 UTC (rev 282889)
@@ -45,7 +45,6 @@
#include "APIOpenPanelParameters.h"
#include "APIPageConfiguration.h"
#include "APIPolicyClient.h"
-#include "APISerializedScriptValue.h"
#include "APISessionState.h"
#include "APIUIClient.h"
#include "APIWebAuthenticationPanel.h"
@@ -3006,8 +3005,8 @@
void WKPageCallAfterNextPresentationUpdate(WKPageRef pageRef, void* context, WKPagePostPresentationUpdateFunction callback)
{
CRASH_IF_SUSPENDED;
- toImpl(pageRef)->callAfterNextPresentationUpdate([context, callback]() {
- callback(nullptr, context);
+ toImpl(pageRef)->callAfterNextPresentationUpdate([context, callback](WebKit::CallbackBase::Error error) {
+ callback(error != WebKit::CallbackBase::Error::None ? toAPI(API::Error::create().ptr()) : 0, context);
});
}
Modified: trunk/Source/WebKit/UIProcess/API/Cocoa/NSAttributedString.mm (282888 => 282889)
--- trunk/Source/WebKit/UIProcess/API/Cocoa/NSAttributedString.mm 2021-09-22 23:07:09 UTC (rev 282888)
+++ trunk/Source/WebKit/UIProcess/API/Cocoa/NSAttributedString.mm 2021-09-22 23:18:25 UTC (rev 282889)
@@ -42,7 +42,6 @@
#if PLATFORM(IOS_FAMILY)
#import <UIKitSPI.h>
-#import <WebCore/WAKAppKitStubs.h>
#endif
NSString * const NSReadAccessURLDocumentOption = @"ReadAccessURL";
Modified: trunk/Source/WebKit/UIProcess/API/Cocoa/WKBrowsingContextController.mm (282888 => 282889)
--- trunk/Source/WebKit/UIProcess/API/Cocoa/WKBrowsingContextController.mm 2021-09-22 23:07:09 UTC (rev 282888)
+++ trunk/Source/WebKit/UIProcess/API/Cocoa/WKBrowsingContextController.mm 2021-09-22 23:18:25 UTC (rev 282889)
@@ -32,7 +32,6 @@
#import "PageLoadStateObserver.h"
#import "RemoteObjectRegistry.h"
#import "RemoteObjectRegistryMessages.h"
-#import "WKAPICast.h"
#import "WKBackForwardListInternal.h"
#import "WKBackForwardListItemInternal.h"
#import "WKBrowsingContextGroupInternal.h"
Modified: trunk/Source/WebKit/UIProcess/API/Cocoa/WKErrorInternal.h (282888 => 282889)
--- trunk/Source/WebKit/UIProcess/API/Cocoa/WKErrorInternal.h 2021-09-22 23:07:09 UTC (rev 282888)
+++ trunk/Source/WebKit/UIProcess/API/Cocoa/WKErrorInternal.h 2021-09-22 23:18:25 UTC (rev 282889)
@@ -26,6 +26,7 @@
#import "WKErrorPrivate.h"
#import <wtf/RetainPtr.h>
+#import "GenericCallback.h"
RetainPtr<NSError> createNSError(WKErrorCode, NSError* underlyingError = nil);
NSString *localizedDescriptionForErrorCode(WKErrorCode);
Modified: trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm (282888 => 282889)
--- trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm 2021-09-22 23:07:09 UTC (rev 282888)
+++ trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm 2021-09-22 23:18:25 UTC (rev 282889)
@@ -1168,9 +1168,7 @@
- (void)takeSnapshotWithConfiguration:(WKSnapshotConfiguration *)snapshotConfiguration completionHandler:(void(^)(CocoaImage *, NSError *))completionHandler
{
THROW_IF_SUSPENDED;
-#if USE(APPKIT)
constexpr bool snapshotFailedTraceValue = false;
-#endif
tracePoint(TakeSnapshotStart);
CGRect rectInViewCoordinates = snapshotConfiguration && !CGRectIsNull(snapshotConfiguration.rect) ? snapshotConfiguration.rect : self.bounds;
@@ -1245,7 +1243,13 @@
return;
}
- _page->callAfterNextPresentationUpdate([callSnapshotRect = WTFMove(callSnapshotRect), handler]() mutable {
+ _page->callAfterNextPresentationUpdate([callSnapshotRect = WTFMove(callSnapshotRect), handler](WebKit::CallbackBase::Error error) mutable {
+ if (error != WebKit::CallbackBase::Error::None) {
+ tracePoint(TakeSnapshotEnd, snapshotFailedTraceValue);
+ handler(nil, createNSError(WKErrorUnknown).get());
+ return;
+ }
+
// Create an implicit transaction to ensure a commit will happen next.
[CATransaction activate];
@@ -1515,7 +1519,7 @@
auto updateBlockCopy = makeBlockPtr(updateBlock);
RetainPtr<WKWebView> strongSelf = self;
- _page->callAfterNextPresentationUpdate([updateBlockCopy, withoutWaitingForAnimatedResize, strongSelf] {
+ _page->callAfterNextPresentationUpdate([updateBlockCopy, withoutWaitingForAnimatedResize, strongSelf](WebKit::CallbackBase::Error error) {
if (!updateBlockCopy)
return;
Modified: trunk/Source/WebKit/UIProcess/API/Cocoa/_WKInspectorExtension.mm (282888 => 282889)
--- trunk/Source/WebKit/UIProcess/API/Cocoa/_WKInspectorExtension.mm 2021-09-22 23:07:09 UTC (rev 282888)
+++ trunk/Source/WebKit/UIProcess/API/Cocoa/_WKInspectorExtension.mm 2021-09-22 23:18:25 UTC (rev 282889)
@@ -28,7 +28,6 @@
#if ENABLE(INSPECTOR_EXTENSIONS)
-#import "APISerializedScriptValue.h"
#import "InspectorExtensionDelegate.h"
#import "InspectorExtensionTypes.h"
#import "WKError.h"
Modified: trunk/Source/WebKit/UIProcess/API/glib/WebKitContextMenuClient.cpp (282888 => 282889)
--- trunk/Source/WebKit/UIProcess/API/glib/WebKitContextMenuClient.cpp 2021-09-22 23:07:09 UTC (rev 282888)
+++ trunk/Source/WebKit/UIProcess/API/glib/WebKitContextMenuClient.cpp 2021-09-22 23:18:25 UTC (rev 282889)
@@ -21,7 +21,6 @@
#include "WebKitContextMenuClient.h"
#include "APIContextMenuClient.h"
-#include "APIString.h"
#include "WebContextMenuItem.h"
#include "WebKitWebViewPrivate.h"
Modified: trunk/Source/WebKit/UIProcess/API/glib/WebKitFindController.cpp (282888 => 282889)
--- trunk/Source/WebKit/UIProcess/API/glib/WebKitFindController.cpp 2021-09-22 23:07:09 UTC (rev 282888)
+++ trunk/Source/WebKit/UIProcess/API/glib/WebKitFindController.cpp 2021-09-22 23:18:25 UTC (rev 282889)
@@ -21,7 +21,6 @@
#include "WebKitFindController.h"
#include "APIFindClient.h"
-#include "WebFindOptions.h"
#include "WebKitEnumTypes.h"
#include "WebKitWebViewPrivate.h"
#include <glib/gi18n-lib.h>
Modified: trunk/Source/WebKit/UIProcess/API/glib/WebKitInjectedBundleClient.cpp (282888 => 282889)
--- trunk/Source/WebKit/UIProcess/API/glib/WebKitInjectedBundleClient.cpp 2021-09-22 23:07:09 UTC (rev 282888)
+++ trunk/Source/WebKit/UIProcess/API/glib/WebKitInjectedBundleClient.cpp 2021-09-22 23:18:25 UTC (rev 282889)
@@ -20,12 +20,7 @@
#include "config.h"
#include "WebKitInjectedBundleClient.h"
-#include "APIError.h"
#include "APIInjectedBundleClient.h"
-#include "APINumber.h"
-#include "APIString.h"
-#include "APIURLRequest.h"
-#include "APIURLResponse.h"
#include "WebImage.h"
#include "WebKitPrivate.h"
#include "WebKitURIRequestPrivate.h"
Modified: trunk/Source/WebKit/UIProcess/API/glib/WebKitNotificationProvider.cpp (282888 => 282889)
--- trunk/Source/WebKit/UIProcess/API/glib/WebKitNotificationProvider.cpp 2021-09-22 23:07:09 UTC (rev 282888)
+++ trunk/Source/WebKit/UIProcess/API/glib/WebKitNotificationProvider.cpp 2021-09-22 23:18:25 UTC (rev 282889)
@@ -29,7 +29,6 @@
#include "APIArray.h"
#include "APINotificationProvider.h"
-#include "APINumber.h"
#include "WebKitNotificationPrivate.h"
#include "WebKitWebContextPrivate.h"
#include "WebKitWebViewPrivate.h"
Modified: trunk/Source/WebKit/UIProcess/API/glib/WebKitWebResource.cpp (282888 => 282889)
--- trunk/Source/WebKit/UIProcess/API/glib/WebKitWebResource.cpp 2021-09-22 23:07:09 UTC (rev 282888)
+++ trunk/Source/WebKit/UIProcess/API/glib/WebKitWebResource.cpp 2021-09-22 23:18:25 UTC (rev 282889)
@@ -21,7 +21,6 @@
#include "WebKitWebResource.h"
#include "APIData.h"
-#include "APIURL.h"
#include "WebFrameProxy.h"
#include "WebKitURIRequest.h"
#include "WebKitWebResourcePrivate.h"
Modified: trunk/Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp (282888 => 282889)
--- trunk/Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp 2021-09-22 23:07:09 UTC (rev 282888)
+++ trunk/Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp 2021-09-22 23:18:25 UTC (rev 282889)
@@ -25,7 +25,6 @@
#include "APIContentWorld.h"
#include "APIData.h"
#include "APINavigation.h"
-#include "APINumber.h"
#include "APISerializedScriptValue.h"
#include "DataReference.h"
#include "ImageOptions.h"
Modified: trunk/Source/WebKit/UIProcess/API/gtk/WebKitPrintOperation.cpp (282888 => 282889)
--- trunk/Source/WebKit/UIProcess/API/gtk/WebKitPrintOperation.cpp 2021-09-22 23:07:09 UTC (rev 282888)
+++ trunk/Source/WebKit/UIProcess/API/gtk/WebKitPrintOperation.cpp 2021-09-22 23:18:25 UTC (rev 282889)
@@ -20,7 +20,6 @@
#include "config.h"
#include "WebKitPrintOperation.h"
-#include "APIError.h"
#include "WebKitPrintCustomWidgetPrivate.h"
#include "WebKitPrintOperationPrivate.h"
#include "WebKitPrivate.h"
Modified: trunk/Source/WebKit/UIProcess/API/mac/WKView.mm (282888 => 282889)
--- trunk/Source/WebKit/UIProcess/API/mac/WKView.mm 2021-09-22 23:07:09 UTC (rev 282888)
+++ trunk/Source/WebKit/UIProcess/API/mac/WKView.mm 2021-09-22 23:18:25 UTC (rev 282889)
@@ -1677,7 +1677,7 @@
- (void)_doAfterNextPresentationUpdate:(void (^)(void))updateBlock
{
auto updateBlockCopy = makeBlockPtr(updateBlock);
- _data->_impl->page().callAfterNextPresentationUpdate([updateBlockCopy] {
+ _data->_impl->page().callAfterNextPresentationUpdate([updateBlockCopy](WebKit::CallbackBase::Error error) {
if (updateBlockCopy)
updateBlockCopy();
});
Modified: trunk/Source/WebKit/UIProcess/Automation/WebAutomationSession.cpp (282888 => 282889)
--- trunk/Source/WebKit/UIProcess/Automation/WebAutomationSession.cpp 2021-09-22 23:07:09 UTC (rev 282888)
+++ trunk/Source/WebKit/UIProcess/Automation/WebAutomationSession.cpp 2021-09-22 23:18:25 UTC (rev 282889)
@@ -31,7 +31,6 @@
#include "APIAutomationSessionClient.h"
#include "APINavigation.h"
#include "APIOpenPanelParameters.h"
-#include "APIString.h"
#include "AutomationProtocolObjects.h"
#include "CoordinateSystem.h"
#include "WebAutomationSessionMacros.h"
@@ -2206,7 +2205,9 @@
#if PLATFORM(GTK)
Function<void(WebPageProxy&, std::optional<WebCore::IntRect>&&, Ref<TakeScreenshotCallback>&&)> takeViewSnapsot = [](WebPageProxy& page, std::optional<WebCore::IntRect>&& rect, Ref<TakeScreenshotCallback>&& callback) {
- page.callAfterNextPresentationUpdate([page = Ref { page }, rect = WTFMove(rect), callback = WTFMove(callback)]() mutable {
+ page.callAfterNextPresentationUpdate([page = Ref { page }, rect = WTFMove(rect), callback = WTFMove(callback)](CallbackBase::Error error) mutable {
+ if (error != CallbackBase::Error::None)
+ ASYNC_FAIL_WITH_PREDEFINED_ERROR(InternalError);
auto snapshot = page->takeViewSnapshot(WTFMove(rect));
if (!snapshot)
Modified: trunk/Source/WebKit/UIProcess/Automation/mac/WebAutomationSessionMac.mm (282888 => 282889)
--- trunk/Source/WebKit/UIProcess/Automation/mac/WebAutomationSessionMac.mm 2021-09-22 23:07:09 UTC (rev 282888)
+++ trunk/Source/WebKit/UIProcess/Automation/mac/WebAutomationSessionMac.mm 2021-09-22 23:18:25 UTC (rev 282889)
@@ -31,7 +31,6 @@
#import "Logging.h"
#import "WebAutomationSessionMacros.h"
#import "WebInspectorUIProxy.h"
-#import "WebMouseEvent.h"
#import "WebPageProxy.h"
#import "_WKAutomationSession.h"
#import <Carbon/Carbon.h>
Modified: trunk/Source/WebKit/UIProcess/Cocoa/WebProcessProxyCocoa.mm (282888 => 282889)
--- trunk/Source/WebKit/UIProcess/Cocoa/WebProcessProxyCocoa.mm 2021-09-22 23:07:09 UTC (rev 282888)
+++ trunk/Source/WebKit/UIProcess/Cocoa/WebProcessProxyCocoa.mm 2021-09-22 23:18:25 UTC (rev 282889)
@@ -33,7 +33,6 @@
#import "ObjCObjectGraph.h"
#import "SandboxUtilities.h"
#import "SharedBufferDataReference.h"
-#import "WKAPICast.h"
#import "WKBrowsingContextControllerInternal.h"
#import "WKBrowsingContextHandleInternal.h"
#import "WKTypeRefWrapper.h"
Modified: trunk/Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm (282888 => 282889)
--- trunk/Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm 2021-09-22 23:07:09 UTC (rev 282888)
+++ trunk/Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm 2021-09-22 23:18:25 UTC (rev 282889)
@@ -36,6 +36,7 @@
#import "CoreTextHelpers.h"
#import "FontInfo.h"
#import "FullscreenClient.h"
+#import "GenericCallback.h"
#import "InsertTextOptions.h"
#import "Logging.h"
#import "NativeWebGestureEvent.h"
Modified: trunk/Source/WebKit/UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.cpp (282888 => 282889)
--- trunk/Source/WebKit/UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.cpp 2021-09-22 23:07:09 UTC (rev 282888)
+++ trunk/Source/WebKit/UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.cpp 2021-09-22 23:18:25 UTC (rev 282889)
@@ -417,7 +417,7 @@
return false;
}
-void DrawingAreaProxyCoordinatedGraphics::DrawingMonitor::start(Function<void()>&& callback)
+void DrawingAreaProxyCoordinatedGraphics::DrawingMonitor::start(WTF::Function<void(CallbackBase::Error)>&& callback)
{
m_startTime = MonotonicTime::now();
m_callback = WTFMove(callback);
@@ -441,8 +441,10 @@
g_signal_handlers_disconnect_by_func(m_webPage.viewWidget(), reinterpret_cast<gpointer>(webViewDrawCallback), this);
#endif
m_startTime = MonotonicTime();
- if (auto callback = std::exchange(m_callback, nullptr))
- callback();
+ if (m_callback) {
+ m_callback(CallbackBase::Error::None);
+ m_callback = nullptr;
+ }
}
void DrawingAreaProxyCoordinatedGraphics::DrawingMonitor::didDraw()
@@ -456,10 +458,12 @@
m_timer.startOneShot(16_ms);
}
-void DrawingAreaProxyCoordinatedGraphics::dispatchAfterEnsuringDrawing(Function<void()>&& callbackFunction)
+void DrawingAreaProxyCoordinatedGraphics::dispatchAfterEnsuringDrawing(WTF::Function<void(CallbackBase::Error)>&& callbackFunction)
{
- if (!m_webPageProxy.hasRunningProcess())
- return callbackFunction();
+ if (!m_webPageProxy.hasRunningProcess()) {
+ callbackFunction(CallbackBase::Error::OwnerWasInvalidated);
+ return;
+ }
if (!m_drawingMonitor)
m_drawingMonitor = makeUnique<DrawingAreaProxyCoordinatedGraphics::DrawingMonitor>(m_webPageProxy);
Modified: trunk/Source/WebKit/UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.h (282888 => 282889)
--- trunk/Source/WebKit/UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.h 2021-09-22 23:07:09 UTC (rev 282888)
+++ trunk/Source/WebKit/UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.h 2021-09-22 23:18:25 UTC (rev 282889)
@@ -88,7 +88,7 @@
void discardBackingStore();
#endif
- void dispatchAfterEnsuringDrawing(Function<void()>&&) override;
+ void dispatchAfterEnsuringDrawing(WTF::Function<void(CallbackBase::Error)>&&) override;
class DrawingMonitor {
WTF_MAKE_NONCOPYABLE(DrawingMonitor); WTF_MAKE_FAST_ALLOCATED;
@@ -96,7 +96,7 @@
DrawingMonitor(WebPageProxy&);
~DrawingMonitor();
- void start(Function<void()>&&);
+ void start(WTF::Function<void(CallbackBase::Error)>&&);
private:
static int webViewDrawCallback(DrawingMonitor*);
@@ -105,7 +105,7 @@
void didDraw();
MonotonicTime m_startTime;
- Function<void()> m_callback;
+ WTF::Function<void(CallbackBase::Error)> m_callback;
RunLoop::Timer<DrawingMonitor> m_timer;
#if PLATFORM(GTK)
WebPageProxy& m_webPage;
Modified: trunk/Source/WebKit/UIProcess/DrawingAreaProxy.h (282888 => 282889)
--- trunk/Source/WebKit/UIProcess/DrawingAreaProxy.h 2021-09-22 23:07:09 UTC (rev 282888)
+++ trunk/Source/WebKit/UIProcess/DrawingAreaProxy.h 2021-09-22 23:18:25 UTC (rev 282889)
@@ -26,8 +26,8 @@
#pragma once
-#include "CallbackID.h"
#include "DrawingAreaInfo.h"
+#include "GenericCallback.h"
#include "MessageReceiver.h"
#include "MessageSender.h"
#include <WebCore/FloatRect.h>
@@ -98,7 +98,7 @@
virtual void waitForDidUpdateActivityState(ActivityStateChangeID) { }
- virtual void dispatchAfterEnsuringDrawing(Function<void()>&&) { ASSERT_NOT_REACHED(); }
+ virtual void dispatchAfterEnsuringDrawing(WTF::Function<void (CallbackBase::Error)>&&) { ASSERT_NOT_REACHED(); }
// Hide the content until the currently pending update arrives.
virtual void hideContentUntilPendingUpdate() { ASSERT_NOT_REACHED(); }
Added: trunk/Source/WebKit/UIProcess/GenericCallback.h (0 => 282889)
--- trunk/Source/WebKit/UIProcess/GenericCallback.h (rev 0)
+++ trunk/Source/WebKit/UIProcess/GenericCallback.h 2021-09-22 23:18:25 UTC (rev 282889)
@@ -0,0 +1,210 @@
+/*
+ * Copyright (C) 2010 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#include "APIError.h"
+#include "APISerializedScriptValue.h"
+#include "CallbackID.h"
+#include "ProcessThrottler.h"
+#include "ShareableBitmap.h"
+#include "WKAPICast.h"
+#include <wtf/Function.h>
+#include <wtf/HashMap.h>
+#include <wtf/MainThread.h>
+#include <wtf/RefCounted.h>
+#include <wtf/Threading.h>
+
+namespace WebKit {
+
+class CallbackBase : public RefCounted<CallbackBase> {
+public:
+ enum class Error {
+ None,
+ Unknown,
+ ProcessExited,
+ OwnerWasInvalidated,
+ };
+
+ virtual ~CallbackBase()
+ {
+ }
+
+ CallbackID callbackID() const { return m_callbackID; }
+
+ template<class T>
+ T* as()
+ {
+ if (T::type() == m_type)
+ return static_cast<T*>(this);
+
+ return nullptr;
+ }
+
+ virtual void invalidate(Error) = 0;
+
+protected:
+ struct TypeTag { };
+ typedef const TypeTag* Type;
+
+ explicit CallbackBase(Type type, ProcessThrottler::ActivityVariant&& activity)
+ : m_type(type)
+ , m_callbackID(CallbackID::generateID())
+ , m_activity(WTFMove(activity))
+ {
+ }
+
+private:
+ Type m_type;
+ CallbackID m_callbackID;
+ ProcessThrottler::ActivityVariant m_activity;
+};
+
+template<typename... T>
+class GenericCallback : public CallbackBase {
+public:
+ typedef Function<void (T..., Error)> CallbackFunction;
+
+ static Ref<GenericCallback> create(CallbackFunction&& callback, ProcessThrottler::ActivityVariant&& activity = nullptr)
+ {
+ return adoptRef(*new GenericCallback(WTFMove(callback), WTFMove(activity)));
+ }
+
+ virtual ~GenericCallback()
+ {
+ ASSERT(m_originThread.ptr() == &Thread::current());
+ ASSERT(!m_callback);
+ }
+
+ void performCallbackWithReturnValue(T... returnValue)
+ {
+ ASSERT(m_originThread.ptr() == &Thread::current());
+
+ if (!m_callback)
+ return;
+
+ auto callback = std::exchange(m_callback, std::nullopt);
+ callback.value()(returnValue..., Error::None);
+ }
+
+ void performCallback()
+ {
+ performCallbackWithReturnValue();
+ }
+
+ void invalidate(Error error = Error::Unknown) final
+ {
+ ASSERT(m_originThread.ptr() == &Thread::current());
+
+ if (!m_callback)
+ return;
+
+ auto callback = std::exchange(m_callback, std::nullopt);
+ callback.value()(typename std::remove_reference<T>::type()..., error);
+ }
+
+private:
+ GenericCallback(CallbackFunction&& callback, ProcessThrottler::ActivityVariant&& activity)
+ : CallbackBase(type(), WTFMove(activity))
+ , m_callback(WTFMove(callback))
+ {
+ }
+
+ friend class CallbackBase;
+ static Type type()
+ {
+ static TypeTag tag;
+ return &tag;
+ }
+
+ std::optional<CallbackFunction> m_callback;
+
+#if ASSERT_ENABLED
+ Ref<Thread> m_originThread { Thread::current() };
+#endif
+};
+
+typedef GenericCallback<> VoidCallback;
+
+template<typename T>
+void invalidateCallbackMap(HashMap<uint64_t, T>& callbackMap, CallbackBase::Error error)
+{
+ auto map = WTFMove(callbackMap);
+ for (auto& callback : map.values())
+ callback->invalidate(error);
+}
+
+class CallbackMap {
+public:
+ CallbackID put(Ref<CallbackBase>&& callback)
+ {
+ RELEASE_ASSERT(RunLoop::isMain());
+ auto callbackID = callback->callbackID();
+ RELEASE_ASSERT(callbackID.isValid());
+ RELEASE_ASSERT(!m_map.contains(callbackID.m_id));
+ m_map.set(callbackID.m_id, WTFMove(callback));
+ return callbackID;
+ }
+
+ template<unsigned I, typename T, typename... U>
+ struct GenericCallbackType {
+ typedef typename GenericCallbackType<I - 1, U..., T>::type type;
+ };
+
+ template<typename... U>
+ struct GenericCallbackType<1, CallbackBase::Error, U...> {
+ typedef GenericCallback<U...> type;
+ };
+
+ template<typename... T>
+ CallbackID put(Function<void(T...)>&& function, ProcessThrottler::ActivityVariant&& activity)
+ {
+ auto callback = GenericCallbackType<sizeof...(T), T...>::type::create(WTFMove(function), WTFMove(activity));
+ return put(WTFMove(callback));
+ }
+
+ template<class T>
+ RefPtr<T> take(CallbackID callbackID)
+ {
+ RELEASE_ASSERT(callbackID.isValid());
+ RELEASE_ASSERT(RunLoop::isMain());
+ auto base = m_map.take(callbackID.m_id);
+ if (!base)
+ return nullptr;
+
+ return adoptRef(base.leakRef()->as<T>());
+ }
+
+ void invalidate(CallbackBase::Error error)
+ {
+ RELEASE_ASSERT(RunLoop::isMain());
+ invalidateCallbackMap(m_map, error);
+ }
+
+private:
+ HashMap<uint64_t, RefPtr<CallbackBase>> m_map;
+};
+
+} // namespace WebKit
Modified: trunk/Source/WebKit/UIProcess/Inspector/WebInspectorUIExtensionControllerProxy.cpp (282888 => 282889)
--- trunk/Source/WebKit/UIProcess/Inspector/WebInspectorUIExtensionControllerProxy.cpp 2021-09-22 23:07:09 UTC (rev 282888)
+++ trunk/Source/WebKit/UIProcess/Inspector/WebInspectorUIExtensionControllerProxy.cpp 2021-09-22 23:18:25 UTC (rev 282889)
@@ -29,7 +29,6 @@
#if ENABLE(INSPECTOR_EXTENSIONS)
#include "APIInspectorExtension.h"
-#include "APISerializedScriptValue.h"
#include "WebInspectorUIExtensionControllerMessages.h"
#include "WebInspectorUIExtensionControllerProxyMessages.h"
#include "WebPageProxy.h"
Modified: trunk/Source/WebKit/UIProcess/Inspector/gtk/WebInspectorUIProxyGtk.cpp (282888 => 282889)
--- trunk/Source/WebKit/UIProcess/Inspector/gtk/WebInspectorUIProxyGtk.cpp 2021-09-22 23:07:09 UTC (rev 282888)
+++ trunk/Source/WebKit/UIProcess/Inspector/gtk/WebInspectorUIProxyGtk.cpp 2021-09-22 23:18:25 UTC (rev 282889)
@@ -31,11 +31,9 @@
#include "APINavigation.h"
#include "APINavigationAction.h"
-#include "WKAPICast.h"
#include "WKArray.h"
#include "WKContextMenuItem.h"
#include "WKMutableArray.h"
-#include "WKSharedAPICast.h"
#include "WebFramePolicyListenerProxy.h"
#include "WebInspectorUIMessages.h"
#include "WebInspectorUIProxyClient.h"
Modified: trunk/Source/WebKit/UIProcess/Inspector/mac/WKInspectorViewController.mm (282888 => 282889)
--- trunk/Source/WebKit/UIProcess/Inspector/mac/WKInspectorViewController.mm 2021-09-22 23:07:09 UTC (rev 282888)
+++ trunk/Source/WebKit/UIProcess/Inspector/mac/WKInspectorViewController.mm 2021-09-22 23:18:25 UTC (rev 282889)
@@ -29,7 +29,7 @@
#if PLATFORM(MAC)
#import "APINavigation.h"
-#import "WKAPICast.h"
+#import <WebKit/WKFrameInfo.h>
#import "WKInspectorResourceURLSchemeHandler.h"
#import "WKInspectorWKWebView.h"
#import <WebKit/WKNavigationAction.h>
@@ -45,7 +45,6 @@
#import "WebPageProxy.h"
#import "_WKInspectorConfigurationInternal.h"
#import <WebCore/VersionChecks.h>
-#import <WebKit/WKFrameInfo.h>
#import <wtf/WeakObjCPtr.h>
static NSString * const WKInspectorResourceScheme = @"inspector-resource";
Modified: trunk/Source/WebKit/UIProcess/Inspector/win/WebInspectorUIProxyWin.cpp (282888 => 282889)
--- trunk/Source/WebKit/UIProcess/Inspector/win/WebInspectorUIProxyWin.cpp 2021-09-22 23:07:09 UTC (rev 282888)
+++ trunk/Source/WebKit/UIProcess/Inspector/win/WebInspectorUIProxyWin.cpp 2021-09-22 23:18:25 UTC (rev 282889)
@@ -32,7 +32,6 @@
#include "APIPageConfiguration.h"
#include "InspectorResourceURLSchemeHandler.h"
#include "PageClientImpl.h"
-#include "WKAPICast.h"
#include "WebFramePolicyListenerProxy.h"
#include "WebPageGroup.h"
#include "WebPageProxy.h"
Modified: trunk/Source/WebKit/UIProcess/Notifications/WebNotificationManagerProxy.cpp (282888 => 282889)
--- trunk/Source/WebKit/UIProcess/Notifications/WebNotificationManagerProxy.cpp 2021-09-22 23:07:09 UTC (rev 282888)
+++ trunk/Source/WebKit/UIProcess/Notifications/WebNotificationManagerProxy.cpp 2021-09-22 23:18:25 UTC (rev 282889)
@@ -29,7 +29,6 @@
#include "APIArray.h"
#include "APINotificationProvider.h"
#include "APISecurityOrigin.h"
-#include "WKSharedAPICast.h"
#include "WebNotification.h"
#include "WebNotificationManagerMessages.h"
#include "WebPageProxy.h"
Modified: trunk/Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.h (282888 => 282889)
--- trunk/Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.h 2021-09-22 23:07:09 UTC (rev 282888)
+++ trunk/Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.h 2021-09-22 23:18:25 UTC (rev 282889)
@@ -26,7 +26,6 @@
#pragma once
#include "DrawingAreaProxy.h"
-#include "ProcessThrottler.h"
#include "RemoteLayerTreeHost.h"
#include "TransactionID.h"
#include <WebCore/AnimationFrameRate.h>
@@ -69,7 +68,7 @@
// For now, all callbacks are called before committing changes, because that's what the only client requires.
// Once we have other callbacks, it may make sense to have a before-commit/after-commit option.
- void dispatchAfterEnsuringDrawing(Function<void()>&&) final;
+ void dispatchAfterEnsuringDrawing(WTF::Function<void (CallbackBase::Error)>&&) final;
#if PLATFORM(MAC)
void didChangeViewExposedRect() final;
@@ -121,7 +120,7 @@
TransactionID m_transactionIDForUnhidingContent;
ActivityStateChangeID m_activityStateChangeID { ActivityStateChangeAsynchronous };
- HashMap<CallbackID, std::pair<Function<void()>, std::unique_ptr<ProcessThrottler::BackgroundActivity>>> m_callbacks;
+ CallbackMap m_callbacks;
RetainPtr<WKOneShotDisplayLinkHandler> m_displayLinkHandler;
};
Modified: trunk/Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm (282888 => 282889)
--- trunk/Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm 2021-09-22 23:07:09 UTC (rev 282888)
+++ trunk/Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm 2021-09-22 23:18:25 UTC (rev 282889)
@@ -127,6 +127,7 @@
RemoteLayerTreeDrawingAreaProxy::~RemoteLayerTreeDrawingAreaProxy()
{
+ m_callbacks.invalidate(CallbackBase::Error::OwnerWasInvalidated);
process().removeMessageReceiver(Messages::RemoteLayerTreeDrawingAreaProxy::messageReceiverName(), m_identifier);
#if PLATFORM(IOS_FAMILY)
@@ -268,8 +269,8 @@
m_webPageProxy.didReachLayoutMilestone(milestones);
for (auto& callbackID : layerTreeTransaction.callbackIDs()) {
- if (auto callback = m_callbacks.take(callbackID).first)
- callback();
+ if (auto callback = m_callbacks.take<VoidCallback>(callbackID))
+ callback->performCallback();
}
}
@@ -470,16 +471,14 @@
}
}
-void RemoteLayerTreeDrawingAreaProxy::dispatchAfterEnsuringDrawing(Function<void()>&& callbackFunction)
+void RemoteLayerTreeDrawingAreaProxy::dispatchAfterEnsuringDrawing(WTF::Function<void (CallbackBase::Error)>&& callbackFunction)
{
if (!m_webPageProxy.hasRunningProcess()) {
- callbackFunction();
+ callbackFunction(CallbackBase::Error::OwnerWasInvalidated);
return;
}
- auto callbackID = CallbackID::generateID();
- m_callbacks.set(callbackID, std::make_pair(WTFMove(callbackFunction), process().throttler().backgroundActivity("RemoteLayerTreeDrawingAreaProxy::dispatchAfterEnsuringDrawing"_s).moveToUniquePtr()));
- send(Messages::DrawingArea::AddTransactionCallbackID(callbackID));
+ send(Messages::DrawingArea::AddTransactionCallbackID(m_callbacks.put(WTFMove(callbackFunction), process().throttler().backgroundActivity("RemoteLayerTreeDrawingAreaProxy::dispatchAfterEnsuringDrawing"_s))));
}
void RemoteLayerTreeDrawingAreaProxy::hideContentUntilPendingUpdate()
Modified: trunk/Source/WebKit/UIProcess/WebContextClient.cpp (282888 => 282889)
--- trunk/Source/WebKit/UIProcess/WebContextClient.cpp 2021-09-22 23:07:09 UTC (rev 282888)
+++ trunk/Source/WebKit/UIProcess/WebContextClient.cpp 2021-09-22 23:18:25 UTC (rev 282889)
@@ -26,7 +26,6 @@
#include "config.h"
#include "WebContextClient.h"
-#include "WKAPICast.h"
#include "WebProcessPool.h"
namespace WebKit {
Modified: trunk/Source/WebKit/UIProcess/WebCookieManagerProxy.h (282888 => 282889)
--- trunk/Source/WebKit/UIProcess/WebCookieManagerProxy.h 2021-09-22 23:07:09 UTC (rev 282888)
+++ trunk/Source/WebKit/UIProcess/WebCookieManagerProxy.h 2021-09-22 23:18:25 UTC (rev 282889)
@@ -26,9 +26,9 @@
#pragma once
#include "APIObject.h"
+#include "GenericCallback.h"
#include "MessageReceiver.h"
#include "WebContextSupplement.h"
-#include <WebCore/HTTPCookieAcceptPolicy.h>
#include <pal/SessionID.h>
#include <wtf/Forward.h>
#include <wtf/HashMap.h>
Modified: trunk/Source/WebKit/UIProcess/WebFrameProxy.h (282888 => 282889)
--- trunk/Source/WebKit/UIProcess/WebFrameProxy.h 2021-09-22 23:07:09 UTC (rev 282888)
+++ trunk/Source/WebKit/UIProcess/WebFrameProxy.h 2021-09-22 23:18:25 UTC (rev 282889)
@@ -27,6 +27,7 @@
#include "APIObject.h"
#include "FrameLoadState.h"
+#include "GenericCallback.h"
#include "WebFramePolicyListenerProxy.h"
#include "WebPageProxy.h"
#include <WebCore/FrameLoaderTypes.h>
@@ -40,7 +41,6 @@
namespace API {
class Navigation;
-class URL;
}
namespace IPC {
Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.cpp (282888 => 282889)
--- trunk/Source/WebKit/UIProcess/WebPageProxy.cpp 2021-09-22 23:07:09 UTC (rev 282888)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.cpp 2021-09-22 23:18:25 UTC (rev 282889)
@@ -52,7 +52,6 @@
#include "APIPolicyClient.h"
#include "APIResourceLoadClient.h"
#include "APISecurityOrigin.h"
-#include "APISerializedScriptValue.h"
#include "APIUIClient.h"
#include "APIURLRequest.h"
#include "APIWebsitePolicies.h"
@@ -4479,7 +4478,9 @@
m_drawingArea->waitForBackingStoreUpdateOnNextPaint();
sendWithAsyncReply(Messages::WebPage::ForceRepaint(), [this, protectedThis = Ref { *this }, callback = WTFMove(callback)] () mutable {
- callAfterNextPresentationUpdate(WTFMove(callback));
+ callAfterNextPresentationUpdate([callback = WTFMove(callback)] (auto) mutable {
+ callback();
+ });
});
}
@@ -9829,10 +9830,12 @@
send(Messages::WebPage::ClearWheelEventTestMonitor());
}
-void WebPageProxy::callAfterNextPresentationUpdate(Function<void()>&& callback)
+void WebPageProxy::callAfterNextPresentationUpdate(WTF::Function<void (CallbackBase::Error)>&& callback)
{
- if (!hasRunningProcess() || !m_drawingArea)
- return callback();
+ if (!hasRunningProcess() || !m_drawingArea) {
+ callback(CallbackBase::Error::OwnerWasInvalidated);
+ return;
+ }
m_drawingArea->dispatchAfterEnsuringDrawing(WTFMove(callback));
}
Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.h (282888 => 282889)
--- trunk/Source/WebKit/UIProcess/WebPageProxy.h 2021-09-22 23:07:09 UTC (rev 282888)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.h 2021-09-22 23:18:25 UTC (rev 282889)
@@ -68,7 +68,6 @@
#include "WebContextMenuItemData.h"
#include "WebCoreArgumentCoders.h"
#include "WebDataListSuggestionsDropdown.h"
-#include "WebEvent.h"
#include "WebFrameProxy.h"
#include "WebPageCreationParameters.h"
#include "WebPageDiagnosticLoggingClient.h"
@@ -199,7 +198,6 @@
#endif
namespace API {
-class Array;
class Attachment;
class ContentWorld;
class ContextMenuClient;
@@ -210,19 +208,13 @@
class FormClient;
class FullscreenClient;
class HistoryClient;
-class HitTestResult;
class IconLoadingClient;
class LoaderClient;
class Navigation;
-class NavigationAction;
class NavigationClient;
-class NavigationResponse;
-class PageConfiguration;
class PolicyClient;
class ResourceLoadClient;
-class SerializedScriptValue;
class UIClient;
-class URL;
class URLRequest;
}
@@ -344,10 +336,7 @@
namespace WebKit {
class AudioSessionRoutingArbitratorProxy;
-class AuthenticationChallengeProxy;
-class CallbackID;
class DrawingAreaProxy;
-class DownloadProxy;
class GamepadData;
class MediaUsageManager;
class NativeWebGestureEvent;
@@ -371,7 +360,6 @@
class WebBackForwardListItem;
class WebContextMenuProxy;
class WebEditCommandProxy;
-class WebFrameProxy;
class WebFullScreenManagerProxy;
class PlaybackSessionManagerProxy;
class UserMediaPermissionRequestProxy;
@@ -379,7 +367,6 @@
class WebAuthenticatorCoordinatorProxy;
class WebBackForwardCache;
class WebDeviceOrientationUpdateProviderProxy;
-class WebInspectorUIProxy;
class WebKeyboardEvent;
class WebMouseEvent;
class WebNavigationState;
@@ -424,7 +411,6 @@
struct WebPopupItem;
struct WebSpeechSynthesisVoice;
-enum class FindOptions : uint16_t;
enum class ImageAnalysisType : uint8_t;
enum class TapHandlingResult : uint8_t;
enum class TextRecognitionUpdateResult : uint8_t;
@@ -434,8 +420,6 @@
enum class UndoOrRedo : bool;
enum class WebContentMode : uint8_t;
-typedef uint32_t SnapshotOptions;
-
#if HAVE(VISIBILITY_PROPAGATION_VIEW)
using LayerHostingContextID = uint32_t;
#endif
@@ -1635,7 +1619,7 @@
// For testing
void clearWheelEventTestMonitor();
- void callAfterNextPresentationUpdate(Function<void()>&&);
+ void callAfterNextPresentationUpdate(WTF::Function<void (CallbackBase::Error)>&&);
void didReachLayoutMilestone(OptionSet<WebCore::LayoutMilestone>);
Modified: trunk/Source/WebKit/UIProcess/WebProcessPool.cpp (282888 => 282889)
--- trunk/Source/WebKit/UIProcess/WebProcessPool.cpp 2021-09-22 23:07:09 UTC (rev 282888)
+++ trunk/Source/WebKit/UIProcess/WebProcessPool.cpp 2021-09-22 23:18:25 UTC (rev 282889)
@@ -36,8 +36,6 @@
#include "APINavigation.h"
#include "APIPageConfiguration.h"
#include "APIProcessPoolConfiguration.h"
-#include "APIString.h"
-#include "APIURLRequest.h"
#include "AuxiliaryProcessMessages.h"
#include "DownloadProxy.h"
#include "DownloadProxyMessages.h"
@@ -57,7 +55,6 @@
#include "TextChecker.h"
#include "UIGamepad.h"
#include "UIGamepadProvider.h"
-#include "WKAPICast.h"
#include "WKContextPrivate.h"
#include "WebAutomationSession.h"
#include "WebBackForwardCache.h"
Modified: trunk/Source/WebKit/UIProcess/WebProcessPool.h (282888 => 282889)
--- trunk/Source/WebKit/UIProcess/WebProcessPool.h 2021-09-22 23:07:09 UTC (rev 282888)
+++ trunk/Source/WebKit/UIProcess/WebProcessPool.h 2021-09-22 23:18:25 UTC (rev 282889)
@@ -29,6 +29,7 @@
#include "APIObject.h"
#include "APIProcessPoolConfiguration.h"
#include "GPUProcessProxy.h"
+#include "GenericCallback.h"
#include "HiddenPageThrottlingAutoIncreasesCounter.h"
#include "MessageReceiver.h"
#include "MessageReceiverMap.h"
Modified: trunk/Source/WebKit/UIProcess/ios/ViewGestureControllerIOS.mm (282888 => 282889)
--- trunk/Source/WebKit/UIProcess/ios/ViewGestureControllerIOS.mm 2021-09-22 23:07:09 UTC (rev 282888)
+++ trunk/Source/WebKit/UIProcess/ios/ViewGestureControllerIOS.mm 2021-09-22 23:18:25 UTC (rev 282889)
@@ -371,9 +371,9 @@
return;
}
- drawingArea->dispatchAfterEnsuringDrawing([pageID, gestureID] {
+ drawingArea->dispatchAfterEnsuringDrawing([pageID, gestureID] (CallbackBase::Error error) {
if (auto gestureController = controllerForGesture(pageID, gestureID))
- gestureController->willCommitPostSwipeTransitionLayerTree(true);
+ gestureController->willCommitPostSwipeTransitionLayerTree(error == CallbackBase::Error::None);
});
drawingArea->hideContentUntilPendingUpdate();
};
Modified: trunk/Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm (282888 => 282889)
--- trunk/Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm 2021-09-22 23:07:09 UTC (rev 282888)
+++ trunk/Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm 2021-09-22 23:18:25 UTC (rev 282889)
@@ -4931,7 +4931,7 @@
{
_ignoreSelectionCommandFadeCount++;
_page->scheduleFullEditorStateUpdate();
- _page->callAfterNextPresentationUpdate([weakSelf = WeakObjCPtr<WKContentView>(self)] {
+ _page->callAfterNextPresentationUpdate([weakSelf = WeakObjCPtr<WKContentView>(self)] (auto) {
if (auto strongSelf = weakSelf.get())
strongSelf->_ignoreSelectionCommandFadeCount--;
});
@@ -8996,7 +8996,7 @@
RELEASE_LOG(DragAndDrop, "Drag interaction willAnimateCancelWithAnimator (animation completion block fired)");
page->dragCancelled();
if (auto completion = protectedSelf->_dragDropInteractionState.takeDragCancelSetDownBlock()) {
- page->callAfterNextPresentationUpdate([completion, protectedSelf] {
+ page->callAfterNextPresentationUpdate([completion, protectedSelf] (WebKit::CallbackBase::Error) {
completion();
protectedSelf->_isAnimatingDragCancel = NO;
});
Modified: trunk/Source/WebKit/UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h (282888 => 282889)
--- trunk/Source/WebKit/UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h 2021-09-22 23:07:09 UTC (rev 282888)
+++ trunk/Source/WebKit/UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h 2021-09-22 23:18:25 UTC (rev 282889)
@@ -52,7 +52,7 @@
void commitTransientZoom(double scale, WebCore::FloatPoint origin) override;
void waitForDidUpdateActivityState(ActivityStateChangeID) override;
- void dispatchAfterEnsuringDrawing(Function<void()>&&) override;
+ void dispatchAfterEnsuringDrawing(WTF::Function<void (CallbackBase::Error)>&&) override;
void dispatchPresentationCallbacksAfterFlushingLayers(const Vector<CallbackID>&) final;
void willSendUpdateGeometry() override;
@@ -76,7 +76,7 @@
// The last maxmium size for size-to-content auto-sizing we sent to the web process.
WebCore::IntSize m_lastSentSizeToContentAutoSizeMaximumSize;
- HashMap<CallbackID, Function<void()>> m_callbacks;
+ CallbackMap m_callbacks;
};
} // namespace WebKit
Modified: trunk/Source/WebKit/UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm (282888 => 282889)
--- trunk/Source/WebKit/UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm 2021-09-22 23:07:09 UTC (rev 282888)
+++ trunk/Source/WebKit/UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm 2021-09-22 23:18:25 UTC (rev 282889)
@@ -50,6 +50,7 @@
TiledCoreAnimationDrawingAreaProxy::~TiledCoreAnimationDrawingAreaProxy()
{
+ m_callbacks.invalidate(CallbackBase::Error::OwnerWasInvalidated);
}
void TiledCoreAnimationDrawingAreaProxy::deviceScaleFactorDidChange()
@@ -202,23 +203,21 @@
send(Messages::DrawingArea::CommitTransientZoom(scale, origin));
}
-void TiledCoreAnimationDrawingAreaProxy::dispatchAfterEnsuringDrawing(Function<void()>&& callback)
+void TiledCoreAnimationDrawingAreaProxy::dispatchAfterEnsuringDrawing(WTF::Function<void (CallbackBase::Error)>&& callback)
{
if (!m_webPageProxy.hasRunningProcess()) {
- callback();
+ callback(CallbackBase::Error::OwnerWasInvalidated);
return;
}
- auto callbackID = CallbackID::generateID();
- m_callbacks.set(callbackID, WTFMove(callback));
- send(Messages::DrawingArea::AddTransactionCallbackID(callbackID));
+ send(Messages::DrawingArea::AddTransactionCallbackID(m_callbacks.put(WTFMove(callback), nullptr)));
}
void TiledCoreAnimationDrawingAreaProxy::dispatchPresentationCallbacksAfterFlushingLayers(const Vector<CallbackID>& callbackIDs)
{
for (auto& callbackID : callbackIDs) {
- if (auto callback = m_callbacks.take(callbackID))
- callback();
+ if (auto callback = m_callbacks.take<VoidCallback>(callbackID))
+ callback->performCallback();
}
}
Modified: trunk/Source/WebKit/UIProcess/mac/WKFullScreenWindowController.h (282888 => 282889)
--- trunk/Source/WebKit/UIProcess/mac/WKFullScreenWindowController.h 2021-09-22 23:07:09 UTC (rev 282888)
+++ trunk/Source/WebKit/UIProcess/mac/WKFullScreenWindowController.h 2021-09-22 23:18:25 UTC (rev 282889)
@@ -26,6 +26,7 @@
#if ENABLE(FULLSCREEN_API) && PLATFORM(MAC)
#import <AppKit/AppKit.h>
+#import "GenericCallback.h"
#import <wtf/NakedPtr.h>
#import <wtf/NakedRef.h>
#import <wtf/RetainPtr.h>
Modified: trunk/Source/WebKit/UIProcess/mac/WKTextFinderClient.mm (282888 => 282889)
--- trunk/Source/WebKit/UIProcess/mac/WKTextFinderClient.mm 2021-09-22 23:07:09 UTC (rev 282888)
+++ trunk/Source/WebKit/UIProcess/mac/WKTextFinderClient.mm 2021-09-22 23:18:25 UTC (rev 282889)
@@ -30,7 +30,6 @@
#import "APIFindClient.h"
#import "APIFindMatchesClient.h"
-#import "WebFindOptions.h"
#import "WebImage.h"
#import "WebPageProxy.h"
#import <algorithm>
Modified: trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj (282888 => 282889)
--- trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj 2021-09-22 23:07:09 UTC (rev 282888)
+++ trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj 2021-09-22 23:18:25 UTC (rev 282889)
@@ -1698,6 +1698,7 @@
BC14DF9F120B635F00826C0C /* WKBundleScriptWorld.h in Headers */ = {isa = PBXBuildFile; fileRef = BC14DF9D120B635F00826C0C /* WKBundleScriptWorld.h */; settings = {ATTRIBUTES = (Private, ); }; };
BC14E10A120B905E00826C0C /* InjectedBundlePageFormClient.h in Headers */ = {isa = PBXBuildFile; fileRef = BC14E108120B905E00826C0C /* InjectedBundlePageFormClient.h */; };
BC177465118B9FF4007D9E9A /* WKPagePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = BC177464118B9FF4007D9E9A /* WKPagePrivate.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ BC17753F118BABF0007D9E9A /* GenericCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = BC17753E118BABF0007D9E9A /* GenericCallback.h */; };
BC1A7C581136E19C00FB7167 /* ProcessLauncher.h in Headers */ = {isa = PBXBuildFile; fileRef = BC1A7C571136E19C00FB7167 /* ProcessLauncher.h */; };
BC1B419811D41D570011E8DD /* WKBundlePagePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = BC1B419711D41D570011E8DD /* WKBundlePagePrivate.h */; settings = {ATTRIBUTES = (Private, ); }; };
BC1BE1E012D54A410004A228 /* WebGeolocationClient.h in Headers */ = {isa = PBXBuildFile; fileRef = BC1BE1DE12D54A410004A228 /* WebGeolocationClient.h */; };
@@ -5347,6 +5348,7 @@
BC14E107120B905E00826C0C /* InjectedBundlePageFormClient.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InjectedBundlePageFormClient.cpp; sourceTree = "<group>"; };
BC14E108120B905E00826C0C /* InjectedBundlePageFormClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InjectedBundlePageFormClient.h; sourceTree = "<group>"; };
BC177464118B9FF4007D9E9A /* WKPagePrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKPagePrivate.h; sourceTree = "<group>"; };
+ BC17753E118BABF0007D9E9A /* GenericCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GenericCallback.h; sourceTree = "<group>"; };
BC1A7C571136E19C00FB7167 /* ProcessLauncher.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ProcessLauncher.h; sourceTree = "<group>"; };
BC1B419711D41D570011E8DD /* WKBundlePagePrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKBundlePagePrivate.h; sourceTree = "<group>"; };
BC1BE1DE12D54A410004A228 /* WebGeolocationClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebGeolocationClient.h; sourceTree = "<group>"; };
@@ -10206,6 +10208,7 @@
1A6422FC12DD08FE00CAAE2C /* DrawingAreaProxy.messages.in */,
1AE00D5E1831792100087DD7 /* FrameLoadState.cpp */,
1AE00D5F1831792100087DD7 /* FrameLoadState.h */,
+ BC17753E118BABF0007D9E9A /* GenericCallback.h */,
9EC532A22447FBAD00215216 /* GeolocationIdentifier.h */,
BC06F44912DBD1F5002D78DE /* GeolocationPermissionRequestManagerProxy.cpp */,
BC06F44812DBD1F5002D78DE /* GeolocationPermissionRequestManagerProxy.h */,
@@ -12233,6 +12236,7 @@
CD19D2EA2046406F0017074A /* FullscreenTouchSecheuristic.h in Headers */,
CDA93DB022F8BCF400490A69 /* FullscreenTouchSecheuristicParameters.h in Headers */,
515BE1B31D5902DD00DD7C68 /* GamepadData.h in Headers */,
+ BC17753F118BABF0007D9E9A /* GenericCallback.h in Headers */,
9EC532A32447FBAD00215216 /* GeolocationIdentifier.h in Headers */,
BC06F42F12DBB9B6002D78DE /* GeolocationPermissionRequestManager.h in Headers */,
BC06F44A12DBD1F5002D78DE /* GeolocationPermissionRequestManagerProxy.h in Headers */,
Modified: trunk/Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeContext.mm (282888 => 282889)
--- trunk/Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeContext.mm 2021-09-22 23:07:09 UTC (rev 282888)
+++ trunk/Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeContext.mm 2021-09-22 23:18:25 UTC (rev 282889)
@@ -26,6 +26,7 @@
#import "config.h"
#import "RemoteLayerTreeContext.h"
+#import "GenericCallback.h"
#import "GraphicsLayerCARemote.h"
#import "PlatformCALayerRemote.h"
#import "RemoteLayerBackingStoreCollection.h"