summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordtseng@chromium.org <dtseng@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-02-17 23:04:27 +0000
committerdtseng@chromium.org <dtseng@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-02-17 23:04:27 +0000
commitf7b1b2a21ea145f6c1042d51a62b751ba45c722e (patch)
tree69ed479c439b5cc8448de3e60ae57994ff398c14
parentdcca3aa943ea83a55d0e79e0d751952e7ad54f6c (diff)
downloadchromium_src-f7b1b2a21ea145f6c1042d51a62b751ba45c722e.zip
chromium_src-f7b1b2a21ea145f6c1042d51a62b751ba45c722e.tar.gz
chromium_src-f7b1b2a21ea145f6c1042d51a62b751ba45c722e.tar.bz2
Adds dump accessibility tree support in Windows.
This largely adds human readable strings for IAccessible2 roles and states. This is in part to make it possible to hand-edit the expected files we generate. Sidenote: switch to string16 usage from std::string as much as possible (despite the incompatibility with API's provided by FilePath). Review URL: https://chromiumcodereview.appspot.com/9295031 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@122617 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/chrome_tests.gypi12
-rw-r--r--chrome/test/data/accessibility/aria-application-expected-win.txt2
-rw-r--r--content/browser/accessibility/browser_accessibility.h4
-rw-r--r--content/browser/accessibility/browser_accessibility_mac.mm12
-rw-r--r--content/browser/accessibility/browser_accessibility_win.cc5
-rw-r--r--content/browser/accessibility/browser_accessibility_win.h11
-rw-r--r--content/browser/accessibility/dump_accessibility_tree_browsertest.cc (renamed from chrome/browser/accessibility/dump_accessibility_tree_browsertest.cc)61
-rw-r--r--content/browser/accessibility/dump_accessibility_tree_helper.h39
-rw-r--r--content/browser/accessibility/dump_accessibility_tree_helper_mac.mm36
-rw-r--r--content/browser/accessibility/dump_accessibility_tree_helper_win.cc182
10 files changed, 302 insertions, 62 deletions
diff --git a/chrome/chrome_tests.gypi b/chrome/chrome_tests.gypi
index f877841..9f75b50 100644
--- a/chrome/chrome_tests.gypi
+++ b/chrome/chrome_tests.gypi
@@ -2500,7 +2500,6 @@
'app/chrome_dll_resource.h',
'app/chrome_version.rc.version',
'browser/accessibility/accessibility_extension_apitest.cc',
- 'browser/accessibility/dump_accessibility_tree_browsertest.cc',
'browser/app_controller_mac_browsertest.mm',
'browser/autocomplete/autocomplete_browsertest.cc',
'browser/autofill/form_structure_browsertest.cc',
@@ -2827,6 +2826,9 @@
# is safe to run there. See http://crbug.com/78722 for details.
'../base/files/file_path_watcher_browsertest.cc',
'../content/app/startup_helper_win.cc',
+ '../content/browser/accessibility/dump_accessibility_tree_browsertest.cc',
+ '../content/browser/accessibility/dump_accessibility_tree_helper_mac.mm',
+ '../content/browser/accessibility/dump_accessibility_tree_helper_win.cc',
'../content/browser/accessibility/renderer_accessibility_browsertest.cc',
'../content/browser/child_process_security_policy_browsertest.cc',
'../content/browser/device_orientation/device_orientation_browsertest.cc',
@@ -2980,10 +2982,11 @@
'browser/ui/gtk/view_id_util_browsertest.cc',
],
}],
- # TODO(dtseng): Change this to OS=="linux" once Windows support done.
- ['OS!="mac"', {
+ ['OS=="linux"', {
'sources!': [
- 'browser/accessibility/dump_accessibility_tree_browsertest.cc',
+ '../content/browser/accessibility/dump_accessibility_tree_browsertest.cc',
+ '../content/browser/accessibility/dump_accessibility_tree_helper_mac.mm',
+ '../content/browser/accessibility/dump_accessibility_tree_helper_win.cc',
],
}],
['OS=="win"', {
@@ -3007,6 +3010,7 @@
'dependencies': [
'chrome_version_resources',
'installer_util_strings',
+ '../third_party/iaccessible2/iaccessible2.gyp:iaccessible2',
'../sandbox/sandbox.gyp:sandbox',
],
'conditions': [
diff --git a/chrome/test/data/accessibility/aria-application-expected-win.txt b/chrome/test/data/accessibility/aria-application-expected-win.txt
new file mode 100644
index 0000000..6137c1b
--- /dev/null
+++ b/chrome/test/data/accessibility/aria-application-expected-win.txt
@@ -0,0 +1,2 @@
+|ROLE_SYSTEM_DOCUMENT||IA2_STATE_OPAQUE|IA2_STATE_VERTICAL
+|IA2_ROLE_SECTION||IA2_STATE_HORIZONTAL|IA2_STATE_OPAQUE
diff --git a/content/browser/accessibility/browser_accessibility.h b/content/browser/accessibility/browser_accessibility.h
index 452deb9..0fbb3eb 100644
--- a/content/browser/accessibility/browser_accessibility.h
+++ b/content/browser/accessibility/browser_accessibility.h
@@ -193,10 +193,6 @@ class CONTENT_EXPORT BrowserAccessibility {
BrowserAccessibilityWin* toBrowserAccessibilityWin();
#endif
- // A string representation of this node.
- // TODO(dtseng): Move to test only library.
- std::string ToString();
-
// Retrieve the value of a bool attribute from the bool attribute
// map and returns true if found.
bool GetBoolAttribute(WebAccessibility::BoolAttribute attr, bool* value)
diff --git a/content/browser/accessibility/browser_accessibility_mac.mm b/content/browser/accessibility/browser_accessibility_mac.mm
index 798bfbf..6a209d8 100644
--- a/content/browser/accessibility/browser_accessibility_mac.mm
+++ b/content/browser/accessibility/browser_accessibility_mac.mm
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 2012 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.
@@ -57,13 +57,3 @@ BrowserAccessibilityCocoa* BrowserAccessibility::toBrowserAccessibilityCocoa() {
return static_cast<BrowserAccessibilityMac*>(this)->
native_view();
}
-
-std::string BrowserAccessibility::ToString() {
- BrowserAccessibilityCocoa* cocoa_node = this->toBrowserAccessibilityCocoa();
- NSString* dump = [NSString stringWithFormat:@"%@|%@|%@|%@",
- [cocoa_node role],
- [cocoa_node subrole],
- [cocoa_node title],
- [cocoa_node value]];
- return [dump cStringUsingEncoding:NSUTF8StringEncoding];
-}
diff --git a/content/browser/accessibility/browser_accessibility_win.cc b/content/browser/accessibility/browser_accessibility_win.cc
index 0f3fc74..21ad75b 100644
--- a/content/browser/accessibility/browser_accessibility_win.cc
+++ b/content/browser/accessibility/browser_accessibility_win.cc
@@ -175,11 +175,6 @@ BrowserAccessibilityWin* BrowserAccessibility::toBrowserAccessibilityWin() {
return static_cast<BrowserAccessibilityWin*>(this);
}
-std::string BrowserAccessibility::ToString() {
- // TODO(dtseng): Implement this and human readable role strings.
- return "";
-}
-
BrowserAccessibilityWin::BrowserAccessibilityWin()
: ia_role_(0),
ia_state_(0),
diff --git a/content/browser/accessibility/browser_accessibility_win.h b/content/browser/accessibility/browser_accessibility_win.h
index a481160..90c9c44 100644
--- a/content/browser/accessibility/browser_accessibility_win.h
+++ b/content/browser/accessibility/browser_accessibility_win.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 2012 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.
@@ -79,6 +79,11 @@ BrowserAccessibilityWin
// position where a non-static text child object appears.
CONTENT_EXPORT static const char16 kEmbeddedCharacter[];
+ // Mappings from roles and states to human readable strings. Initialize
+ // with |InitializeStringMaps|.
+ static std::map<int32, string16> role_string_map;
+ static std::map<int32, string16> state_string_map;
+
CONTENT_EXPORT BrowserAccessibilityWin();
CONTENT_EXPORT virtual ~BrowserAccessibilityWin();
@@ -696,6 +701,10 @@ CONTENT_EXPORT virtual void PostInitialize();
REFIID iid,
void** object);
+ // Accessors to IA2 role and state.
+ int32 ia2_role() { return ia2_role_; }
+ int32 ia2_state() { return ia2_state_; }
+
private:
// Add one to the reference count and return the same object. Always
// use this method when returning a BrowserAccessibilityWin object as
diff --git a/chrome/browser/accessibility/dump_accessibility_tree_browsertest.cc b/content/browser/accessibility/dump_accessibility_tree_browsertest.cc
index 7e97b13..75ee368 100644
--- a/chrome/browser/accessibility/dump_accessibility_tree_browsertest.cc
+++ b/content/browser/accessibility/dump_accessibility_tree_browsertest.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 2012 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.
@@ -7,12 +7,15 @@
#include "base/logging.h"
#include "base/path_service.h"
#include "base/string_util.h"
+#include "base/string16.h"
+#include "base/utf_string_conversions.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/common/chrome_paths.h"
#include "chrome/test/base/in_process_browser_test.h"
#include "chrome/test/base/ui_test_utils.h"
#include "content/browser/accessibility/browser_accessibility.h"
#include "content/browser/accessibility/browser_accessibility_manager.h"
+#include "content/browser/accessibility/dump_accessibility_tree_helper.h"
#include "content/browser/renderer_host/render_view_host.h"
#include "content/browser/renderer_host/render_widget_host.h"
#include "content/browser/renderer_host/render_widget_host_view.h"
@@ -25,34 +28,10 @@
using content::OpenURLParams;
using content::Referrer;
-// Suffix of the expectation file corresponding to html file.
-// Example:
-// HTML test: test-file.html
-// Expected: test-file-expected-mac.txt.
-// Auto-generated: test-file-actual-mac.txt
-#if defined(OS_WIN)
-static const std::string kActualFileSuffix = "-actual-win.txt";
-static const std::string kExpectedFileSuffix = "-expected-win.txt";
-#elif defined(OS_MACOSX)
-static const std::string kActualFileSuffix = "-actual-mac.txt";
-static const std::string kExpectedFileSuffix = "-expected-mac.txt";
-#else
-#error DumpAccessibilityTree does not support this platform.
-#endif
-
-// HTML id attribute prefix identifying a node to test.
-static const std::string kTestId = "test";
-
+namespace {
// Required to enter html content into a url.
-static const std::string kUrlPreamble = "data:text/html,\n<!doctype html>";
-
-// Dumps a BrowserAccessibility tree into a string.
-void DumpAccessibilityTree(BrowserAccessibility* node,
- std::string* contents) {
- *contents += node->ToString() + "\n";
- for (size_t i = 0; i < node->children().size(); ++i)
- DumpAccessibilityTree(node->children()[i], contents);
-}
+ static const std::string kUrlPreamble = "data:text/html,\n<!doctype html>";
+} // namespace
// This test takes a snapshot of the platform BrowserAccessibility tree and
// tests it against an expected baseline.
@@ -72,6 +51,8 @@ class DumpAccessibilityTreeTest : public InProcessBrowserTest {
&resources_pack_path));
ResourceBundle::AddDataPackToSharedInstance(resources_pack_path);
}
+
+ DumpAccessibilityTreeHelper helper_;
};
IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
@@ -86,7 +67,7 @@ IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
// Setup test paths.
FilePath dir_test_data;
EXPECT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &dir_test_data));
- FilePath test_path(dir_test_data.Append(FilePath("accessibility")));
+ FilePath test_path(dir_test_data.Append(FILE_PATH_LITERAL("accessibility")));
EXPECT_TRUE(file_util::PathExists(test_path))
<< test_path.LossyDisplayName();
@@ -94,7 +75,7 @@ IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
file_util::FileEnumerator file_enumerator(test_path,
false,
file_util::FileEnumerator::FILES,
- "*.html");
+ FILE_PATH_LITERAL("*.html"));
// TODO(dtseng): Make each of these a gtest with script.
FilePath html_file;
@@ -104,7 +85,8 @@ IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
std::string expected_contents;
FilePath expected_file =
- FilePath(html_file.RemoveExtension().value() + kExpectedFileSuffix);
+ FilePath(html_file.RemoveExtension().value() +
+ helper_.GetExpectedFileSuffix());
file_util::ReadFileToString(
expected_file,
&expected_contents);
@@ -113,7 +95,9 @@ IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
ui_test_utils::WindowedNotificationObserver tree_updated_observer(
content::NOTIFICATION_RENDER_VIEW_HOST_ACCESSIBILITY_TREE_UPDATED,
content::NotificationService::AllSources());
- GURL url(kUrlPreamble + html_contents);
+ string16 html_contents16;
+ html_contents16 = UTF8ToUTF16(html_contents);
+ GURL url(UTF8ToUTF16(kUrlPreamble) + html_contents16);
browser()->OpenURL(OpenURLParams(
url, Referrer(), CURRENT_TAB, content::PAGE_TRANSITION_TYPED, false));
@@ -121,17 +105,20 @@ IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
tree_updated_observer.Wait();
// Perform a diff (or write the initial baseline).
- std::string actual_contents;
- DumpAccessibilityTree(
+ string16 actual_contents;
+ helper_.DumpAccessibilityTree(
host_view->GetBrowserAccessibilityManager()->GetRoot(),
&actual_contents);
- EXPECT_EQ(expected_contents, actual_contents);
+ std::string actual_contents8 = UTF16ToUTF8(actual_contents);
+ EXPECT_EQ(expected_contents, actual_contents8);
if (!file_util::PathExists(expected_file)) {
FilePath actual_file =
- FilePath(html_file.RemoveExtension().value() + kActualFileSuffix);
+ FilePath(html_file.RemoveExtension().value() +
+ helper_.GetActualFileSuffix());
+
EXPECT_TRUE(file_util::WriteFile(
- actual_file, actual_contents.c_str(), actual_contents.size()));
+ actual_file, actual_contents8.c_str(), actual_contents8.size()));
ADD_FAILURE() << "No expectation found. Create it by doing:\n"
<< "mv " << actual_file.LossyDisplayName() << " "
diff --git a/content/browser/accessibility/dump_accessibility_tree_helper.h b/content/browser/accessibility/dump_accessibility_tree_helper.h
new file mode 100644
index 0000000..02c6e22
--- /dev/null
+++ b/content/browser/accessibility/dump_accessibility_tree_helper.h
@@ -0,0 +1,39 @@
+// Copyright (c) 2012 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.
+
+#ifndef CHROME_BROWSER_ACCESSIBILITY_DUMP_ACCESSIBILITY_TREE_HELPER_H_
+#define CHROME_BROWSER_ACCESSIBILITY_DUMP_ACCESSIBILITY_TREE_HELPER_H_
+
+#include "base/file_path.h"
+#include "base/string16.h"
+#include "base/utf_string_conversions.h"
+#include "content/browser/accessibility/browser_accessibility.h"
+
+// A utility class for retrieving platform specific accessibility information.
+class DumpAccessibilityTreeHelper {
+ public:
+ // Dumps a BrowserAccessibility tree into a string.
+ void DumpAccessibilityTree(BrowserAccessibility* node,
+ string16* contents) {
+ *contents += ToString(node) + UTF8ToUTF16("\n");
+ for (size_t i = 0; i < node->children().size(); ++i)
+ DumpAccessibilityTree(node->children()[i], contents);
+ }
+
+ // Suffix of the expectation file corresponding to html file.
+ // Example:
+ // HTML test: test-file.html
+ // Expected: test-file-expected-mac.txt.
+ // Auto-generated: test-file-actual-mac.txt
+ const FilePath::StringType GetActualFileSuffix() const;
+ const FilePath::StringType GetExpectedFileSuffix() const;
+
+ protected:
+ // Returns a platform specific representation of a BrowserAccessibility.
+ string16 ToString(BrowserAccessibility* node);
+
+ void Initialize();
+};
+
+#endif // CHROME_BROWSER_ACCESSIBILITY_DUMP_ACCESSIBILITY_TREE_HELPER_H_
diff --git a/content/browser/accessibility/dump_accessibility_tree_helper_mac.mm b/content/browser/accessibility/dump_accessibility_tree_helper_mac.mm
new file mode 100644
index 0000000..bf48e9c
--- /dev/null
+++ b/content/browser/accessibility/dump_accessibility_tree_helper_mac.mm
@@ -0,0 +1,36 @@
+// Copyright (c) 2012 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 "content/browser/accessibility/dump_accessibility_tree_helper.h"
+
+#import <Cocoa/Cocoa.h>
+
+#include "base/file_path.h"
+#include "base/utf_string_conversions.h"
+#include "content/browser/accessibility/browser_accessibility_cocoa.h"
+#include "content/browser/accessibility/browser_accessibility_mac.h"
+
+void DumpAccessibilityTreeHelper::Initialize() {}
+
+string16 DumpAccessibilityTreeHelper::ToString(BrowserAccessibility* node) {
+ BrowserAccessibilityCocoa* cocoa_node = node->toBrowserAccessibilityCocoa();
+ NSString* dump = [NSString stringWithFormat:@"%@|%@|%@|%@",
+ [cocoa_node role],
+ [cocoa_node subrole],
+ [cocoa_node title],
+ [cocoa_node value]];
+ std::string tempVal = [dump cStringUsingEncoding:NSUTF8StringEncoding];
+
+ return UTF8ToUTF16(tempVal);
+}
+
+const FilePath::StringType DumpAccessibilityTreeHelper::GetActualFileSuffix()
+ const {
+ return FILE_PATH_LITERAL("-actual-mac.txt");
+}
+
+const FilePath::StringType DumpAccessibilityTreeHelper::GetExpectedFileSuffix()
+ const {
+ return FILE_PATH_LITERAL("-expected-mac.txt");
+}
diff --git a/content/browser/accessibility/dump_accessibility_tree_helper_win.cc b/content/browser/accessibility/dump_accessibility_tree_helper_win.cc
new file mode 100644
index 0000000..1955771
--- /dev/null
+++ b/content/browser/accessibility/dump_accessibility_tree_helper_win.cc
@@ -0,0 +1,182 @@
+// Copyright (c) 2012 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 "content/browser/accessibility/dump_accessibility_tree_helper.h"
+
+#include <oleacc.h>
+
+#include <map>
+#include <string>
+
+#include "base/file_path.h"
+#include "base/string_util.h"
+#include "content/browser/accessibility/browser_accessibility_win.h"
+#include "third_party/iaccessible2/ia2_api_all.h"
+
+namespace {
+std::map<int32, string16> role_string_map;
+std::map<int32, string16> state_string_map;
+} // namespace
+
+// Convenience macros for generating readable strings.
+#define ROLE_MAP(x) role_string_map[x] = L#x;
+#define STATE_MAP(x) state_string_map[x] = L#x;
+
+void DumpAccessibilityTreeHelper::Initialize() {
+ ROLE_MAP(IA2_ROLE_UNKNOWN)
+ ROLE_MAP(IA2_ROLE_CANVAS)
+ ROLE_MAP(IA2_ROLE_CAPTION)
+ ROLE_MAP(IA2_ROLE_CHECK_MENU_ITEM)
+ ROLE_MAP(IA2_ROLE_COLOR_CHOOSER)
+ ROLE_MAP(IA2_ROLE_DATE_EDITOR)
+ ROLE_MAP(IA2_ROLE_DESKTOP_ICON)
+ ROLE_MAP(IA2_ROLE_DESKTOP_PANE)
+ ROLE_MAP(IA2_ROLE_DIRECTORY_PANE)
+ ROLE_MAP(IA2_ROLE_EDITBAR)
+ ROLE_MAP(IA2_ROLE_EMBEDDED_OBJECT)
+ ROLE_MAP(IA2_ROLE_ENDNOTE)
+ ROLE_MAP(IA2_ROLE_FILE_CHOOSER)
+ ROLE_MAP(IA2_ROLE_FONT_CHOOSER)
+ ROLE_MAP(IA2_ROLE_FOOTER)
+ ROLE_MAP(IA2_ROLE_FOOTNOTE)
+ ROLE_MAP(IA2_ROLE_FORM)
+ ROLE_MAP(IA2_ROLE_FRAME)
+ ROLE_MAP(IA2_ROLE_GLASS_PANE)
+ ROLE_MAP(IA2_ROLE_HEADER)
+ ROLE_MAP(IA2_ROLE_HEADING)
+ ROLE_MAP(IA2_ROLE_ICON)
+ ROLE_MAP(IA2_ROLE_IMAGE_MAP)
+ ROLE_MAP(IA2_ROLE_INPUT_METHOD_WINDOW)
+ ROLE_MAP(IA2_ROLE_INTERNAL_FRAME)
+ ROLE_MAP(IA2_ROLE_LABEL)
+ ROLE_MAP(IA2_ROLE_LAYERED_PANE)
+ ROLE_MAP(IA2_ROLE_NOTE)
+ ROLE_MAP(IA2_ROLE_OPTION_PANE)
+ ROLE_MAP(IA2_ROLE_PAGE)
+ ROLE_MAP(IA2_ROLE_PARAGRAPH)
+ ROLE_MAP(IA2_ROLE_RADIO_MENU_ITEM)
+ ROLE_MAP(IA2_ROLE_REDUNDANT_OBJECT)
+ ROLE_MAP(IA2_ROLE_ROOT_PANE)
+ ROLE_MAP(IA2_ROLE_RULER)
+ ROLE_MAP(IA2_ROLE_SCROLL_PANE)
+ ROLE_MAP(IA2_ROLE_SECTION)
+ ROLE_MAP(IA2_ROLE_SHAPE)
+ ROLE_MAP(IA2_ROLE_SPLIT_PANE)
+ ROLE_MAP(IA2_ROLE_TEAR_OFF_MENU)
+ ROLE_MAP(IA2_ROLE_TERMINAL)
+ ROLE_MAP(IA2_ROLE_TEXT_FRAME)
+ ROLE_MAP(IA2_ROLE_TOGGLE_BUTTON)
+ ROLE_MAP(IA2_ROLE_VIEW_PORT)
+
+ // MSAA roles.
+ ROLE_MAP(ROLE_SYSTEM_TITLEBAR)
+ ROLE_MAP(ROLE_SYSTEM_MENUBAR)
+ ROLE_MAP(ROLE_SYSTEM_SCROLLBAR)
+ ROLE_MAP(ROLE_SYSTEM_GRIP)
+ ROLE_MAP(ROLE_SYSTEM_SOUND)
+ ROLE_MAP(ROLE_SYSTEM_CURSOR)
+ ROLE_MAP(ROLE_SYSTEM_CARET)
+ ROLE_MAP(ROLE_SYSTEM_ALERT)
+ ROLE_MAP(ROLE_SYSTEM_WINDOW)
+ ROLE_MAP(ROLE_SYSTEM_CLIENT)
+ ROLE_MAP(ROLE_SYSTEM_MENUPOPUP)
+ ROLE_MAP(ROLE_SYSTEM_MENUITEM)
+ ROLE_MAP(ROLE_SYSTEM_TOOLTIP)
+ ROLE_MAP(ROLE_SYSTEM_APPLICATION)
+ ROLE_MAP(ROLE_SYSTEM_DOCUMENT)
+ ROLE_MAP(ROLE_SYSTEM_PANE)
+ ROLE_MAP(ROLE_SYSTEM_CHART)
+ ROLE_MAP(ROLE_SYSTEM_DIALOG)
+ ROLE_MAP(ROLE_SYSTEM_BORDER)
+ ROLE_MAP(ROLE_SYSTEM_GROUPING)
+ ROLE_MAP(ROLE_SYSTEM_SEPARATOR)
+ ROLE_MAP(ROLE_SYSTEM_TOOLBAR)
+ ROLE_MAP(ROLE_SYSTEM_STATUSBAR)
+ ROLE_MAP(ROLE_SYSTEM_TABLE)
+ ROLE_MAP(ROLE_SYSTEM_COLUMNHEADER)
+ ROLE_MAP(ROLE_SYSTEM_ROWHEADER)
+ ROLE_MAP(ROLE_SYSTEM_COLUMN)
+ ROLE_MAP(ROLE_SYSTEM_ROW)
+ ROLE_MAP(ROLE_SYSTEM_CELL)
+ ROLE_MAP(ROLE_SYSTEM_LINK)
+ ROLE_MAP(ROLE_SYSTEM_HELPBALLOON)
+ ROLE_MAP(ROLE_SYSTEM_CHARACTER)
+ ROLE_MAP(ROLE_SYSTEM_LIST)
+ ROLE_MAP(ROLE_SYSTEM_LISTITEM)
+ ROLE_MAP(ROLE_SYSTEM_OUTLINE)
+ ROLE_MAP(ROLE_SYSTEM_OUTLINEITEM)
+ ROLE_MAP(ROLE_SYSTEM_PAGETAB)
+ ROLE_MAP(ROLE_SYSTEM_PROPERTYPAGE)
+ ROLE_MAP(ROLE_SYSTEM_INDICATOR)
+ ROLE_MAP(ROLE_SYSTEM_GRAPHIC)
+ ROLE_MAP(ROLE_SYSTEM_STATICTEXT)
+ ROLE_MAP(ROLE_SYSTEM_TEXT)
+ ROLE_MAP(ROLE_SYSTEM_PUSHBUTTON)
+ ROLE_MAP(ROLE_SYSTEM_CHECKBUTTON)
+ ROLE_MAP(ROLE_SYSTEM_RADIOBUTTON)
+ ROLE_MAP(ROLE_SYSTEM_COMBOBOX)
+ ROLE_MAP(ROLE_SYSTEM_DROPLIST)
+ ROLE_MAP(ROLE_SYSTEM_PROGRESSBAR)
+ ROLE_MAP(ROLE_SYSTEM_DIAL)
+ ROLE_MAP(ROLE_SYSTEM_HOTKEYFIELD)
+ ROLE_MAP(ROLE_SYSTEM_SLIDER)
+ ROLE_MAP(ROLE_SYSTEM_SPINBUTTON)
+ ROLE_MAP(ROLE_SYSTEM_DIAGRAM)
+ ROLE_MAP(ROLE_SYSTEM_ANIMATION)
+ ROLE_MAP(ROLE_SYSTEM_EQUATION)
+ ROLE_MAP(ROLE_SYSTEM_BUTTONDROPDOWN)
+ ROLE_MAP(ROLE_SYSTEM_BUTTONMENU)
+ ROLE_MAP(ROLE_SYSTEM_BUTTONDROPDOWNGRID)
+ ROLE_MAP(ROLE_SYSTEM_WHITESPACE)
+ ROLE_MAP(ROLE_SYSTEM_PAGETABLIST)
+ ROLE_MAP(ROLE_SYSTEM_CLOCK)
+ ROLE_MAP(ROLE_SYSTEM_SPLITBUTTON)
+ ROLE_MAP(ROLE_SYSTEM_IPADDRESS)
+ ROLE_MAP(ROLE_SYSTEM_OUTLINEBUTTON)
+
+ STATE_MAP(IA2_STATE_ACTIVE)
+ STATE_MAP(IA2_STATE_ARMED)
+ STATE_MAP(IA2_STATE_DEFUNCT)
+ STATE_MAP(IA2_STATE_EDITABLE)
+ STATE_MAP(IA2_STATE_HORIZONTAL)
+ STATE_MAP(IA2_STATE_ICONIFIED)
+ STATE_MAP(IA2_STATE_INVALID_ENTRY)
+ STATE_MAP(IA2_STATE_MANAGES_DESCENDANTS)
+ STATE_MAP(IA2_STATE_MODAL)
+ STATE_MAP(IA2_STATE_MULTI_LINE)
+ STATE_MAP(IA2_STATE_OPAQUE)
+ STATE_MAP(IA2_STATE_REQUIRED)
+ STATE_MAP(IA2_STATE_SELECTABLE_TEXT)
+ STATE_MAP(IA2_STATE_SINGLE_LINE)
+ STATE_MAP(IA2_STATE_STALE)
+ STATE_MAP(IA2_STATE_SUPPORTS_AUTOCOMPLETION)
+ STATE_MAP(IA2_STATE_TRANSIENT)
+ STATE_MAP(IA2_STATE_VERTICAL)
+}
+
+string16 DumpAccessibilityTreeHelper::ToString(BrowserAccessibility* node) {
+ if (role_string_map.empty())
+ Initialize();
+
+ BrowserAccessibilityWin* acc_obj = node->toBrowserAccessibilityWin();
+ string16 state;
+ std::map<int32, string16>::iterator it;
+
+ for (it = state_string_map.begin(); it != state_string_map.end(); ++it) {
+ if (it->first & acc_obj->ia2_state())
+ state += L"|" + state_string_map[it->first];
+ }
+ return acc_obj->name() + L"|" + role_string_map[acc_obj->ia2_role()] + L"|" +
+ state;
+}
+
+const FilePath::StringType DumpAccessibilityTreeHelper::GetActualFileSuffix()
+ const {
+ return FILE_PATH_LITERAL("-actual-win.txt");
+}
+
+const FilePath::StringType DumpAccessibilityTreeHelper::GetExpectedFileSuffix()
+ const {
+ return FILE_PATH_LITERAL("-expected-win.txt");
+}