Title: [277045] trunk/Source
Revision
277045
Author
[email protected]
Date
2021-05-05 15:22:36 -0700 (Wed, 05 May 2021)

Log Message

Sampled Page Top Color: tie into existing TCADA/RLTT systems so that the value is kept in sync with painting
https://bugs.webkit.org/show_bug.cgi?id=225405

Reviewed by Tim Horton.

Instead of sending an IPC to the UIProcess whenever the logic to determine the sampled page
top color finishes, wait to dispatch the IPC until we're about to render (just like theme
color and page extended background color). On macOS, this means the IPC is dispatched inside
`TiledCoreAnimationDrawingArea::updateRendering`. On iOS, the `Color` is included as part of
the `RemoteLayerTreeTransaction`.

Source/WebCore:

* dom/Document.cpp:
(WebCore::Document::determineSampledPageTopColor):

* page/ChromeClient.h:
(WebCore::ChromeClient::sampledPageTopColorChanged const): Renamed from `didSamplePageTopColor`.

Source/WebKit:

* WebProcess/WebCoreSupport/WebChromeClient.h:
* WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::sampledPageTopColorChanged const): Renamed from `didSamplePageTopColor`.

* WebProcess/WebPage/WebPage.h:
(WebKit::WebPage::sampledPageTopColorChanged): Added.
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::willCommitLayerTree):
(WebKit::WebPage::flushPendingSampledPageTopColorChange): Added.
(WebKit::WebPage::didSamplePageTopColor): Deleted.

* WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
(WebKit::TiledCoreAnimationDrawingArea::updateRendering):
* Shared/RemoteLayerTree/RemoteLayerTreeTransaction.h:
(WebKit::RemoteLayerTreeTransaction::sampledPageTopColor const): Added.
(WebKit::RemoteLayerTreeTransaction::setSampledPageTopColor): Added.
* Shared/RemoteLayerTree/RemoteLayerTreeTransaction.mm:
(WebKit::RemoteLayerTreeTransaction::encode const):
(WebKit::RemoteLayerTreeTransaction::decode):

* UIProcess/WebPageProxy.messages.in:
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::sampledPageTopColorChanged): Renamed from `didSamplePageTopColor`.
* UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::didCommitLayerTree):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (277044 => 277045)


--- trunk/Source/WebCore/ChangeLog	2021-05-05 21:53:50 UTC (rev 277044)
+++ trunk/Source/WebCore/ChangeLog	2021-05-05 22:22:36 UTC (rev 277045)
@@ -1,5 +1,24 @@
 2021-05-05  Devin Rousso  <[email protected]>
 
+        Sampled Page Top Color: tie into existing TCADA/RLTT systems so that the value is kept in sync with painting
+        https://bugs.webkit.org/show_bug.cgi?id=225405
+
+        Reviewed by Tim Horton.
+
+        Instead of sending an IPC to the UIProcess whenever the logic to determine the sampled page
+        top color finishes, wait to dispatch the IPC until we're about to render (just like theme
+        color and page extended background color). On macOS, this means the IPC is dispatched inside
+        `TiledCoreAnimationDrawingArea::updateRendering`. On iOS, the `Color` is included as part of
+        the `RemoteLayerTreeTransaction`.
+
+        * dom/Document.cpp:
+        (WebCore::Document::determineSampledPageTopColor):
+
+        * page/ChromeClient.h:
+        (WebCore::ChromeClient::sampledPageTopColorChanged const): Renamed from `didSamplePageTopColor`.
+
+2021-05-05  Devin Rousso  <[email protected]>
+
         Sampled Page Top Color: don't snapshot if the hit test location is an image or has an animation
         https://bugs.webkit.org/show_bug.cgi?id=225338
 

Modified: trunk/Source/WebCore/dom/Document.cpp (277044 => 277045)


--- trunk/Source/WebCore/dom/Document.cpp	2021-05-05 21:53:50 UTC (rev 277044)
+++ trunk/Source/WebCore/dom/Document.cpp	2021-05-05 22:22:36 UTC (rev 277045)
@@ -3959,7 +3959,7 @@
 
     auto notifyDidSamplePageTopColorOnScopeExit = makeScopeExit([&] {
         if (auto* page = this->page())
-            page->chrome().client().didSamplePageTopColor();
+            page->chrome().client().sampledPageTopColorChanged();
     });
 
     // Decrease the width by one pixel so that the last snapshot is within bounds and not off-by-one.

Modified: trunk/Source/WebCore/page/ChromeClient.h (277044 => 277045)


--- trunk/Source/WebCore/page/ChromeClient.h	2021-05-05 21:53:50 UTC (rev 277044)
+++ trunk/Source/WebCore/page/ChromeClient.h	2021-05-05 22:22:36 UTC (rev 277045)
@@ -233,7 +233,7 @@
 
     virtual void themeColorChanged() const { }
     virtual void pageExtendedBackgroundColorDidChange() const { }
-    virtual void didSamplePageTopColor() const { }
+    virtual void sampledPageTopColorChanged() const { }
 
     virtual void exceededDatabaseQuota(Frame&, const String& databaseName, DatabaseDetails) = 0;
 

Modified: trunk/Source/WebKit/ChangeLog (277044 => 277045)


--- trunk/Source/WebKit/ChangeLog	2021-05-05 21:53:50 UTC (rev 277044)
+++ trunk/Source/WebKit/ChangeLog	2021-05-05 22:22:36 UTC (rev 277045)
@@ -1,3 +1,43 @@
+2021-05-05  Devin Rousso  <[email protected]>
+
+        Sampled Page Top Color: tie into existing TCADA/RLTT systems so that the value is kept in sync with painting
+        https://bugs.webkit.org/show_bug.cgi?id=225405
+
+        Reviewed by Tim Horton.
+
+        Instead of sending an IPC to the UIProcess whenever the logic to determine the sampled page
+        top color finishes, wait to dispatch the IPC until we're about to render (just like theme
+        color and page extended background color). On macOS, this means the IPC is dispatched inside
+        `TiledCoreAnimationDrawingArea::updateRendering`. On iOS, the `Color` is included as part of
+        the `RemoteLayerTreeTransaction`.
+
+        * WebProcess/WebCoreSupport/WebChromeClient.h:
+        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
+        (WebKit::WebChromeClient::sampledPageTopColorChanged const): Renamed from `didSamplePageTopColor`.
+
+        * WebProcess/WebPage/WebPage.h:
+        (WebKit::WebPage::sampledPageTopColorChanged): Added.
+        * WebProcess/WebPage/WebPage.cpp:
+        (WebKit::WebPage::willCommitLayerTree):
+        (WebKit::WebPage::flushPendingSampledPageTopColorChange): Added.
+        (WebKit::WebPage::didSamplePageTopColor): Deleted.
+
+        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
+        (WebKit::TiledCoreAnimationDrawingArea::updateRendering):
+        * Shared/RemoteLayerTree/RemoteLayerTreeTransaction.h:
+        (WebKit::RemoteLayerTreeTransaction::sampledPageTopColor const): Added.
+        (WebKit::RemoteLayerTreeTransaction::setSampledPageTopColor): Added.
+        * Shared/RemoteLayerTree/RemoteLayerTreeTransaction.mm:
+        (WebKit::RemoteLayerTreeTransaction::encode const):
+        (WebKit::RemoteLayerTreeTransaction::decode):
+
+        * UIProcess/WebPageProxy.messages.in:
+        * UIProcess/WebPageProxy.h:
+        * UIProcess/WebPageProxy.cpp:
+        (WebKit::WebPageProxy::sampledPageTopColorChanged): Renamed from `didSamplePageTopColor`.
+        * UIProcess/ios/WebPageProxyIOS.mm:
+        (WebKit::WebPageProxy::didCommitLayerTree):
+
 2021-05-05  Alex Christensen  <[email protected]>
 
         Add WebKitAdditions stubs for new NetworkLoadMetrics

Modified: trunk/Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTreeTransaction.h (277044 => 277045)


--- trunk/Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTreeTransaction.h	2021-05-05 21:53:50 UTC (rev 277044)
+++ trunk/Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTreeTransaction.h	2021-05-05 22:22:36 UTC (rev 277045)
@@ -238,6 +238,9 @@
     WebCore::Color pageExtendedBackgroundColor() const { return m_pageExtendedBackgroundColor; }
     void setPageExtendedBackgroundColor(WebCore::Color color) { m_pageExtendedBackgroundColor = color; }
 
+    WebCore::Color sampledPageTopColor() const { return m_sampledPageTopColor; }
+    void setSampledPageTopColor(WebCore::Color color) { m_sampledPageTopColor = color; }
+
     WebCore::IntPoint scrollPosition() const { return m_scrollPosition; }
     void setScrollPosition(WebCore::IntPoint p) { m_scrollPosition = p; }
 
@@ -317,6 +320,7 @@
     WebCore::IntPoint m_scrollPosition;
     WebCore::Color m_themeColor;
     WebCore::Color m_pageExtendedBackgroundColor;
+    WebCore::Color m_sampledPageTopColor;
     double m_pageScaleFactor { 1 };
     double m_minimumScaleFactor { 1 };
     double m_maximumScaleFactor { 1 };

Modified: trunk/Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTreeTransaction.mm (277044 => 277045)


--- trunk/Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTreeTransaction.mm	2021-05-05 21:53:50 UTC (rev 277044)
+++ trunk/Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTreeTransaction.mm	2021-05-05 22:22:36 UTC (rev 277045)
@@ -590,6 +590,8 @@
 
     encoder << m_themeColor;
     encoder << m_pageExtendedBackgroundColor;
+    encoder << m_sampledPageTopColor;
+
     encoder << m_pageScaleFactor;
     encoder << m_minimumScaleFactor;
     encoder << m_maximumScaleFactor;
@@ -690,6 +692,9 @@
     if (!decoder.decode(result.m_pageExtendedBackgroundColor))
         return false;
 
+    if (!decoder.decode(result.m_sampledPageTopColor))
+        return false;
+
     if (!decoder.decode(result.m_pageScaleFactor))
         return false;
 

Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.cpp (277044 => 277045)


--- trunk/Source/WebKit/UIProcess/WebPageProxy.cpp	2021-05-05 21:53:50 UTC (rev 277044)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.cpp	2021-05-05 22:22:36 UTC (rev 277045)
@@ -8529,7 +8529,7 @@
     pageClient().pageExtendedBackgroundColorDidChange();
 }
 
-void WebPageProxy::didSamplePageTopColor(const Color& sampledPageTopColor)
+void WebPageProxy::sampledPageTopColorChanged(const Color& sampledPageTopColor)
 {
     if (m_sampledPageTopColor == sampledPageTopColor)
         return;

Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.h (277044 => 277045)


--- trunk/Source/WebKit/UIProcess/WebPageProxy.h	2021-05-05 21:53:50 UTC (rev 277044)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.h	2021-05-05 22:22:36 UTC (rev 277045)
@@ -2101,7 +2101,7 @@
     void didChangePageCount(unsigned);
     void themeColorChanged(const WebCore::Color&);
     void pageExtendedBackgroundColorDidChange(const WebCore::Color&);
-    void didSamplePageTopColor(const WebCore::Color&);
+    void sampledPageTopColorChanged(const WebCore::Color&);
 #if ENABLE(NETSCAPE_PLUGIN_API)
     void didFailToInitializePlugin(const String& mimeType, const String& frameURLString, const String& pageURLString);
     void didBlockInsecurePluginVersion(const String& mimeType, const String& pluginURLString, const String& frameURLString, const String& pageURLString, bool replacementObscured);

Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.messages.in (277044 => 277045)


--- trunk/Source/WebKit/UIProcess/WebPageProxy.messages.in	2021-05-05 21:53:50 UTC (rev 277044)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.messages.in	2021-05-05 22:22:36 UTC (rev 277045)
@@ -79,7 +79,7 @@
     DidChangePageCount(unsigned pageCount)
     ThemeColorChanged(WebCore::Color themeColor)
     PageExtendedBackgroundColorDidChange(WebCore::Color backgroundColor)
-    DidSamplePageTopColor(WebCore::Color sampledPageTopColor)
+    SampledPageTopColorChanged(WebCore::Color sampledPageTopColor)
 #if ENABLE(NETSCAPE_PLUGIN_API)
     DidFailToInitializePlugin(String mimeType, String frameURLString, String pageURLString)
     DidBlockInsecurePluginVersion(String mimeType, String pluginURLString, String frameURLString, String pageURLString, bool replacementObscured)

Modified: trunk/Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm (277044 => 277045)


--- trunk/Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm	2021-05-05 21:53:50 UTC (rev 277044)
+++ trunk/Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm	2021-05-05 22:22:36 UTC (rev 277045)
@@ -339,6 +339,7 @@
 {
     themeColorChanged(layerTreeTransaction.themeColor());
     pageExtendedBackgroundColorDidChange(layerTreeTransaction.pageExtendedBackgroundColor());
+    sampledPageTopColorChanged(layerTreeTransaction.sampledPageTopColor());
 
     if (!m_hasUpdatedRenderingAfterDidCommitLoad) {
         if (layerTreeTransaction.transactionID() >= m_firstLayerTreeTransactionIdAfterDidCommitLoad) {

Modified: trunk/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp (277044 => 277045)


--- trunk/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp	2021-05-05 21:53:50 UTC (rev 277044)
+++ trunk/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp	2021-05-05 22:22:36 UTC (rev 277045)
@@ -1164,9 +1164,9 @@
     m_page.pageExtendedBackgroundColorDidChange();
 }
 
-void WebChromeClient::didSamplePageTopColor() const
+void WebChromeClient::sampledPageTopColorChanged() const
 {
-    m_page.didSamplePageTopColor();
+    m_page.sampledPageTopColorChanged();
 }
 
 void WebChromeClient::wheelEventHandlersChanged(bool hasHandlers)

Modified: trunk/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.h (277044 => 277045)


--- trunk/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.h	2021-05-05 21:53:50 UTC (rev 277044)
+++ trunk/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.h	2021-05-05 22:22:36 UTC (rev 277045)
@@ -332,7 +332,7 @@
 
     void themeColorChanged() const final;
     void pageExtendedBackgroundColorDidChange() const final;
-    void didSamplePageTopColor() const final;
+    void sampledPageTopColorChanged() const final;
     
     void wheelEventHandlersChanged(bool) final;
 

Modified: trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp (277044 => 277045)


--- trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp	2021-05-05 21:53:50 UTC (rev 277044)
+++ trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp	2021-05-05 22:22:36 UTC (rev 277045)
@@ -4026,6 +4026,7 @@
     layerTransaction.setRenderTreeSize(corePage()->renderTreeSize());
     layerTransaction.setThemeColor(corePage()->themeColor());
     layerTransaction.setPageExtendedBackgroundColor(corePage()->pageExtendedBackgroundColor());
+    layerTransaction.setSampledPageTopColor(corePage()->sampledPageTopColor());
 
     layerTransaction.setBaseLayoutViewportSize(frameView->baseLayoutViewportSize());
     layerTransaction.setMinStableLayoutViewportOrigin(frameView->minStableLayoutViewportOrigin());
@@ -4056,6 +4057,7 @@
 
     m_pendingThemeColorChange = false;
     m_pendingPageExtendedBackgroundColorChange = false;
+    m_pendingSampledPageTopColorChange = false;
 
     if (m_hasPendingEditorStateUpdate) {
         layerTransaction.setEditorState(editorState());
@@ -6457,9 +6459,14 @@
     send(Messages::WebPageProxy::PageExtendedBackgroundColorDidChange(m_page->pageExtendedBackgroundColor()));
 }
 
-void WebPage::didSamplePageTopColor()
+void WebPage::flushPendingSampledPageTopColorChange()
 {
-    send(Messages::WebPageProxy::DidSamplePageTopColor(m_page->sampledPageTopColor()));
+    if (!m_pendingSampledPageTopColorChange)
+        return;
+
+    m_pendingSampledPageTopColorChange = false;
+
+    send(Messages::WebPageProxy::SampledPageTopColorChanged(m_page->sampledPageTopColor()));
 }
 
 void WebPage::flushPendingEditorStateUpdate()

Modified: trunk/Source/WebKit/WebProcess/WebPage/WebPage.h (277044 => 277045)


--- trunk/Source/WebKit/WebProcess/WebPage/WebPage.h	2021-05-05 21:53:50 UTC (rev 277044)
+++ trunk/Source/WebKit/WebProcess/WebPage/WebPage.h	2021-05-05 22:22:36 UTC (rev 277045)
@@ -1241,7 +1241,8 @@
     void pageExtendedBackgroundColorDidChange() { m_pendingPageExtendedBackgroundColorChange = true; }
     void flushPendingPageExtendedBackgroundColorChange();
 
-    void didSamplePageTopColor();
+    void sampledPageTopColorChanged() { m_pendingSampledPageTopColorChange = true; }
+    void flushPendingSampledPageTopColorChange();
 
     void flushPendingEditorStateUpdate();
 
@@ -2143,6 +2144,7 @@
     bool m_hasPendingInputContextUpdateAfterBlurringAndRefocusingElement { false };
     bool m_pendingThemeColorChange { false };
     bool m_pendingPageExtendedBackgroundColorChange { false };
+    bool m_pendingSampledPageTopColorChange { false };
     bool m_hasPendingEditorStateUpdate { false };
 
 #if ENABLE(IOS_TOUCH_EVENTS)

Modified: trunk/Source/WebKit/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm (277044 => 277045)


--- trunk/Source/WebKit/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm	2021-05-05 21:53:50 UTC (rev 277044)
+++ trunk/Source/WebKit/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm	2021-05-05 22:22:36 UTC (rev 277045)
@@ -451,6 +451,7 @@
         m_webPage.updateRendering();
         m_webPage.flushPendingThemeColorChange();
         m_webPage.flushPendingPageExtendedBackgroundColorChange();
+        m_webPage.flushPendingSampledPageTopColorChange();
         m_webPage.flushPendingEditorStateUpdate();
         m_webPage.flushPendingIntrinsicContentSizeUpdate();
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to