summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Harrelson <chrishtr@chromium.org>2016-03-17 15:10:26 -0700
committerChris Harrelson <chrishtr@chromium.org>2016-03-17 22:14:02 +0000
commit07848822badbaf506f571c039a3eb2896e2ac107 (patch)
tree7e65b39a5757363bb27f1f6bb1e5fe15cf87b7d4
parent4ea812c27f0c6a3af439f3102d14ae085b380dc9 (diff)
downloadchromium_src-07848822badbaf506f571c039a3eb2896e2ac107.zip
chromium_src-07848822badbaf506f571c039a3eb2896e2ac107.tar.gz
chromium_src-07848822badbaf506f571c039a3eb2896e2ac107.tar.bz2
Never call GraphicsLayer::paint when fetching painted output from cc.
GraphicsLayer::paint may not be a no-op if there happened to be dirty layout or paint since the last time a synchronized paint occurred. BUG=585694 TBR=ajuma@chromium.org CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel Review URL: https://codereview.chromium.org/1690763003 Cr-Commit-Position: refs/heads/master@{#374864} (cherry picked from commit 4d0892b08c7f42a433a278c05498d7c6ddbe8eeb) Review URL: https://codereview.chromium.org/1812093002 . Cr-Commit-Position: refs/branch-heads/2623@{#631} Cr-Branched-From: 92d77538a86529ca35f9220bd3cd512cbea1f086-refs/heads/master@{#369907}
-rw-r--r--cc/blink/web_content_layer_impl.cc2
-rw-r--r--cc/debug/rasterize_and_record_benchmark.cc2
-rw-r--r--cc/layers/content_layer_client.h1
-rw-r--r--third_party/WebKit/Source/platform/graphics/ContentLayerDelegate.cpp4
-rw-r--r--third_party/WebKit/public/platform/WebContentLayerClient.h3
5 files changed, 10 insertions, 2 deletions
diff --git a/cc/blink/web_content_layer_impl.cc b/cc/blink/web_content_layer_impl.cc
index 5e4e744..458b398 100644
--- a/cc/blink/web_content_layer_impl.cc
+++ b/cc/blink/web_content_layer_impl.cc
@@ -34,6 +34,8 @@ PaintingControlToWeb(
switch (painting_control) {
case cc::ContentLayerClient::PAINTING_BEHAVIOR_NORMAL:
return blink::WebContentLayerClient::PaintDefaultBehavior;
+ case cc::ContentLayerClient::PAINTING_BEHAVIOR_NORMAL_FOR_TEST:
+ return blink::WebContentLayerClient::PaintDefaultBehaviorForTest;
case cc::ContentLayerClient::DISPLAY_LIST_CONSTRUCTION_DISABLED:
return blink::WebContentLayerClient::DisplayListConstructionDisabled;
case cc::ContentLayerClient::DISPLAY_LIST_CACHING_DISABLED:
diff --git a/cc/debug/rasterize_and_record_benchmark.cc b/cc/debug/rasterize_and_record_benchmark.cc
index 59d1665..3a49ab6 100644
--- a/cc/debug/rasterize_and_record_benchmark.cc
+++ b/cc/debug/rasterize_and_record_benchmark.cc
@@ -125,7 +125,7 @@ void RasterizeAndRecordBenchmark::RunOnLayer(PictureLayer* layer) {
mode_index < DisplayListRecordingSource::RECORDING_MODE_COUNT;
mode_index++) {
ContentLayerClient::PaintingControlSetting painting_control =
- ContentLayerClient::PAINTING_BEHAVIOR_NORMAL;
+ ContentLayerClient::PAINTING_BEHAVIOR_NORMAL_FOR_TEST;
switch (
static_cast<DisplayListRecordingSource::RecordingMode>(mode_index)) {
case DisplayListRecordingSource::RECORD_NORMALLY:
diff --git a/cc/layers/content_layer_client.h b/cc/layers/content_layer_client.h
index db9274f..75329c7 100644
--- a/cc/layers/content_layer_client.h
+++ b/cc/layers/content_layer_client.h
@@ -20,6 +20,7 @@ class CC_EXPORT ContentLayerClient {
public:
enum PaintingControlSetting {
PAINTING_BEHAVIOR_NORMAL,
+ PAINTING_BEHAVIOR_NORMAL_FOR_TEST,
DISPLAY_LIST_CONSTRUCTION_DISABLED,
DISPLAY_LIST_CACHING_DISABLED,
DISPLAY_LIST_PAINTING_DISABLED,
diff --git a/third_party/WebKit/Source/platform/graphics/ContentLayerDelegate.cpp b/third_party/WebKit/Source/platform/graphics/ContentLayerDelegate.cpp
index 63b2c03..a12c63d 100644
--- a/third_party/WebKit/Source/platform/graphics/ContentLayerDelegate.cpp
+++ b/third_party/WebKit/Source/platform/graphics/ContentLayerDelegate.cpp
@@ -92,8 +92,10 @@ void ContentLayerDelegate::paintContents(
|| paintingControl == WebContentLayerClient::DisplayListConstructionDisabled)
disabledMode = GraphicsContext::FullyDisabled;
- m_graphicsLayer->paint(nullptr, disabledMode);
+ if (paintingControl != PaintDefaultBehavior)
+ m_graphicsLayer->paint(nullptr, disabledMode);
paintArtifactToWebDisplayItemList(webDisplayItemList, paintController.paintArtifact(), paintableRegion());
+
paintController.setDisplayItemConstructionIsDisabled(false);
paintController.setSubsequenceCachingIsDisabled(false);
}
diff --git a/third_party/WebKit/public/platform/WebContentLayerClient.h b/third_party/WebKit/public/platform/WebContentLayerClient.h
index ca0c520..d1071c2 100644
--- a/third_party/WebKit/public/platform/WebContentLayerClient.h
+++ b/third_party/WebKit/public/platform/WebContentLayerClient.h
@@ -40,7 +40,10 @@ class WebDisplayItemList;
class BLINK_PLATFORM_EXPORT WebContentLayerClient {
public:
enum PaintingControlSetting {
+ // Returns the last PaintArtifact produced.
PaintDefaultBehavior,
+ // Paints the content to simulate the behavior of FrameView::synchronizedPaint.
+ PaintDefaultBehaviorForTest,
DisplayListConstructionDisabled,
DisplayListCachingDisabled,
DisplayListPaintingDisabled,