mirror of
https://github.com/microsoft/playwright.git
synced 2025-06-26 21:40:17 +00:00
browser(webkit): continue screecast after cross-process navigation (#2499)
This commit is contained in:
parent
5c3a275270
commit
4cac74f8c2
@ -1 +1 @@
|
||||
1269
|
||||
1270
|
||||
|
||||
@ -8476,35 +8476,26 @@ index 6bbd1cabd27ae2847648a8c2edcf9acfcd556ff5..38d101b9a96986e40f6e9f0261fa429a
|
||||
{
|
||||
m_hasReceivedFirstUpdate = true;
|
||||
diff --git a/Source/WebKit/UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.h b/Source/WebKit/UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.h
|
||||
index d7695088e7cfc4f638f157338754f9f157489749..74a3654235d5e24a39d3714ec4d2f45a8803c816 100644
|
||||
index d7695088e7cfc4f638f157338754f9f157489749..d7ed4f58f033ebfc13142f2d6e8814d6dd13dd8e 100644
|
||||
--- a/Source/WebKit/UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.h
|
||||
+++ b/Source/WebKit/UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.h
|
||||
@@ -30,6 +30,8 @@
|
||||
@@ -30,6 +30,7 @@
|
||||
#include "BackingStore.h"
|
||||
#include "DrawingAreaProxy.h"
|
||||
#include "LayerTreeContext.h"
|
||||
+#include <wtf/Function.h>
|
||||
+#include <wtf/HashMap.h>
|
||||
#include <wtf/RunLoop.h>
|
||||
|
||||
namespace WebCore {
|
||||
@@ -49,6 +51,15 @@ public:
|
||||
@@ -49,6 +50,7 @@ public:
|
||||
|
||||
bool isInAcceleratedCompositingMode() const { return !m_layerTreeContext.isEmpty(); }
|
||||
const LayerTreeContext& layerTreeContext() const { return m_layerTreeContext; }
|
||||
+ void waitForSizeUpdate(Function<void ()>&&);
|
||||
+
|
||||
+ using PaintCallback = Function<void(cairo_surface_t*, WebCore::IntSize)>;
|
||||
+ void setPaintCallback(PaintCallback&& callback) { m_paintCallback = WTFMove(callback); }
|
||||
+ void didPaint(cairo_surface_t* surface, WebCore::IntSize size)
|
||||
+ {
|
||||
+ if (m_paintCallback)
|
||||
+ m_paintCallback(surface, size);
|
||||
+ }
|
||||
|
||||
private:
|
||||
// DrawingAreaProxy
|
||||
@@ -126,12 +137,15 @@ private:
|
||||
@@ -126,6 +128,8 @@ private:
|
||||
// For a new Drawing Area don't draw anything until the WebProcess has sent over the first content.
|
||||
bool m_hasReceivedFirstUpdate { false };
|
||||
|
||||
@ -8513,13 +8504,6 @@ index d7695088e7cfc4f638f157338754f9f157489749..74a3654235d5e24a39d3714ec4d2f45a
|
||||
#if !PLATFORM(WPE)
|
||||
bool m_isBackingStoreDiscardable { true };
|
||||
std::unique_ptr<BackingStore> m_backingStore;
|
||||
RunLoop::Timer<DrawingAreaProxyCoordinatedGraphics> m_discardBackingStoreTimer;
|
||||
#endif
|
||||
std::unique_ptr<DrawingMonitor> m_drawingMonitor;
|
||||
+ PaintCallback m_paintCallback;
|
||||
};
|
||||
|
||||
} // namespace WebKit
|
||||
diff --git a/Source/WebKit/UIProcess/Downloads/DownloadProxy.cpp b/Source/WebKit/UIProcess/Downloads/DownloadProxy.cpp
|
||||
index c5de4e7d0f59194f43a023b089e372c58cf8ee06..211f4c1baf5d1a66cd08ee8147e96f7ec6c0098a 100644
|
||||
--- a/Source/WebKit/UIProcess/Downloads/DownloadProxy.cpp
|
||||
@ -8622,10 +8606,10 @@ index 59cdfdafab1d85ea3a5aecb3cd2293e6dfb1eb8d..52fe7990b1c18b964ee3cfa9f324e3c2
|
||||
// The timeout we use when waiting for a DidUpdateGeometry message.
|
||||
diff --git a/Source/WebKit/UIProcess/Inspector/Agents/InspectorScreencastAgent.cpp b/Source/WebKit/UIProcess/Inspector/Agents/InspectorScreencastAgent.cpp
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..103febd9eed246c6cc1f21f7e5e4f5a56bb03ac5
|
||||
index 0000000000000000000000000000000000000000..d796a81ab5dae0627fab017f77074d411c4da40a
|
||||
--- /dev/null
|
||||
+++ b/Source/WebKit/UIProcess/Inspector/Agents/InspectorScreencastAgent.cpp
|
||||
@@ -0,0 +1,257 @@
|
||||
@@ -0,0 +1,255 @@
|
||||
+/*
|
||||
+ * Copyright (C) 2020 Microsoft Corporation.
|
||||
+ *
|
||||
@ -8695,6 +8679,14 @@ index 0000000000000000000000000000000000000000..103febd9eed246c6cc1f21f7e5e4f5a5
|
||||
+ stop(errorString);
|
||||
+}
|
||||
+
|
||||
+#if USE(COORDINATED_GRAPHICS)
|
||||
+void InspectorScreencastAgent::didPaint(cairo_surface_t* surface)
|
||||
+{
|
||||
+ if (m_encoder)
|
||||
+ m_encoder->encodeFrame(surface, m_page.drawingArea()->size());
|
||||
+}
|
||||
+#endif
|
||||
+
|
||||
+void InspectorScreencastAgent::start(Inspector::ErrorString& errorString, const String& format, const int* quality)
|
||||
+{
|
||||
+ if (m_enabled)
|
||||
@ -8759,23 +8751,16 @@ index 0000000000000000000000000000000000000000..103febd9eed246c6cc1f21f7e5e4f5a5
|
||||
+ errorString = "Already recording"_s;
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ if (width < 10 || width > 10000 || height < 10 || height > 10000) {
|
||||
+ errorString = "Invalid size"_s;
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ if (auto* drawingArea = static_cast<DrawingAreaProxyCoordinatedGraphics*>(m_page.drawingArea())) {
|
||||
+ m_encoder = ScreencastEncoder::create(errorString, file, IntSize(width, height));
|
||||
+ if (!m_encoder)
|
||||
+ return;
|
||||
+
|
||||
+ drawingArea->setPaintCallback([encoder = m_encoder.get()] (cairo_surface_t* surface, WebCore::IntSize size) {
|
||||
+ encoder->encodeFrame(surface, size);
|
||||
+ });
|
||||
+ } else {
|
||||
+ errorString = "Cannot get drawing area"_s;
|
||||
+ m_encoder = ScreencastEncoder::create(errorString, file, IntSize(width, height));
|
||||
+ if (!m_encoder)
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+#else
|
||||
+ errorString = "Not implemented"_s;
|
||||
+#endif
|
||||
@ -8789,9 +8774,6 @@ index 0000000000000000000000000000000000000000..103febd9eed246c6cc1f21f7e5e4f5a5
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ if (auto* drawingArea = static_cast<DrawingAreaProxyCoordinatedGraphics*>(m_page.drawingArea()))
|
||||
+ drawingArea->setPaintCallback(nullptr);
|
||||
+
|
||||
+ m_encoder->finish([protectRef = m_encoder.copyRef(), callback = WTFMove(callback)] {
|
||||
+ callback->sendSuccess();
|
||||
+ });
|
||||
@ -8885,10 +8867,10 @@ index 0000000000000000000000000000000000000000..103febd9eed246c6cc1f21f7e5e4f5a5
|
||||
+} // namespace WebKit
|
||||
diff --git a/Source/WebKit/UIProcess/Inspector/Agents/InspectorScreencastAgent.h b/Source/WebKit/UIProcess/Inspector/Agents/InspectorScreencastAgent.h
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..2f96d82a650993bc0b0469453e7634d20771d797
|
||||
index 0000000000000000000000000000000000000000..dbdb294ee1b4c04e1dec3f53bd229d2a89e7e767
|
||||
--- /dev/null
|
||||
+++ b/Source/WebKit/UIProcess/Inspector/Agents/InspectorScreencastAgent.h
|
||||
@@ -0,0 +1,85 @@
|
||||
@@ -0,0 +1,89 @@
|
||||
+/*
|
||||
+ * Copyright (C) 2020 Microsoft Corporation.
|
||||
+ *
|
||||
@ -8945,6 +8927,10 @@ index 0000000000000000000000000000000000000000..2f96d82a650993bc0b0469453e7634d2
|
||||
+ void didCreateFrontendAndBackend(Inspector::FrontendRouter*, Inspector::BackendDispatcher*) override;
|
||||
+ void willDestroyFrontendAndBackend(Inspector::DisconnectReason) override;
|
||||
+
|
||||
+#if USE(COORDINATED_GRAPHICS)
|
||||
+ void didPaint(cairo_surface_t*);
|
||||
+#endif
|
||||
+
|
||||
+ void start(Inspector::ErrorString&, const String& format, const int* quality) override;
|
||||
+ void stop(Inspector::ErrorString&) override;
|
||||
+ void frameAck(Inspector::ErrorString&) override;
|
||||
@ -9556,7 +9542,7 @@ index a2239cec8e18850f35f7f88a9c4ebadc62bf4023..79f3ff84327dc075ec96983e04db4b10
|
||||
|
||||
} // namespace WebKit
|
||||
diff --git a/Source/WebKit/UIProcess/Inspector/WebPageInspectorController.cpp b/Source/WebKit/UIProcess/Inspector/WebPageInspectorController.cpp
|
||||
index 1861cff806131196ea49b4f8aca6665beebbf6e8..57cb5bd0a6916b00da01af17b743da9e04094a77 100644
|
||||
index 1861cff806131196ea49b4f8aca6665beebbf6e8..fc37922a680f2a46e2512975b558b839d75cff42 100644
|
||||
--- a/Source/WebKit/UIProcess/Inspector/WebPageInspectorController.cpp
|
||||
+++ b/Source/WebKit/UIProcess/Inspector/WebPageInspectorController.cpp
|
||||
@@ -26,12 +26,20 @@
|
||||
@ -9580,7 +9566,7 @@ index 1861cff806131196ea49b4f8aca6665beebbf6e8..57cb5bd0a6916b00da01af17b743da9e
|
||||
#include <JavaScriptCore/InspectorAgentBase.h>
|
||||
#include <JavaScriptCore/InspectorBackendDispatcher.h>
|
||||
#include <JavaScriptCore/InspectorBackendDispatchers.h>
|
||||
@@ -48,27 +56,104 @@ static String getTargetID(const ProvisionalPageProxy& provisionalPage)
|
||||
@@ -48,27 +56,106 @@ static String getTargetID(const ProvisionalPageProxy& provisionalPage)
|
||||
return WebPageInspectorTarget::toTargetID(provisionalPage.webPageID());
|
||||
}
|
||||
|
||||
@ -9614,7 +9600,9 @@ index 1861cff806131196ea49b4f8aca6665beebbf6e8..57cb5bd0a6916b00da01af17b743da9e
|
||||
+ m_agents.append(WTFMove(inputAgent));
|
||||
+ m_agents.append(makeUnique<InspectorDialogAgent>(m_backendDispatcher.get(), m_frontendRouter.get(), m_page));
|
||||
+#if !PLATFORM(WPE) && !PLATFORM(WIN)
|
||||
+ m_agents.append(makeUnique<InspectorScreencastAgent>(m_backendDispatcher.get(), m_frontendRouter.get(), m_page));
|
||||
+ auto screencastAgent = makeUnique<InspectorScreencastAgent>(m_backendDispatcher.get(), m_frontendRouter.get(), m_page);
|
||||
+ m_screecastAgent = screencastAgent.get();
|
||||
+ m_agents.append(WTFMove(screencastAgent));
|
||||
+#endif
|
||||
+ if (s_observer)
|
||||
+ s_observer->didCreateInspectorController(m_page);
|
||||
@ -9688,7 +9676,7 @@ index 1861cff806131196ea49b4f8aca6665beebbf6e8..57cb5bd0a6916b00da01af17b743da9e
|
||||
}
|
||||
|
||||
bool WebPageInspectorController::hasLocalFrontend() const
|
||||
@@ -82,6 +167,17 @@ void WebPageInspectorController::connectFrontend(Inspector::FrontendChannel& fro
|
||||
@@ -82,6 +169,17 @@ void WebPageInspectorController::connectFrontend(Inspector::FrontendChannel& fro
|
||||
|
||||
bool connectingFirstFrontend = !m_frontendRouter->hasFrontends();
|
||||
|
||||
@ -9706,7 +9694,7 @@ index 1861cff806131196ea49b4f8aca6665beebbf6e8..57cb5bd0a6916b00da01af17b743da9e
|
||||
m_frontendRouter->connectFrontend(frontendChannel);
|
||||
|
||||
if (connectingFirstFrontend)
|
||||
@@ -100,8 +196,10 @@ void WebPageInspectorController::disconnectFrontend(FrontendChannel& frontendCha
|
||||
@@ -100,8 +198,10 @@ void WebPageInspectorController::disconnectFrontend(FrontendChannel& frontendCha
|
||||
m_frontendRouter->disconnectFrontend(frontendChannel);
|
||||
|
||||
bool disconnectingLastFrontend = !m_frontendRouter->hasFrontends();
|
||||
@ -9718,7 +9706,7 @@ index 1861cff806131196ea49b4f8aca6665beebbf6e8..57cb5bd0a6916b00da01af17b743da9e
|
||||
|
||||
m_page.didChangeInspectorFrontendCount(m_frontendRouter->frontendCount());
|
||||
|
||||
@@ -124,6 +222,8 @@ void WebPageInspectorController::disconnectAllFrontends()
|
||||
@@ -124,6 +224,8 @@ void WebPageInspectorController::disconnectAllFrontends()
|
||||
// Disconnect any remaining remote frontends.
|
||||
m_frontendRouter->disconnectAllFrontends();
|
||||
|
||||
@ -9727,10 +9715,21 @@ index 1861cff806131196ea49b4f8aca6665beebbf6e8..57cb5bd0a6916b00da01af17b743da9e
|
||||
m_page.didChangeInspectorFrontendCount(m_frontendRouter->frontendCount());
|
||||
|
||||
#if ENABLE(REMOTE_INSPECTOR)
|
||||
@@ -150,6 +250,55 @@ void WebPageInspectorController::setIndicating(bool indicating)
|
||||
@@ -150,6 +252,66 @@ void WebPageInspectorController::setIndicating(bool indicating)
|
||||
}
|
||||
#endif
|
||||
|
||||
+#if USE(COORDINATED_GRAPHICS)
|
||||
+void WebPageInspectorController::didPaint(cairo_surface_t* surface)
|
||||
+{
|
||||
+ if (!m_frontendRouter->hasFrontends())
|
||||
+ return;
|
||||
+
|
||||
+ m_screecastAgent->didPaint(surface);
|
||||
+}
|
||||
+#endif
|
||||
+
|
||||
+
|
||||
+void WebPageInspectorController::navigate(WebCore::ResourceRequest&& request, WebFrameProxy* frame, NavigationHandler&& completionHandler)
|
||||
+{
|
||||
+ auto navigation = m_page.loadRequestForInspector(WTFMove(request), frame);
|
||||
@ -9783,7 +9782,7 @@ index 1861cff806131196ea49b4f8aca6665beebbf6e8..57cb5bd0a6916b00da01af17b743da9e
|
||||
void WebPageInspectorController::createInspectorTarget(const String& targetId, Inspector::InspectorTargetType type)
|
||||
{
|
||||
addTarget(InspectorTargetProxy::create(m_page, targetId, type));
|
||||
@@ -169,6 +318,33 @@ void WebPageInspectorController::sendMessageToInspectorFrontend(const String& ta
|
||||
@@ -169,6 +331,33 @@ void WebPageInspectorController::sendMessageToInspectorFrontend(const String& ta
|
||||
m_targetAgent->sendMessageFromTargetToFrontend(targetId, message);
|
||||
}
|
||||
|
||||
@ -9817,7 +9816,7 @@ index 1861cff806131196ea49b4f8aca6665beebbf6e8..57cb5bd0a6916b00da01af17b743da9e
|
||||
bool WebPageInspectorController::shouldPauseLoading(const ProvisionalPageProxy& provisionalPage) const
|
||||
{
|
||||
if (!m_frontendRouter->hasFrontends())
|
||||
@@ -188,7 +364,7 @@ void WebPageInspectorController::setContinueLoadingCallback(const ProvisionalPag
|
||||
@@ -188,7 +377,7 @@ void WebPageInspectorController::setContinueLoadingCallback(const ProvisionalPag
|
||||
|
||||
void WebPageInspectorController::didCreateProvisionalPage(ProvisionalPageProxy& provisionalPage)
|
||||
{
|
||||
@ -9826,7 +9825,7 @@ index 1861cff806131196ea49b4f8aca6665beebbf6e8..57cb5bd0a6916b00da01af17b743da9e
|
||||
}
|
||||
|
||||
void WebPageInspectorController::willDestroyProvisionalPage(const ProvisionalPageProxy& provisionalPage)
|
||||
@@ -241,4 +417,20 @@ void WebPageInspectorController::addTarget(std::unique_ptr<InspectorTargetProxy>
|
||||
@@ -241,4 +430,20 @@ void WebPageInspectorController::addTarget(std::unique_ptr<InspectorTargetProxy>
|
||||
m_targets.set(target->identifier(), WTFMove(target));
|
||||
}
|
||||
|
||||
@ -9848,7 +9847,7 @@ index 1861cff806131196ea49b4f8aca6665beebbf6e8..57cb5bd0a6916b00da01af17b743da9e
|
||||
+
|
||||
} // namespace WebKit
|
||||
diff --git a/Source/WebKit/UIProcess/Inspector/WebPageInspectorController.h b/Source/WebKit/UIProcess/Inspector/WebPageInspectorController.h
|
||||
index 9ce5ef36b652fd56a843c1d12a4c3c3cf639282c..bb4d6b26bf245aebc2bd0f435a7bb83151331961 100644
|
||||
index 9ce5ef36b652fd56a843c1d12a4c3c3cf639282c..ca95d658c1f260020624291aaf5d8ea4172e5b45 100644
|
||||
--- a/Source/WebKit/UIProcess/Inspector/WebPageInspectorController.h
|
||||
+++ b/Source/WebKit/UIProcess/Inspector/WebPageInspectorController.h
|
||||
@@ -26,17 +26,27 @@
|
||||
@ -9879,10 +9878,11 @@ index 9ce5ef36b652fd56a843c1d12a4c3c3cf639282c..bb4d6b26bf245aebc2bd0f435a7bb831
|
||||
}
|
||||
|
||||
namespace WebKit {
|
||||
@@ -44,6 +54,21 @@ namespace WebKit {
|
||||
@@ -44,6 +54,22 @@ namespace WebKit {
|
||||
class InspectorBrowserAgent;
|
||||
struct WebPageAgentContext;
|
||||
|
||||
+class InspectorScreencastAgent;
|
||||
+class WebFrameProxy;
|
||||
+class WebPageInspectorEmulationAgent;
|
||||
+class WebPageInspectorInputAgent;
|
||||
@ -9901,7 +9901,7 @@ index 9ce5ef36b652fd56a843c1d12a4c3c3cf639282c..bb4d6b26bf245aebc2bd0f435a7bb831
|
||||
class WebPageInspectorController {
|
||||
WTF_MAKE_NONCOPYABLE(WebPageInspectorController);
|
||||
WTF_MAKE_FAST_ALLOCATED;
|
||||
@@ -51,7 +76,19 @@ public:
|
||||
@@ -51,7 +77,19 @@ public:
|
||||
WebPageInspectorController(WebPageProxy&);
|
||||
|
||||
void init();
|
||||
@ -9921,17 +9921,20 @@ index 9ce5ef36b652fd56a843c1d12a4c3c3cf639282c..bb4d6b26bf245aebc2bd0f435a7bb831
|
||||
|
||||
bool hasLocalFrontend() const;
|
||||
|
||||
@@ -65,10 +102,22 @@ public:
|
||||
@@ -64,11 +102,25 @@ public:
|
||||
#if ENABLE(REMOTE_INSPECTOR)
|
||||
void setIndicating(bool);
|
||||
#endif
|
||||
|
||||
+#if USE(COORDINATED_GRAPHICS)
|
||||
+ void didPaint(cairo_surface_t*);
|
||||
+#endif
|
||||
+ using NavigationHandler = Function<void(const String&, uint64_t)>;
|
||||
+ void navigate(WebCore::ResourceRequest&&, WebFrameProxy*, NavigationHandler&&);
|
||||
+ void didReceivePolicyDecision(WebCore::PolicyAction action, uint64_t navigationID);
|
||||
+ void didDestroyNavigation(uint64_t navigationID);
|
||||
+
|
||||
+ void didFailProvisionalLoadForFrame(uint64_t navigationID, const WebCore::ResourceError& error);
|
||||
+
|
||||
|
||||
void createInspectorTarget(const String& targetId, Inspector::InspectorTargetType);
|
||||
void destroyInspectorTarget(const String& targetId);
|
||||
void sendMessageToInspectorFrontend(const String& targetId, const String& message);
|
||||
@ -9944,7 +9947,7 @@ index 9ce5ef36b652fd56a843c1d12a4c3c3cf639282c..bb4d6b26bf245aebc2bd0f435a7bb831
|
||||
bool shouldPauseLoading(const ProvisionalPageProxy&) const;
|
||||
void setContinueLoadingCallback(const ProvisionalPageProxy&, WTF::Function<void()>&&);
|
||||
|
||||
@@ -84,6 +133,7 @@ private:
|
||||
@@ -84,6 +136,7 @@ private:
|
||||
void createLazyAgents();
|
||||
|
||||
void addTarget(std::unique_ptr<InspectorTargetProxy>&&);
|
||||
@ -9952,12 +9955,13 @@ index 9ce5ef36b652fd56a843c1d12a4c3c3cf639282c..bb4d6b26bf245aebc2bd0f435a7bb831
|
||||
|
||||
Ref<Inspector::FrontendRouter> m_frontendRouter;
|
||||
Ref<Inspector::BackendDispatcher> m_backendDispatcher;
|
||||
@@ -92,11 +142,16 @@ private:
|
||||
@@ -92,11 +145,17 @@ private:
|
||||
WebPageProxy& m_page;
|
||||
|
||||
Inspector::InspectorTargetAgent* m_targetAgent;
|
||||
+ WebPageInspectorEmulationAgent* m_emulationAgent { nullptr };
|
||||
+ WebPageInspectorInputAgent* m_inputAgent { nullptr };
|
||||
+ InspectorScreencastAgent* m_screecastAgent { nullptr };
|
||||
HashMap<String, std::unique_ptr<InspectorTargetProxy>> m_targets;
|
||||
|
||||
InspectorBrowserAgent* m_enabledInspectorBrowserAgent;
|
||||
@ -12702,10 +12706,10 @@ index 964c6315e38f5e0a0303febce45b1e975054f0b4..117d8c7c74bc81b34cfc0fe2b11a5429
|
||||
UniqueRef<SOAuthorizationCoordinator> m_soAuthorizationCoordinator;
|
||||
#endif
|
||||
diff --git a/Source/WebKit/UIProcess/cairo/BackingStoreCairo.cpp b/Source/WebKit/UIProcess/cairo/BackingStoreCairo.cpp
|
||||
index dc0a70b8824afdc7ec3dd1f69f4d9b51942924f6..f31988b5b9b896f17994bcf15c72b5f384d65afb 100644
|
||||
index dc0a70b8824afdc7ec3dd1f69f4d9b51942924f6..4da6649c86b46dea36c2750802494ddb9b70cc24 100644
|
||||
--- a/Source/WebKit/UIProcess/cairo/BackingStoreCairo.cpp
|
||||
+++ b/Source/WebKit/UIProcess/cairo/BackingStoreCairo.cpp
|
||||
@@ -27,6 +27,7 @@
|
||||
@@ -27,9 +27,11 @@
|
||||
#include "config.h"
|
||||
#include "BackingStore.h"
|
||||
|
||||
@ -12713,13 +12717,16 @@ index dc0a70b8824afdc7ec3dd1f69f4d9b51942924f6..f31988b5b9b896f17994bcf15c72b5f3
|
||||
#include "ShareableBitmap.h"
|
||||
#include "UpdateInfo.h"
|
||||
#include "WebPageProxy.h"
|
||||
@@ -72,6 +73,10 @@ void BackingStore::paint(cairo_t* context, const IntRect& rect)
|
||||
+#include "WebPageInspectorController.h"
|
||||
#include <WebCore/BackingStoreBackendCairoImpl.h>
|
||||
#include <WebCore/CairoUtilities.h>
|
||||
#include <WebCore/GraphicsContextImplCairo.h>
|
||||
@@ -72,6 +74,9 @@ void BackingStore::paint(cairo_t* context, const IntRect& rect)
|
||||
cairo_rectangle(context, rect.x(), rect.y(), rect.width(), rect.height());
|
||||
cairo_fill(context);
|
||||
cairo_restore(context);
|
||||
+#if PLATFORM(GTK)
|
||||
+ if (auto* drawingArea = static_cast<DrawingAreaProxyCoordinatedGraphics*>(m_webPageProxy.drawingArea()))
|
||||
+ drawingArea->didPaint(m_backend->surface(), drawingArea->size());
|
||||
+ m_webPageProxy.inspectorController().didPaint(m_backend->surface());
|
||||
+#endif
|
||||
}
|
||||
|
||||
@ -12997,15 +13004,22 @@ index 0000000000000000000000000000000000000000..a073a77390b206deb794efe937df4f35
|
||||
+
|
||||
+#endif // ENABLE(REMOTE_INSPECTOR)
|
||||
diff --git a/Source/WebKit/UIProcess/gtk/AcceleratedBackingStoreX11.cpp b/Source/WebKit/UIProcess/gtk/AcceleratedBackingStoreX11.cpp
|
||||
index be19b6007c9c0fbfffb859e40fd34751493fe7d1..dd51b743f0bb5ba5a537edd1caf0005054c89839 100644
|
||||
index be19b6007c9c0fbfffb859e40fd34751493fe7d1..ce214fb7e22f8623aff6e2487cecd0272b21c478 100644
|
||||
--- a/Source/WebKit/UIProcess/gtk/AcceleratedBackingStoreX11.cpp
|
||||
+++ b/Source/WebKit/UIProcess/gtk/AcceleratedBackingStoreX11.cpp
|
||||
@@ -256,6 +256,9 @@ bool AcceleratedBackingStoreX11::paint(cairo_t* cr, const IntRect& clipRect)
|
||||
@@ -31,6 +31,7 @@
|
||||
#include "DrawingAreaProxyCoordinatedGraphics.h"
|
||||
#include "LayerTreeContext.h"
|
||||
#include "WebPageProxy.h"
|
||||
+#include "WebPageInspectorController.h"
|
||||
#include <WebCore/CairoUtilities.h>
|
||||
#include <WebCore/PlatformDisplayX11.h>
|
||||
#include <WebCore/XErrorTrapper.h>
|
||||
@@ -256,6 +257,8 @@ bool AcceleratedBackingStoreX11::paint(cairo_t* cr, const IntRect& clipRect)
|
||||
|
||||
cairo_restore(cr);
|
||||
|
||||
+ if (auto* drawingArea = static_cast<DrawingAreaProxyCoordinatedGraphics*>(m_webPage.drawingArea()))
|
||||
+ drawingArea->didPaint(m_surface.get(), drawingArea->size());
|
||||
+ m_webPage.inspectorController().didPaint(m_surface.get());
|
||||
+
|
||||
cairo_surface_flush(m_surface.get());
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user