summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorctguil@chromium.org <ctguil@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-09-01 17:15:16 +0000
committerctguil@chromium.org <ctguil@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-09-01 17:15:16 +0000
commit416ac2eabe3da68cea4f9cd17ed36f3e8031ed76 (patch)
tree521553db2c3ca08224fb268ea8ea943c64114bf3
parent13e50ceda3ab25c92e51693cb00a18b3bfac6880 (diff)
downloadchromium_src-416ac2eabe3da68cea4f9cd17ed36f3e8031ed76.zip
chromium_src-416ac2eabe3da68cea4f9cd17ed36f3e8031ed76.tar.gz
chromium_src-416ac2eabe3da68cea4f9cd17ed36f3e8031ed76.tar.bz2
Update browser accessibility tree on a renderer accessibility object state change.
BUG=13291 TEST=interactive_ui_tests AccessibilityWinBrowserTest.TestDynamicAccessibilityTree R=dmazzoni Review URL: http://codereview.chromium.org/3250014 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@58194 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/browser/accessibility_win_browsertest.cc79
-rw-r--r--chrome/browser/browser_accessibility_manager_win.cc61
-rw-r--r--chrome/browser/browser_accessibility_manager_win.h9
-rw-r--r--chrome/browser/browser_accessibility_win.cc6
-rw-r--r--chrome/browser/browser_accessibility_win.h3
-rw-r--r--chrome/browser/renderer_host/render_view_host.cc10
-rw-r--r--chrome/browser/renderer_host/render_view_host.h3
-rw-r--r--chrome/browser/renderer_host/render_widget_host_view.h3
-rw-r--r--chrome/browser/renderer_host/render_widget_host_view_win.cc6
-rw-r--r--chrome/browser/renderer_host/render_widget_host_view_win.h3
-rw-r--r--chrome/common/render_messages_internal.h8
-rw-r--r--chrome/renderer/render_view.cc32
12 files changed, 152 insertions, 71 deletions
diff --git a/chrome/browser/accessibility_win_browsertest.cc b/chrome/browser/accessibility_win_browsertest.cc
index 7b2d377..138fab9 100644
--- a/chrome/browser/accessibility_win_browsertest.cc
+++ b/chrome/browser/accessibility_win_browsertest.cc
@@ -82,10 +82,14 @@ class AccessibleChecker {
// Set the expected value for this AccessibleChecker.
void SetExpectedValue(wstring expected_value);
+ // Set the expected state for this AccessibleChecker.
+ void SetExpectedState(LONG expected_state);
+
private:
void CheckAccessibleName(IAccessible* accessible);
void CheckAccessibleRole(IAccessible* accessible);
void CheckAccessibleValue(IAccessible* accessible);
+ void CheckAccessibleState(IAccessible* accessible);
void CheckAccessibleChildren(IAccessible* accessible);
private:
@@ -100,6 +104,9 @@ class AccessibleChecker {
// Expected accessible value. Checked against IAccessible::get_accValue.
wstring value_;
+ // Expected accessible state. Checked against IAccessible::get_accState.
+ LONG state_;
+
// Expected accessible children. Checked using IAccessible::get_accChildCount
// and ::AccessibleChildren.
AccessibleCheckerVector children_;
@@ -154,14 +161,16 @@ AccessibleChecker::AccessibleChecker(
wstring expected_name, int32 expected_role, wstring expected_value) :
name_(expected_name),
role_(expected_role),
- value_(expected_value) {
+ value_(expected_value),
+ state_(-1) {
}
AccessibleChecker::AccessibleChecker(
wstring expected_name, wstring expected_role, wstring expected_value) :
name_(expected_name),
role_(expected_role.c_str()),
- value_(expected_value) {
+ value_(expected_value),
+ state_(-1) {
}
void AccessibleChecker::AppendExpectedChild(
@@ -173,6 +182,7 @@ void AccessibleChecker::CheckAccessible(IAccessible* accessible) {
CheckAccessibleName(accessible);
CheckAccessibleRole(accessible);
CheckAccessibleValue(accessible);
+ CheckAccessibleState(accessible);
CheckAccessibleChildren(accessible);
}
@@ -180,6 +190,10 @@ void AccessibleChecker::SetExpectedValue(wstring expected_value) {
value_ = expected_value;
}
+void AccessibleChecker::SetExpectedState(LONG expected_state) {
+ state_ = expected_state;
+}
+
void AccessibleChecker::CheckAccessibleName(IAccessible* accessible) {
CComBSTR name;
HRESULT hr =
@@ -215,6 +229,18 @@ void AccessibleChecker::CheckAccessibleValue(IAccessible* accessible) {
wstring(value.m_str, SysStringLen(value)).c_str());
}
+void AccessibleChecker::CheckAccessibleState(IAccessible* accessible) {
+ if (state_ < 0)
+ return;
+
+ VARIANT var_state = {0};
+ HRESULT hr =
+ accessible->get_accState(CreateI4Variant(CHILDID_SELF), &var_state);
+ EXPECT_EQ(hr, S_OK);
+ EXPECT_EQ(VT_I4, V_VT(&var_state));
+ ASSERT_TRUE(state_ == V_I4(&var_state));
+}
+
void AccessibleChecker::CheckAccessibleChildren(IAccessible* parent) {
LONG child_count = 0;
HRESULT hr = parent->get_accChildCount(&child_count);
@@ -306,7 +332,8 @@ IN_PROC_BROWSER_TEST_F(AccessibilityWinBrowserTest,
// detected. Request and wait for the accessibility tree to be updated.
GURL tree_url(
"data:text/html,<html><body><div onclick=\"this.innerHTML='<b>new text"
- "</b>';\"><b>old text</b></div></body></html>");
+ "</b>';\"><b>old text</b></div><div><input type='checkbox' /></div>"
+ "</body></html>");
browser()->OpenURL(tree_url, GURL(), CURRENT_TAB, PageTransition::TYPED);
ScopedComPtr<IAccessible> document_accessible(
GetRenderWidgetHostViewClientAccessible());
@@ -314,27 +341,37 @@ IN_PROC_BROWSER_TEST_F(AccessibilityWinBrowserTest,
NotificationType::RENDER_VIEW_HOST_ACCESSIBILITY_TREE_UPDATED);
AccessibleChecker text_checker(L"", ROLE_SYSTEM_TEXT, L"old text");
+
+ AccessibleChecker div1_checker(L"", L"div", L"");
+ div1_checker.AppendExpectedChild(&text_checker);
+
AccessibleChecker checkbox_checker(L"", ROLE_SYSTEM_CHECKBUTTON, L"");
+ checkbox_checker.SetExpectedState(
+ STATE_SYSTEM_FOCUSABLE | STATE_SYSTEM_READONLY);
- AccessibleChecker div_checker(L"", L"div", L"");
- div_checker.AppendExpectedChild(&text_checker);
+ AccessibleChecker div2_checker(L"", L"div", L"");
+ div2_checker.AppendExpectedChild(&checkbox_checker);
AccessibleChecker document_checker(L"", ROLE_SYSTEM_DOCUMENT, L"");
- document_checker.AppendExpectedChild(&div_checker);
+ document_checker.AppendExpectedChild(&div1_checker);
+ document_checker.AppendExpectedChild(&div2_checker);
+
+ // TODO(ctguil): Fix: We should not be expecting busy state here.
+ document_checker.SetExpectedState(STATE_SYSTEM_BUSY);
// Check the accessible tree of the browser.
document_accessible = GetRenderWidgetHostViewClientAccessible();
ASSERT_NE(document_accessible.get(), reinterpret_cast<IAccessible*>(NULL));
document_checker.CheckAccessible(document_accessible);
- // Perform the default action on the div which executes the script that
+ // Perform the default action on the div1 which executes the script that
// updates text node within the div.
- CComPtr<IDispatch> div_dispatch;
+ CComPtr<IDispatch> div1_dispatch;
HRESULT hr = document_accessible->get_accChild(CreateI4Variant(1),
- &div_dispatch);
+ &div1_dispatch);
EXPECT_EQ(hr, S_OK);
- CComQIPtr<IAccessible> div_accessible(div_dispatch);
- hr = div_accessible->accDoDefaultAction(CreateI4Variant(CHILDID_SELF));
+ CComQIPtr<IAccessible> div1_accessible(div1_dispatch);
+ hr = div1_accessible->accDoDefaultAction(CreateI4Variant(CHILDID_SELF));
EXPECT_EQ(hr, S_OK);
ui_test_utils::WaitForNotification(
NotificationType::RENDER_VIEW_HOST_ACCESSIBILITY_TREE_UPDATED);
@@ -342,5 +379,25 @@ IN_PROC_BROWSER_TEST_F(AccessibilityWinBrowserTest,
// Check that the accessibility tree of the browser has been updated.
text_checker.SetExpectedValue(L"new text");
document_checker.CheckAccessible(document_accessible);
+
+ // Perform the default action on the checkbox which marks it as checked.
+ CComPtr<IDispatch> div2_dispatch;
+ hr = document_accessible->get_accChild(CreateI4Variant(2), &div2_dispatch);
+ EXPECT_EQ(hr, S_OK);
+ CComQIPtr<IAccessible> div2_accessible(div2_dispatch);
+ CComPtr<IDispatch> checkbox_dispatch;
+ hr = div2_accessible->get_accChild(CreateI4Variant(1), &checkbox_dispatch);
+ EXPECT_EQ(hr, S_OK);
+ CComQIPtr<IAccessible> checkbox_accessible(checkbox_dispatch);
+ hr = checkbox_accessible->accDoDefaultAction(CreateI4Variant(CHILDID_SELF));
+ EXPECT_EQ(hr, S_OK);
+ ui_test_utils::WaitForNotification(
+ NotificationType::RENDER_VIEW_HOST_ACCESSIBILITY_TREE_UPDATED);
+
+ // Check that the accessibility tree of the browser has been updated.
+ checkbox_checker.SetExpectedState(
+ STATE_SYSTEM_CHECKED | STATE_SYSTEM_FOCUSABLE | STATE_SYSTEM_FOCUSED |
+ STATE_SYSTEM_READONLY);
+ document_checker.CheckAccessible(document_accessible);
}
} // namespace.
diff --git a/chrome/browser/browser_accessibility_manager_win.cc b/chrome/browser/browser_accessibility_manager_win.cc
index d17a0bd..dd2f397 100644
--- a/chrome/browser/browser_accessibility_manager_win.cc
+++ b/chrome/browser/browser_accessibility_manager_win.cc
@@ -114,18 +114,16 @@ void BrowserAccessibilityManager::OnAccessibilityFocusChange(int renderer_id) {
}
void BrowserAccessibilityManager::OnAccessibilityObjectStateChange(
- int renderer_id) {
- base::hash_map<int, LONG>::iterator iter =
- renderer_id_to_child_id_map_.find(renderer_id);
- if (iter == renderer_id_to_child_id_map_.end())
+ const webkit_glue::WebAccessibility& acc_obj) {
+ BrowserAccessibility* new_browser_acc = UpdateTree(acc_obj);
+ if (!new_browser_acc)
return;
- LONG child_id = iter->second;
- ::NotifyWinEvent(
+ NotifyWinEvent(
EVENT_OBJECT_STATECHANGE,
parent_hwnd_,
OBJID_CLIENT,
- child_id);
+ new_browser_acc->child_id());
}
void BrowserAccessibilityManager::OnAccessibilityObjectChildrenChange(
@@ -136,23 +134,48 @@ void BrowserAccessibilityManager::OnAccessibilityObjectChildrenChange(
// For each accessibility object child change.
for (unsigned int index = 0; index < acc_changes.size(); index++) {
const webkit_glue::WebAccessibility& acc_obj = acc_changes[index];
- base::hash_map<int, LONG>::iterator iter =
- renderer_id_to_child_id_map_.find(acc_obj.id);
- if (iter == renderer_id_to_child_id_map_.end())
+ BrowserAccessibility* new_browser_acc = UpdateTree(acc_obj);
+ if (!new_browser_acc)
continue;
- LONG child_id = iter->second;
- BrowserAccessibility* old_browser_acc = GetFromChildID(child_id);
+ LONG child_id;
+ if (root_ != new_browser_acc) {
+ child_id = new_browser_acc->GetParent()->child_id();
+ } else {
+ child_id = CHILDID_SELF;
+ }
+
+ NotifyWinEvent(EVENT_OBJECT_REORDER, parent_hwnd_, OBJID_CLIENT, child_id);
+ }
+}
+
+BrowserAccessibility* BrowserAccessibilityManager::UpdateTree(
+ const webkit_glue::WebAccessibility& acc_obj) {
+ base::hash_map<int, LONG>::iterator iter =
+ renderer_id_to_child_id_map_.find(acc_obj.id);
+ if (iter == renderer_id_to_child_id_map_.end())
+ return NULL;
+
+ LONG child_id = iter->second;
+ BrowserAccessibility* old_browser_acc = GetFromChildID(child_id);
+
+ if (old_browser_acc->GetChildCount() == 0 && acc_obj.children.size() == 0) {
+ // Reinitialize the BrowserAccessibility if there are no children to update.
+ old_browser_acc->Initialize(
+ this,
+ old_browser_acc->GetParent(),
+ child_id,
+ old_browser_acc->index_in_parent(),
+ acc_obj);
+ return old_browser_acc;
+ } else {
BrowserAccessibility* new_browser_acc = CreateAccessibilityTree(
old_browser_acc->GetParent(),
child_id,
acc_obj,
old_browser_acc->index_in_parent());
- if (focus_->IsDescendantOf(old_browser_acc))
- focus_ = new_browser_acc;
-
if (old_browser_acc->GetParent()) {
old_browser_acc->GetParent()->ReplaceChild(
old_browser_acc,
@@ -165,13 +188,7 @@ void BrowserAccessibilityManager::OnAccessibilityObjectChildrenChange(
old_browser_acc->Release();
child_id_map_[child_id] = new_browser_acc;
- if (root_ != new_browser_acc) {
- NotifyWinEvent(
- EVENT_OBJECT_REORDER, parent_hwnd_, OBJID_CLIENT, child_id);
- } else {
- NotifyWinEvent(
- EVENT_OBJECT_REORDER, parent_hwnd_, OBJID_CLIENT, CHILDID_SELF);
- }
+ return new_browser_acc;
}
}
diff --git a/chrome/browser/browser_accessibility_manager_win.h b/chrome/browser/browser_accessibility_manager_win.h
index 838bbda..1588aad 100644
--- a/chrome/browser/browser_accessibility_manager_win.h
+++ b/chrome/browser/browser_accessibility_manager_win.h
@@ -79,11 +79,18 @@ class BrowserAccessibilityManager {
// Called when the renderer process has notified us of a focus, state,
// or children change. Send a notification to MSAA clients of the change.
void OnAccessibilityFocusChange(int acc_obj_id);
- void OnAccessibilityObjectStateChange(int acc_obj_id);
+ void OnAccessibilityObjectStateChange(
+ const webkit_glue::WebAccessibility& acc_obj);
void OnAccessibilityObjectChildrenChange(
const std::vector<webkit_glue::WebAccessibility>& acc_changes);
private:
+ // Update the accessibility tree with an updated WebAccessibility tree or
+ // subtree received from the renderer process. Returns the updated node or
+ // NULL if no node was updated.
+ BrowserAccessibility* UpdateTree(
+ const webkit_glue::WebAccessibility& acc_obj);
+
// Returns the next MSAA child id.
static LONG GetNextChildID();
diff --git a/chrome/browser/browser_accessibility_win.cc b/chrome/browser/browser_accessibility_win.cc
index 06a67a5..404d73e 100644
--- a/chrome/browser/browser_accessibility_win.cc
+++ b/chrome/browser/browser_accessibility_win.cc
@@ -28,6 +28,8 @@ void BrowserAccessibility::Initialize(
LONG child_id,
LONG index_in_parent,
const webkit_glue::WebAccessibility& src) {
+ DCHECK_EQ(children_.size(), 0U);
+
manager_ = manager;
parent_ = parent;
child_id_ = child_id;
@@ -90,6 +92,10 @@ BrowserAccessibility* BrowserAccessibility::GetParent() {
return parent_;
}
+uint32 BrowserAccessibility::GetChildCount() {
+ return children_.size();
+}
+
BrowserAccessibility* BrowserAccessibility::GetPreviousSibling() {
if (parent_ && index_in_parent_ > 0)
return parent_->children_[index_in_parent_ - 1];
diff --git a/chrome/browser/browser_accessibility_win.h b/chrome/browser/browser_accessibility_win.h
index 17f7107..c9135f3 100644
--- a/chrome/browser/browser_accessibility_win.h
+++ b/chrome/browser/browser_accessibility_win.h
@@ -71,6 +71,9 @@ class ATL_NO_VTABLE BrowserAccessibility
// root.
BrowserAccessibility* GetParent();
+ // Returns the number of children of this BrowserAccessibility object.
+ uint32 GetChildCount();
+
// Return the previous sibling of this object, or NULL if it's the first
// child of its parent.
BrowserAccessibility* GetPreviousSibling();
diff --git a/chrome/browser/renderer_host/render_view_host.cc b/chrome/browser/renderer_host/render_view_host.cc
index 9850ab1..e7565a7 100644
--- a/chrome/browser/renderer_host/render_view_host.cc
+++ b/chrome/browser/renderer_host/render_view_host.cc
@@ -1968,8 +1968,14 @@ void RenderViewHost::OnAccessibilityFocusChange(int acc_obj_id) {
view()->OnAccessibilityFocusChange(acc_obj_id);
}
-void RenderViewHost::OnAccessibilityObjectStateChange(int acc_obj_id) {
- view()->OnAccessibilityObjectStateChange(acc_obj_id);
+void RenderViewHost::OnAccessibilityObjectStateChange(
+ const webkit_glue::WebAccessibility& acc_obj) {
+ view()->OnAccessibilityObjectStateChange(acc_obj);
+
+ NotificationService::current()->Notify(
+ NotificationType::RENDER_VIEW_HOST_ACCESSIBILITY_TREE_UPDATED,
+ Source<RenderViewHost>(this),
+ NotificationService::NoDetails());
}
void RenderViewHost::OnAccessibilityObjectChildrenChange(
diff --git a/chrome/browser/renderer_host/render_view_host.h b/chrome/browser/renderer_host/render_view_host.h
index 1d92cd9..c971918 100644
--- a/chrome/browser/renderer_host/render_view_host.h
+++ b/chrome/browser/renderer_host/render_view_host.h
@@ -653,7 +653,8 @@ class RenderViewHost : public RenderWidgetHost {
void OnExtensionRequest(const ViewHostMsg_DomMessage_Params& params);
void OnExtensionPostMessage(int port_id, const std::string& message);
void OnAccessibilityFocusChange(int acc_obj_id);
- void OnAccessibilityObjectStateChange(int acc_obj_id);
+ void OnAccessibilityObjectStateChange(
+ const webkit_glue::WebAccessibility& acc_obj);
void OnAccessibilityObjectChildrenChange(
const std::vector<webkit_glue::WebAccessibility>& acc_changes);
void OnAccessibilityTree(const webkit_glue::WebAccessibility& tree);
diff --git a/chrome/browser/renderer_host/render_widget_host_view.h b/chrome/browser/renderer_host/render_widget_host_view.h
index d4c09de..8f64974 100644
--- a/chrome/browser/renderer_host/render_widget_host_view.h
+++ b/chrome/browser/renderer_host/render_widget_host_view.h
@@ -252,7 +252,8 @@ class RenderWidgetHostView {
virtual void UpdateAccessibilityTree(
const webkit_glue::WebAccessibility& tree) { }
virtual void OnAccessibilityFocusChange(int acc_obj_id) { }
- virtual void OnAccessibilityObjectStateChange(int acc_obj_id) { }
+ virtual void OnAccessibilityObjectStateChange(
+ const webkit_glue::WebAccessibility& acc_obj) { }
virtual void OnAccessibilityObjectChildrenChange(
const std::vector<webkit_glue::WebAccessibility>& acc_changes) { }
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 defdc61..04b984a 100644
--- a/chrome/browser/renderer_host/render_widget_host_view_win.cc
+++ b/chrome/browser/renderer_host/render_widget_host_view_win.cc
@@ -1504,10 +1504,10 @@ void RenderWidgetHostViewWin::OnAccessibilityFocusChange(int acc_obj_id) {
}
}
-void RenderWidgetHostViewWin::OnAccessibilityObjectStateChange(int acc_obj_id) {
+void RenderWidgetHostViewWin::OnAccessibilityObjectStateChange(
+ const webkit_glue::WebAccessibility& acc_obj) {
if (browser_accessibility_manager_.get()) {
- browser_accessibility_manager_->OnAccessibilityObjectStateChange(
- acc_obj_id);
+ browser_accessibility_manager_->OnAccessibilityObjectStateChange(acc_obj);
}
}
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 00f8c38..e9fc6e3 100644
--- a/chrome/browser/renderer_host/render_widget_host_view_win.h
+++ b/chrome/browser/renderer_host/render_widget_host_view_win.h
@@ -156,7 +156,8 @@ class RenderWidgetHostViewWin
virtual void UpdateAccessibilityTree(
const webkit_glue::WebAccessibility& tree);
virtual void OnAccessibilityFocusChange(int acc_obj_id);
- virtual void OnAccessibilityObjectStateChange(int acc_obj_id);
+ virtual void OnAccessibilityObjectStateChange(
+ const webkit_glue::WebAccessibility& acc_obj);
virtual void OnAccessibilityObjectChildrenChange(
const std::vector<webkit_glue::WebAccessibility>& acc_obj);
diff --git a/chrome/common/render_messages_internal.h b/chrome/common/render_messages_internal.h
index e7448d9..14b4b4a 100644
--- a/chrome/common/render_messages_internal.h
+++ b/chrome/common/render_messages_internal.h
@@ -2226,13 +2226,11 @@ IPC_BEGIN_MESSAGES(ViewHost)
IPC_MESSAGE_ROUTED1(ViewHostMsg_AccessibilityFocusChange,
int /* accessibility object id */)
- // Sent as a result of a state change in the renderer (if accessibility is
- // enabled), to notify the browser side. Takes the id of the accessibility
- // object that had a state change
+ // Sent by the renderer when the state of an accessibility node changes.
IPC_MESSAGE_ROUTED1(ViewHostMsg_AccessibilityObjectStateChange,
- int /* accessibility object id */)
+ webkit_glue::WebAccessibility)
- // Sent by the renderer as a result of a accessibility node children change.
+ // Sent by the renderer as a result of an accessibility node children change.
// The browser responds with a ViewMsg_AccessibilityObjectChildrenChange_ACK.
IPC_MESSAGE_ROUTED1(ViewHostMsg_AccessibilityObjectChildrenChange,
std::vector<webkit_glue::WebAccessibility>)
diff --git a/chrome/renderer/render_view.cc b/chrome/renderer/render_view.cc
index 287b44c..46423df 100644
--- a/chrome/renderer/render_view.cc
+++ b/chrome/renderer/render_view.cc
@@ -177,6 +177,7 @@ using webkit_glue::ImageResourceFetcher;
using webkit_glue::PasswordForm;
using webkit_glue::PasswordFormDomManager;
using webkit_glue::SiteIsolationMetrics;
+using webkit_glue::WebAccessibility;
using WebKit::WebAccessibilityCache;
using WebKit::WebAccessibilityObject;
using WebKit::WebApplicationCacheHost;
@@ -4307,7 +4308,7 @@ void RenderView::OnGetAccessibilityTree() {
accessibility_changes_.clear();
WebAccessibilityObject src_tree = webview()->accessibilityObject();
- webkit_glue::WebAccessibility dst_tree(src_tree, accessibility_.get());
+ WebAccessibility dst_tree(src_tree, accessibility_.get());
Send(new ViewHostMsg_AccessibilityTree(routing_id_, dst_tree));
}
@@ -5334,43 +5335,26 @@ void RenderView::focusAccessibilityObject(
}
void RenderView::didChangeAccessibilityObjectState(
- const WebKit::WebAccessibilityObject& acc_obj) {
-#if defined(OS_WIN)
- // TODO(dglazkov): Current logic implies that a state change can only be made
- // after at least one call to RenderView::OnGetAccessibilityInfo, which is
- // where accessibility is initialized. We should determine whether that's
- // right.
+ const WebAccessibilityObject& acc_obj) {
if (!accessibility_.get())
return;
- // Retrieve the accessibility object id of the AccessibilityObject.
- int acc_obj_id = accessibility_->addOrGetId(acc_obj);
-
- // If id is valid, alert the browser side that an accessibility object state
- // change occurred.
- if (acc_obj_id >= 0)
- Send(new ViewHostMsg_AccessibilityObjectStateChange(routing_id_,
- acc_obj_id));
-
-#else // defined(OS_WIN)
- // TODO(port): accessibility not yet implemented
- NOTIMPLEMENTED();
-#endif
+ Send(new ViewHostMsg_AccessibilityObjectStateChange(
+ routing_id_, WebAccessibility(acc_obj, accessibility_.get())));
}
void RenderView::didChangeAccessibilityObjectChildren(
- const WebKit::WebAccessibilityObject& acc_obj) {
+ const WebAccessibilityObject& acc_obj) {
if (!accessibility_.get())
return;
if (accessibility_changes_.empty()) {
Send(new ViewHostMsg_AccessibilityObjectChildrenChange(
- routing_id_,
- std::vector<webkit_glue::WebAccessibility>()));
+ routing_id_, std::vector<WebAccessibility>()));
}
accessibility_changes_.push_back(
- webkit_glue::WebAccessibility(acc_obj, accessibility_.get()));
+ WebAccessibility(acc_obj, accessibility_.get()));
}
void RenderView::Print(WebFrame* frame, bool script_initiated) {