OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/frame/FrameView.h" | 7 #include "core/frame/FrameView.h" |
8 #include "core/frame/Settings.h" | 8 #include "core/frame/Settings.h" |
9 #include "core/html/HTMLCanvasElement.h" | 9 #include "core/html/HTMLCanvasElement.h" |
10 #include "core/html/HTMLDocument.h" | 10 #include "core/html/HTMLDocument.h" |
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
209 EXPECT_EQ(50, imageData->height()); | 209 EXPECT_EQ(50, imageData->height()); |
210 | 210 |
211 for (unsigned i = 0; i < imageData->data()->length(); ++i) | 211 for (unsigned i = 0; i < imageData->data()->length(); ++i) |
212 imageData->data()->data()[i] = 255; | 212 imageData->data()->data()[i] = 255; |
213 | 213 |
214 EXPECT_EQ(255, imageData->data()->data()[32]); | 214 EXPECT_EQ(255, imageData->data()->data()[32]); |
215 | 215 |
216 // createImageData(imageData) should create a new ImageData of the same size
as 'imageData' | 216 // createImageData(imageData) should create a new ImageData of the same size
as 'imageData' |
217 // but filled with transparent black | 217 // but filled with transparent black |
218 | 218 |
219 ImageData* sameSizeImageData = context2d()->createImageData(imageData); | 219 ImageData* sameSizeImageData = context2d()->createImageData(imageData, excep
tionState); |
| 220 EXPECT_FALSE(exceptionState.hadException()); |
220 EXPECT_EQ(100, sameSizeImageData->width()); | 221 EXPECT_EQ(100, sameSizeImageData->width()); |
221 EXPECT_EQ(50, sameSizeImageData->height()); | 222 EXPECT_EQ(50, sameSizeImageData->height()); |
222 EXPECT_EQ(0, sameSizeImageData->data()->data()[32]); | 223 EXPECT_EQ(0, sameSizeImageData->data()->data()[32]); |
223 | 224 |
224 // createImageData(width, height) takes the absolute magnitude of the size a
rguments | 225 // createImageData(width, height) takes the absolute magnitude of the size a
rguments |
225 | 226 |
226 ImageData* imgdata1 = context2d()->createImageData(10, 20, exceptionState); | 227 ImageData* imgdata1 = context2d()->createImageData(10, 20, exceptionState); |
227 EXPECT_FALSE(exceptionState.hadException()); | 228 EXPECT_FALSE(exceptionState.hadException()); |
228 ImageData* imgdata2 = context2d()->createImageData(-10, 20, exceptionState); | 229 ImageData* imgdata2 = context2d()->createImageData(-10, 20, exceptionState); |
229 EXPECT_FALSE(exceptionState.hadException()); | 230 EXPECT_FALSE(exceptionState.hadException()); |
230 ImageData* imgdata3 = context2d()->createImageData(10, -20, exceptionState); | 231 ImageData* imgdata3 = context2d()->createImageData(10, -20, exceptionState); |
231 EXPECT_FALSE(exceptionState.hadException()); | 232 EXPECT_FALSE(exceptionState.hadException()); |
232 ImageData* imgdata4 = context2d()->createImageData(-10, -20, exceptionState)
; | 233 ImageData* imgdata4 = context2d()->createImageData(-10, -20, exceptionState)
; |
233 EXPECT_FALSE(exceptionState.hadException()); | 234 EXPECT_FALSE(exceptionState.hadException()); |
234 | 235 |
235 EXPECT_EQ((unsigned)800, imgdata1->data()->length()); | 236 EXPECT_EQ((unsigned)800, imgdata1->data()->length()); |
236 EXPECT_EQ((unsigned)800, imgdata2->data()->length()); | 237 EXPECT_EQ((unsigned)800, imgdata2->data()->length()); |
237 EXPECT_EQ((unsigned)800, imgdata3->data()->length()); | 238 EXPECT_EQ((unsigned)800, imgdata3->data()->length()); |
238 EXPECT_EQ((unsigned)800, imgdata4->data()->length()); | 239 EXPECT_EQ((unsigned)800, imgdata4->data()->length()); |
239 } | 240 } |
240 | 241 |
| 242 TEST_F(CanvasRenderingContext2DAPITest, CreateImageDataTooBig) |
| 243 { |
| 244 createContext(NonOpaque); |
| 245 NonThrowableExceptionState exceptionState; |
| 246 ImageData* tooBigImageData = context2d()->createImageData(1000000, 1000000,
exceptionState); |
| 247 EXPECT_EQ(nullptr, tooBigImageData); |
| 248 EXPECT_TRUE(exceptionState.hadException()); |
| 249 EXPECT_EQ(V8RangeError, exceptionState.code()); |
| 250 } |
| 251 |
| 252 TEST_F(CanvasRenderingContext2DAPITest, GetImageDataTooBig) |
| 253 { |
| 254 createContext(NonOpaque); |
| 255 NonThrowableExceptionState exceptionState; |
| 256 ImageData* imageData = context2d()->getImageData(0, 0, 1000000, 1000000, exc
eptionState); |
| 257 EXPECT_EQ(nullptr, imageData); |
| 258 EXPECT_TRUE(exceptionState.hadException()); |
| 259 EXPECT_EQ(V8RangeError, exceptionState.code()); |
| 260 } |
| 261 |
241 void resetCanvasForAccessibilityRectTest(HTMLDocument& document) | 262 void resetCanvasForAccessibilityRectTest(HTMLDocument& document) |
242 { | 263 { |
243 document.documentElement()->setInnerHTML( | 264 document.documentElement()->setInnerHTML( |
244 "<canvas id='canvas' style='position:absolute; top:0px; left:0px; paddin
g:10px; margin:5px;'>" | 265 "<canvas id='canvas' style='position:absolute; top:0px; left:0px; paddin
g:10px; margin:5px;'>" |
245 "<button id='button'></button></canvas>", ASSERT_NO_EXCEPTION); | 266 "<button id='button'></button></canvas>", ASSERT_NO_EXCEPTION); |
246 document.settings()->setAccessibilityEnabled(true); | 267 document.settings()->setAccessibilityEnabled(true); |
247 HTMLCanvasElement* canvas = toHTMLCanvasElement(document.getElementById("can
vas")); | 268 HTMLCanvasElement* canvas = toHTMLCanvasElement(document.getElementById("can
vas")); |
248 | 269 |
249 String canvasType("2d"); | 270 String canvasType("2d"); |
250 CanvasContextCreationAttributes attributes; | 271 CanvasContextCreationAttributes attributes; |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
297 AXObjectCacheImpl* axObjectCache = toAXObjectCacheImpl(document().existingAX
ObjectCache()); | 318 AXObjectCacheImpl* axObjectCache = toAXObjectCacheImpl(document().existingAX
ObjectCache()); |
298 AXObject* axObject = axObjectCache->getOrCreate(buttonElement); | 319 AXObject* axObject = axObjectCache->getOrCreate(buttonElement); |
299 | 320 |
300 EXPECT_EQ(25, axObject->elementRect().x().toInt()); | 321 EXPECT_EQ(25, axObject->elementRect().x().toInt()); |
301 EXPECT_EQ(25, axObject->elementRect().y().toInt()); | 322 EXPECT_EQ(25, axObject->elementRect().y().toInt()); |
302 EXPECT_EQ(40, axObject->elementRect().width().toInt()); | 323 EXPECT_EQ(40, axObject->elementRect().width().toInt()); |
303 EXPECT_EQ(40, axObject->elementRect().height().toInt()); | 324 EXPECT_EQ(40, axObject->elementRect().height().toInt()); |
304 } | 325 } |
305 | 326 |
306 } // namespace blink | 327 } // namespace blink |
OLD | NEW |