summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--content/browser/accessibility/accessibility_ipc_error_browsertest.cc2
-rw-r--r--content/browser/frame_host/render_frame_host_impl.cc5
-rw-r--r--content/browser/frame_host/render_frame_host_impl.h3
-rw-r--r--content/browser/web_contents/web_contents_impl.cc9
-rw-r--r--content/renderer/accessibility/renderer_accessibility.cc9
5 files changed, 24 insertions, 4 deletions
diff --git a/content/browser/accessibility/accessibility_ipc_error_browsertest.cc b/content/browser/accessibility/accessibility_ipc_error_browsertest.cc
index da6921f..7ff3d27 100644
--- a/content/browser/accessibility/accessibility_ipc_error_browsertest.cc
+++ b/content/browser/accessibility/accessibility_ipc_error_browsertest.cc
@@ -175,7 +175,7 @@ IN_PROC_BROWSER_TEST_F(AccessibilityIpcErrorBrowserTest,
break;
AccessibilityNotificationWaiter waiter(
- shell(), AccessibilityModeComplete, ui::AX_EVENT_LAYOUT_COMPLETE);
+ shell(), AccessibilityModeComplete, ui::AX_EVENT_LOAD_COMPLETE);
waiter.WaitForNotification();
}
diff --git a/content/browser/frame_host/render_frame_host_impl.cc b/content/browser/frame_host/render_frame_host_impl.cc
index eaf6916..526ccaf 100644
--- a/content/browser/frame_host/render_frame_host_impl.cc
+++ b/content/browser/frame_host/render_frame_host_impl.cc
@@ -512,6 +512,11 @@ void RenderFrameHostImpl::AccessibilitySetAccessibilityFocus(int acc_obj_id) {
Send(new AccessibilityMsg_SetAccessibilityFocus(routing_id_, acc_obj_id));
}
+void RenderFrameHostImpl::AccessibilityReset() {
+ accessibility_reset_token_ = g_next_accessibility_reset_token++;
+ Send(new AccessibilityMsg_Reset(routing_id_, accessibility_reset_token_));
+}
+
void RenderFrameHostImpl::AccessibilityFatalError() {
browser_accessibility_manager_.reset(NULL);
if (accessibility_reset_token_)
diff --git a/content/browser/frame_host/render_frame_host_impl.h b/content/browser/frame_host/render_frame_host_impl.h
index 0301082..bd64035 100644
--- a/content/browser/frame_host/render_frame_host_impl.h
+++ b/content/browser/frame_host/render_frame_host_impl.h
@@ -376,6 +376,9 @@ class CONTENT_EXPORT RenderFrameHostImpl
// the accessibility mode.
void RequestAXTreeSnapshot(AXTreeSnapshotCallback callback);
+ // Resets the accessibility serializer in the renderer.
+ void AccessibilityReset();
+
// Turn on accessibility testing. The given callback will be run
// every time an accessibility notification is received from the
// renderer process, and the accessibility tree it sent can be
diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc
index 3aedda6..d4a71ad 100644
--- a/content/browser/web_contents/web_contents_impl.cc
+++ b/content/browser/web_contents/web_contents_impl.cc
@@ -209,6 +209,10 @@ void SetAccessibilityModeOnFrame(AccessibilityMode mode,
static_cast<RenderFrameHostImpl*>(frame_host)->SetAccessibilityMode(mode);
}
+void ResetAccessibility(RenderFrameHost* rfh) {
+ static_cast<RenderFrameHostImpl*>(rfh)->AccessibilityReset();
+}
+
} // namespace
WebContents* WebContents::Create(const WebContents::CreateParams& params) {
@@ -853,7 +857,10 @@ const std::string& WebContentsImpl::GetUserAgentOverride() const {
}
void WebContentsImpl::EnableTreeOnlyAccessibilityMode() {
- AddAccessibilityMode(AccessibilityModeTreeOnly);
+ if (GetAccessibilityMode() == AccessibilityModeTreeOnly)
+ ForEachFrame(base::Bind(&ResetAccessibility));
+ else
+ AddAccessibilityMode(AccessibilityModeTreeOnly);
}
bool WebContentsImpl::IsTreeOnlyAccessibilityModeForTesting() const {
diff --git a/content/renderer/accessibility/renderer_accessibility.cc b/content/renderer/accessibility/renderer_accessibility.cc
index b5f7b60..6e89e51 100644
--- a/content/renderer/accessibility/renderer_accessibility.cc
+++ b/content/renderer/accessibility/renderer_accessibility.cc
@@ -397,8 +397,13 @@ void RendererAccessibility::OnReset(int reset_token) {
pending_events_.clear();
const WebDocument& document = GetMainDocument();
- if (!document.isNull())
- HandleAXEvent(document.accessibilityObject(), ui::AX_EVENT_LAYOUT_COMPLETE);
+ if (!document.isNull()) {
+ // Tree-only mode gets used by the automation extension API which requires a
+ // load complete event to invoke listener callbacks.
+ ui::AXEvent evt = document.accessibilityObject().isLoaded()
+ ? ui::AX_EVENT_LOAD_COMPLETE : ui::AX_EVENT_LAYOUT_COMPLETE;
+ HandleAXEvent(document.accessibilityObject(), evt);
+ }
}
void RendererAccessibility::OnScrollToMakeVisible(