Commit 405209d1 authored by Nektarios Paisios's avatar Nektarios Paisios Committed by Commit Bot

Adds a method in AccessibilityBrowserTest that loads an HTML page and waits until ready

Instead of having to create an AccessibilityNotificationWaiter at the start of every test and wait on it,
this method makes loading an HTML document easier and removes repeated code from tests.

This patch also switches to using the modern C++ raw string litterals
which have the advantage that quotes and line breaks don't need to be escaped,
and the HTML could be formatted the same way as in an HTML file.

R=aboxhall@chromium.org

Change-Id: Iaf8e59be8eb7b9bf2b0ca90caaa7cb6c3380622a
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1696423
Auto-Submit: Nektarios Paisios <nektar@chromium.org>
Commit-Queue: Alice Boxhall <aboxhall@chromium.org>
Reviewed-by: default avatarAlice Boxhall <aboxhall@chromium.org>
Cr-Commit-Position: refs/heads/master@{#676295}
parent 1a41c38d
...@@ -56,6 +56,15 @@ class AccessibilityActionBrowserTest : public ContentBrowserTest { ...@@ -56,6 +56,15 @@ class AccessibilityActionBrowserTest : public ContentBrowserTest {
png_data.size(), bitmap)); png_data.size(), bitmap));
} }
void LoadInitialAccessibilityTreeFromHtml(const std::string& html) {
AccessibilityNotificationWaiter waiter(shell()->web_contents(),
ui::kAXModeComplete,
ax::mojom::Event::kLoadComplete);
GURL html_data_url("data:text/html," + html);
NavigateToURL(shell(), html_data_url);
waiter.WaitForNotification();
}
private: private:
BrowserAccessibility* FindNodeInSubtree(BrowserAccessibility& node, BrowserAccessibility* FindNodeInSubtree(BrowserAccessibility& node,
ax::mojom::Role role, ax::mojom::Role role,
...@@ -93,18 +102,11 @@ class AccessibilityCanvasActionBrowserTest ...@@ -93,18 +102,11 @@ class AccessibilityCanvasActionBrowserTest
}; };
IN_PROC_BROWSER_TEST_F(AccessibilityActionBrowserTest, FocusAction) { IN_PROC_BROWSER_TEST_F(AccessibilityActionBrowserTest, FocusAction) {
NavigateToURL(shell(), GURL(url::kAboutBlankURL)); LoadInitialAccessibilityTreeFromHtml(R"HTML(
<button>One</button>
AccessibilityNotificationWaiter waiter(shell()->web_contents(), <button>Two</button>
ui::kAXModeComplete, <button>Three</button>
ax::mojom::Event::kLoadComplete); )HTML");
GURL url(
"data:text/html,"
"<button>One</button>"
"<button>Two</button>"
"<button>Three</button>");
NavigateToURL(shell(), url);
waiter.WaitForNotification();
BrowserAccessibility* target = FindNode(ax::mojom::Role::kButton, "One"); BrowserAccessibility* target = FindNode(ax::mojom::Role::kButton, "One");
ASSERT_NE(nullptr, target); ASSERT_NE(nullptr, target);
...@@ -121,16 +123,9 @@ IN_PROC_BROWSER_TEST_F(AccessibilityActionBrowserTest, FocusAction) { ...@@ -121,16 +123,9 @@ IN_PROC_BROWSER_TEST_F(AccessibilityActionBrowserTest, FocusAction) {
IN_PROC_BROWSER_TEST_F(AccessibilityActionBrowserTest, IN_PROC_BROWSER_TEST_F(AccessibilityActionBrowserTest,
IncrementDecrementActions) { IncrementDecrementActions) {
NavigateToURL(shell(), GURL(url::kAboutBlankURL)); LoadInitialAccessibilityTreeFromHtml(R"HTML(
<input type=range min=2 value=8 max=10 step=2>
AccessibilityNotificationWaiter waiter(shell()->web_contents(), )HTML");
ui::kAXModeComplete,
ax::mojom::Event::kLoadComplete);
GURL url(
"data:text/html,"
"<input type=range min=2 value=8 max=10 step=2>");
NavigateToURL(shell(), url);
waiter.WaitForNotification();
BrowserAccessibility* target = FindNode(ax::mojom::Role::kSlider, ""); BrowserAccessibility* target = FindNode(ax::mojom::Role::kSlider, "");
ASSERT_NE(nullptr, target); ASSERT_NE(nullptr, target);
...@@ -172,20 +167,12 @@ IN_PROC_BROWSER_TEST_F(AccessibilityActionBrowserTest, ...@@ -172,20 +167,12 @@ IN_PROC_BROWSER_TEST_F(AccessibilityActionBrowserTest,
} }
IN_PROC_BROWSER_TEST_F(AccessibilityActionBrowserTest, Scroll) { IN_PROC_BROWSER_TEST_F(AccessibilityActionBrowserTest, Scroll) {
NavigateToURL(shell(), GURL(url::kAboutBlankURL)); LoadInitialAccessibilityTreeFromHtml(R"HTML(
<div style="width:100; height:50; overflow:scroll"
AccessibilityNotificationWaiter waiter(shell()->web_contents(), aria-label="shakespeare">
ui::kAXModeComplete, To be or not to be, that is the question.
ax::mojom::Event::kLoadComplete); </div>
GURL url( )HTML");
"data:text/html,"
"<div style='width:100; height:50; overflow:scroll' "
"aria-label='shakespeare'>"
"To be or not to be, that is the question."
"</div>");
NavigateToURL(shell(), url);
waiter.WaitForNotification();
BrowserAccessibility* target = BrowserAccessibility* target =
FindNode(ax::mojom::Role::kGenericContainer, "shakespeare"); FindNode(ax::mojom::Role::kGenericContainer, "shakespeare");
...@@ -210,32 +197,25 @@ IN_PROC_BROWSER_TEST_F(AccessibilityActionBrowserTest, Scroll) { ...@@ -210,32 +197,25 @@ IN_PROC_BROWSER_TEST_F(AccessibilityActionBrowserTest, Scroll) {
} }
IN_PROC_BROWSER_TEST_F(AccessibilityCanvasActionBrowserTest, CanvasGetImage) { IN_PROC_BROWSER_TEST_F(AccessibilityCanvasActionBrowserTest, CanvasGetImage) {
NavigateToURL(shell(), GURL(url::kAboutBlankURL)); LoadInitialAccessibilityTreeFromHtml(R"HTML(
<body>
AccessibilityNotificationWaiter waiter(shell()->web_contents(), <canvas aria-label="canvas" id="c" width="4" height="2">
ui::kAXModeComplete, </canvas>
ax::mojom::Event::kLoadComplete); <script>
GURL url( var c = document.getElementById('c').getContext('2d');
"data:text/html," c.beginPath();
"<body>" c.moveTo(0, 0.5);
"<canvas aria-label='canvas' id='c' width='4' height='2'></canvas>" c.lineTo(4, 0.5);
"<script>\n" c.strokeStyle = '%23ff0000';
" var c = document.getElementById('c').getContext('2d');\n" c.stroke();
" c.beginPath();\n" c.beginPath();
" c.moveTo(0, 0.5);\n" c.moveTo(0, 1.5);
" c.lineTo(4, 0.5);\n" c.lineTo(4, 1.5);
" c.strokeStyle = '%23ff0000';\n" c.strokeStyle = '%230000ff';
" c.stroke();\n" c.stroke();
" c.beginPath();\n" </script>
" c.moveTo(0, 1.5);\n" </body>
" c.lineTo(4, 1.5);\n" )HTML");
" c.strokeStyle = '%230000ff';\n"
" c.stroke();\n"
"</script>"
"</body>");
NavigateToURL(shell(), url);
waiter.WaitForNotification();
BrowserAccessibility* target = FindNode(ax::mojom::Role::kCanvas, "canvas"); BrowserAccessibility* target = FindNode(ax::mojom::Role::kCanvas, "canvas");
ASSERT_NE(nullptr, target); ASSERT_NE(nullptr, target);
...@@ -262,26 +242,19 @@ IN_PROC_BROWSER_TEST_F(AccessibilityCanvasActionBrowserTest, CanvasGetImage) { ...@@ -262,26 +242,19 @@ IN_PROC_BROWSER_TEST_F(AccessibilityCanvasActionBrowserTest, CanvasGetImage) {
IN_PROC_BROWSER_TEST_F(AccessibilityCanvasActionBrowserTest, IN_PROC_BROWSER_TEST_F(AccessibilityCanvasActionBrowserTest,
CanvasGetImageScale) { CanvasGetImageScale) {
NavigateToURL(shell(), GURL(url::kAboutBlankURL)); LoadInitialAccessibilityTreeFromHtml(R"HTML(
<body>
AccessibilityNotificationWaiter waiter(shell()->web_contents(), <canvas aria-label="canvas" id="c" width="40" height="20">
ui::kAXModeComplete, </canvas>
ax::mojom::Event::kLoadComplete); <script>
GURL url( var c = document.getElementById('c').getContext('2d');
"data:text/html," c.fillStyle = '%2300ff00';
"<body>" c.fillRect(0, 0, 40, 10);
"<canvas aria-label='canvas' id='c' width='40' height='20'></canvas>" c.fillStyle = '%23ff00ff';
"<script>\n" c.fillRect(0, 10, 40, 10);
" var c = document.getElementById('c').getContext('2d');\n" </script>
" c.fillStyle = '%2300ff00';\n" </body>
" c.fillRect(0, 0, 40, 10);\n" )HTML");
" c.fillStyle = '%23ff00ff';\n"
" c.fillRect(0, 10, 40, 10);\n"
"</script>"
"</body>");
NavigateToURL(shell(), url);
waiter.WaitForNotification();
BrowserAccessibility* target = FindNode(ax::mojom::Role::kCanvas, "canvas"); BrowserAccessibility* target = FindNode(ax::mojom::Role::kCanvas, "canvas");
ASSERT_NE(nullptr, target); ASSERT_NE(nullptr, target);
...@@ -345,18 +318,11 @@ IN_PROC_BROWSER_TEST_F(AccessibilityActionBrowserTest, ImgElementGetImage) { ...@@ -345,18 +318,11 @@ IN_PROC_BROWSER_TEST_F(AccessibilityActionBrowserTest, ImgElementGetImage) {
IN_PROC_BROWSER_TEST_F(AccessibilityActionBrowserTest, IN_PROC_BROWSER_TEST_F(AccessibilityActionBrowserTest,
DoDefaultActionFocusesContentEditable) { DoDefaultActionFocusesContentEditable) {
NavigateToURL(shell(), GURL(url::kAboutBlankURL)); LoadInitialAccessibilityTreeFromHtml(R"HTML(
<div><button>Before</button></div>
AccessibilityNotificationWaiter waiter(shell()->web_contents(), <div contenteditable>Editable text</div>
ui::kAXModeComplete, <div><button>After</button></div>
ax::mojom::Event::kLoadComplete); )HTML");
GURL url(
"data:text/html,"
"<div><button>Before</button></div>"
"<div contenteditable>Editable text</div>"
"<div><button>After</button></div>");
NavigateToURL(shell(), url);
waiter.WaitForNotification();
BrowserAccessibility* target = BrowserAccessibility* target =
FindNode(ax::mojom::Role::kGenericContainer, "Editable text"); FindNode(ax::mojom::Role::kGenericContainer, "Editable text");
...@@ -372,16 +338,9 @@ IN_PROC_BROWSER_TEST_F(AccessibilityActionBrowserTest, ...@@ -372,16 +338,9 @@ IN_PROC_BROWSER_TEST_F(AccessibilityActionBrowserTest,
} }
IN_PROC_BROWSER_TEST_F(AccessibilityActionBrowserTest, InputSetValue) { IN_PROC_BROWSER_TEST_F(AccessibilityActionBrowserTest, InputSetValue) {
NavigateToURL(shell(), GURL(url::kAboutBlankURL)); LoadInitialAccessibilityTreeFromHtml(R"HTML(
<input aria-label="Answer" value="Before">
AccessibilityNotificationWaiter waiter(shell()->web_contents(), )HTML");
ui::kAXModeComplete,
ax::mojom::Event::kLoadComplete);
GURL url(
"data:text/html,"
"<input aria-label='Answer' value='Before'>");
NavigateToURL(shell(), url);
waiter.WaitForNotification();
BrowserAccessibility* target = BrowserAccessibility* target =
FindNode(ax::mojom::Role::kTextField, "Answer"); FindNode(ax::mojom::Role::kTextField, "Answer");
...@@ -400,16 +359,9 @@ IN_PROC_BROWSER_TEST_F(AccessibilityActionBrowserTest, InputSetValue) { ...@@ -400,16 +359,9 @@ IN_PROC_BROWSER_TEST_F(AccessibilityActionBrowserTest, InputSetValue) {
} }
IN_PROC_BROWSER_TEST_F(AccessibilityActionBrowserTest, TextareaSetValue) { IN_PROC_BROWSER_TEST_F(AccessibilityActionBrowserTest, TextareaSetValue) {
NavigateToURL(shell(), GURL(url::kAboutBlankURL)); LoadInitialAccessibilityTreeFromHtml(R"HTML(
<textarea aria-label="Answer">Before</textarea>
AccessibilityNotificationWaiter waiter(shell()->web_contents(), )HTML");
ui::kAXModeComplete,
ax::mojom::Event::kLoadComplete);
GURL url(
"data:text/html,"
"<textarea aria-label='Answer'>Before</textarea>");
NavigateToURL(shell(), url);
waiter.WaitForNotification();
BrowserAccessibility* target = BrowserAccessibility* target =
FindNode(ax::mojom::Role::kTextField, "Answer"); FindNode(ax::mojom::Role::kTextField, "Answer");
...@@ -441,16 +393,9 @@ IN_PROC_BROWSER_TEST_F(AccessibilityActionBrowserTest, TextareaSetValue) { ...@@ -441,16 +393,9 @@ IN_PROC_BROWSER_TEST_F(AccessibilityActionBrowserTest, TextareaSetValue) {
IN_PROC_BROWSER_TEST_F(AccessibilityActionBrowserTest, IN_PROC_BROWSER_TEST_F(AccessibilityActionBrowserTest,
ContenteditableSetValue) { ContenteditableSetValue) {
NavigateToURL(shell(), GURL(url::kAboutBlankURL)); LoadInitialAccessibilityTreeFromHtml(R"HTML(
<div contenteditable aria-label="Answer">Before</div>
AccessibilityNotificationWaiter waiter(shell()->web_contents(), )HTML");
ui::kAXModeComplete,
ax::mojom::Event::kLoadComplete);
GURL url(
"data:text/html,"
"<div contenteditable aria-label='Answer'>Before</div>");
NavigateToURL(shell(), url);
waiter.WaitForNotification();
BrowserAccessibility* target = BrowserAccessibility* target =
FindNode(ax::mojom::Role::kGenericContainer, "Answer"); FindNode(ax::mojom::Role::kGenericContainer, "Answer");
...@@ -481,18 +426,10 @@ IN_PROC_BROWSER_TEST_F(AccessibilityActionBrowserTest, ...@@ -481,18 +426,10 @@ IN_PROC_BROWSER_TEST_F(AccessibilityActionBrowserTest,
} }
IN_PROC_BROWSER_TEST_F(AccessibilityActionBrowserTest, ShowContextMenu) { IN_PROC_BROWSER_TEST_F(AccessibilityActionBrowserTest, ShowContextMenu) {
NavigateToURL(shell(), GURL(url::kAboutBlankURL)); LoadInitialAccessibilityTreeFromHtml(R"HTML(
<a href="about:blank">1</a>
AccessibilityNotificationWaiter waiter(shell()->web_contents(), <a href="about:blank">2</a>
ui::kAXModeComplete, )HTML");
ax::mojom::Event::kLoadComplete);
GURL url(
"data:text/html,"
"<a href='about:blank'>1</a>"
"<a href='about:blank'>2</a>");
NavigateToURL(shell(), url);
waiter.WaitForNotification();
BrowserAccessibility* target_node = FindNode(ax::mojom::Role::kLink, "2"); BrowserAccessibility* target_node = FindNode(ax::mojom::Role::kLink, "2");
EXPECT_NE(target_node, nullptr); EXPECT_NE(target_node, nullptr);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment