Index: third_party/WebKit/Source/modules/canvas2d/CanvasRenderingContext2DTest.cpp |
diff --git a/third_party/WebKit/Source/modules/canvas2d/CanvasRenderingContext2DTest.cpp b/third_party/WebKit/Source/modules/canvas2d/CanvasRenderingContext2DTest.cpp |
index 46c5589c0a0f256470319735491dafe6d7f78414..e010aab026d49d65f65377c44e3572c72359cb39 100644 |
--- a/third_party/WebKit/Source/modules/canvas2d/CanvasRenderingContext2DTest.cpp |
+++ b/third_party/WebKit/Source/modules/canvas2d/CanvasRenderingContext2DTest.cpp |
@@ -997,6 +997,44 @@ TEST_F(CanvasRenderingContext2DTest, GetImageDataDisablesAcceleration) { |
savedFixedRenderingMode); |
} |
+TEST_F(CanvasRenderingContext2DTest, |
+ PreferNoAccelerationHintDisablesAcceleration) { |
+ bool savedFixedRenderingMode = |
+ RuntimeEnabledFeatures::canvas2dFixedRenderingModeEnabled(); |
+ RuntimeEnabledFeatures::setCanvas2dFixedRenderingModeEnabled(false); |
+ |
+ createContext(NonOpaque); |
+ FakeGLES2Interface gl; |
+ std::unique_ptr<FakeWebGraphicsContext3DProvider> contextProvider( |
+ new FakeWebGraphicsContext3DProvider(&gl)); |
+ IntSize size(300, 300); |
+ RefPtr<Canvas2DLayerBridge> bridge = |
+ makeBridge(std::move(contextProvider), size, |
+ Canvas2DLayerBridge::EnableAcceleration); |
+ std::unique_ptr<Canvas2DImageBufferSurface> surface( |
+ new Canvas2DImageBufferSurface(bridge, size)); |
+ canvasElement().createImageBufferUsingSurfaceForTesting(std::move(surface)); |
+ |
+ EXPECT_TRUE(canvasElement().buffer()->isAccelerated()); |
+ SourceImageStatus status = InvalidSourceImageStatus; |
+ canvasElement().getSourceImageForCanvas( |
+ &status, PreferNoAcceleration, SnapshotReasonUnitTests, FloatSize(size)); |
+ EXPECT_EQ(NormalSourceImageStatus, status); |
+ if (ExpensiveCanvasHeuristicParameters::DisableAccelerationToAvoidReadbacks) { |
+ EXPECT_FALSE(canvasElement().buffer()->isAccelerated()); |
+ EXPECT_EQ(0u, getGlobalAcceleratedImageBufferCount()); |
+ EXPECT_EQ(0, getGlobalGPUMemoryUsage()); |
+ } else { |
+ EXPECT_TRUE(canvasElement().buffer()->isAccelerated()); |
+ EXPECT_EQ(1u, getGlobalAcceleratedImageBufferCount()); |
+ EXPECT_EQ(720000, getGlobalGPUMemoryUsage()); |
+ } |
+ |
+ // Restore global state to prevent side-effects on other tests |
+ RuntimeEnabledFeatures::setCanvas2dFixedRenderingModeEnabled( |
+ savedFixedRenderingMode); |
+} |
+ |
TEST_F(CanvasRenderingContext2DTest, TextureUploadHeuristics) { |
bool savedFixedRenderingMode = |
RuntimeEnabledFeatures::canvas2dFixedRenderingModeEnabled(); |