summaryrefslogtreecommitdiffstats
path: root/chrome/common
diff options
context:
space:
mode:
authordmazzoni@chromium.org <dmazzoni@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-05-21 16:54:36 +0000
committerdmazzoni@chromium.org <dmazzoni@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-05-21 16:54:36 +0000
commitaef9284447e6e63d30448481e8cdf01ba1ecdf22 (patch)
tree994a27fd137aac90b92c81cc77880387be52dbd0 /chrome/common
parent8ddbd66ab581984c87b8b52465c96e349ebcfb5f (diff)
downloadchromium_src-aef9284447e6e63d30448481e8cdf01ba1ecdf22.zip
chromium_src-aef9284447e6e63d30448481e8cdf01ba1ecdf22.tar.gz
chromium_src-aef9284447e6e63d30448481e8cdf01ba1ecdf22.tar.bz2
Windows accessibility improvements: 1. All WebKit roles are now passed to the
browser and then converted to MSAA roles - this is both because the logic needs to be more complicated, and so we can support Mac accessibility, too. 2. The serializable object used to pass accessibility info from the renderer to the browser now uses a map for uncommon attributes, rather than having a bunch of fields that are almost always empty. 3. Handles the accSelect method with TAKE_FOCUS, allowing assistive technology to set focus to a particular control. 4. Implements several other IAccessible2 interfaces. BUG=25564 BUG=13291 TEST=None Review URL: http://codereview.chromium.org/2121004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@47922 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/common')
-rw-r--r--chrome/common/render_messages.h20
-rw-r--r--chrome/common/render_messages_internal.h10
-rw-r--r--chrome/common/render_messages_unittest.cc20
3 files changed, 22 insertions, 28 deletions
diff --git a/chrome/common/render_messages.h b/chrome/common/render_messages.h
index ab0dcc1..065fde0 100644
--- a/chrome/common/render_messages.h
+++ b/chrome/common/render_messages.h
@@ -2598,23 +2598,16 @@ struct ParamTraits<webkit_glue::WebAccessibility> {
WriteParam(m, p.id);
WriteParam(m, p.name);
WriteParam(m, p.value);
- WriteParam(m, p.action);
- WriteParam(m, p.description);
- WriteParam(m, p.help);
- WriteParam(m, p.shortcut);
WriteParam(m, static_cast<int>(p.role));
WriteParam(m, static_cast<int>(p.state));
WriteParam(m, p.location);
+ WriteParam(m, p.attributes);
WriteParam(m, p.children);
}
static bool Read(const Message* m, void** iter, param_type* p) {
bool ret = ReadParam(m, iter, &p->id);
ret = ret && ReadParam(m, iter, &p->name);
ret = ret && ReadParam(m, iter, &p->value);
- ret = ret && ReadParam(m, iter, &p->action);
- ret = ret && ReadParam(m, iter, &p->description);
- ret = ret && ReadParam(m, iter, &p->help);
- ret = ret && ReadParam(m, iter, &p->shortcut);
int role = -1;
ret = ret && ReadParam(m, iter, &role);
if (role >= webkit_glue::WebAccessibility::ROLE_NONE &&
@@ -2627,6 +2620,7 @@ struct ParamTraits<webkit_glue::WebAccessibility> {
ret = ret && ReadParam(m, iter, &state);
p->state = static_cast<webkit_glue::WebAccessibility::State>(state);
ret = ret && ReadParam(m, iter, &p->location);
+ ret = ret && ReadParam(m, iter, &p->attributes);
ret = ret && ReadParam(m, iter, &p->children);
return ret;
}
@@ -2638,20 +2632,14 @@ struct ParamTraits<webkit_glue::WebAccessibility> {
l->append(L", ");
LogParam(p.value, l);
l->append(L", ");
- LogParam(p.action, l);
- l->append(L", ");
- LogParam(p.description, l);
- l->append(L", ");
- LogParam(p.help, l);
- l->append(L", ");
- LogParam(p.shortcut, l);
- l->append(L", ");
LogParam(static_cast<int>(p.role), l);
l->append(L", ");
LogParam(static_cast<int>(p.state), l);
l->append(L", ");
LogParam(p.location, l);
l->append(L", ");
+ LogParam(p.attributes, l);
+ l->append(L", ");
LogParam(p.children, l);
l->append(L")");
}
diff --git a/chrome/common/render_messages_internal.h b/chrome/common/render_messages_internal.h
index c7fa4de..d350263 100644
--- a/chrome/common/render_messages_internal.h
+++ b/chrome/common/render_messages_internal.h
@@ -946,6 +946,16 @@ IPC_BEGIN_MESSAGES(View)
// Request a tree of Accessibility data from the render process.
IPC_MESSAGE_ROUTED0(ViewMsg_GetAccessibilityTree)
+
+ // Relay a request from assistive technology to set focus to a given node.
+ IPC_MESSAGE_ROUTED1(ViewMsg_SetAccessibilityFocus,
+ int /* object id */)
+
+ // Relay a request from assistive technology to perform the default action
+ // on a given node.
+ IPC_MESSAGE_ROUTED1(ViewMsg_AccessibilityDoDefaultAction,
+ int /* object id */)
+
IPC_END_MESSAGES(View)
diff --git a/chrome/common/render_messages_unittest.cc b/chrome/common/render_messages_unittest.cc
index 0dc3be8..30b1446 100644
--- a/chrome/common/render_messages_unittest.cc
+++ b/chrome/common/render_messages_unittest.cc
@@ -14,11 +14,9 @@ TEST(RenderMessagesUnittest, WebAccessibility) {
input.id = 123;
input.name = ASCIIToUTF16("name");
input.value = ASCIIToUTF16("value");
- input.action = ASCIIToUTF16("action");
- input.description = ASCIIToUTF16("description");
- input.help = ASCIIToUTF16("help");
- input.shortcut = ASCIIToUTF16("shortcut");
- input.role = webkit_glue::WebAccessibility::ROLE_CHECKBUTTON;
+ string16 help = ASCIIToUTF16("help");
+ input.attributes[webkit_glue::WebAccessibility::ATTR_HELP] = help;
+ input.role = webkit_glue::WebAccessibility::ROLE_CHECKBOX;
input.state =
(1 << webkit_glue::WebAccessibility::STATE_CHECKED) |
(1 << webkit_glue::WebAccessibility::STATE_FOCUSED);
@@ -33,10 +31,8 @@ TEST(RenderMessagesUnittest, WebAccessibility) {
EXPECT_EQ(input.id, output.id);
EXPECT_EQ(input.name, output.name);
EXPECT_EQ(input.value, output.value);
- EXPECT_EQ(input.action, output.action);
- EXPECT_EQ(input.description, output.description);
- EXPECT_EQ(input.help, output.help);
- EXPECT_EQ(input.shortcut, output.shortcut);
+ EXPECT_EQ(static_cast<size_t>(1), input.attributes.size());
+ EXPECT_EQ(help, input.attributes[webkit_glue::WebAccessibility::ATTR_HELP]);
EXPECT_EQ(input.role, output.role);
EXPECT_EQ(input.state, output.state);
EXPECT_EQ(input.location, output.location);
@@ -52,13 +48,13 @@ TEST(RenderMessagesUnittest, WebAccessibility) {
webkit_glue::WebAccessibility outer;
outer.id = 1000;
outer.name = ASCIIToUTF16("outer_name");
- outer.role = webkit_glue::WebAccessibility::ROLE_GROUPING;
+ outer.role = webkit_glue::WebAccessibility::ROLE_GROUP;
outer.state = 0;
outer.location = WebKit::WebRect(0, 0, 1000, 1000);
webkit_glue::WebAccessibility inner1;
inner1.id = 1001;
inner1.name = ASCIIToUTF16("inner1_name");
- inner1.role = webkit_glue::WebAccessibility::ROLE_RADIOBUTTON;
+ inner1.role = webkit_glue::WebAccessibility::ROLE_RADIO_BUTTON;
inner1.state =
(1 << webkit_glue::WebAccessibility::STATE_CHECKED) |
(1 << webkit_glue::WebAccessibility::STATE_FOCUSED);
@@ -67,7 +63,7 @@ TEST(RenderMessagesUnittest, WebAccessibility) {
webkit_glue::WebAccessibility inner2;
inner2.id = 1002;
inner2.name = ASCIIToUTF16("inner2_name");
- inner2.role = webkit_glue::WebAccessibility::ROLE_RADIOBUTTON;
+ inner2.role = webkit_glue::WebAccessibility::ROLE_RADIO_BUTTON;
inner2.state = (1 << webkit_glue::WebAccessibility::STATE_CHECKED);
inner2.location = WebKit::WebRect(10, 500, 900, 400);
outer.children.push_back(inner2);