Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(8)

Unified Diff: content/renderer/accessibility/renderer_accessibility_browsertest.cc

Issue 1347243005: Make selection changes in a text field invalidate accessibility tree root. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Disable RendererAccessibilityTest.TextSelectionShouldSendRoot for Android; all other tests in this … Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/renderer/accessibility/renderer_accessibility.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/renderer/accessibility/renderer_accessibility_browsertest.cc
diff --git a/content/renderer/accessibility/renderer_accessibility_browsertest.cc b/content/renderer/accessibility/renderer_accessibility_browsertest.cc
index a0b65509c49630faa18a089183ffc321ccee2b36..c20ee53636cb4b83e44927596976a8019421d063 100644
--- a/content/renderer/accessibility/renderer_accessibility_browsertest.cc
+++ b/content/renderer/accessibility/renderer_accessibility_browsertest.cc
@@ -66,15 +66,22 @@ class RendererAccessibilityTest : public RenderViewTest {
frame()->OnSetAccessibilityMode(mode);
}
- void GetLastAccEvent(
- AccessibilityHostMsg_EventParams* params) {
+ void GetAllAccEvents(
+ std::vector<AccessibilityHostMsg_EventParams>* param_list) {
const IPC::Message* message =
sink_->GetUniqueMessageMatching(AccessibilityHostMsg_Events::ID);
ASSERT_TRUE(message);
base::Tuple<std::vector<AccessibilityHostMsg_EventParams>, int> param;
AccessibilityHostMsg_Events::Read(message, &param);
- ASSERT_GE(base::get<0>(param).size(), 1U);
- *params = base::get<0>(param)[0];
+ *param_list = base::get<0>(param);
+ }
+
+ void GetLastAccEvent(
+ AccessibilityHostMsg_EventParams* params) {
+ std::vector<AccessibilityHostMsg_EventParams> param_list;
+ GetAllAccEvents(&param_list);
+ ASSERT_GE(param_list.size(), 1U);
+ *params = param_list[0];
}
int CountAccessibilityNodesSentToBrowser() {
@@ -428,4 +435,46 @@ TEST_F(RendererAccessibilityTest, EventOnObjectNotInTree) {
ASSERT_EQ(0U, base::get<0>(param).size());
}
+TEST_F(RendererAccessibilityTest, TextSelectionShouldSendRoot) {
+ // A text selection change in a text field will be reflected in attributes
+ // of the root node. Verify that the root node is updated as the result
+ // of a text change event.
+ std::string html =
+ "<body>"
+ " <div role='group'>"
+ " <input id='input' type='text' value='hello there'>"
+ " </div>"
+ "</body>";
+ LoadHTML(html.c_str());
+
+ scoped_ptr<TestRendererAccessibility> accessibility(
+ new TestRendererAccessibility(frame()));
+ accessibility->SendPendingAccessibilityEvents();
+ sink_->ClearMessages();
+
+ WebDocument document = view()->GetWebView()->mainFrame()->document();
+ WebAXObject root_obj = document.accessibilityObject();
+ WebAXObject input_obj =
+ document.getElementById("input").accessibilityObject();
+ ASSERT_EQ(blink::WebAXRoleTextField, input_obj.role());
+ ExecuteJavaScriptForTests("document.getElementById('input').focus();");
+ accessibility->HandleAXEvent(
+ input_obj,
+ ui::AX_EVENT_TEXT_SELECTION_CHANGED);
+ accessibility->SendPendingAccessibilityEvents();
+ std::vector<AccessibilityHostMsg_EventParams> all_events;
+ GetAllAccEvents(&all_events);
+ EXPECT_EQ(2U, all_events.size());
+ bool had_root_update = false, had_input_update = false;
+ for (auto i = all_events.begin(); i != all_events.end(); ++i) {
+ ASSERT_EQ(ui::AX_EVENT_TEXT_SELECTION_CHANGED, i->event_type);
+ ASSERT_EQ(1U, i->update.nodes.size());
+ if (root_obj.axID() == i->update.nodes[0].id)
+ had_root_update = true;
+ if (input_obj.axID() == i->update.nodes[0].id)
+ had_input_update = true;
+ }
+ ASSERT_TRUE(had_root_update);
+ ASSERT_TRUE(had_input_update);
+}
} // namespace content
« no previous file with comments | « content/renderer/accessibility/renderer_accessibility.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698