| Index: third_party/WebKit/Source/web/tests/AccessibilityObjectModelTest.cpp
|
| diff --git a/third_party/WebKit/Source/web/tests/AccessibilityObjectModelTest.cpp b/third_party/WebKit/Source/web/tests/AccessibilityObjectModelTest.cpp
|
| index 4e1a3600225dd2fd2290cc142f58ed808b8a05d5..cee1987b9679349e1a4a98122dec9da3d32a2675 100644
|
| --- a/third_party/WebKit/Source/web/tests/AccessibilityObjectModelTest.cpp
|
| +++ b/third_party/WebKit/Source/web/tests/AccessibilityObjectModelTest.cpp
|
| @@ -58,6 +58,79 @@ TEST_F(AccessibilityObjectModelTest, SetAccessibleNodeRole) {
|
| EXPECT_EQ(kSliderRole, axButton->RoleValue());
|
| }
|
|
|
| +TEST_F(AccessibilityObjectModelTest, AOMDoesNotReflectARIA) {
|
| + SimRequest main_resource("https://example.com/", "text/html");
|
| + LoadURL("https://example.com/");
|
| + main_resource.Complete("<input id=textbox>");
|
| +
|
| + // Set ARIA attributes.
|
| + auto* textbox = GetDocument().getElementById("textbox");
|
| + ASSERT_NE(nullptr, textbox);
|
| + textbox->setAttribute("role", "combobox");
|
| + textbox->setAttribute("aria-label", "Combo");
|
| + textbox->setAttribute("aria-disabled", "true");
|
| +
|
| + // Assert that the ARIA attributes affect the AX object.
|
| + auto* cache = AXObjectCache();
|
| + ASSERT_NE(nullptr, cache);
|
| + auto* axTextBox = cache->GetOrCreate(textbox);
|
| + EXPECT_EQ(kComboBoxRole, axTextBox->RoleValue());
|
| + AXNameFrom name_from;
|
| + AXObjectImpl::AXObjectVector name_objects;
|
| + EXPECT_EQ("Combo", axTextBox->GetName(name_from, &name_objects));
|
| + EXPECT_FALSE(axTextBox->IsEnabled());
|
| +
|
| + // The AOM properties should still all be null.
|
| + EXPECT_EQ(nullptr, textbox->accessibleNode()->role());
|
| + EXPECT_EQ(nullptr, textbox->accessibleNode()->label());
|
| + bool is_null = false;
|
| + EXPECT_FALSE(textbox->accessibleNode()->disabled(is_null));
|
| + EXPECT_TRUE(is_null);
|
| +}
|
| +
|
| +TEST_F(AccessibilityObjectModelTest, AOMPropertiesCanBeCleared) {
|
| + SimRequest main_resource("https://example.com/", "text/html");
|
| + LoadURL("https://example.com/");
|
| + main_resource.Complete("<input type=button id=button>");
|
| +
|
| + // Set ARIA attributes.
|
| + auto* button = GetDocument().getElementById("button");
|
| + ASSERT_NE(nullptr, button);
|
| + button->setAttribute("role", "checkbox");
|
| + button->setAttribute("aria-label", "Check");
|
| + button->setAttribute("aria-disabled", "true");
|
| +
|
| + // Assert that the AX object was affected by ARIA attributes.
|
| + auto* cache = AXObjectCache();
|
| + ASSERT_NE(nullptr, cache);
|
| + auto* axButton = cache->GetOrCreate(button);
|
| + EXPECT_EQ(kCheckBoxRole, axButton->RoleValue());
|
| + AXNameFrom name_from;
|
| + AXObjectImpl::AXObjectVector name_objects;
|
| + EXPECT_EQ("Check", axButton->GetName(name_from, &name_objects));
|
| + EXPECT_FALSE(axButton->IsEnabled());
|
| +
|
| + // Now set the AOM properties to override.
|
| + button->accessibleNode()->setRole("radio");
|
| + button->accessibleNode()->setLabel("Radio");
|
| + button->accessibleNode()->setDisabled(false, false);
|
| +
|
| + // Assert that the AX object was affected by AOM properties.
|
| + EXPECT_EQ(kRadioButtonRole, axButton->RoleValue());
|
| + EXPECT_EQ("Radio", axButton->GetName(name_from, &name_objects));
|
| + EXPECT_TRUE(axButton->IsEnabled());
|
| +
|
| + // Null the AOM properties.
|
| + button->accessibleNode()->setRole(g_null_atom);
|
| + button->accessibleNode()->setLabel(g_null_atom);
|
| + button->accessibleNode()->setDisabled(false, true);
|
| +
|
| + // The AX Object should now revert to ARIA.
|
| + EXPECT_EQ(kCheckBoxRole, axButton->RoleValue());
|
| + EXPECT_EQ("Check", axButton->GetName(name_from, &name_objects));
|
| + EXPECT_FALSE(axButton->IsEnabled());
|
| +}
|
| +
|
| } // namespace
|
|
|
| } // namespace blink
|
|
|