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 f1b559b4ae504f1d1662c142f0076695e8698a5d..bf299d46124a822ba2b799b62d17938b008ec930 100644 |
--- a/content/renderer/accessibility/renderer_accessibility_browsertest.cc |
+++ b/content/renderer/accessibility/renderer_accessibility_browsertest.cc |
@@ -516,4 +516,38 @@ TEST_F(RendererAccessibilityTest, DetachAccessibilityObject) { |
// so we don't have a test expectation for it. |
} |
+TEST_F(RendererAccessibilityTest, EventOnObjectNotInTree) { |
+ // Test RendererAccessibilityComplete and make sure it doesn't send anything |
+ // if we get a notification from Blink for an object that isn't in the |
+ // tree, like the scroll area that's the parent of the main document, |
+ // which we don't expose. |
+ std::string html = "<body><input></body>"; |
+ LoadHTML(html.c_str()); |
+ |
+ scoped_ptr<TestRendererAccessibilityComplete> accessibility( |
+ new TestRendererAccessibilityComplete(view())); |
+ accessibility->SendPendingAccessibilityEvents(); |
+ EXPECT_EQ(3, CountAccessibilityNodesSentToBrowser()); |
+ |
+ WebDocument document = view()->GetWebView()->mainFrame()->document(); |
+ WebAXObject root_obj = document.accessibilityObject(); |
+ WebAXObject scroll_area = root_obj.parentObject(); |
+ EXPECT_EQ(blink::WebAXRoleScrollArea, scroll_area.role()); |
+ |
+ // Try to fire a message on the scroll area, and assert that we just |
+ // ignore it. |
+ sink_->ClearMessages(); |
+ accessibility->HandleAXEvent(scroll_area, |
+ ui::AX_EVENT_VALUE_CHANGED); |
+ |
+ accessibility->SendPendingAccessibilityEvents(); |
+ |
+ const IPC::Message* message = |
+ sink_->GetUniqueMessageMatching(AccessibilityHostMsg_Events::ID); |
+ ASSERT_TRUE(message); |
+ Tuple1<std::vector<AccessibilityHostMsg_EventParams> > param; |
+ AccessibilityHostMsg_Events::Read(message, ¶m); |
+ ASSERT_EQ(0U, param.a.size()); |
+} |
+ |
} // namespace content |