Diff
Modified: trunk/Source/WebKit/ChangeLog (272634 => 272635)
--- trunk/Source/WebKit/ChangeLog 2021-02-10 03:43:02 UTC (rev 272634)
+++ trunk/Source/WebKit/ChangeLog 2021-02-10 04:35:57 UTC (rev 272635)
@@ -1,3 +1,26 @@
+2021-02-09 Alex Christensen <[email protected]>
+
+ Use CompletionHandler instead of PrintFinishedCallback
+ https://bugs.webkit.org/show_bug.cgi?id=221643
+
+ Reviewed by Chris Dumez.
+
+ * UIProcess/API/gtk/WebKitPrintOperation.cpp:
+ (webkitPrintOperationPrintPagesForFrame):
+ * UIProcess/WebPageProxy.cpp:
+ (WebKit::WebPageProxy::drawPagesForPrinting):
+ (WebKit::WebPageProxy::printFinishedCallback): Deleted.
+ * UIProcess/WebPageProxy.h:
+ * UIProcess/WebPageProxy.messages.in:
+ * WebProcess/WebPage/WebPage.cpp:
+ (WebKit::WebPage::drawPagesForPrinting):
+ (WebKit::WebPage::didFinishPrintOperation): Deleted.
+ * WebProcess/WebPage/WebPage.h:
+ * WebProcess/WebPage/WebPage.messages.in:
+ * WebProcess/WebPage/gtk/WebPrintOperationGtk.cpp:
+ (WebKit::WebPrintOperationGtk::printDone):
+ * WebProcess/WebPage/gtk/WebPrintOperationGtk.h:
+
2021-02-09 Devin Rousso <[email protected]>
Unreviewed, build fix after r272630
Modified: trunk/Source/WebKit/UIProcess/API/gtk/WebKitPrintOperation.cpp (272634 => 272635)
--- trunk/Source/WebKit/UIProcess/API/gtk/WebKitPrintOperation.cpp 2021-02-10 03:43:02 UTC (rev 272634)
+++ trunk/Source/WebKit/UIProcess/API/gtk/WebKitPrintOperation.cpp 2021-02-10 04:35:57 UTC (rev 272635)
@@ -326,9 +326,9 @@
PrintInfo printInfo(printSettings, pageSetup, printOperation->priv->printMode);
auto& page = webkitWebViewGetPage(printOperation->priv->webView);
g_object_ref(printOperation);
- page.drawPagesForPrinting(webFrame, printInfo, PrintFinishedCallback::create([printOperation](API::Error* printError, CallbackBase::Error) {
+ page.drawPagesForPrinting(webFrame, printInfo, [printOperation](API::Error* printError) {
drawPagesForPrintingCompleted(printError, adoptGRef(printOperation).get());
- }));
+ });
}
WebKitPrintOperationResponse webkitPrintOperationRunDialogForFrame(WebKitPrintOperation* printOperation, GtkWindow* parent, WebFrameProxy* webFrame)
Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.cpp (272634 => 272635)
--- trunk/Source/WebKit/UIProcess/WebPageProxy.cpp 2021-02-10 03:43:02 UTC (rev 272634)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.cpp 2021-02-10 04:35:57 UTC (rev 272635)
@@ -7295,19 +7295,6 @@
}
}
-#if PLATFORM(GTK)
-void WebPageProxy::printFinishedCallback(const ResourceError& printError, CallbackID callbackID)
-{
- auto callback = m_callbacks.take<PrintFinishedCallback>(callbackID);
- if (!callback) {
- // FIXME: Log error or assert.
- return;
- }
-
- callback->performCallbackWithReturnValue(API::Error::create(printError).ptr());
-}
-#endif
-
void WebPageProxy::focusedFrameChanged(const Optional<FrameIdentifier>& frameID)
{
if (!frameID) {
@@ -8576,17 +8563,15 @@
send(Messages::WebPage::DrawPagesToPDF(frame->frameID(), printInfo, first, count, callbackID), printingSendOptions(m_isPerformingDOMPrintOperation));
}
#elif PLATFORM(GTK)
-void WebPageProxy::drawPagesForPrinting(WebFrameProxy* frame, const PrintInfo& printInfo, Ref<PrintFinishedCallback>&& callback)
+void WebPageProxy::drawPagesForPrinting(WebFrameProxy* frame, const PrintInfo& printInfo, CompletionHandler<void(API::Error*)>&& callback)
{
- if (!hasRunningProcess()) {
- callback->invalidate();
- return;
- }
-
- auto callbackID = callback->callbackID();
- m_callbacks.put(WTFMove(callback));
+ auto callbackWrapper = [callback = WTFMove(callback)] (const WebCore::ResourceError& error) mutable {
+ if (error.isNull())
+ return callback(nullptr);
+ callback(API::Error::create(error).ptr());
+ };
m_isInPrintingMode = true;
- send(Messages::WebPage::DrawPagesForPrinting(frame->frameID(), printInfo, callbackID), printingSendOptions(m_isPerformingDOMPrintOperation));
+ sendWithAsyncReply(Messages::WebPage::DrawPagesForPrinting(frame->frameID(), printInfo), WTFMove(callbackWrapper), printingSendOptions(m_isPerformingDOMPrintOperation));
}
#endif
Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.h (272634 => 272635)
--- trunk/Source/WebKit/UIProcess/WebPageProxy.h 2021-02-10 03:43:02 UTC (rev 272634)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.h 2021-02-10 04:35:57 UTC (rev 272635)
@@ -188,6 +188,7 @@
class Attachment;
class ContentWorld;
class ContextMenuClient;
+class Error;
class FindClient;
class FindMatchesClient;
class FormClient;
@@ -386,10 +387,6 @@
using LayerHostingContextID = uint32_t;
#endif
-#if PLATFORM(GTK)
-typedef GenericCallback<API::Error*> PrintFinishedCallback;
-#endif
-
#if ENABLE(TOUCH_EVENTS)
struct QueuedTouchEvents {
QueuedTouchEvents(const NativeWebTouchEvent& event)
@@ -1301,7 +1298,7 @@
std::pair<size_t, uint64_t> computePagesForPrintingAndDrawToPDF(WebCore::FrameIdentifier, const PrintInfo&, CompletionHandler<void(const IPC::DataReference&)>&&);
#endif
#elif PLATFORM(GTK)
- void drawPagesForPrinting(WebFrameProxy*, const PrintInfo&, Ref<PrintFinishedCallback>&&);
+ void drawPagesForPrinting(WebFrameProxy*, const PrintInfo&, CompletionHandler<void(API::Error*)>&&);
#endif
PageLoadState& pageLoadState() { return m_pageLoadState; }
@@ -2179,9 +2176,6 @@
void updateStringForFind(const String&);
#endif
-#if PLATFORM(GTK)
- void printFinishedCallback(const WebCore::ResourceError&, CallbackID);
-#endif
void focusedFrameChanged(const Optional<WebCore::FrameIdentifier>&);
Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.messages.in (272634 => 272635)
--- trunk/Source/WebKit/UIProcess/WebPageProxy.messages.in 2021-02-10 03:43:02 UTC (rev 272634)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.messages.in 2021-02-10 04:35:57 UTC (rev 272635)
@@ -184,9 +184,6 @@
#if ENABLE(DATA_DETECTION)
SetDataDetectionResult(struct WebKit::DataDetectionResult dataDetectionResult)
#endif
-#if PLATFORM(GTK)
- PrintFinishedCallback(WebCore::ResourceError error, WebKit::CallbackID callbackID)
-#endif
PageScaleFactorDidChange(double scaleFactor)
PluginScaleFactorDidChange(double zoomFactor)
Modified: trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp (272634 => 272635)
--- trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp 2021-02-10 03:43:02 UTC (rev 272634)
+++ trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp 2021-02-10 04:35:57 UTC (rev 272635)
@@ -5242,22 +5242,18 @@
}
#elif PLATFORM(GTK)
-void WebPage::drawPagesForPrinting(FrameIdentifier frameID, const PrintInfo& printInfo, CallbackID callbackID)
+void WebPage::drawPagesForPrinting(FrameIdentifier frameID, const PrintInfo& printInfo, CompletionHandler<void(const WebCore::ResourceError&)>&& completionHandler)
{
beginPrinting(frameID, printInfo);
if (m_printContext && m_printOperation) {
- m_printOperation->startPrint(m_printContext.get(), callbackID);
+ m_printOperation->startPrint(m_printContext.get(), [this, protectedThis = makeRef(*this), completionHandler = WTFMove(completionHandler)] (const WebCore::ResourceError& error) mutable {
+ m_printOperation = nullptr;
+ completionHandler(error);
+ });
return;
}
-
- send(Messages::WebPageProxy::VoidCallback(callbackID));
+ completionHandler({ });
}
-
-void WebPage::didFinishPrintOperation(const WebCore::ResourceError& error, CallbackID callbackID)
-{
- send(Messages::WebPageProxy::PrintFinishedCallback(error, callbackID));
- m_printOperation = nullptr;
-}
#endif
#if ENABLE(PDFKIT_PLUGIN) && !ENABLE(UI_PROCESS_PDF_HUD)
Modified: trunk/Source/WebKit/WebProcess/WebPage/WebPage.h (272634 => 272635)
--- trunk/Source/WebKit/WebProcess/WebPage/WebPage.h 2021-02-10 03:43:02 UTC (rev 272634)
+++ trunk/Source/WebKit/WebProcess/WebPage/WebPage.h 2021-02-10 04:35:57 UTC (rev 272635)
@@ -981,8 +981,7 @@
void drawToPDF(WebCore::FrameIdentifier, const Optional<WebCore::FloatRect>&, CompletionHandler<void(const IPC::DataReference&)>&&);
#if PLATFORM(GTK)
- void drawPagesForPrinting(WebCore::FrameIdentifier, const PrintInfo&, CallbackID);
- void didFinishPrintOperation(const WebCore::ResourceError&, CallbackID);
+ void drawPagesForPrinting(WebCore::FrameIdentifier, const PrintInfo&, CompletionHandler<void(const WebCore::ResourceError&)>&&);
#endif
void addResourceRequest(unsigned long, const WebCore::ResourceRequest&);
Modified: trunk/Source/WebKit/WebProcess/WebPage/WebPage.messages.in (272634 => 272635)
--- trunk/Source/WebKit/WebProcess/WebPage/WebPage.messages.in 2021-02-10 03:43:02 UTC (rev 272634)
+++ trunk/Source/WebKit/WebProcess/WebPage/WebPage.messages.in 2021-02-10 04:35:57 UTC (rev 272635)
@@ -408,7 +408,7 @@
DrawToPDF(WebCore::FrameIdentifier frameID, Optional<WebCore::FloatRect> rect) -> (IPC::DataReference data) Async
#endif
#if PLATFORM(GTK)
- DrawPagesForPrinting(WebCore::FrameIdentifier frameID, struct WebKit::PrintInfo printInfo, WebKit::CallbackID callbackID)
+ DrawPagesForPrinting(WebCore::FrameIdentifier frameID, struct WebKit::PrintInfo printInfo) -> (WebCore::ResourceError error) Async
#endif
# Media
Modified: trunk/Source/WebKit/WebProcess/WebPage/gtk/WebPrintOperationGtk.cpp (272634 => 272635)
--- trunk/Source/WebKit/WebProcess/WebPage/gtk/WebPrintOperationGtk.cpp 2021-02-10 03:43:02 UTC (rev 272634)
+++ trunk/Source/WebKit/WebProcess/WebPage/gtk/WebPrintOperationGtk.cpp 2021-02-10 04:35:57 UTC (rev 272635)
@@ -64,10 +64,10 @@
{
}
- void startPrint(WebCore::PrintContext* printContext, CallbackID callbackID) override
+ void startPrint(WebCore::PrintContext* printContext, CompletionHandler<void(const WebCore::ResourceError&)>&& completionHandler) override
{
m_printContext = printContext;
- m_callbackID = callbackID;
+ m_completionHandler = WTFMove(completionHandler);
RefPtr<PrinterListGtk> printerList = PrinterListGtk::getOrCreate();
ASSERT(printerList);
@@ -188,11 +188,11 @@
{
}
- void startPrint(WebCore::PrintContext* printContext, CallbackID callbackID) override
+ void startPrint(WebCore::PrintContext* printContext, CompletionHandler<void(const WebCore::ResourceError&)>&& completionHandler) override
{
m_printContext = printContext;
- m_callbackID = callbackID;
notImplemented();
+ completionHandler({ });
}
void startPage(cairo_t* cr) override
@@ -719,8 +719,8 @@
m_printPagesIdleId = 0;
// Print finished or failed, notify the UI process that we are done if the page hasn't been closed.
- if (m_webPage)
- m_webPage->didFinishPrintOperation(error, m_callbackID);
+ if (m_completionHandler)
+ m_completionHandler(error);
}
void WebPrintOperationGtk::print(cairo_surface_t* surface, double xDPI, double yDPI)
Modified: trunk/Source/WebKit/WebProcess/WebPage/gtk/WebPrintOperationGtk.h (272634 => 272635)
--- trunk/Source/WebKit/WebProcess/WebPage/gtk/WebPrintOperationGtk.h 2021-02-10 03:43:02 UTC (rev 272634)
+++ trunk/Source/WebKit/WebProcess/WebPage/gtk/WebPrintOperationGtk.h 2021-02-10 04:35:57 UTC (rev 272635)
@@ -29,6 +29,7 @@
#include "CallbackID.h"
#include "PrintInfo.h"
#include <WebCore/RefPtrCairo.h>
+#include <wtf/CompletionHandler.h>
#include <wtf/RefCounted.h>
#include <wtf/RefPtr.h>
#include <wtf/glib/GRefPtr.h>
@@ -75,7 +76,7 @@
void disconnectFromPage();
- virtual void startPrint(WebCore::PrintContext*, CallbackID) = 0;
+ virtual void startPrint(WebCore::PrintContext*, CompletionHandler<void(const WebCore::ResourceError&)>&&) = 0;
protected:
WebPrintOperationGtk(WebPage*, const PrintInfo&);
@@ -103,7 +104,7 @@
GRefPtr<GtkPageSetup> m_pageSetup;
PrintInfo::PrintMode m_printMode;
WebCore::PrintContext* m_printContext;
- CallbackID m_callbackID;
+ CompletionHandler<void(const WebCore::ResourceError&)> m_completionHandler;
RefPtr<cairo_t> m_cairoContext;
double m_xDPI;
double m_yDPI;