summaryrefslogtreecommitdiffstats
path: root/chrome/browser/views
diff options
context:
space:
mode:
authorklink@chromium.org <klink@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-07-23 23:43:25 +0000
committerklink@chromium.org <klink@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-07-23 23:43:25 +0000
commit759dd968342752e9b30710197898f777f1add3d8 (patch)
treefcbb6cba7299141e06c333228ea07670018d4212 /chrome/browser/views
parentf028f136dbb4b497355e1f03d925d9991ad00a19 (diff)
downloadchromium_src-759dd968342752e9b30710197898f777f1add3d8.zip
chromium_src-759dd968342752e9b30710197898f777f1add3d8.tar.gz
chromium_src-759dd968342752e9b30710197898f777f1add3d8.tar.bz2
Adds MSAA information to various (previously uncovered) bits of the UI, including Bookmark and Extensions infobars. This is to moving towards completing the hierarchy for the benefit of full screen reader support.
BUG=None. Test=None. Review URL: http://codereview.chromium.org/155446 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@21476 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/views')
-rw-r--r--chrome/browser/views/bookmark_bar_view.cc55
-rw-r--r--chrome/browser/views/bookmark_bar_view.h6
-rw-r--r--chrome/browser/views/browser_views_accessibility_browsertest.cc4
-rw-r--r--chrome/browser/views/extensions/extension_shelf.cc43
-rw-r--r--chrome/browser/views/extensions/extension_shelf.h6
-rw-r--r--chrome/browser/views/frame/browser_view.cc7
-rw-r--r--chrome/browser/views/infobars/infobar_container.cc21
-rw-r--r--chrome/browser/views/infobars/infobar_container.h7
-rw-r--r--chrome/browser/views/tab_contents/tab_contents_container.cc21
-rw-r--r--chrome/browser/views/tab_contents/tab_contents_container.h6
-rw-r--r--chrome/browser/views/tabs/tab_strip.cc3
11 files changed, 159 insertions, 20 deletions
diff --git a/chrome/browser/views/bookmark_bar_view.cc b/chrome/browser/views/bookmark_bar_view.cc
index 3d1838d..f4039282 100644
--- a/chrome/browser/views/bookmark_bar_view.cc
+++ b/chrome/browser/views/bookmark_bar_view.cc
@@ -341,7 +341,31 @@ class BookmarkBarView::ButtonSeparatorView : public views::View {
return gfx::Size(kSeparatorWidth, 1);
}
+ virtual bool GetAccessibleName(std::wstring* name) {
+ DCHECK(name);
+
+ if (!accessible_name_.empty()) {
+ name->assign(accessible_name_);
+ return true;
+ }
+ return false;
+ }
+
+ virtual bool GetAccessibleRole(AccessibilityTypes::Role* role) {
+ DCHECK(role);
+
+ *role = AccessibilityTypes::ROLE_SEPARATOR;
+ return true;
+ }
+
+ virtual void SetAccessibleName(const std::wstring& name) {
+ accessible_name_.assign(name);
+ }
+
private:
+ // Storage of strings needed for accessibility.
+ std::wstring accessible_name_;
+
DISALLOW_COPY_AND_ASSIGN(ButtonSeparatorView);
};
@@ -916,7 +940,28 @@ int BookmarkBarView::OnPerformDrop(const DropTargetEvent& event) {
parent_node = root;
}
return bookmark_utils::PerformBookmarkDrop(profile_, data, parent_node,
- index);
+ index);
+}
+
+bool BookmarkBarView::GetAccessibleName(std::wstring* name) {
+ DCHECK(name);
+
+ if (!accessible_name_.empty()) {
+ name->assign(accessible_name_);
+ return true;
+ }
+ return false;
+}
+
+bool BookmarkBarView::GetAccessibleRole(AccessibilityTypes::Role* role) {
+ DCHECK(role);
+
+ *role = AccessibilityTypes::ROLE_TOOLBAR;
+ return true;
+}
+
+void BookmarkBarView::SetAccessibleName(const std::wstring& name) {
+ accessible_name_.assign(name);
}
void BookmarkBarView::OnFullscreenToggled(bool fullscreen) {
@@ -993,6 +1038,8 @@ void BookmarkBarView::Init() {
AddChildView(overflow_button_);
bookmarks_separator_view_ = new ButtonSeparatorView();
+ bookmarks_separator_view_->SetAccessibleName(
+ l10n_util::GetString(IDS_ACCNAME_SEPARATOR));
AddChildView(bookmarks_separator_view_);
instructions_ = new views::Label(
@@ -1013,6 +1060,8 @@ MenuButton* BookmarkBarView::CreateOtherBookmarkedButton() {
button->SetIcon(GetGroupIcon());
button->SetContextMenuController(this);
button->set_tag(kOtherFolderButtonTag);
+ button->SetAccessibleName(
+ l10n_util::GetString(IDS_BOOMARK_BAR_OTHER_BOOKMARKED));
return button;
}
@@ -1032,6 +1081,9 @@ MenuButton* BookmarkBarView::CreateOverflowButton() {
// Make visible as necessary.
button->SetVisible(false);
+ // Set accessibility name.
+ button->SetAccessibleName(
+ l10n_util::GetString(IDS_ACCNAME_BOOKMARKS_CHEVRON));
return button;
}
@@ -1378,6 +1430,7 @@ views::View* BookmarkBarView::CreateBookmarkButton(const BookmarkNode* node) {
void BookmarkBarView::ConfigureButton(const BookmarkNode* node,
views::TextButton* button) {
button->SetText(node->GetTitle());
+ button->SetAccessibleName(node->GetTitle());
// We don't always have a theme provider (ui tests, for example).
if (GetThemeProvider()) {
diff --git a/chrome/browser/views/bookmark_bar_view.h b/chrome/browser/views/bookmark_bar_view.h
index a51f948..f1a9b30 100644
--- a/chrome/browser/views/bookmark_bar_view.h
+++ b/chrome/browser/views/bookmark_bar_view.h
@@ -98,6 +98,9 @@ class BookmarkBarView : public views::View,
virtual int OnDragUpdated(const views::DropTargetEvent& event);
virtual void OnDragExited();
virtual int OnPerformDrop(const views::DropTargetEvent& event);
+ virtual bool GetAccessibleName(std::wstring* name);
+ virtual bool GetAccessibleRole(AccessibilityTypes::Role* role);
+ virtual void SetAccessibleName(const std::wstring& name);
// Called when fullscreen mode toggles on or off; this affects our layout.
void OnFullscreenToggled(bool fullscreen);
@@ -431,6 +434,9 @@ class BookmarkBarView : public views::View,
// Background for extension toolstrips.
SkBitmap toolstrip_background_;
+ // Storage of strings needed for accessibility.
+ std::wstring accessible_name_;
+
DISALLOW_COPY_AND_ASSIGN(BookmarkBarView);
};
diff --git a/chrome/browser/views/browser_views_accessibility_browsertest.cc b/chrome/browser/views/browser_views_accessibility_browsertest.cc
index a9382e0..886d261 100644
--- a/chrome/browser/views/browser_views_accessibility_browsertest.cc
+++ b/chrome/browser/views/browser_views_accessibility_browsertest.cc
@@ -187,7 +187,7 @@ IN_PROC_BROWSER_TEST_F(BrowserViewsAccessibilityTest, TestPageMenuAccObj) {
// Verify Page menu button MSAA name and role.
TestViewAccessibilityObject(GetToolbarView()->GetViewByID(VIEW_ID_PAGE_MENU),
l10n_util::GetString(IDS_ACCNAME_PAGE),
- ROLE_SYSTEM_BUTTONDROPDOWN);
+ ROLE_SYSTEM_BUTTONMENU);
}
// Retrieve accessibility object for App menu button and verify accessibility
@@ -196,7 +196,7 @@ IN_PROC_BROWSER_TEST_F(BrowserViewsAccessibilityTest, TestAppMenuAccObj) {
// Verify App menu button MSAA name and role.
TestViewAccessibilityObject(GetToolbarView()->GetViewByID(VIEW_ID_APP_MENU),
l10n_util::GetString(IDS_ACCNAME_APP),
- ROLE_SYSTEM_BUTTONDROPDOWN);
+ ROLE_SYSTEM_BUTTONMENU);
}
} // Namespace.
diff --git a/chrome/browser/views/extensions/extension_shelf.cc b/chrome/browser/views/extensions/extension_shelf.cc
index 484ab9a..121ac79 100644
--- a/chrome/browser/views/extensions/extension_shelf.cc
+++ b/chrome/browser/views/extensions/extension_shelf.cc
@@ -565,8 +565,28 @@ void ExtensionShelf::OnMouseEntered(const views::MouseEvent& event) {
void ExtensionShelf::OnMouseExited(const views::MouseEvent& event) {
}
-void ExtensionShelf::ToolstripInsertedAt(ExtensionHost* host,
- int index) {
+bool ExtensionShelf::GetAccessibleRole(AccessibilityTypes::Role* role) {
+ DCHECK(role);
+
+ *role = AccessibilityTypes::ROLE_TOOLBAR;
+ return true;
+}
+
+bool ExtensionShelf::GetAccessibleName(std::wstring* name) {
+ DCHECK(name);
+
+ if (!accessible_name_.empty()) {
+ name->assign(accessible_name_);
+ return true;
+ }
+ return false;
+}
+
+void ExtensionShelf::SetAccessibleName(const std::wstring& name) {
+ accessible_name_.assign(name);
+}
+
+void ExtensionShelf::ToolstripInsertedAt(ExtensionHost* host, int index) {
model_->SetToolstripDataAt(index, new Toolstrip(this, host));
bool had_views = GetChildViewCount() > 0;
@@ -580,8 +600,7 @@ void ExtensionShelf::ToolstripInsertedAt(ExtensionHost* host,
Layout();
}
-void ExtensionShelf::ToolstripRemovingAt(ExtensionHost* host,
- int index) {
+void ExtensionShelf::ToolstripRemovingAt(ExtensionHost* host, int index) {
// Delete the Toolstrip view and remove it from the model.
Toolstrip* toolstrip = ToolstripAtIndex(index);
View* view = toolstrip->GetShelfView();
@@ -594,18 +613,15 @@ void ExtensionShelf::ToolstripRemovingAt(ExtensionHost* host,
Layout();
}
-void ExtensionShelf::ToolstripDraggingFrom(ExtensionHost* host,
- int index) {
+void ExtensionShelf::ToolstripDraggingFrom(ExtensionHost* host, int index) {
}
-void ExtensionShelf::ToolstripMoved(ExtensionHost* host,
- int from_index,
+void ExtensionShelf::ToolstripMoved(ExtensionHost* host, int from_index,
int to_index) {
Layout();
}
-void ExtensionShelf::ToolstripChangedAt(ExtensionHost* toolstrip,
- int index) {
+void ExtensionShelf::ToolstripChangedAt(ExtensionHost* toolstrip, int index) {
}
void ExtensionShelf::ExtensionShelfEmpty() {
@@ -630,8 +646,8 @@ void ExtensionShelf::OnExtensionMouseLeave(ExtensionView* view) {
toolstrip->HideShelfHandle(kHideDelayMs);
}
-void ExtensionShelf::DropExtension(Toolstrip* toolstrip,
- const gfx::Point& pt, bool cancel) {
+void ExtensionShelf::DropExtension(Toolstrip* toolstrip, const gfx::Point& pt,
+ bool cancel) {
Toolstrip* dest_toolstrip = ToolstripAtX(pt.x());
if (!dest_toolstrip) {
if (pt.x() > 0)
@@ -647,8 +663,7 @@ void ExtensionShelf::DropExtension(Toolstrip* toolstrip,
model_->MoveToolstripAt(from, to);
}
-void ExtensionShelf::InitBackground(gfx::Canvas* canvas,
- const SkRect& subset) {
+void ExtensionShelf::InitBackground(gfx::Canvas* canvas, const SkRect& subset) {
if (!background_.empty())
return;
diff --git a/chrome/browser/views/extensions/extension_shelf.h b/chrome/browser/views/extensions/extension_shelf.h
index e71f6aa..57a0954 100644
--- a/chrome/browser/views/extensions/extension_shelf.h
+++ b/chrome/browser/views/extensions/extension_shelf.h
@@ -35,6 +35,9 @@ class ExtensionShelf : public views::View,
virtual void Layout();
virtual void OnMouseExited(const views::MouseEvent& event);
virtual void OnMouseEntered(const views::MouseEvent& event);
+ virtual bool GetAccessibleName(std::wstring* name);
+ virtual bool GetAccessibleRole(AccessibilityTypes::Role* role);
+ virtual void SetAccessibleName(const std::wstring& name);
// ExtensionContainer
virtual void OnExtensionMouseEvent(ExtensionView* view);
@@ -85,6 +88,9 @@ class ExtensionShelf : public views::View,
// The model representing the toolstrips on the shelf.
scoped_ptr<ExtensionShelfModel> model_;
+ // Storage of strings needed for accessibility.
+ std::wstring accessible_name_;
+
DISALLOW_COPY_AND_ASSIGN(ExtensionShelf);
};
diff --git a/chrome/browser/views/frame/browser_view.cc b/chrome/browser/views/frame/browser_view.cc
index d8803d4..0c8b4cb 100644
--- a/chrome/browser/views/frame/browser_view.cc
+++ b/chrome/browser/views/frame/browser_view.cc
@@ -1444,7 +1444,8 @@ void BrowserView::Init() {
SetAccessibleName(l10n_util::GetString(IDS_PRODUCT_NAME));
tabstrip_ = TabStripWrapper::CreateTabStrip(browser_->tabstrip_model());
- tabstrip_->GetView()->SetAccessibleName(l10n_util::GetString(IDS_ACCNAME_TABSTRIP));
+ tabstrip_->
+ GetView()->SetAccessibleName(l10n_util::GetString(IDS_ACCNAME_TABSTRIP));
AddChildView(tabstrip_->GetView());
frame_->TabStripCreated(tabstrip_);
@@ -1474,6 +1475,8 @@ void BrowserView::Init() {
status_bubble_.reset(new StatusBubbleViews(GetWidget()));
extension_shelf_ = new ExtensionShelf(browser_.get());
+ extension_shelf_->
+ SetAccessibleName(l10n_util::GetString(IDS_ACCNAME_EXTENSIONS));
AddChildView(extension_shelf_);
#if defined(OS_WIN)
@@ -1624,6 +1627,8 @@ bool BrowserView::MaybeShowBookmarkBar(TabContents* contents) {
bookmark_bar_view_->SetProfile(contents->profile());
}
bookmark_bar_view_->SetPageNavigator(contents);
+ bookmark_bar_view_->
+ SetAccessibleName(l10n_util::GetString(IDS_ACCNAME_BOOKMARKS));
new_bookmark_bar_view = bookmark_bar_view_.get();
}
return UpdateChildViewAndLayout(new_bookmark_bar_view, &active_bookmark_bar_);
diff --git a/chrome/browser/views/infobars/infobar_container.cc b/chrome/browser/views/infobars/infobar_container.cc
index 3a135c1..530236c 100644
--- a/chrome/browser/views/infobars/infobar_container.cc
+++ b/chrome/browser/views/infobars/infobar_container.cc
@@ -72,6 +72,27 @@ void InfoBarContainer::Layout() {
}
}
+bool InfoBarContainer::GetAccessibleName(std::wstring* name) {
+ DCHECK(name);
+
+ if (!accessible_name_.empty()) {
+ name->assign(accessible_name_);
+ return true;
+ }
+ return false;
+}
+
+bool InfoBarContainer::GetAccessibleRole(AccessibilityTypes::Role* role) {
+ DCHECK(role);
+
+ *role = AccessibilityTypes::ROLE_TOOLBAR;
+ return true;
+}
+
+void InfoBarContainer::SetAccessibleName(const std::wstring& name) {
+ accessible_name_.assign(name);
+}
+
void InfoBarContainer::ViewHierarchyChanged(bool is_add,
views::View* parent,
views::View* child) {
diff --git a/chrome/browser/views/infobars/infobar_container.h b/chrome/browser/views/infobars/infobar_container.h
index e7abce1..063ba26 100644
--- a/chrome/browser/views/infobars/infobar_container.h
+++ b/chrome/browser/views/infobars/infobar_container.h
@@ -36,6 +36,10 @@ class InfoBarContainer : public views::View,
// Overridden from views::View:
virtual gfx::Size GetPreferredSize();
virtual void Layout();
+ virtual bool GetAccessibleName(std::wstring* name);
+ virtual bool GetAccessibleRole(AccessibilityTypes::Role* role);
+ virtual void SetAccessibleName(const std::wstring& name);
+
protected:
virtual void ViewHierarchyChanged(bool is_add,
views::View* parent,
@@ -69,6 +73,9 @@ class InfoBarContainer : public views::View,
// The TabContents for which we are currently showing InfoBars.
TabContents* tab_contents_;
+ // Storage of the string needed for accessibility.
+ std::wstring accessible_name_;
+
DISALLOW_COPY_AND_ASSIGN(InfoBarContainer);
};
diff --git a/chrome/browser/views/tab_contents/tab_contents_container.cc b/chrome/browser/views/tab_contents/tab_contents_container.cc
index 5e1d2b0..f865e5e 100644
--- a/chrome/browser/views/tab_contents/tab_contents_container.cc
+++ b/chrome/browser/views/tab_contents/tab_contents_container.cc
@@ -75,6 +75,27 @@ void TabContentsContainer::Layout() {
}
}
+bool TabContentsContainer::GetAccessibleRole(AccessibilityTypes::Role* role) {
+ DCHECK(role);
+
+ *role = AccessibilityTypes::ROLE_WINDOW;
+ return true;
+}
+
+bool TabContentsContainer::GetAccessibleName(std::wstring* name) {
+ DCHECK(name);
+
+ if (!accessible_name_.empty()) {
+ name->assign(accessible_name_);
+ return true;
+ }
+ return false;
+}
+
+void TabContentsContainer::SetAccessibleName(const std::wstring& name) {
+ accessible_name_.assign(name);
+}
+
void TabContentsContainer::ViewHierarchyChanged(bool is_add,
views::View* parent,
views::View* child) {
diff --git a/chrome/browser/views/tab_contents/tab_contents_container.h b/chrome/browser/views/tab_contents/tab_contents_container.h
index d7a8afe..3f60eec 100644
--- a/chrome/browser/views/tab_contents/tab_contents_container.h
+++ b/chrome/browser/views/tab_contents/tab_contents_container.h
@@ -41,6 +41,9 @@ class TabContentsContainer : public views::View,
// Overridden from views::View:
virtual void Layout();
+ virtual bool GetAccessibleName(std::wstring* name);
+ virtual bool GetAccessibleRole(AccessibilityTypes::Role* role);
+ virtual void SetAccessibleName(const std::wstring& name);
protected:
// Overridden from views::View:
@@ -72,6 +75,9 @@ class TabContentsContainer : public views::View,
// Handles registering for our notifications.
NotificationRegistrar registrar_;
+ // Storage of the string needed for accessibility.
+ std::wstring accessible_name_;
+
DISALLOW_COPY_AND_ASSIGN(TabContentsContainer);
};
diff --git a/chrome/browser/views/tabs/tab_strip.cc b/chrome/browser/views/tabs/tab_strip.cc
index dc9e91f..839f0b3 100644
--- a/chrome/browser/views/tabs/tab_strip.cc
+++ b/chrome/browser/views/tabs/tab_strip.cc
@@ -24,7 +24,6 @@
#include "chrome/browser/view_ids.h"
#include "chrome/browser/views/tabs/dragged_tab_controller.h"
#include "chrome/browser/views/tabs/tab.h"
-#include "chrome/browser/tab_contents/tab_contents.h"
#include "chrome/common/pref_names.h"
#include "grit/generated_resources.h"
#include "grit/theme_resources.h"
@@ -676,7 +675,7 @@ int TabStrip::OnPerformDrop(const DropTargetEvent& event) {
bool TabStrip::GetAccessibleRole(AccessibilityTypes::Role* role) {
DCHECK(role);
- *role = AccessibilityTypes::ROLE_GROUPING;
+ *role = AccessibilityTypes::ROLE_PAGETABLIST;
return true;
}