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

Log Message

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:

Modified Paths

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;
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to