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();