| Index: Source/modules/canvas2d/CanvasRenderingContext2DAPITest.cpp
|
| diff --git a/Source/modules/canvas2d/CanvasRenderingContext2DAPITest.cpp b/Source/modules/canvas2d/CanvasRenderingContext2DAPITest.cpp
|
| index d50a8c17eb3721a44acc28192f11f37f9daf72cc..48eeb0c2ff23f861597c0939dc803a738f35cb9c 100644
|
| --- a/Source/modules/canvas2d/CanvasRenderingContext2DAPITest.cpp
|
| +++ b/Source/modules/canvas2d/CanvasRenderingContext2DAPITest.cpp
|
| @@ -6,13 +6,17 @@
|
| #include "modules/canvas2d/CanvasRenderingContext2D.h"
|
|
|
| #include "core/frame/FrameView.h"
|
| +#include "core/frame/Settings.h"
|
| #include "core/html/HTMLCanvasElement.h"
|
| #include "core/html/HTMLDocument.h"
|
| #include "core/html/ImageData.h"
|
| #include "core/loader/EmptyClients.h"
|
| #include "core/testing/DummyPageHolder.h"
|
| +#include "modules/accessibility/AXObject.h"
|
| +#include "modules/accessibility/AXObjectCacheImpl.h"
|
| #include "modules/canvas2d/CanvasGradient.h"
|
| #include "modules/canvas2d/CanvasPattern.h"
|
| +#include "modules/canvas2d/HitRegionOptions.h"
|
| #include "modules/webgl/WebGLRenderingContext.h"
|
| #include "platform/graphics/UnacceleratedImageBufferSurface.h"
|
| #include <gmock/gmock.h>
|
| @@ -235,4 +239,69 @@ TEST_F(CanvasRenderingContext2DAPITest, CreateImageData)
|
| EXPECT_EQ((unsigned)800, imgdata4->data()->length());
|
| }
|
|
|
| +void resetCanvasForAccessibilityRectTest(HTMLDocument& document)
|
| +{
|
| + document.documentElement()->setInnerHTML(
|
| + "<canvas id='canvas' style='position:absolute; top:0px; left:0px; padding:10px; margin:5px;'>"
|
| + "<button id='button'></button></canvas>", ASSERT_NO_EXCEPTION);
|
| + document.settings()->setAccessibilityEnabled(true);
|
| + HTMLCanvasElement* canvas = toHTMLCanvasElement(document.getElementById("canvas"));
|
| +
|
| + String canvasType("2d");
|
| + CanvasContextCreationAttributes attributes;
|
| + attributes.setAlpha(true);
|
| + canvas->getCanvasRenderingContext(canvasType, attributes);
|
| +
|
| + EXPECT_NE(nullptr, canvas->renderingContext());
|
| + EXPECT_TRUE(canvas->renderingContext()->is2d());
|
| +}
|
| +
|
| +TEST_F(CanvasRenderingContext2DAPITest, AccessibilityRectTestForAddHitRegion)
|
| +{
|
| + resetCanvasForAccessibilityRectTest(document());
|
| +
|
| + Element* buttonElement = document().getElementById("button");
|
| + HTMLCanvasElement* canvas = toHTMLCanvasElement(document().getElementById("canvas"));
|
| + CanvasRenderingContext2D* context = static_cast<CanvasRenderingContext2D*>(canvas->renderingContext());
|
| +
|
| + NonThrowableExceptionState exceptionState;
|
| + HitRegionOptions options;
|
| + options.setControl(buttonElement);
|
| +
|
| + context->beginPath();
|
| + context->rect(10, 10, 40, 40);
|
| + context->addHitRegion(options, exceptionState);
|
| +
|
| + AXObjectCacheImpl* axObjectCache = toAXObjectCacheImpl(document().existingAXObjectCache());
|
| + AXObject* axObject = axObjectCache->getOrCreate(buttonElement);
|
| +
|
| + EXPECT_EQ(25, axObject->elementRect().x().toInt());
|
| + EXPECT_EQ(25, axObject->elementRect().y().toInt());
|
| + EXPECT_EQ(40, axObject->elementRect().width().toInt());
|
| + EXPECT_EQ(40, axObject->elementRect().height().toInt());
|
| +}
|
| +
|
| +TEST_F(CanvasRenderingContext2DAPITest, AccessibilityRectTestForDrawFocusIfNeeded)
|
| +{
|
| + resetCanvasForAccessibilityRectTest(document());
|
| +
|
| + Element* buttonElement = document().getElementById("button");
|
| + HTMLCanvasElement* canvas = toHTMLCanvasElement(document().getElementById("canvas"));
|
| + CanvasRenderingContext2D* context = static_cast<CanvasRenderingContext2D*>(canvas->renderingContext());
|
| +
|
| + document().updateLayoutTreeForNodeIfNeeded(canvas);
|
| +
|
| + context->beginPath();
|
| + context->rect(10, 10, 40, 40);
|
| + context->drawFocusIfNeeded(buttonElement);
|
| +
|
| + AXObjectCacheImpl* axObjectCache = toAXObjectCacheImpl(document().existingAXObjectCache());
|
| + AXObject* axObject = axObjectCache->getOrCreate(buttonElement);
|
| +
|
| + EXPECT_EQ(25, axObject->elementRect().x().toInt());
|
| + EXPECT_EQ(25, axObject->elementRect().y().toInt());
|
| + EXPECT_EQ(40, axObject->elementRect().width().toInt());
|
| + EXPECT_EQ(40, axObject->elementRect().height().toInt());
|
| +}
|
| +
|
| } // namespace blink
|
|
|