diff options
author | schenney@chromium.org <schenney@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-05-02 21:03:03 +0000 |
---|---|---|
committer | schenney@chromium.org <schenney@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-05-02 21:03:03 +0000 |
commit | 276172b8f1e00033c253301fa2bdd76cfc980800 (patch) | |
tree | ee9a60e4fb1540e00150e247656a216fc0c28a38 /cc/resources | |
parent | ced067e6da6e3092a00546ed820d9657a1707d91 (diff) | |
download | chromium_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.cc | 38 | ||||
-rw-r--r-- | cc/resources/picture_unittest.cc | 8 |
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, |