| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "modules/canvas2d/CanvasRenderingContext2D.h" | 5 #include "modules/canvas2d/CanvasRenderingContext2D.h" |
| 6 | 6 |
| 7 #include "core/fetch/MemoryCache.h" | 7 #include "core/fetch/MemoryCache.h" |
| 8 #include "core/frame/FrameView.h" | 8 #include "core/frame/FrameView.h" |
| 9 #include "core/frame/Settings.h" | 9 #include "core/frame/Settings.h" |
| 10 #include "core/html/HTMLCanvasElement.h" | 10 #include "core/html/HTMLCanvasElement.h" |
| 11 #include "core/html/HTMLDocument.h" | 11 #include "core/html/HTMLDocument.h" |
| 12 #include "core/html/ImageData.h" | 12 #include "core/html/ImageData.h" |
| 13 #include "core/loader/EmptyClients.h" | 13 #include "core/loader/EmptyClients.h" |
| 14 #include "core/testing/DummyPageHolder.h" | 14 #include "core/testing/DummyPageHolder.h" |
| 15 #include "modules/accessibility/AXObject.h" | 15 #include "modules/accessibility/AXObject.h" |
| 16 #include "modules/accessibility/AXObjectCacheImpl.h" | 16 #include "modules/accessibility/AXObjectCacheImpl.h" |
| 17 #include "modules/canvas2d/CanvasGradient.h" | 17 #include "modules/canvas2d/CanvasGradient.h" |
| 18 #include "modules/canvas2d/CanvasPattern.h" | 18 #include "modules/canvas2d/CanvasPattern.h" |
| 19 #include "modules/canvas2d/HitRegionOptions.h" | 19 #include "modules/canvas2d/HitRegionOptions.h" |
| 20 #include "modules/webgl/WebGLRenderingContext.h" | 20 #include "modules/webgl/WebGLRenderingContext.h" |
| 21 #include "platform/RuntimeEnabledFeatures.h" |
| 21 #include "platform/graphics/StaticBitmapImage.h" | 22 #include "platform/graphics/StaticBitmapImage.h" |
| 22 #include "platform/graphics/UnacceleratedImageBufferSurface.h" | 23 #include "platform/graphics/UnacceleratedImageBufferSurface.h" |
| 23 #include "testing/gmock/include/gmock/gmock.h" | 24 #include "testing/gmock/include/gmock/gmock.h" |
| 24 #include "testing/gtest/include/gtest/gtest.h" | 25 #include "testing/gtest/include/gtest/gtest.h" |
| 25 | 26 |
| 26 using ::testing::Mock; | 27 using ::testing::Mock; |
| 27 | 28 |
| 28 namespace blink { | 29 namespace blink { |
| 29 namespace UsageTrackingTests { | 30 namespace UsageTrackingTests { |
| 30 | 31 |
| (...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 127 Page::PageClients pageClients; | 128 Page::PageClients pageClients; |
| 128 fillWithEmptyClients(pageClients); | 129 fillWithEmptyClients(pageClients); |
| 129 m_dummyPageHolder = DummyPageHolder::create(IntSize(800, 600), &pageClients)
; | 130 m_dummyPageHolder = DummyPageHolder::create(IntSize(800, 600), &pageClients)
; |
| 130 m_document = toHTMLDocument(&m_dummyPageHolder->document()); | 131 m_document = toHTMLDocument(&m_dummyPageHolder->document()); |
| 131 m_document->documentElement()->setInnerHTML("<body><canvas id='c'></canvas><
/body>", ASSERT_NO_EXCEPTION); | 132 m_document->documentElement()->setInnerHTML("<body><canvas id='c'></canvas><
/body>", ASSERT_NO_EXCEPTION); |
| 132 m_document->view()->updateAllLifecyclePhases(); | 133 m_document->view()->updateAllLifecyclePhases(); |
| 133 m_canvasElement = toHTMLCanvasElement(m_document->getElementById("c")); | 134 m_canvasElement = toHTMLCanvasElement(m_document->getElementById("c")); |
| 134 m_fullImageData = ImageData::create(IntSize(10, 10)); | 135 m_fullImageData = ImageData::create(IntSize(10, 10)); |
| 135 | 136 |
| 136 m_globalMemoryCache = replaceMemoryCacheForTesting(MemoryCache::create()); | 137 m_globalMemoryCache = replaceMemoryCacheForTesting(MemoryCache::create()); |
| 138 |
| 139 RuntimeEnabledFeatures::setEnableCanvas2dDynamicRenderingModeSwitchingEnable
d(true); |
| 137 } | 140 } |
| 138 | 141 |
| 139 TEST_F(CanvasRenderingContextUsageTrackingTest, FillTracking) | 142 TEST_F(CanvasRenderingContextUsageTrackingTest, FillTracking) |
| 140 { | 143 { |
| 141 createContext(NonOpaque); | 144 createContext(NonOpaque); |
| 142 | 145 |
| 143 int numReps = 100; | 146 int numReps = 100; |
| 144 for (int i = 0; i < numReps; i++) { | 147 for (int i = 0; i < numReps; i++) { |
| 145 context2d()->beginPath(); | 148 context2d()->beginPath(); |
| 146 context2d()->moveTo(1, 1); | 149 context2d()->moveTo(1, 1); |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 183 EXPECT_TRUE(context2d()->getUsage().boundingBoxPerimeterDrawCalls[BaseRender
ingContext2D::FillText] > 0.0); | 186 EXPECT_TRUE(context2d()->getUsage().boundingBoxPerimeterDrawCalls[BaseRender
ingContext2D::FillText] > 0.0); |
| 184 EXPECT_TRUE(context2d()->getUsage().boundingBoxPerimeterDrawCalls[BaseRender
ingContext2D::StrokeText] == 0.0); | 187 EXPECT_TRUE(context2d()->getUsage().boundingBoxPerimeterDrawCalls[BaseRender
ingContext2D::StrokeText] == 0.0); |
| 185 | 188 |
| 186 | 189 |
| 187 | 190 |
| 188 // create gradient | 191 // create gradient |
| 189 CanvasGradient* gradient; | 192 CanvasGradient* gradient; |
| 190 gradient = context2d()->createLinearGradient(0, 0, 100, 100); | 193 gradient = context2d()->createLinearGradient(0, 0, 100, 100); |
| 191 context2d()->setFillStyle(StringOrCanvasGradientOrCanvasPattern::fromCanvasG
radient(gradient)); | 194 context2d()->setFillStyle(StringOrCanvasGradientOrCanvasPattern::fromCanvasG
radient(gradient)); |
| 192 context2d()->fillRect(10, 10, 100, 20); | 195 context2d()->fillRect(10, 10, 100, 20); |
| 193 EXPECT_EQ(1, context2d()->getUsage().numGradients); | 196 EXPECT_EQ(1, context2d()->getUsage().numLinearGradients); |
| 194 EXPECT_NEAR(100 * 20, context2d()->getUsage().boundingBoxAreaFillType[BaseRe
nderingContext2D::LinearGradientFillType], 1.0); | 197 EXPECT_NEAR(100 * 20, context2d()->getUsage().boundingBoxAreaFillType[BaseRe
nderingContext2D::LinearGradientFillType], 1.0); |
| 195 | 198 |
| 196 NonThrowableExceptionState exceptionState; | 199 NonThrowableExceptionState exceptionState; |
| 197 gradient = context2d()->createRadialGradient(0, 0, 100, 100, 200, 200, excep
tionState); | 200 gradient = context2d()->createRadialGradient(0, 0, 100, 100, 200, 200, excep
tionState); |
| 198 context2d()->setFillStyle(StringOrCanvasGradientOrCanvasPattern::fromCanvasG
radient(gradient)); | 201 context2d()->setFillStyle(StringOrCanvasGradientOrCanvasPattern::fromCanvasG
radient(gradient)); |
| 199 context2d()->fillRect(10, 10, 100, 20); | 202 context2d()->fillRect(10, 10, 100, 20); |
| 200 EXPECT_EQ(2, context2d()->getUsage().numGradients); | 203 EXPECT_EQ(1, context2d()->getUsage().numLinearGradients); |
| 204 EXPECT_EQ(1, context2d()->getUsage().numRadialGradients); |
| 201 EXPECT_NEAR(100 * 20, context2d()->getUsage().boundingBoxAreaFillType[BaseRe
nderingContext2D::RadialGradientFillType], 1.0); | 205 EXPECT_NEAR(100 * 20, context2d()->getUsage().boundingBoxAreaFillType[BaseRe
nderingContext2D::RadialGradientFillType], 1.0); |
| 202 | 206 |
| 203 // create pattern | 207 // create pattern |
| 204 NonThrowableExceptionState exceptionState2; | 208 NonThrowableExceptionState exceptionState2; |
| 205 ExecutionContext* execCtx = canvasElement().getExecutionContext(); | 209 ExecutionContext* execCtx = canvasElement().getExecutionContext(); |
| 206 CanvasPattern* canvasPattern = context2d()->createPattern(execCtx, &m_opaque
Bitmap, "repeat-x", exceptionState2); | 210 CanvasPattern* canvasPattern = context2d()->createPattern(execCtx, &m_opaque
Bitmap, "repeat-x", exceptionState2); |
| 207 StringOrCanvasGradientOrCanvasPattern pattern = StringOrCanvasGradientOrCanv
asPattern::fromCanvasPattern(canvasPattern); | 211 StringOrCanvasGradientOrCanvasPattern pattern = StringOrCanvasGradientOrCanv
asPattern::fromCanvasPattern(canvasPattern); |
| 208 context2d()->setFillStyle(pattern); | 212 context2d()->setFillStyle(pattern); |
| 209 context2d()->fillRect(10, 10, 200, 100); | 213 context2d()->fillRect(10, 10, 200, 100); |
| 210 EXPECT_EQ(1, context2d()->getUsage().numPatterns); | 214 EXPECT_EQ(1, context2d()->getUsage().numPatterns); |
| 211 EXPECT_NEAR(200 * 100, context2d()->getUsage().boundingBoxAreaFillType[BaseR
enderingContext2D::PatternFillType], 1.0); | 215 EXPECT_NEAR(200 * 100, context2d()->getUsage().boundingBoxAreaFillType[BaseR
enderingContext2D::PatternFillType], 1.0); |
| 212 | 216 |
| 213 // Other fill method | 217 // Other fill method |
| 214 context2d()->fill(Path2D::create("Hello World!!!")); | 218 context2d()->fill(Path2D::create("Hello World!!!")); |
| 215 EXPECT_EQ(numReps * 2 + 1, context2d()->getUsage().numDrawCalls[BaseRenderin
gContext2D::FillPath]); | 219 EXPECT_EQ(numReps * 2 + 1, context2d()->getUsage().numDrawCalls[BaseRenderin
gContext2D::FillPath]); |
| 216 | 220 |
| 217 EXPECT_EQ(0, context2d()->getUsage().numDrawCalls[BaseRenderingContext2D::St
rokePath]); | 221 EXPECT_EQ(0, context2d()->getUsage().numDrawCalls[BaseRenderingContext2D::St
rokePath]); |
| 218 EXPECT_EQ(0, context2d()->getUsage().numDrawCalls[BaseRenderingContext2D::St
rokeText]); | 222 EXPECT_EQ(0, context2d()->getUsage().numDrawCalls[BaseRenderingContext2D::St
rokeText]); |
| 219 EXPECT_EQ(0, context2d()->getUsage().numPutImageDataCalls); | 223 EXPECT_EQ(0, context2d()->getUsage().numPutImageDataCalls); |
| 220 EXPECT_EQ(0, context2d()->getUsage().numDrawCalls[BaseRenderingContext2D::Dr
awImage]); | 224 EXPECT_EQ(0, context2d()->getUsage().numDrawCalls[BaseRenderingContext2D::Dr
awVectorImage]); |
| 225 EXPECT_EQ(0, context2d()->getUsage().numDrawCalls[BaseRenderingContext2D::Dr
awBitmapImage]); |
| 221 EXPECT_EQ(0, context2d()->getUsage().numGetImageDataCalls); | 226 EXPECT_EQ(0, context2d()->getUsage().numGetImageDataCalls); |
| 222 } | 227 } |
| 223 | 228 |
| 224 TEST_F(CanvasRenderingContextUsageTrackingTest, StrokeTracking) | 229 TEST_F(CanvasRenderingContextUsageTrackingTest, StrokeTracking) |
| 225 { | 230 { |
| 226 createContext(NonOpaque); | 231 createContext(NonOpaque); |
| 227 | 232 |
| 228 int numReps = 100; | 233 int numReps = 100; |
| 229 for (int i = 0; i < numReps; i++) { | 234 for (int i = 0; i < numReps; i++) { |
| 230 context2d()->strokeRect(10, 10, 100, 100); | 235 context2d()->strokeRect(10, 10, 100, 100); |
| (...skipping 19 matching lines...) Expand all Loading... |
| 250 EXPECT_NEAR(static_cast<double>(numReps * (100 * 100) * 2), context2d()-
>getUsage().boundingBoxAreaDrawCalls[BaseRenderingContext2D::StrokeRect], 1.0); | 255 EXPECT_NEAR(static_cast<double>(numReps * (100 * 100) * 2), context2d()-
>getUsage().boundingBoxAreaDrawCalls[BaseRenderingContext2D::StrokeRect], 1.0); |
| 251 EXPECT_NEAR(static_cast<double>(numReps * (2*100 + 2*100) * 2), context2d()-
>getUsage().boundingBoxPerimeterDrawCalls[BaseRenderingContext2D::StrokeRect], 1
.0); | 256 EXPECT_NEAR(static_cast<double>(numReps * (2*100 + 2*100) * 2), context2d()-
>getUsage().boundingBoxPerimeterDrawCalls[BaseRenderingContext2D::StrokeRect], 1
.0); |
| 252 EXPECT_NEAR(static_cast<double>(numReps * (3 * 3)), context2d()->getUsage().
boundingBoxAreaDrawCalls[BaseRenderingContext2D::StrokePath], 1.0); | 257 EXPECT_NEAR(static_cast<double>(numReps * (3 * 3)), context2d()->getUsage().
boundingBoxAreaDrawCalls[BaseRenderingContext2D::StrokePath], 1.0); |
| 253 EXPECT_NEAR(static_cast<double>(numReps * (2*3 + 2*3)), context2d()->getUsag
e().boundingBoxPerimeterDrawCalls[BaseRenderingContext2D::StrokePath], 1.0); | 258 EXPECT_NEAR(static_cast<double>(numReps * (2*3 + 2*3)), context2d()->getUsag
e().boundingBoxPerimeterDrawCalls[BaseRenderingContext2D::StrokePath], 1.0); |
| 254 | 259 |
| 255 // create gradient | 260 // create gradient |
| 256 CanvasGradient* gradient; | 261 CanvasGradient* gradient; |
| 257 gradient = context2d()->createLinearGradient(0, 0, 100, 100); | 262 gradient = context2d()->createLinearGradient(0, 0, 100, 100); |
| 258 context2d()->setStrokeStyle(StringOrCanvasGradientOrCanvasPattern::fromCanva
sGradient(gradient)); | 263 context2d()->setStrokeStyle(StringOrCanvasGradientOrCanvasPattern::fromCanva
sGradient(gradient)); |
| 259 context2d()->strokeRect(10, 10, 100, 100); | 264 context2d()->strokeRect(10, 10, 100, 100); |
| 260 EXPECT_EQ(1, context2d()->getUsage().numGradients); | 265 EXPECT_EQ(1, context2d()->getUsage().numLinearGradients); |
| 261 EXPECT_NEAR(100 * 100, context2d()->getUsage().boundingBoxAreaFillType[BaseR
enderingContext2D::LinearGradientFillType], 1.0); | 266 EXPECT_NEAR(100 * 100, context2d()->getUsage().boundingBoxAreaFillType[BaseR
enderingContext2D::LinearGradientFillType], 1.0); |
| 262 | 267 |
| 263 // create pattern | 268 // create pattern |
| 264 NonThrowableExceptionState exceptionState; | 269 NonThrowableExceptionState exceptionState; |
| 265 ExecutionContext* execCtx = canvasElement().getExecutionContext(); | 270 ExecutionContext* execCtx = canvasElement().getExecutionContext(); |
| 266 CanvasPattern* canvasPattern = context2d()->createPattern(execCtx, &m_opaque
Bitmap, "repeat-x", exceptionState); | 271 CanvasPattern* canvasPattern = context2d()->createPattern(execCtx, &m_opaque
Bitmap, "repeat-x", exceptionState); |
| 267 StringOrCanvasGradientOrCanvasPattern pattern = StringOrCanvasGradientOrCanv
asPattern::fromCanvasPattern(canvasPattern); | 272 StringOrCanvasGradientOrCanvasPattern pattern = StringOrCanvasGradientOrCanv
asPattern::fromCanvasPattern(canvasPattern); |
| 268 context2d()->setStrokeStyle(pattern); | 273 context2d()->setStrokeStyle(pattern); |
| 269 context2d()->strokeRect(10, 10, 100, 100); | 274 context2d()->strokeRect(10, 10, 100, 100); |
| 270 EXPECT_EQ(1, context2d()->getUsage().numPatterns); | 275 EXPECT_EQ(1, context2d()->getUsage().numPatterns); |
| 271 EXPECT_NEAR(100 * 100, context2d()->getUsage().boundingBoxAreaFillType[BaseR
enderingContext2D::PatternFillType], 1.0); | 276 EXPECT_NEAR(100 * 100, context2d()->getUsage().boundingBoxAreaFillType[BaseR
enderingContext2D::PatternFillType], 1.0); |
| 272 | 277 |
| 273 // Other stroke method | 278 // Other stroke method |
| 274 context2d()->stroke(Path2D::create("Hello World!!!")); | 279 context2d()->stroke(Path2D::create("Hello World!!!")); |
| 275 EXPECT_EQ(numReps + 1, context2d()->getUsage().numDrawCalls[BaseRenderingCon
text2D::StrokePath]); | 280 EXPECT_EQ(numReps + 1, context2d()->getUsage().numDrawCalls[BaseRenderingCon
text2D::StrokePath]); |
| 276 EXPECT_EQ(0, context2d()->getUsage().numDrawCalls[BaseRenderingContext2D::Fi
llPath]); | 281 EXPECT_EQ(0, context2d()->getUsage().numDrawCalls[BaseRenderingContext2D::Fi
llPath]); |
| 277 EXPECT_EQ(0, context2d()->getUsage().numNonConvexFillPathCalls); | 282 EXPECT_EQ(0, context2d()->getUsage().numNonConvexFillPathCalls); |
| 278 EXPECT_EQ(0, context2d()->getUsage().numDrawCalls[BaseRenderingContext2D::Fi
llText]); | 283 EXPECT_EQ(0, context2d()->getUsage().numDrawCalls[BaseRenderingContext2D::Fi
llText]); |
| 279 EXPECT_EQ(0, context2d()->getUsage().numPutImageDataCalls); | 284 EXPECT_EQ(0, context2d()->getUsage().numPutImageDataCalls); |
| 280 EXPECT_EQ(0, context2d()->getUsage().numDrawCalls[BaseRenderingContext2D::Dr
awImage]); | 285 EXPECT_EQ(0, context2d()->getUsage().numDrawCalls[BaseRenderingContext2D::Dr
awVectorImage]); |
| 286 EXPECT_EQ(0, context2d()->getUsage().numDrawCalls[BaseRenderingContext2D::Dr
awBitmapImage]); |
| 281 EXPECT_EQ(0, context2d()->getUsage().numGetImageDataCalls); | 287 EXPECT_EQ(0, context2d()->getUsage().numGetImageDataCalls); |
| 282 } | 288 } |
| 283 | 289 |
| 284 TEST_F(CanvasRenderingContextUsageTrackingTest, ImageTracking) | 290 TEST_F(CanvasRenderingContextUsageTrackingTest, ImageTracking) |
| 285 { | 291 { |
| 286 // Testing draw, put, get and filters | 292 // Testing draw, put, get and filters |
| 287 createContext(NonOpaque); | 293 createContext(NonOpaque); |
| 288 NonThrowableExceptionState exceptionState; | 294 NonThrowableExceptionState exceptionState; |
| 289 | 295 |
| 290 int numReps = 5; | 296 int numReps = 5; |
| 291 int imgWidth = 100; | 297 int imgWidth = 100; |
| 292 int imgHeight = 200; | 298 int imgHeight = 200; |
| 293 for (int i = 0; i < numReps; i++) { | 299 for (int i = 0; i < numReps; i++) { |
| 294 context2d()->putImageData(m_fullImageData.get(), 0, 0, exceptionState); | 300 context2d()->putImageData(m_fullImageData.get(), 0, 0, exceptionState); |
| 295 context2d()->drawImage(canvasElement().getExecutionContext(), &m_opaqueB
itmap, 0, 0, 1, 1, 0, 0, imgWidth, imgHeight, exceptionState); | 301 context2d()->drawImage(canvasElement().getExecutionContext(), &m_opaqueB
itmap, 0, 0, 1, 1, 0, 0, imgWidth, imgHeight, exceptionState); |
| 296 context2d()->getImageData(0, 0, 10, 100, exceptionState); | 302 context2d()->getImageData(0, 0, 10, 100, exceptionState); |
| 297 } | 303 } |
| 298 | 304 |
| 299 EXPECT_NEAR(numReps * imgWidth * imgHeight, context2d()->getUsage().bounding
BoxAreaDrawCalls[BaseRenderingContext2D::DrawImage], 0.1); | 305 EXPECT_NEAR(numReps * imgWidth * imgHeight, context2d()->getUsage().bounding
BoxAreaDrawCalls[BaseRenderingContext2D::DrawBitmapImage], 0.1); |
| 300 EXPECT_NEAR(numReps * (2*imgWidth + 2*imgHeight), context2d()->getUsage().bo
undingBoxPerimeterDrawCalls[BaseRenderingContext2D::DrawImage], 0.1); | 306 EXPECT_NEAR(numReps * (2*imgWidth + 2*imgHeight), context2d()->getUsage().bo
undingBoxPerimeterDrawCalls[BaseRenderingContext2D::DrawBitmapImage], 0.1); |
| 307 |
| 308 EXPECT_NEAR(0.0, context2d()->getUsage().boundingBoxAreaDrawCalls[BaseRender
ingContext2D::DrawVectorImage], 0.1); |
| 309 EXPECT_NEAR(0.0, context2d()->getUsage().boundingBoxPerimeterDrawCalls[BaseR
enderingContext2D::DrawVectorImage], 0.1); |
| 301 | 310 |
| 302 context2d()->setFilter("blur(5px)"); | 311 context2d()->setFilter("blur(5px)"); |
| 303 context2d()->drawImage(canvasElement().getExecutionContext(), &m_opaqueBitma
p, 0, 0, 1, 1, 0, 0, 10, 10, exceptionState); | 312 context2d()->drawImage(canvasElement().getExecutionContext(), &m_opaqueBitma
p, 0, 0, 1, 1, 0, 0, 10, 10, exceptionState); |
| 304 | 313 |
| 305 EXPECT_EQ(numReps, context2d()->getUsage().numPutImageDataCalls); | 314 EXPECT_EQ(numReps, context2d()->getUsage().numPutImageDataCalls); |
| 306 EXPECT_NE(0, context2d()->getUsage().areaPutImageDataCalls); | 315 EXPECT_NE(0, context2d()->getUsage().areaPutImageDataCalls); |
| 307 EXPECT_NEAR(numReps * m_fullImageData.get()->width() * m_fullImageData.get()
->height(), context2d()->getUsage().areaPutImageDataCalls, 0.1); | 316 EXPECT_NEAR(numReps * m_fullImageData.get()->width() * m_fullImageData.get()
->height(), context2d()->getUsage().areaPutImageDataCalls, 0.1); |
| 308 | 317 |
| 309 EXPECT_EQ(numReps + 1, context2d()->getUsage().numDrawCalls[BaseRenderingCon
text2D::DrawImage]); | 318 EXPECT_EQ(numReps + 1, context2d()->getUsage().numDrawCalls[BaseRenderingCon
text2D::DrawBitmapImage]); |
| 310 EXPECT_EQ(numReps, context2d()->getUsage().numGetImageDataCalls); | 319 EXPECT_EQ(numReps, context2d()->getUsage().numGetImageDataCalls); |
| 311 | 320 |
| 312 EXPECT_EQ(1, context2d()->getUsage().numFilters); | 321 EXPECT_EQ(1, context2d()->getUsage().numFilters); |
| 313 EXPECT_NEAR(numReps * 10 * 100, context2d()->getUsage().areaGetImageDataCall
s, 0.1); | 322 EXPECT_NEAR(numReps * 10 * 100, context2d()->getUsage().areaGetImageDataCall
s, 0.1); |
| 314 | 323 |
| 315 EXPECT_EQ(0, context2d()->getUsage().numDrawCalls[BaseRenderingContext2D::Fi
llPath]); | 324 EXPECT_EQ(0, context2d()->getUsage().numDrawCalls[BaseRenderingContext2D::Fi
llPath]); |
| 316 EXPECT_EQ(0, context2d()->getUsage().numNonConvexFillPathCalls); | 325 EXPECT_EQ(0, context2d()->getUsage().numNonConvexFillPathCalls); |
| 317 EXPECT_EQ(0, context2d()->getUsage().numDrawCalls[BaseRenderingContext2D::Fi
llText]); | 326 EXPECT_EQ(0, context2d()->getUsage().numDrawCalls[BaseRenderingContext2D::Fi
llText]); |
| 318 EXPECT_EQ(0, context2d()->getUsage().numDrawCalls[BaseRenderingContext2D::St
rokePath]); | 327 EXPECT_EQ(0, context2d()->getUsage().numDrawCalls[BaseRenderingContext2D::St
rokePath]); |
| 319 EXPECT_EQ(0, context2d()->getUsage().numDrawCalls[BaseRenderingContext2D::St
rokeText]); | 328 EXPECT_EQ(0, context2d()->getUsage().numDrawCalls[BaseRenderingContext2D::St
rokeText]); |
| (...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 485 EXPECT_EQ(0, context2d()->getUsage().numDrawCalls[BaseRenderingContext2D::Fi
llRect]); | 494 EXPECT_EQ(0, context2d()->getUsage().numDrawCalls[BaseRenderingContext2D::Fi
llRect]); |
| 486 | 495 |
| 487 for (int i = 0; i < numReps; i++) { | 496 for (int i = 0; i < numReps; i++) { |
| 488 context2d()->fillRect(10, 10, 100, 100); | 497 context2d()->fillRect(10, 10, 100, 100); |
| 489 } | 498 } |
| 490 EXPECT_EQ(numReps, context2d()->getUsage().numDrawCalls[BaseRenderingContext
2D::FillRect]); | 499 EXPECT_EQ(numReps, context2d()->getUsage().numDrawCalls[BaseRenderingContext
2D::FillRect]); |
| 491 } | 500 } |
| 492 | 501 |
| 493 } // namespace UsageTrackingTests | 502 } // namespace UsageTrackingTests |
| 494 } // namespace blink | 503 } // namespace blink |
| OLD | NEW |