Diff
Modified: trunk/Source/WebKit/ChangeLog (272635 => 272636)
--- trunk/Source/WebKit/ChangeLog 2021-02-10 04:35:57 UTC (rev 272635)
+++ trunk/Source/WebKit/ChangeLog 2021-02-10 05:21:11 UTC (rev 272636)
@@ -1,5 +1,50 @@
2021-02-09 Alex Christensen <[email protected]>
+ Use CompletionHandler instead of DataCallback
+ https://bugs.webkit.org/show_bug.cgi?id=221639
+
+ Reviewed by Chris Dumez.
+
+ * UIProcess/API/C/WKFrame.cpp:
+ (WKFrameGetMainResourceData):
+ (WKFrameGetResourceData):
+ (WKFrameGetWebArchive):
+ * UIProcess/API/C/WKPage.cpp:
+ (WKPageGetSelectionAsWebArchiveData):
+ (WKPageDrawPagesToPDF):
+ * UIProcess/API/Cocoa/WKWebView.mm:
+ (-[WKWebView createWebArchiveDataWithCompletionHandler:]):
+ (-[WKWebView _getMainResourceDataWithCompletionHandler:]):
+ * UIProcess/WebFrameProxy.cpp:
+ (WebKit::WebFrameProxy::getWebArchive):
+ (WebKit::WebFrameProxy::getMainResourceData):
+ (WebKit::WebFrameProxy::getResourceData):
+ * UIProcess/WebFrameProxy.h:
+ * UIProcess/WebPageProxy.cpp:
+ (WebKit::CompletionHandler<void):
+ (WebKit::WebPageProxy::getContentsAsMHTMLData):
+ (WebKit::WebPageProxy::getSelectionAsWebArchiveData):
+ (WebKit::WebPageProxy::getMainResourceDataOfFrame):
+ (WebKit::WebPageProxy::getResourceDataFromFrame):
+ (WebKit::WebPageProxy::getWebArchiveOfFrame):
+ (WebKit::WebPageProxy::drawPagesToPDF):
+ (WebKit::WebPageProxy::dataCallback): Deleted.
+ * UIProcess/WebPageProxy.h:
+ * UIProcess/WebPageProxy.messages.in:
+ * UIProcess/mac/WKPrintingView.mm:
+ (-[WKPrintingView _preparePDFDataForPrintingOnSecondaryThread]):
+ * WebProcess/WebPage/WebPage.cpp:
+ (WebKit::WebPage::getContentsAsMHTMLData):
+ (WebKit::WebPage::getSelectionAsWebArchiveData):
+ (WebKit::WebPage::getMainResourceDataOfFrame):
+ (WebKit::WebPage::getResourceDataFromFrame):
+ (WebKit::WebPage::getWebArchiveOfFrame):
+ (WebKit::WebPage::drawPagesToPDF):
+ * WebProcess/WebPage/WebPage.h:
+ * WebProcess/WebPage/WebPage.messages.in:
+
+2021-02-09 Alex Christensen <[email protected]>
+
Use CompletionHandler instead of PrintFinishedCallback
https://bugs.webkit.org/show_bug.cgi?id=221643
Modified: trunk/Source/WebKit/UIProcess/API/C/WKFrame.cpp (272635 => 272636)
--- trunk/Source/WebKit/UIProcess/API/C/WKFrame.cpp 2021-02-10 04:35:57 UTC (rev 272635)
+++ trunk/Source/WebKit/UIProcess/API/C/WKFrame.cpp 2021-02-10 05:21:11 UTC (rev 272636)
@@ -139,15 +139,21 @@
void WKFrameGetMainResourceData(WKFrameRef frameRef, WKFrameGetResourceDataFunction callback, void* context)
{
- toImpl(frameRef)->getMainResourceData(toGenericCallbackFunction(context, callback));
+ toImpl(frameRef)->getMainResourceData([context, callback] (API::Data* data) {
+ callback(toAPI(data), nullptr, context);
+ });
}
void WKFrameGetResourceData(WKFrameRef frameRef, WKURLRef resourceURL, WKFrameGetResourceDataFunction callback, void* context)
{
- toImpl(frameRef)->getResourceData(toImpl(resourceURL), toGenericCallbackFunction(context, callback));
+ toImpl(frameRef)->getResourceData(toImpl(resourceURL), [context, callback] (API::Data* data) {
+ callback(toAPI(data), nullptr, context);
+ });
}
void WKFrameGetWebArchive(WKFrameRef frameRef, WKFrameGetWebArchiveFunction callback, void* context)
{
- toImpl(frameRef)->getWebArchive(toGenericCallbackFunction(context, callback));
+ toImpl(frameRef)->getWebArchive([context, callback] (API::Data* data) {
+ callback(toAPI(data), nullptr, context);
+ });
}
Modified: trunk/Source/WebKit/UIProcess/API/C/WKPage.cpp (272635 => 272636)
--- trunk/Source/WebKit/UIProcess/API/C/WKPage.cpp 2021-02-10 04:35:57 UTC (rev 272635)
+++ trunk/Source/WebKit/UIProcess/API/C/WKPage.cpp 2021-02-10 05:21:11 UTC (rev 272636)
@@ -2568,13 +2568,17 @@
void WKPageGetSelectionAsWebArchiveData(WKPageRef pageRef, void* context, WKPageGetSelectionAsWebArchiveDataFunction callback)
{
- toImpl(pageRef)->getSelectionAsWebArchiveData(toGenericCallbackFunction(context, callback));
+ toImpl(pageRef)->getSelectionAsWebArchiveData([context, callback] (API::Data* data) {
+ callback(toAPI(data), nullptr, context);
+ });
}
void WKPageGetContentsAsMHTMLData(WKPageRef pageRef, void* context, WKPageGetContentsAsMHTMLDataFunction callback)
{
#if ENABLE(MHTML)
- toImpl(pageRef)->getContentsAsMHTMLData(toGenericCallbackFunction(context, callback));
+ toImpl(pageRef)->getContentsAsMHTMLData([context, callback] (API::Data* data) {
+ callback(toAPI(data), nullptr, context);
+ });
#else
UNUSED_PARAM(pageRef);
UNUSED_PARAM(context);
@@ -2654,7 +2658,9 @@
#if PLATFORM(COCOA)
void WKPageDrawPagesToPDF(WKPageRef page, WKFrameRef frame, WKPrintInfo printInfo, uint32_t first, uint32_t count, WKPageDrawToPDFFunction callback, void* context)
{
- toImpl(page)->drawPagesToPDF(toImpl(frame), printInfoFromWKPrintInfo(printInfo), first, count, DataCallback::create(toGenericCallbackFunction(context, callback)));
+ toImpl(page)->drawPagesToPDF(toImpl(frame), printInfoFromWKPrintInfo(printInfo), first, count, [context, callback] (API::Data* data) {
+ callback(toAPI(data), nullptr, context);
+ });
}
#endif
Modified: trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm (272635 => 272636)
--- trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm 2021-02-10 04:35:57 UTC (rev 272635)
+++ trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm 2021-02-10 05:21:11 UTC (rev 272636)
@@ -1478,15 +1478,8 @@
- (void)createWebArchiveDataWithCompletionHandler:(void (^)(NSData *, NSError *))completionHandler
{
- auto handler = adoptNS([completionHandler copy]);
-
- _page->getWebArchiveOfFrame(_page->mainFrame(), [handler](API::Data* data, WebKit::CallbackBase::Error error) {
- void (^completionHandlerBlock)(NSData *, NSError *) = (void (^)(NSData *, NSError *))handler.get();
- if (error != WebKit::CallbackBase::Error::None) {
- // FIXME: Pipe a proper error in from the WebPageProxy.
- completionHandlerBlock(nil, [NSError errorWithDomain:WKErrorDomain code:static_cast<int>(error) userInfo:nil]);
- } else
- completionHandlerBlock(wrapper(*data), nil);
+ _page->getWebArchiveOfFrame(_page->mainFrame(), [completionHandler = makeBlockPtr(completionHandler)](API::Data* data) {
+ completionHandler(wrapper(data), nil);
});
}
@@ -2526,15 +2519,8 @@
- (void)_getMainResourceDataWithCompletionHandler:(void (^)(NSData *, NSError *))completionHandler
{
- auto handler = adoptNS([completionHandler copy]);
-
- _page->getMainResourceDataOfFrame(_page->mainFrame(), [handler](API::Data* data, WebKit::CallbackBase::Error error) {
- void (^completionHandlerBlock)(NSData *, NSError *) = (void (^)(NSData *, NSError *))handler.get();
- if (error != WebKit::CallbackBase::Error::None) {
- // FIXME: Pipe a proper error in from the WebPageProxy.
- completionHandlerBlock(nil, [NSError errorWithDomain:WKErrorDomain code:static_cast<int>(error) userInfo:nil]);
- } else
- completionHandlerBlock(wrapper(*data), nil);
+ _page->getMainResourceDataOfFrame(_page->mainFrame(), [completionHandler = makeBlockPtr(completionHandler)](API::Data* data) {
+ completionHandler(wrapper(*data), nil);
});
}
Modified: trunk/Source/WebKit/UIProcess/API/glib/WebKitWebResource.cpp (272635 => 272636)
--- trunk/Source/WebKit/UIProcess/API/glib/WebKitWebResource.cpp 2021-02-10 04:35:57 UTC (rev 272635)
+++ trunk/Source/WebKit/UIProcess/API/glib/WebKitWebResource.cpp 2021-02-10 05:21:11 UTC (rev 272636)
@@ -342,13 +342,8 @@
};
WEBKIT_DEFINE_ASYNC_DATA_STRUCT(ResourceGetDataAsyncData)
-static void resourceDataCallback(API::Data* wkData, CallbackBase::Error error, GTask* task)
+static void resourceDataCallback(API::Data* wkData, GTask* task)
{
- if (error != CallbackBase::Error::None) {
- // This fails when the page is closed or frame is destroyed, so we can just cancel the operation.
- g_task_return_new_error(task, G_IO_ERROR, G_IO_ERROR_CANCELLED, _("Operation was cancelled"));
- return;
- }
ResourceGetDataAsyncData* data = ""
data->webData = wkData;
if (!wkData->bytes())
@@ -375,13 +370,13 @@
GRefPtr<GTask> task = adoptGRef(g_task_new(resource, cancellable, callback, userData));
g_task_set_task_data(task.get(), createResourceGetDataAsyncData(), reinterpret_cast<GDestroyNotify>(destroyResourceGetDataAsyncData));
if (resource->priv->isMainResource)
- resource->priv->frame->getMainResourceData([task = WTFMove(task)](API::Data* data, CallbackBase::Error error) {
- resourceDataCallback(data, error, task.get());
+ resource->priv->frame->getMainResourceData([task = WTFMove(task)](API::Data* data) {
+ resourceDataCallback(data, task.get());
});
else {
String url = ""
- resource->priv->frame->getResourceData(API::URL::create(url).ptr(), [task = WTFMove(task)](API::Data* data, CallbackBase::Error error) {
- resourceDataCallback(data, error, task.get());
+ resource->priv->frame->getResourceData(API::URL::create(url).ptr(), [task = WTFMove(task)](API::Data* data) {
+ resourceDataCallback(data, task.get());
});
}
}
Modified: trunk/Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp (272635 => 272636)
--- trunk/Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp 2021-02-10 04:35:57 UTC (rev 272635)
+++ trunk/Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp 2021-02-10 05:21:11 UTC (rev 272636)
@@ -4167,7 +4167,7 @@
GTask* task = g_task_new(webView, cancellable, callback, userData);
g_task_set_source_tag(task, reinterpret_cast<gpointer>(webkit_web_view_save));
g_task_set_task_data(task, createViewSaveAsyncData(), reinterpret_cast<GDestroyNotify>(destroyViewSaveAsyncData));
- getPage(webView).getContentsAsMHTMLData([task](API::Data* data, WebKit::CallbackBase::Error) {
+ getPage(webView).getContentsAsMHTMLData([task](API::Data* data) {
getContentsAsMHTMLDataCallback(data, task);
});
}
@@ -4232,7 +4232,7 @@
data->file = file;
g_task_set_task_data(task, data, reinterpret_cast<GDestroyNotify>(destroyViewSaveAsyncData));
- getPage(webView).getContentsAsMHTMLData([task](API::Data* data, WebKit::CallbackBase::Error) {
+ getPage(webView).getContentsAsMHTMLData([task](API::Data* data) {
getContentsAsMHTMLDataCallback(data, task);
});
}
Modified: trunk/Source/WebKit/UIProcess/WebFrameProxy.cpp (272635 => 272636)
--- trunk/Source/WebKit/UIProcess/WebFrameProxy.cpp 2021-02-10 04:35:57 UTC (rev 272635)
+++ trunk/Source/WebKit/UIProcess/WebFrameProxy.cpp 2021-02-10 05:21:11 UTC (rev 272636)
@@ -203,34 +203,25 @@
return *m_activeListener;
}
-void WebFrameProxy::getWebArchive(Function<void (API::Data*, CallbackBase::Error)>&& callbackFunction)
+void WebFrameProxy::getWebArchive(CompletionHandler<void(API::Data*)>&& callback)
{
- if (!m_page) {
- callbackFunction(nullptr, CallbackBase::Error::Unknown);
- return;
- }
-
- m_page->getWebArchiveOfFrame(this, WTFMove(callbackFunction));
+ if (!m_page)
+ return callback(nullptr);
+ m_page->getWebArchiveOfFrame(this, WTFMove(callback));
}
-void WebFrameProxy::getMainResourceData(Function<void (API::Data*, CallbackBase::Error)>&& callbackFunction)
+void WebFrameProxy::getMainResourceData(CompletionHandler<void(API::Data*)>&& callback)
{
- if (!m_page) {
- callbackFunction(nullptr, CallbackBase::Error::Unknown);
- return;
- }
-
- m_page->getMainResourceDataOfFrame(this, WTFMove(callbackFunction));
+ if (!m_page)
+ return callback(nullptr);
+ m_page->getMainResourceDataOfFrame(this, WTFMove(callback));
}
-void WebFrameProxy::getResourceData(API::URL* resourceURL, Function<void (API::Data*, CallbackBase::Error)>&& callbackFunction)
+void WebFrameProxy::getResourceData(API::URL* resourceURL, CompletionHandler<void(API::Data*)>&& callback)
{
- if (!m_page) {
- callbackFunction(nullptr, CallbackBase::Error::Unknown);
- return;
- }
-
- m_page->getResourceDataFromFrame(this, resourceURL, WTFMove(callbackFunction));
+ if (!m_page)
+ return callback(nullptr);
+ m_page->getResourceDataFromFrame(*this, resourceURL, WTFMove(callback));
}
void WebFrameProxy::setUnreachableURL(const URL& unreachableURL)
Modified: trunk/Source/WebKit/UIProcess/WebFrameProxy.h (272635 => 272636)
--- trunk/Source/WebKit/UIProcess/WebFrameProxy.h 2021-02-10 04:35:57 UTC (rev 272635)
+++ trunk/Source/WebKit/UIProcess/WebFrameProxy.h 2021-02-10 05:21:11 UTC (rev 272636)
@@ -103,9 +103,9 @@
bool isDisplayingMarkupDocument() const;
bool isDisplayingPDFDocument() const;
- void getWebArchive(Function<void (API::Data*, CallbackBase::Error)>&&);
- void getMainResourceData(Function<void (API::Data*, CallbackBase::Error)>&&);
- void getResourceData(API::URL*, Function<void (API::Data*, CallbackBase::Error)>&&);
+ void getWebArchive(CompletionHandler<void(API::Data*)>&&);
+ void getMainResourceData(CompletionHandler<void(API::Data*)>&&);
+ void getResourceData(API::URL*, CompletionHandler<void(API::Data*)>&&);
void didStartProvisionalLoad(const URL&);
void didExplicitOpen(URL&&, String&& mimeType);
Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.cpp (272635 => 272636)
--- trunk/Source/WebKit/UIProcess/WebPageProxy.cpp 2021-02-10 04:35:57 UTC (rev 272635)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.cpp 2021-02-10 05:21:11 UTC (rev 272636)
@@ -4153,16 +4153,17 @@
send(Messages::WebPage::GetSamplingProfilerOutput(callbackID));
}
+static CompletionHandler<void(const IPC::DataReference& data)> toAPIDataCallback(CompletionHandler<void(API::Data*)>&& callback)
+{
+ return [callback = WTFMove(callback)] (const IPC::DataReference& data) mutable {
+ callback(API::Data::create(data).get());
+ };
+}
+
#if ENABLE(MHTML)
-void WebPageProxy::getContentsAsMHTMLData(Function<void (API::Data*, CallbackBase::Error)>&& callbackFunction)
+void WebPageProxy::getContentsAsMHTMLData(CompletionHandler<void(API::Data*)>&& callback)
{
- if (!hasRunningProcess()) {
- callbackFunction(nullptr, CallbackBase::Error::Unknown);
- return;
- }
-
- auto callbackID = m_callbacks.put(WTFMove(callbackFunction), m_process->throttler().backgroundActivity("WebPageProxy::getContentsAsMHTMLData"_s));
- send(Messages::WebPage::GetContentsAsMHTMLData(callbackID));
+ sendWithAsyncReply(Messages::WebPage::GetContentsAsMHTMLData(), toAPIDataCallback(WTFMove(callback)));
}
#endif
@@ -4177,48 +4178,28 @@
send(Messages::WebPage::GetSelectionOrContentsAsString(callbackID));
}
-void WebPageProxy::getSelectionAsWebArchiveData(Function<void (API::Data*, CallbackBase::Error)>&& callbackFunction)
+void WebPageProxy::getSelectionAsWebArchiveData(CompletionHandler<void(API::Data*)>&& callback)
{
- if (!hasRunningProcess()) {
- callbackFunction(nullptr, CallbackBase::Error::Unknown);
- return;
- }
-
- auto callbackID = m_callbacks.put(WTFMove(callbackFunction), m_process->throttler().backgroundActivity("WebPageProxy::getSelectionAsWebArchiveData"_s));
- send(Messages::WebPage::GetSelectionAsWebArchiveData(callbackID));
+ sendWithAsyncReply(Messages::WebPage::GetSelectionAsWebArchiveData(), toAPIDataCallback(WTFMove(callback)));
}
-void WebPageProxy::getMainResourceDataOfFrame(WebFrameProxy* frame, Function<void (API::Data*, CallbackBase::Error)>&& callbackFunction)
+void WebPageProxy::getMainResourceDataOfFrame(WebFrameProxy* frame, CompletionHandler<void(API::Data*)>&& callback)
{
- if (!hasRunningProcess() || !frame) {
- callbackFunction(nullptr, CallbackBase::Error::Unknown);
- return;
- }
-
- auto callbackID = m_callbacks.put(WTFMove(callbackFunction), m_process->throttler().backgroundActivity("WebPageProxy::getMainResourceDataOfFrame"_s));
- send(Messages::WebPage::GetMainResourceDataOfFrame(frame->frameID(), callbackID));
+ if (!frame)
+ return callback(nullptr);
+ sendWithAsyncReply(Messages::WebPage::GetMainResourceDataOfFrame(frame->frameID()), toAPIDataCallback(WTFMove(callback)));
}
-void WebPageProxy::getResourceDataFromFrame(WebFrameProxy* frame, API::URL* resourceURL, Function<void (API::Data*, CallbackBase::Error)>&& callbackFunction)
+void WebPageProxy::getResourceDataFromFrame(WebFrameProxy& frame, API::URL* resourceURL, CompletionHandler<void(API::Data*)>&& callback)
{
- if (!hasRunningProcess()) {
- callbackFunction(nullptr, CallbackBase::Error::Unknown);
- return;
- }
-
- auto callbackID = m_callbacks.put(WTFMove(callbackFunction), m_process->throttler().backgroundActivity("WebPageProxy::getResourceDataFromFrame"_s));
- send(Messages::WebPage::GetResourceDataFromFrame(frame->frameID(), resourceURL->string(), callbackID));
+ sendWithAsyncReply(Messages::WebPage::GetResourceDataFromFrame(frame.frameID(), resourceURL->string()), toAPIDataCallback(WTFMove(callback)));
}
-void WebPageProxy::getWebArchiveOfFrame(WebFrameProxy* frame, Function<void (API::Data*, CallbackBase::Error)>&& callbackFunction)
+void WebPageProxy::getWebArchiveOfFrame(WebFrameProxy* frame, CompletionHandler<void(API::Data*)>&& callback)
{
- if (!hasRunningProcess()) {
- callbackFunction(nullptr, CallbackBase::Error::Unknown);
- return;
- }
-
- auto callbackID = m_callbacks.put(WTFMove(callbackFunction), m_process->throttler().backgroundActivity("WebPageProxy::getWebArchiveOfFrame"_s));
- send(Messages::WebPage::GetWebArchiveOfFrame(frame->frameID(), callbackID));
+ if (!frame)
+ return callback(nullptr);
+ sendWithAsyncReply(Messages::WebPage::GetWebArchiveOfFrame(frame->frameID()), toAPIDataCallback(WTFMove(callback)));
}
void WebPageProxy::forceRepaint(CompletionHandler<void()>&& callback)
@@ -7144,15 +7125,6 @@
callback->performCallback();
}
-void WebPageProxy::dataCallback(const IPC::DataReference& dataReference, CallbackID callbackID)
-{
- auto callback = m_callbacks.take<DataCallback>(callbackID);
- if (!callback)
- return;
-
- callback->performCallbackWithReturnValue(API::Data::create(dataReference.data(), dataReference.size()).ptr());
-}
-
void WebPageProxy::stringCallback(const String& resultString, CallbackID callbackID)
{
auto callback = m_callbacks.take<StringCallback>(callbackID);
@@ -8551,16 +8523,9 @@
return sendWithAsyncReply(Messages::WebPage::DrawRectToImage(frame->frameID(), printInfo, rect, imageSize), WTFMove(callback), printingSendOptions(m_isPerformingDOMPrintOperation));
}
-void WebPageProxy::drawPagesToPDF(WebFrameProxy* frame, const PrintInfo& printInfo, uint32_t first, uint32_t count, Ref<DataCallback>&& callback)
+uint64_t WebPageProxy::drawPagesToPDF(WebFrameProxy* frame, const PrintInfo& printInfo, uint32_t first, uint32_t count, CompletionHandler<void(API::Data*)>&& callback)
{
- if (!hasRunningProcess()) {
- callback->invalidate();
- return;
- }
-
- auto callbackID = callback->callbackID();
- m_callbacks.put(WTFMove(callback));
- send(Messages::WebPage::DrawPagesToPDF(frame->frameID(), printInfo, first, count, callbackID), printingSendOptions(m_isPerformingDOMPrintOperation));
+ return sendWithAsyncReply(Messages::WebPage::DrawPagesToPDF(frame->frameID(), printInfo, first, count), toAPIDataCallback(WTFMove(callback)), printingSendOptions(m_isPerformingDOMPrintOperation));
}
#elif PLATFORM(GTK)
void WebPageProxy::drawPagesForPrinting(WebFrameProxy* frame, const PrintInfo& printInfo, CompletionHandler<void(API::Error*)>&& callback)
Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.h (272635 => 272636)
--- trunk/Source/WebKit/UIProcess/WebPageProxy.h 2021-02-10 04:35:57 UTC (rev 272635)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.h 2021-02-10 05:21:11 UTC (rev 272636)
@@ -380,7 +380,6 @@
enum class UndoOrRedo : bool;
enum class WebContentMode : uint8_t;
-typedef GenericCallback<API::Data*> DataCallback;
typedef GenericCallback<const String&> StringCallback;
#if HAVE(VISIBILITY_PROPAGATION_VIEW)
@@ -1127,15 +1126,15 @@
void getSamplingProfilerOutput(WTF::Function<void (const String&, CallbackBase::Error)>&&);
#if ENABLE(MHTML)
- void getContentsAsMHTMLData(Function<void (API::Data*, CallbackBase::Error)>&&);
+ void getContentsAsMHTMLData(CompletionHandler<void(API::Data*)>&&);
#endif
- void getMainResourceDataOfFrame(WebFrameProxy*, Function<void (API::Data*, CallbackBase::Error)>&&);
- void getResourceDataFromFrame(WebFrameProxy*, API::URL*, Function<void (API::Data*, CallbackBase::Error)>&&);
+ void getMainResourceDataOfFrame(WebFrameProxy*, CompletionHandler<void(API::Data*)>&&);
+ void getResourceDataFromFrame(WebFrameProxy&, API::URL*, CompletionHandler<void(API::Data*)>&&);
void getRenderTreeExternalRepresentation(WTF::Function<void (const String&, CallbackBase::Error)>&&);
void getSelectionOrContentsAsString(WTF::Function<void (const String&, CallbackBase::Error)>&&);
- void getSelectionAsWebArchiveData(Function<void (API::Data*, CallbackBase::Error)>&&);
+ void getSelectionAsWebArchiveData(CompletionHandler<void(API::Data*)>&&);
void getSourceForFrame(WebFrameProxy*, WTF::Function<void (const String&, CallbackBase::Error)>&&);
- void getWebArchiveOfFrame(WebFrameProxy*, Function<void (API::Data*, CallbackBase::Error)>&&);
+ void getWebArchiveOfFrame(WebFrameProxy*, CompletionHandler<void(API::Data*)>&&);
void runJavaScriptInMainFrame(WebCore::RunJavaScriptParameters&&, CompletionHandler<void(Expected<RefPtr<API::SerializedScriptValue>, WebCore::ExceptionDetails>&&)>&&);
void runJavaScriptInFrameInScriptWorld(WebCore::RunJavaScriptParameters&&, Optional<WebCore::FrameIdentifier>, API::ContentWorld&, CompletionHandler<void(Expected<RefPtr<API::SerializedScriptValue>, WebCore::ExceptionDetails>&&)>&&);
void forceRepaint(CompletionHandler<void()>&&);
@@ -1292,7 +1291,7 @@
uint64_t computePagesForPrinting(WebFrameProxy*, const PrintInfo&, CompletionHandler<void(const Vector<WebCore::IntRect>&, double, const WebCore::FloatBoxExtent&)>&&);
#if PLATFORM(COCOA)
uint64_t drawRectToImage(WebFrameProxy*, const PrintInfo&, const WebCore::IntRect&, const WebCore::IntSize&, CompletionHandler<void(const WebKit::ShareableBitmap::Handle&)>&&);
- void drawPagesToPDF(WebFrameProxy*, const PrintInfo&, uint32_t first, uint32_t count, Ref<DataCallback>&&);
+ uint64_t drawPagesToPDF(WebFrameProxy*, const PrintInfo&, uint32_t first, uint32_t count, CompletionHandler<void(API::Data*)>&&);
void drawToPDF(WebCore::FrameIdentifier, const Optional<WebCore::FloatRect>&, CompletionHandler<void(const IPC::DataReference&)>&&);
#if PLATFORM(IOS_FAMILY)
std::pair<size_t, uint64_t> computePagesForPrintingAndDrawToPDF(WebCore::FrameIdentifier, const PrintInfo&, CompletionHandler<void(const IPC::DataReference&)>&&);
@@ -2160,7 +2159,6 @@
void didReceiveEvent(uint32_t opaqueType, bool handled);
void voidCallback(CallbackID);
- void dataCallback(const IPC::DataReference&, CallbackID);
void stringCallback(const String&, CallbackID);
void invalidateStringCallback(CallbackID);
#if ENABLE(APPLICATION_MANIFEST)
Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.messages.in (272635 => 272636)
--- trunk/Source/WebKit/UIProcess/WebPageProxy.messages.in 2021-02-10 04:35:57 UTC (rev 272635)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.messages.in 2021-02-10 05:21:11 UTC (rev 272636)
@@ -164,7 +164,6 @@
# Callback messages
VoidCallback(WebKit::CallbackID callbackID)
- DataCallback(IPC::SharedBufferDataReference resultData, WebKit::CallbackID callbackID)
StringCallback(String resultString, WebKit::CallbackID callbackID)
InvalidateStringCallback(WebKit::CallbackID callbackID)
#if ENABLE(APPLICATION_MANIFEST)
Modified: trunk/Source/WebKit/UIProcess/mac/WKPrintingView.mm (272635 => 272636)
--- trunk/Source/WebKit/UIProcess/mac/WKPrintingView.mm 2021-02-10 04:35:57 UTC (rev 272635)
+++ trunk/Source/WebKit/UIProcess/mac/WKPrintingView.mm 2021-02-10 05:21:11 UTC (rev 272636)
@@ -278,7 +278,7 @@
_webFrame->page()->beginPrinting(_webFrame.get(), printInfo);
IPCCallbackContext* context = new IPCCallbackContext;
- auto callback = WebKit::DataCallback::create([context](API::Data* data, WebKit::CallbackBase::Error) {
+ auto callback = [context](API::Data* data) {
ASSERT(RunLoop::isMain());
std::unique_ptr<IPCCallbackContext> contextDeleter(context);
@@ -293,13 +293,10 @@
view->_expectedPrintCallback = 0;
view->_printingCallbackCondition.notifyOne();
}
- });
- _expectedPrintCallback = callback->callbackID().toInteger();
-
+ };
+ _expectedPrintCallback = _webFrame->page()->drawPagesToPDF(_webFrame.get(), printInfo, firstPage - 1, lastPage - firstPage + 1, WTFMove(callback));
context->view = self;
- context->callbackID = callback->callbackID().toInteger();
-
- _webFrame->page()->drawPagesToPDF(_webFrame.get(), printInfo, firstPage - 1, lastPage - firstPage + 1, WTFMove(callback));
+ context->callbackID = _expectedPrintCallback;
}
static void pageDidComputePageRects(const Vector<WebCore::IntRect>& pageRects, double totalScaleFactorForPrinting, const WebCore::FloatBoxExtent& computedPageMargin, IPCCallbackContext* context)
Modified: trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp (272635 => 272636)
--- trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp 2021-02-10 04:35:57 UTC (rev 272635)
+++ trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp 2021-02-10 05:21:11 UTC (rev 272636)
@@ -3627,9 +3627,9 @@
}
#if ENABLE(MHTML)
-void WebPage::getContentsAsMHTMLData(CallbackID callbackID)
+void WebPage::getContentsAsMHTMLData(CompletionHandler<void(const IPC::SharedBufferDataReference&)>&& callback)
{
- send(Messages::WebPageProxy::DataCallback({ MHTMLArchive::generateMHTMLData(m_page.get()) }, callbackID));
+ callback({ MHTMLArchive::generateMHTMLData(m_page.get()) });
}
#endif
@@ -3649,7 +3649,7 @@
return 0;
}
-void WebPage::getSelectionAsWebArchiveData(CallbackID callbackID)
+void WebPage::getSelectionAsWebArchiveData(CompletionHandler<void(const IPC::DataReference&)>&& callback)
{
#if PLATFORM(COCOA)
RetainPtr<CFDataRef> data;
@@ -3657,12 +3657,12 @@
data = ""
#endif
- IPC::SharedBufferDataReference dataReference;
+ IPC::DataReference dataReference;
#if PLATFORM(COCOA)
if (data)
dataReference = { CFDataGetBytePtr(data.get()), static_cast<size_t>(CFDataGetLength(data.get())) };
#endif
- send(Messages::WebPageProxy::DataCallback(dataReference, callbackID));
+ callback(dataReference);
}
void WebPage::getSelectionOrContentsAsString(CallbackID callbackID)
@@ -3683,7 +3683,7 @@
send(Messages::WebPageProxy::StringCallback(resultString, callbackID));
}
-void WebPage::getMainResourceDataOfFrame(FrameIdentifier frameID, CallbackID callbackID)
+void WebPage::getMainResourceDataOfFrame(FrameIdentifier frameID, CompletionHandler<void(const IPC::SharedBufferDataReference&)>&& callback)
{
RefPtr<SharedBuffer> buffer;
if (WebFrame* frame = WebProcess::singleton().webFrame(frameID)) {
@@ -3698,7 +3698,7 @@
IPC::SharedBufferDataReference dataReference;
if (buffer)
dataReference = { *buffer };
- send(Messages::WebPageProxy::DataCallback(dataReference, callbackID));
+ callback(dataReference);
}
static RefPtr<SharedBuffer> resourceDataForFrame(Frame* frame, const URL& resourceURL)
@@ -3714,7 +3714,7 @@
return &subresource->data();
}
-void WebPage::getResourceDataFromFrame(FrameIdentifier frameID, const String& resourceURLString, CallbackID callbackID)
+void WebPage::getResourceDataFromFrame(FrameIdentifier frameID, const String& resourceURLString, CompletionHandler<void(const IPC::SharedBufferDataReference&)>&& callback)
{
RefPtr<SharedBuffer> buffer;
if (auto* frame = WebProcess::singleton().webFrame(frameID)) {
@@ -3725,10 +3725,10 @@
IPC::SharedBufferDataReference dataReference;
if (buffer)
dataReference = { *buffer };
- send(Messages::WebPageProxy::DataCallback(dataReference, callbackID));
+ callback(dataReference);
}
-void WebPage::getWebArchiveOfFrame(FrameIdentifier frameID, CallbackID callbackID)
+void WebPage::getWebArchiveOfFrame(FrameIdentifier frameID, CompletionHandler<void(const IPC::DataReference&)>&& callback)
{
#if PLATFORM(COCOA)
RetainPtr<CFDataRef> data;
@@ -3738,12 +3738,12 @@
UNUSED_PARAM(frameID);
#endif
- IPC::SharedBufferDataReference dataReference;
+ IPC::DataReference dataReference;
#if PLATFORM(COCOA)
if (data)
dataReference = { CFDataGetBytePtr(data.get()), static_cast<size_t>(CFDataGetLength(data.get())) };
#endif
- send(Messages::WebPageProxy::DataCallback(dataReference, callbackID));
+ callback(dataReference);
}
void WebPage::forceRepaintWithoutCallback()
@@ -5184,11 +5184,11 @@
completionHandler(handle);
}
-void WebPage::drawPagesToPDF(FrameIdentifier frameID, const PrintInfo& printInfo, uint32_t first, uint32_t count, CallbackID callbackID)
+void WebPage::drawPagesToPDF(FrameIdentifier frameID, const PrintInfo& printInfo, uint32_t first, uint32_t count, CompletionHandler<void(const IPC::DataReference&)>&& callback)
{
RetainPtr<CFMutableDataRef> pdfPageData;
drawPagesToPDFImpl(frameID, printInfo, first, count, pdfPageData);
- send(Messages::WebPageProxy::DataCallback({ CFDataGetBytePtr(pdfPageData.get()), static_cast<size_t>(CFDataGetLength(pdfPageData.get())) }, callbackID));
+ callback({ CFDataGetBytePtr(pdfPageData.get()), static_cast<size_t>(CFDataGetLength(pdfPageData.get())) });
}
void WebPage::drawPagesToPDFImpl(FrameIdentifier frameID, const PrintInfo& printInfo, uint32_t first, uint32_t count, RetainPtr<CFMutableDataRef>& pdfPageData)
Modified: trunk/Source/WebKit/WebProcess/WebPage/WebPage.h (272635 => 272636)
--- trunk/Source/WebKit/WebProcess/WebPage/WebPage.h 2021-02-10 04:35:57 UTC (rev 272635)
+++ trunk/Source/WebKit/WebProcess/WebPage/WebPage.h 2021-02-10 05:21:11 UTC (rev 272636)
@@ -969,7 +969,7 @@
#if PLATFORM(COCOA)
void drawRectToImage(WebCore::FrameIdentifier, const PrintInfo&, const WebCore::IntRect&, const WebCore::IntSize&, CompletionHandler<void(const WebKit::ShareableBitmap::Handle&)>&&);
- void drawPagesToPDF(WebCore::FrameIdentifier, const PrintInfo&, uint32_t first, uint32_t count, CallbackID);
+ void drawPagesToPDF(WebCore::FrameIdentifier, const PrintInfo&, uint32_t first, uint32_t count, CompletionHandler<void(const IPC::DataReference&)>&&);
void drawPagesToPDFImpl(WebCore::FrameIdentifier, const PrintInfo&, uint32_t first, uint32_t count, RetainPtr<CFMutableDataRef>& pdfPageData);
#endif
@@ -1585,15 +1585,15 @@
void getContentsAsAttributedString(CompletionHandler<void(const WebCore::AttributedString&)>&&);
#endif
#if ENABLE(MHTML)
- void getContentsAsMHTMLData(CallbackID);
+ void getContentsAsMHTMLData(CompletionHandler<void(const IPC::SharedBufferDataReference&)>&& callback);
#endif
- void getMainResourceDataOfFrame(WebCore::FrameIdentifier, CallbackID);
- void getResourceDataFromFrame(WebCore::FrameIdentifier, const String& resourceURL, CallbackID);
+ void getMainResourceDataOfFrame(WebCore::FrameIdentifier, CompletionHandler<void(const IPC::SharedBufferDataReference&)>&&);
+ void getResourceDataFromFrame(WebCore::FrameIdentifier, const String& resourceURL, CompletionHandler<void(const IPC::SharedBufferDataReference&)>&&);
void getRenderTreeExternalRepresentation(CallbackID);
void getSelectionOrContentsAsString(CallbackID);
- void getSelectionAsWebArchiveData(CallbackID);
+ void getSelectionAsWebArchiveData(CompletionHandler<void(const IPC::DataReference&)>&&);
void getSourceForFrame(WebCore::FrameIdentifier, CallbackID);
- void getWebArchiveOfFrame(WebCore::FrameIdentifier, CallbackID);
+ void getWebArchiveOfFrame(WebCore::FrameIdentifier, CompletionHandler<void(const IPC::DataReference&)>&&);
void runJavaScript(WebFrame*, WebCore::RunJavaScriptParameters&&, ContentWorldIdentifier, CompletionHandler<void(const IPC::DataReference&, const Optional<WebCore::ExceptionDetails>&)>&&);
void runJavaScriptInFrameInScriptWorld(WebCore::RunJavaScriptParameters&&, Optional<WebCore::FrameIdentifier>, const std::pair<ContentWorldIdentifier, String>& worldData, CompletionHandler<void(const IPC::DataReference&, const Optional<WebCore::ExceptionDetails>&)>&&);
void forceRepaint(CompletionHandler<void()>&&);
Modified: trunk/Source/WebKit/WebProcess/WebPage/WebPage.messages.in (272635 => 272636)
--- trunk/Source/WebKit/WebProcess/WebPage/WebPage.messages.in 2021-02-10 04:35:57 UTC (rev 272635)
+++ trunk/Source/WebKit/WebProcess/WebPage/WebPage.messages.in 2021-02-10 05:21:11 UTC (rev 272636)
@@ -210,15 +210,15 @@
GetContentsAsAttributedString() -> (struct WebCore::AttributedString result) Async
#endif
#if ENABLE(MHTML)
- GetContentsAsMHTMLData(WebKit::CallbackID callbackID)
+ GetContentsAsMHTMLData() -> (IPC::SharedBufferDataReference data) Async
#endif
- GetMainResourceDataOfFrame(WebCore::FrameIdentifier frameID, WebKit::CallbackID callbackID)
- GetResourceDataFromFrame(WebCore::FrameIdentifier frameID, String resourceURL, WebKit::CallbackID callbackID)
+ GetMainResourceDataOfFrame(WebCore::FrameIdentifier frameID) -> (IPC::SharedBufferDataReference dataReference) Async
+ GetResourceDataFromFrame(WebCore::FrameIdentifier frameID, String resourceURL) -> (IPC::SharedBufferDataReference dataReference) Async
GetRenderTreeExternalRepresentation(WebKit::CallbackID callbackID)
GetSelectionOrContentsAsString(WebKit::CallbackID callbackID)
- GetSelectionAsWebArchiveData(WebKit::CallbackID callbackID)
+ GetSelectionAsWebArchiveData() -> (IPC::DataReference data) Async
GetSourceForFrame(WebCore::FrameIdentifier frameID, WebKit::CallbackID callbackID)
- GetWebArchiveOfFrame(WebCore::FrameIdentifier frameID, WebKit::CallbackID callbackID)
+ GetWebArchiveOfFrame(WebCore::FrameIdentifier frameID) -> (IPC::DataReference dataReference) Async
RunJavaScriptInFrameInScriptWorld(struct WebCore::RunJavaScriptParameters parameters, Optional<WebCore::FrameIdentifier> frameID, std::pair<WebKit::ContentWorldIdentifier, String> world) -> (IPC::DataReference resultData, Optional<WebCore::ExceptionDetails> details) Async
@@ -400,7 +400,7 @@
ComputePagesForPrinting(WebCore::FrameIdentifier frameID, struct WebKit::PrintInfo printInfo) -> (Vector<WebCore::IntRect> pageRects, double totalScaleFactorForPrinting, WebCore::RectEdges<float> computedPageMargin) Async
#if PLATFORM(COCOA)
DrawRectToImage(WebCore::FrameIdentifier frameID, struct WebKit::PrintInfo printInfo, WebCore::IntRect rect, WebCore::IntSize imageSize) -> (WebKit::ShareableBitmap::Handle image) Async
- DrawPagesToPDF(WebCore::FrameIdentifier frameID, struct WebKit::PrintInfo printInfo, uint32_t first, uint32_t count, WebKit::CallbackID callbackID)
+ DrawPagesToPDF(WebCore::FrameIdentifier frameID, struct WebKit::PrintInfo printInfo, uint32_t first, uint32_t count) -> (IPC::DataReference data) Async
#if PLATFORM(IOS_FAMILY)
ComputePagesForPrintingiOS(WebCore::FrameIdentifier frameID, struct WebKit::PrintInfo printInfo) -> (size_t pageCount) Synchronous
DrawToPDFiOS(WebCore::FrameIdentifier frameID, struct WebKit::PrintInfo printInfo, size_t pageCount) -> (IPC::DataReference data) Async