summaryrefslogtreecommitdiffstats
path: root/chrome/browser/renderer_host
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/renderer_host')
-rw-r--r--chrome/browser/renderer_host/render_view_host.cc14
-rw-r--r--chrome/browser/renderer_host/render_view_host.h2
-rw-r--r--chrome/browser/renderer_host/render_widget_host.cc4
-rw-r--r--chrome/browser/renderer_host/render_widget_host.h3
-rw-r--r--chrome/browser/renderer_host/render_widget_host_view.h5
-rw-r--r--chrome/browser/renderer_host/render_widget_host_view_win.cc12
-rw-r--r--chrome/browser/renderer_host/render_widget_host_view_win.h3
7 files changed, 43 insertions, 0 deletions
diff --git a/chrome/browser/renderer_host/render_view_host.cc b/chrome/browser/renderer_host/render_view_host.cc
index 70c6b96..9850ab1 100644
--- a/chrome/browser/renderer_host/render_view_host.cc
+++ b/chrome/browser/renderer_host/render_view_host.cc
@@ -837,6 +837,8 @@ void RenderViewHost::OnMessageReceived(const IPC::Message& msg) {
OnAccessibilityFocusChange)
IPC_MESSAGE_HANDLER(ViewHostMsg_AccessibilityObjectStateChange,
OnAccessibilityObjectStateChange)
+ IPC_MESSAGE_HANDLER(ViewHostMsg_AccessibilityObjectChildrenChange,
+ OnAccessibilityObjectChildrenChange)
IPC_MESSAGE_HANDLER(ViewHostMsg_OnCSSInserted, OnCSSInserted)
IPC_MESSAGE_HANDLER(ViewHostMsg_PageContents, OnPageContents)
IPC_MESSAGE_HANDLER(ViewHostMsg_PageTranslated, OnPageTranslated)
@@ -1970,6 +1972,18 @@ void RenderViewHost::OnAccessibilityObjectStateChange(int acc_obj_id) {
view()->OnAccessibilityObjectStateChange(acc_obj_id);
}
+void RenderViewHost::OnAccessibilityObjectChildrenChange(
+ const std::vector<webkit_glue::WebAccessibility>& acc_changes) {
+ view()->OnAccessibilityObjectChildrenChange(acc_changes);
+
+ if (acc_changes.size() > 0) {
+ NotificationService::current()->Notify(
+ NotificationType::RENDER_VIEW_HOST_ACCESSIBILITY_TREE_UPDATED,
+ Source<RenderViewHost>(this),
+ NotificationService::NoDetails());
+ }
+}
+
void RenderViewHost::OnAccessibilityTree(
const webkit_glue::WebAccessibility& tree) {
if (view())
diff --git a/chrome/browser/renderer_host/render_view_host.h b/chrome/browser/renderer_host/render_view_host.h
index 3010910..1d92cd9 100644
--- a/chrome/browser/renderer_host/render_view_host.h
+++ b/chrome/browser/renderer_host/render_view_host.h
@@ -654,6 +654,8 @@ class RenderViewHost : public RenderWidgetHost {
void OnExtensionPostMessage(int port_id, const std::string& message);
void OnAccessibilityFocusChange(int acc_obj_id);
void OnAccessibilityObjectStateChange(int acc_obj_id);
+ void OnAccessibilityObjectChildrenChange(
+ const std::vector<webkit_glue::WebAccessibility>& acc_changes);
void OnAccessibilityTree(const webkit_glue::WebAccessibility& tree);
void OnCSSInserted();
void OnPageContents(const GURL& url,
diff --git a/chrome/browser/renderer_host/render_widget_host.cc b/chrome/browser/renderer_host/render_widget_host.cc
index 0a06602..30766ea 100644
--- a/chrome/browser/renderer_host/render_widget_host.cc
+++ b/chrome/browser/renderer_host/render_widget_host.cc
@@ -1166,6 +1166,10 @@ void RenderWidgetHost::AccessibilityDoDefaultAction(int acc_obj_id) {
Send(new ViewMsg_AccessibilityDoDefaultAction(routing_id(), acc_obj_id));
}
+void RenderWidgetHost::AccessibilityObjectChildrenChangeAck() {
+ Send(new ViewMsg_AccessibilityObjectChildrenChange_ACK(routing_id()));
+}
+
void RenderWidgetHost::ProcessKeyboardEventAck(int type, bool processed) {
if (key_queue_.size() == 0) {
LOG(ERROR) << "Got a KeyEvent back from the renderer but we "
diff --git a/chrome/browser/renderer_host/render_widget_host.h b/chrome/browser/renderer_host/render_widget_host.h
index eac130e..ad31f2e 100644
--- a/chrome/browser/renderer_host/render_widget_host.h
+++ b/chrome/browser/renderer_host/render_widget_host.h
@@ -385,6 +385,9 @@ class RenderWidgetHost : public IPC::Channel::Listener,
// on a node with this accessibility object id.
void AccessibilityDoDefaultAction(int acc_obj_id);
+ // Acknowledges a ViewHostMsg_AccessibilityObjectChildrenChange message.
+ void AccessibilityObjectChildrenChangeAck();
+
// Sets the active state (i.e., control tints).
virtual void SetActive(bool active);
diff --git a/chrome/browser/renderer_host/render_widget_host_view.h b/chrome/browser/renderer_host/render_widget_host_view.h
index d651943..d4c09de 100644
--- a/chrome/browser/renderer_host/render_widget_host_view.h
+++ b/chrome/browser/renderer_host/render_widget_host_view.h
@@ -10,6 +10,9 @@
#include <OpenGL/OpenGL.h>
#endif
+#include <string>
+#include <vector>
+
#include "app/surface/transport_dib.h"
#include "gfx/native_widget_types.h"
#include "third_party/skia/include/core/SkBitmap.h"
@@ -250,6 +253,8 @@ class RenderWidgetHostView {
const webkit_glue::WebAccessibility& tree) { }
virtual void OnAccessibilityFocusChange(int acc_obj_id) { }
virtual void OnAccessibilityObjectStateChange(int acc_obj_id) { }
+ virtual void OnAccessibilityObjectChildrenChange(
+ const std::vector<webkit_glue::WebAccessibility>& acc_changes) { }
protected:
// Interface class only, do not construct.
diff --git a/chrome/browser/renderer_host/render_widget_host_view_win.cc b/chrome/browser/renderer_host/render_widget_host_view_win.cc
index ac1be0b..defdc61 100644
--- a/chrome/browser/renderer_host/render_widget_host_view_win.cc
+++ b/chrome/browser/renderer_host/render_widget_host_view_win.cc
@@ -1511,6 +1511,14 @@ void RenderWidgetHostViewWin::OnAccessibilityObjectStateChange(int acc_obj_id) {
}
}
+void RenderWidgetHostViewWin::OnAccessibilityObjectChildrenChange(
+ const std::vector<webkit_glue::WebAccessibility>& acc_changes) {
+ if (browser_accessibility_manager_.get()) {
+ browser_accessibility_manager_->OnAccessibilityObjectChildrenChange(
+ acc_changes);
+ }
+}
+
void RenderWidgetHostViewWin::Observe(NotificationType type,
const NotificationSource& source,
const NotificationDetails& details) {
@@ -1553,6 +1561,10 @@ void RenderWidgetHostViewWin::AccessibilityDoDefaultAction(int acc_obj_id) {
render_widget_host_->AccessibilityDoDefaultAction(acc_obj_id);
}
+void RenderWidgetHostViewWin::AccessibilityObjectChildrenChangeAck() {
+ render_widget_host_->AccessibilityObjectChildrenChangeAck();
+}
+
LRESULT RenderWidgetHostViewWin::OnGetObject(UINT message, WPARAM wparam,
LPARAM lparam, BOOL& handled) {
if (lparam != OBJID_CLIENT) {
diff --git a/chrome/browser/renderer_host/render_widget_host_view_win.h b/chrome/browser/renderer_host/render_widget_host_view_win.h
index 9d17aa6..00f8c38 100644
--- a/chrome/browser/renderer_host/render_widget_host_view_win.h
+++ b/chrome/browser/renderer_host/render_widget_host_view_win.h
@@ -157,6 +157,8 @@ class RenderWidgetHostViewWin
const webkit_glue::WebAccessibility& tree);
virtual void OnAccessibilityFocusChange(int acc_obj_id);
virtual void OnAccessibilityObjectStateChange(int acc_obj_id);
+ virtual void OnAccessibilityObjectChildrenChange(
+ const std::vector<webkit_glue::WebAccessibility>& acc_obj);
// Implementation of NotificationObserver:
virtual void Observe(NotificationType type,
@@ -166,6 +168,7 @@ class RenderWidgetHostViewWin
// Implementation of BrowserAccessibilityDelegate:
virtual void SetAccessibilityFocus(int acc_obj_id);
virtual void AccessibilityDoDefaultAction(int acc_obj_id);
+ virtual void AccessibilityObjectChildrenChangeAck();
protected:
// Windows Message Handlers