summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--views/accessibility/accessibility_types.h33
-rw-r--r--views/accessibility/view_accessibility.cc35
-rw-r--r--views/controls/button/checkbox.cc7
-rw-r--r--views/controls/button/checkbox.h1
-rw-r--r--views/controls/label.cc2
-rw-r--r--views/controls/label_unittest.cc4
-rw-r--r--views/controls/menu/menu_item_view.cc6
-rw-r--r--views/controls/menu/menu_item_view.h1
-rw-r--r--views/controls/menu/menu_scroll_view_container.cc7
-rw-r--r--views/controls/menu/menu_scroll_view_container.h3
-rw-r--r--views/controls/progress_bar.cc6
-rw-r--r--views/controls/progress_bar_unittest.cc4
-rw-r--r--views/controls/scrollbar/scroll_bar.cc11
-rw-r--r--views/controls/scrollbar/scroll_bar.h7
-rw-r--r--views/controls/separator.cc10
-rw-r--r--views/controls/separator.h4
-rw-r--r--views/controls/tabbed_pane/tabbed_pane.cc9
-rw-r--r--views/controls/tabbed_pane/tabbed_pane.h3
-rw-r--r--views/controls/textfield/textfield.cc13
-rw-r--r--views/controls/tree/tree_view.cc14
-rw-r--r--views/controls/tree/tree_view.h6
21 files changed, 141 insertions, 45 deletions
diff --git a/views/accessibility/accessibility_types.h b/views/accessibility/accessibility_types.h
index 79b9e03..83c7aa7 100644
--- a/views/accessibility/accessibility_types.h
+++ b/views/accessibility/accessibility_types.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2006-2009 The Chromium Authors. All rights reserved.
+// Copyright (c) 2010 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -15,6 +15,21 @@
////////////////////////////////////////////////////////////////////////////////
class AccessibilityTypes {
public:
+
+
+ // This defines states of the supported accessibility roles in our
+ // Views (e.g. used in View::GetAccessibleState). Any interface using roles
+ // must provide a conversion to its own roles (see e.g.
+ // ViewAccessibility::get_accState and ViewAccessibility::MSAAState).
+ typedef uint32 State;
+ enum StateFlag {
+ STATE_CHECKED = 1 << 0,
+ STATE_HASPOPUP = 1 << 1,
+ STATE_LINKED = 1 << 2,
+ STATE_PROTECTED = 1 << 3,
+ STATE_READONLY = 1 << 4
+ };
+
// This defines an enumeration of the supported accessibility roles in our
// Views (e.g. used in View::GetAccessibleRole). Any interface using roles
// must provide a conversion to its own roles (see e.g.
@@ -29,26 +44,24 @@ class AccessibilityTypes {
ROLE_GRAPHIC,
ROLE_GROUPING,
ROLE_LINK,
+ ROLE_MENUITEM,
+ ROLE_MENUPOPUP,
+ ROLE_OUTLINE,
+ ROLE_OUTLINEITEM,
ROLE_PAGETAB,
ROLE_PAGETABLIST,
ROLE_PANE,
+ ROLE_PROGRESSBAR,
ROLE_PUSHBUTTON,
+ ROLE_SCROLLBAR,
ROLE_SEPARATOR,
+ ROLE_STATICTEXT,
ROLE_TEXT,
ROLE_TITLEBAR,
ROLE_TOOLBAR,
ROLE_WINDOW
};
- // This defines an enumeration of the supported accessibility roles in our
- // Views (e.g. used in View::GetAccessibleState). Any interface using roles
- // must provide a conversion to its own roles (see e.g.
- // ViewAccessibility::get_accState and ViewAccessibility::MSAAState).
- enum State {
- STATE_HASPOPUP,
- STATE_READONLY
- };
-
private:
// Do not instantiate this class.
AccessibilityTypes() {}
diff --git a/views/accessibility/view_accessibility.cc b/views/accessibility/view_accessibility.cc
index 9d8861a..f9dc5c6 100644
--- a/views/accessibility/view_accessibility.cc
+++ b/views/accessibility/view_accessibility.cc
@@ -717,16 +717,30 @@ int32 ViewAccessibility::MSAARole(AccessibilityTypes::Role role) {
return ROLE_SYSTEM_GROUPING;
case AccessibilityTypes::ROLE_LINK:
return ROLE_SYSTEM_LINK;
+ case AccessibilityTypes::ROLE_MENUITEM:
+ return ROLE_SYSTEM_MENUITEM;
+ case AccessibilityTypes::ROLE_MENUPOPUP:
+ return ROLE_SYSTEM_MENUPOPUP;
+ case AccessibilityTypes::ROLE_OUTLINE:
+ return ROLE_SYSTEM_OUTLINE;
+ case AccessibilityTypes::ROLE_OUTLINEITEM:
+ return ROLE_SYSTEM_OUTLINEITEM;
case AccessibilityTypes::ROLE_PAGETAB:
return ROLE_SYSTEM_PAGETAB;
case AccessibilityTypes::ROLE_PAGETABLIST:
return ROLE_SYSTEM_PAGETABLIST;
case AccessibilityTypes::ROLE_PANE:
return ROLE_SYSTEM_PANE;
+ case AccessibilityTypes::ROLE_PROGRESSBAR:
+ return ROLE_SYSTEM_PROGRESSBAR;
case AccessibilityTypes::ROLE_PUSHBUTTON:
return ROLE_SYSTEM_PUSHBUTTON;
+ case AccessibilityTypes::ROLE_SCROLLBAR:
+ return ROLE_SYSTEM_SCROLLBAR;
case AccessibilityTypes::ROLE_SEPARATOR:
return ROLE_SYSTEM_SEPARATOR;
+ case AccessibilityTypes::ROLE_STATICTEXT:
+ return ROLE_SYSTEM_STATICTEXT;
case AccessibilityTypes::ROLE_TEXT:
return ROLE_SYSTEM_TEXT;
case AccessibilityTypes::ROLE_TITLEBAR:
@@ -743,15 +757,18 @@ int32 ViewAccessibility::MSAARole(AccessibilityTypes::Role role) {
}
int32 ViewAccessibility::MSAAState(AccessibilityTypes::State state) {
- switch (state) {
- case AccessibilityTypes::STATE_HASPOPUP :
- return STATE_SYSTEM_HASPOPUP;
- case AccessibilityTypes::STATE_READONLY :
- return STATE_SYSTEM_READONLY;
- default :
- // No default state in MSAA.
- return 0;
- }
+ int32 msaa_state = 0;
+ if (state & AccessibilityTypes::STATE_CHECKED)
+ msaa_state |= STATE_SYSTEM_CHECKED;
+ if (state & AccessibilityTypes::STATE_HASPOPUP)
+ msaa_state |= STATE_SYSTEM_HASPOPUP;
+ if (state & AccessibilityTypes::STATE_LINKED)
+ msaa_state |= STATE_SYSTEM_LINKED;
+ if (state & AccessibilityTypes::STATE_PROTECTED)
+ msaa_state |= STATE_SYSTEM_PROTECTED;
+ if (state & AccessibilityTypes::STATE_READONLY)
+ msaa_state |= STATE_SYSTEM_READONLY;
+ return msaa_state;
}
// IAccessible functions not supported.
diff --git a/views/controls/button/checkbox.cc b/views/controls/button/checkbox.cc
index 3b0b804..1fcbea3 100644
--- a/views/controls/button/checkbox.cc
+++ b/views/controls/button/checkbox.cc
@@ -160,6 +160,13 @@ bool Checkbox::GetAccessibleRole(AccessibilityTypes::Role* role) {
return true;
}
+bool Checkbox::GetAccessibleState(AccessibilityTypes::State* state) {
+ DCHECK(state);
+
+ *state = checked() ? AccessibilityTypes::STATE_CHECKED : 0;
+ return true;
+}
+
std::string Checkbox::GetClassName() const {
return kViewClassName;
}
diff --git a/views/controls/button/checkbox.h b/views/controls/button/checkbox.h
index a579628..bea240a 100644
--- a/views/controls/button/checkbox.h
+++ b/views/controls/button/checkbox.h
@@ -59,6 +59,7 @@ class Checkbox : public NativeButton {
// Accessibility accessors, overridden from View.
virtual bool GetAccessibleRole(AccessibilityTypes::Role* role);
+ virtual bool GetAccessibleState(AccessibilityTypes::State* state);
// Overridden from NativeButton:
virtual void SetLabel(const std::wstring& label);
diff --git a/views/controls/label.cc b/views/controls/label.cc
index 19060f6..89e9a572 100644
--- a/views/controls/label.cc
+++ b/views/controls/label.cc
@@ -248,7 +248,7 @@ void Label::SizeToFit(int max_width) {
bool Label::GetAccessibleRole(AccessibilityTypes::Role* role) {
DCHECK(role);
- *role = AccessibilityTypes::ROLE_TEXT;
+ *role = AccessibilityTypes::ROLE_STATICTEXT;
return true;
}
diff --git a/views/controls/label_unittest.cc b/views/controls/label_unittest.cc
index 5ea20b3..2766643 100644
--- a/views/controls/label_unittest.cc
+++ b/views/controls/label_unittest.cc
@@ -161,7 +161,7 @@ TEST(LabelTest, Accessibility) {
AccessibilityTypes::Role role;
EXPECT_TRUE(label.GetAccessibleRole(&role));
- EXPECT_EQ(AccessibilityTypes::ROLE_TEXT, role);
+ EXPECT_EQ(AccessibilityTypes::ROLE_STATICTEXT, role);
std::wstring name;
EXPECT_TRUE(label.GetAccessibleName(&name));
@@ -169,7 +169,7 @@ TEST(LabelTest, Accessibility) {
AccessibilityTypes::State state;
EXPECT_TRUE(label.GetAccessibleState(&state));
- EXPECT_EQ(AccessibilityTypes::STATE_READONLY, state);
+ EXPECT_TRUE(AccessibilityTypes::STATE_READONLY & state);
}
TEST(LabelTest, SingleLineSizing) {
diff --git a/views/controls/menu/menu_item_view.cc b/views/controls/menu/menu_item_view.cc
index 62243e7..79f4306 100644
--- a/views/controls/menu/menu_item_view.cc
+++ b/views/controls/menu/menu_item_view.cc
@@ -78,6 +78,12 @@ bool MenuItemView::GetTooltipText(const gfx::Point& p, std::wstring* tooltip) {
return !tooltip_.empty();
}
+bool MenuItemView::GetAccessibleRole(AccessibilityTypes::Role* role) {
+ DCHECK(role);
+ *role = AccessibilityTypes::ROLE_MENUITEM;
+ return true;
+}
+
void MenuItemView::RunMenuAt(gfx::NativeWindow parent,
MenuButton* button,
const gfx::Rect& bounds,
diff --git a/views/controls/menu/menu_item_view.h b/views/controls/menu/menu_item_view.h
index b342356..db06bf1 100644
--- a/views/controls/menu/menu_item_view.h
+++ b/views/controls/menu/menu_item_view.h
@@ -73,6 +73,7 @@ class MenuItemView : public View {
// Overridden from View:
virtual bool GetTooltipText(const gfx::Point& p, std::wstring* tooltip);
+ virtual bool GetAccessibleRole(AccessibilityTypes::Role* role);
// Returns the preferred height of menu items. This is only valid when the
// menu is about to be shown.
diff --git a/views/controls/menu/menu_scroll_view_container.cc b/views/controls/menu/menu_scroll_view_container.cc
index efd47ca..a80424e 100644
--- a/views/controls/menu/menu_scroll_view_container.cc
+++ b/views/controls/menu/menu_scroll_view_container.cc
@@ -231,4 +231,11 @@ gfx::Size MenuScrollViewContainer::GetPreferredSize() {
return prefsize;
}
+bool MenuScrollViewContainer::GetAccessibleRole(
+ AccessibilityTypes::Role* role) {
+ DCHECK(role);
+ *role = AccessibilityTypes::ROLE_MENUPOPUP;
+ return true;
+}
+
} // namespace views
diff --git a/views/controls/menu/menu_scroll_view_container.h b/views/controls/menu/menu_scroll_view_container.h
index a13805a..41c7540 100644
--- a/views/controls/menu/menu_scroll_view_container.h
+++ b/views/controls/menu/menu_scroll_view_container.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2009 The Chromium Authors. All rights reserved.
+// Copyright (c) 2010 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -28,6 +28,7 @@ class MenuScrollViewContainer : public View {
virtual void DidChangeBounds(const gfx::Rect& previous,
const gfx::Rect& current);
virtual gfx::Size GetPreferredSize();
+ virtual bool GetAccessibleRole(AccessibilityTypes::Role* role);
private:
class MenuScrollView;
diff --git a/views/controls/progress_bar.cc b/views/controls/progress_bar.cc
index de9cd59..19f10c5 100644
--- a/views/controls/progress_bar.cc
+++ b/views/controls/progress_bar.cc
@@ -187,16 +187,12 @@ void ProgressBar::SetEnabled(bool enabled) {
bool ProgressBar::GetAccessibleRole(AccessibilityTypes::Role* role) {
DCHECK(role);
- if (role == NULL)
- return false;
- *role = AccessibilityTypes::ROLE_TEXT;
+ *role = AccessibilityTypes::ROLE_PROGRESSBAR;
return true;
}
bool ProgressBar::GetAccessibleState(AccessibilityTypes::State* state) {
DCHECK(state);
- if (state == NULL)
- return false;
*state = AccessibilityTypes::STATE_READONLY;
return true;
}
diff --git a/views/controls/progress_bar_unittest.cc b/views/controls/progress_bar_unittest.cc
index 2966d56..2912744 100644
--- a/views/controls/progress_bar_unittest.cc
+++ b/views/controls/progress_bar_unittest.cc
@@ -50,7 +50,7 @@ TEST(ProgressBarTest, Accessibility) {
AccessibilityTypes::Role role;
EXPECT_TRUE(bar.GetAccessibleRole(&role));
- EXPECT_EQ(AccessibilityTypes::ROLE_TEXT, role);
+ EXPECT_EQ(AccessibilityTypes::ROLE_PROGRESSBAR, role);
std::wstring name;
EXPECT_FALSE(bar.GetAccessibleName(&name));
@@ -63,7 +63,7 @@ TEST(ProgressBarTest, Accessibility) {
AccessibilityTypes::State state;
EXPECT_TRUE(bar.GetAccessibleState(&state));
- EXPECT_EQ(AccessibilityTypes::STATE_READONLY, state);
+ EXPECT_TRUE(AccessibilityTypes::STATE_READONLY & state);
}
} // namespace views
diff --git a/views/controls/scrollbar/scroll_bar.cc b/views/controls/scrollbar/scroll_bar.cc
index a475c44..9a7a9e3 100644
--- a/views/controls/scrollbar/scroll_bar.cc
+++ b/views/controls/scrollbar/scroll_bar.cc
@@ -1,9 +1,11 @@
-// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
+// Copyright (c) 2010 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "views/controls/scrollbar/scroll_bar.h"
+#include "base/logging.h"
+
namespace views {
/////////////////////////////////////////////////////////////////////////////
@@ -20,6 +22,13 @@ ScrollBar::ScrollBar(bool is_horiz) : is_horiz_(is_horiz),
ScrollBar::~ScrollBar() {
}
+bool ScrollBar::GetAccessibleRole(AccessibilityTypes::Role* role) {
+ DCHECK(role);
+
+ *role = AccessibilityTypes::ROLE_SCROLLBAR;
+ return true;
+}
+
bool ScrollBar::IsHorizontal() const {
return is_horiz_;
}
diff --git a/views/controls/scrollbar/scroll_bar.h b/views/controls/scrollbar/scroll_bar.h
index 9354fcb..a4203d4 100644
--- a/views/controls/scrollbar/scroll_bar.h
+++ b/views/controls/scrollbar/scroll_bar.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
+// Copyright (c) 2010 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -58,6 +58,9 @@ class ScrollBar : public View {
public:
virtual ~ScrollBar();
+ // Overridden from View:
+ virtual bool GetAccessibleRole(AccessibilityTypes::Role* role);
+
// Return whether this scrollbar is horizontal
bool IsHorizontal() const;
@@ -99,5 +102,5 @@ class ScrollBar : public View {
} // namespace views
-#endif // #ifndef VIEWS_CONTROLS_SCROLLBAR_SCROLLBAR_H_
+#endif // VIEWS_CONTROLS_SCROLLBAR_SCROLLBAR_H_
diff --git a/views/controls/separator.cc b/views/controls/separator.cc
index dad3578..cd1deeb 100644
--- a/views/controls/separator.cc
+++ b/views/controls/separator.cc
@@ -1,9 +1,10 @@
-// Copyright (c) 2006-2009 The Chromium Authors. All rights reserved.
+// Copyright (c) 2010 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "views/controls/separator.h"
+#include "base/logging.h"
#if defined(OS_LINUX)
#include "views/controls/native_control_gtk.h"
#elif defined(OS_WIN)
@@ -91,6 +92,13 @@ std::string Separator::GetClassName() const {
return kViewClassName;
}
+bool Separator::GetAccessibleRole(AccessibilityTypes::Role* role) {
+ DCHECK(role);
+
+ *role = AccessibilityTypes::ROLE_SEPARATOR;
+ return true;
+}
+
////////////////////////////////////////////////////////////////////////////////
// Separator, private:
diff --git a/views/controls/separator.h b/views/controls/separator.h
index 0988d62..823ebb3 100644
--- a/views/controls/separator.h
+++ b/views/controls/separator.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
+// Copyright (c) 2010 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -25,6 +25,8 @@ class Separator : public View {
// Overridden from View:
virtual void Layout();
virtual gfx::Size GetPreferredSize();
+ virtual bool GetAccessibleRole(AccessibilityTypes::Role* role);
+
protected:
virtual void ViewHierarchyChanged(bool is_add, View* parent,
View* child);
diff --git a/views/controls/tabbed_pane/tabbed_pane.cc b/views/controls/tabbed_pane/tabbed_pane.cc
index 6e649ee..ec324d4 100644
--- a/views/controls/tabbed_pane/tabbed_pane.cc
+++ b/views/controls/tabbed_pane/tabbed_pane.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
+// Copyright (c) 2010 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -121,4 +121,11 @@ void TabbedPane::PaintFocusBorder(gfx::Canvas* canvas) {
View::PaintFocusBorder(canvas);
}
+bool TabbedPane::GetAccessibleRole(AccessibilityTypes::Role* role) {
+ DCHECK(role);
+
+ *role = AccessibilityTypes::ROLE_PAGETABLIST;
+ return true;
+}
+
} // namespace views
diff --git a/views/controls/tabbed_pane/tabbed_pane.h b/views/controls/tabbed_pane/tabbed_pane.h
index e5793be..abbb9fa 100644
--- a/views/controls/tabbed_pane/tabbed_pane.h
+++ b/views/controls/tabbed_pane/tabbed_pane.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2009 The Chromium Authors. All rights reserved.
+// Copyright (c) 2010 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -71,6 +71,7 @@ class TabbedPane : public View {
virtual void Layout();
virtual void Focus();
virtual void PaintFocusBorder(gfx::Canvas* canvas);
+ virtual bool GetAccessibleRole(AccessibilityTypes::Role* role);
protected:
// The object that actually implements the tabbed-pane.
diff --git a/views/controls/textfield/textfield.cc b/views/controls/textfield/textfield.cc
index 54e34dd..11dceba 100644
--- a/views/controls/textfield/textfield.cc
+++ b/views/controls/textfield/textfield.cc
@@ -253,8 +253,6 @@ void Textfield::PaintFocusBorder(gfx::Canvas* canvas) {
bool Textfield::GetAccessibleRole(AccessibilityTypes::Role* role) {
DCHECK(role);
- if (!role)
- return false;
*role = AccessibilityTypes::ROLE_TEXT;
return true;
@@ -262,17 +260,18 @@ bool Textfield::GetAccessibleRole(AccessibilityTypes::Role* role) {
bool Textfield::GetAccessibleState(AccessibilityTypes::State* state) {
DCHECK(state);
- if (!state)
- return false;
+
+ *state = 0;
- *state = AccessibilityTypes::STATE_READONLY;
+ if (read_only())
+ *state |= AccessibilityTypes::STATE_READONLY;
+ if (IsPassword())
+ *state |= AccessibilityTypes::STATE_PROTECTED;
return true;
}
bool Textfield::GetAccessibleValue(std::wstring* value) {
DCHECK(value);
- if (!value)
- return false;
if (!text_.empty()) {
*value = UTF16ToWide(text_);
diff --git a/views/controls/tree/tree_view.cc b/views/controls/tree/tree_view.cc
index f5afcce..e5587b9 100644
--- a/views/controls/tree/tree_view.cc
+++ b/views/controls/tree/tree_view.cc
@@ -55,6 +55,20 @@ TreeView::~TreeView() {
ImageList_Destroy(image_list_);
}
+bool TreeView::GetAccessibleRole(AccessibilityTypes::Role* role) {
+ DCHECK(role);
+
+ *role = AccessibilityTypes::ROLE_OUTLINE;
+ return true;
+}
+
+bool TreeView::GetAccessibleState(AccessibilityTypes::State* state) {
+ DCHECK(state);
+
+ *state = AccessibilityTypes::STATE_READONLY;
+ return true;
+}
+
void TreeView::SetModel(TreeModel* model) {
if (model == model_)
return;
diff --git a/views/controls/tree/tree_view.h b/views/controls/tree/tree_view.h
index cc2c8a1..177fc40 100644
--- a/views/controls/tree/tree_view.h
+++ b/views/controls/tree/tree_view.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
+// Copyright (c) 2010 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -78,6 +78,10 @@ class TreeView : public NativeControl, TreeModelObserver {
lines_at_root_ = lines_at_root;
}
+ // Overridden from View:
+ virtual bool GetAccessibleRole(AccessibilityTypes::Role* role);
+ virtual bool GetAccessibleState(AccessibilityTypes::State* state);
+
// Edits the specified node. This cancels the current edit and expands
// all parents of node.
void StartEditing(TreeModelNode* node);