summaryrefslogtreecommitdiffstats
path: root/cc/resources
diff options
context:
space:
mode:
authorschenney@chromium.org <schenney@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-05-02 21:03:03 +0000
committerschenney@chromium.org <schenney@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-05-02 21:03:03 +0000
commit276172b8f1e00033c253301fa2bdd76cfc980800 (patch)
treeee9a60e4fb1540e00150e247656a216fc0c28a38 /cc/resources
parentced067e6da6e3092a00546ed820d9657a1707d91 (diff)
downloadchromium_src-276172b8f1e00033c253301fa2bdd76cfc980800.zip
chromium_src-276172b8f1e00033c253301fa2bdd76cfc980800.tar.gz
chromium_src-276172b8f1e00033c253301fa2bdd76cfc980800.tar.bz2
Enable disabling WebCore::GraphicsContext in telemetry.
Plumb a flag through from telemetry tests to the layer painting code that disables the WebCore::GraphicsContext. This allows us to isolate the various systems that paint web content in Chromium. R=nduca@chromium.org,skyostil@chromium.org BUG=350684 Review URL: https://codereview.chromium.org/253013003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@267913 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'cc/resources')
-rw-r--r--cc/resources/picture.cc38
-rw-r--r--cc/resources/picture_unittest.cc8
2 files changed, 28 insertions, 18 deletions
diff --git a/cc/resources/picture.cc b/cc/resources/picture.cc
index de6ff93..d9b45df 100644
--- a/cc/resources/picture.cc
+++ b/cc/resources/picture.cc
@@ -273,17 +273,23 @@ void Picture::Record(ContentLayerClient* painter,
&factory,
SkPicture::kUsePathBoundsForClip_RecordingFlag));
+ ContentLayerClient::GraphicsContextStatus graphics_context_status =
+ ContentLayerClient::GRAPHICS_CONTEXT_ENABLED;
+
switch (recording_mode) {
case RECORD_NORMALLY:
- // Already setup for normal recording
+ // Already setup for normal recording.
break;
case RECORD_WITH_SK_NULL_CANVAS:
canvas = skia::AdoptRef(SkCreateNullCanvas());
break;
case RECORD_WITH_PAINTING_DISABLED:
- // Blink's GraphicsContext will disable painting when given a NULL
- // canvas.
- canvas.clear();
+ // We pass a disable flag through the paint calls when perfromance
+ // testing (the only time this case should ever arise) when we want to
+ // prevent the Blink GraphicsContext object from consuming any compute
+ // time.
+ canvas = skia::AdoptRef(SkCreateNullCanvas());
+ graphics_context_status = ContentLayerClient::GRAPHICS_CONTEXT_DISABLED;
break;
case RECORD_WITH_SKRECORD:
recording.reset(new EXPERIMENTAL::SkRecording(layer_rect_.width(),
@@ -294,23 +300,21 @@ void Picture::Record(ContentLayerClient* painter,
NOTREACHED();
}
- if (canvas) {
- canvas->save();
- canvas->translate(SkFloatToScalar(-layer_rect_.x()),
- SkFloatToScalar(-layer_rect_.y()));
+ canvas->save();
+ canvas->translate(SkFloatToScalar(-layer_rect_.x()),
+ SkFloatToScalar(-layer_rect_.y()));
- SkRect layer_skrect = SkRect::MakeXYWH(layer_rect_.x(),
- layer_rect_.y(),
- layer_rect_.width(),
- layer_rect_.height());
- canvas->clipRect(layer_skrect);
- }
+ SkRect layer_skrect = SkRect::MakeXYWH(layer_rect_.x(),
+ layer_rect_.y(),
+ layer_rect_.width(),
+ layer_rect_.height());
+ canvas->clipRect(layer_skrect);
gfx::RectF opaque_layer_rect;
- painter->PaintContents(canvas.get(), layer_rect_, &opaque_layer_rect);
+ painter->PaintContents(
+ canvas.get(), layer_rect_, &opaque_layer_rect, graphics_context_status);
- if (canvas)
- canvas->restore();
+ canvas->restore();
picture_ = skia::AdoptRef(recorder.endRecording());
DCHECK(picture_);
diff --git a/cc/resources/picture_unittest.cc b/cc/resources/picture_unittest.cc
index a3910c6..61b048a 100644
--- a/cc/resources/picture_unittest.cc
+++ b/cc/resources/picture_unittest.cc
@@ -463,6 +463,8 @@ TEST(PictureTest, RecordingModes) {
0,
Picture::RECORD_NORMALLY);
EXPECT_TRUE(content_layer_client.last_canvas() != NULL);
+ EXPECT_EQ(ContentLayerClient::GRAPHICS_CONTEXT_ENABLED,
+ content_layer_client.last_context_status());
EXPECT_TRUE(picture);
picture = Picture::Create(layer_rect,
@@ -472,6 +474,8 @@ TEST(PictureTest, RecordingModes) {
0,
Picture::RECORD_WITH_SK_NULL_CANVAS);
EXPECT_TRUE(content_layer_client.last_canvas() != NULL);
+ EXPECT_EQ(ContentLayerClient::GRAPHICS_CONTEXT_ENABLED,
+ content_layer_client.last_context_status());
EXPECT_TRUE(picture);
picture = Picture::Create(layer_rect,
@@ -480,7 +484,9 @@ TEST(PictureTest, RecordingModes) {
false,
0,
Picture::RECORD_WITH_PAINTING_DISABLED);
- EXPECT_EQ(NULL, content_layer_client.last_canvas());
+ EXPECT_TRUE(content_layer_client.last_canvas() != NULL);
+ EXPECT_EQ(ContentLayerClient::GRAPHICS_CONTEXT_DISABLED,
+ content_layer_client.last_context_status());
EXPECT_TRUE(picture);
picture = Picture::Create(layer_rect,