Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(26)

Side by Side Diff: chrome/browser/browser_accessibility_manager.h

Issue 2121004: Windows accessibility improvements: 1. All WebKit roles are now passed to the... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 10 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CHROME_BROWSER_BROWSER_ACCESSIBILITY_MANAGER_H_ 5 #ifndef CHROME_BROWSER_BROWSER_ACCESSIBILITY_MANAGER_H_
6 #define CHROME_BROWSER_BROWSER_ACCESSIBILITY_MANAGER_H_ 6 #define CHROME_BROWSER_BROWSER_ACCESSIBILITY_MANAGER_H_
7 7
8 #include <atlbase.h> 8 #include <atlbase.h>
9 #include <atlcom.h> 9 #include <atlcom.h>
10 #include <oleacc.h> 10 #include <oleacc.h>
(...skipping 11 matching lines...) Expand all
22 22
23 class BrowserAccessibilityFactory { 23 class BrowserAccessibilityFactory {
24 public: 24 public:
25 virtual ~BrowserAccessibilityFactory() {} 25 virtual ~BrowserAccessibilityFactory() {}
26 26
27 // Create an instance of BrowserAccessibility and return a new 27 // Create an instance of BrowserAccessibility and return a new
28 // reference to it. 28 // reference to it.
29 virtual BrowserAccessibility* Create(); 29 virtual BrowserAccessibility* Create();
30 }; 30 };
31 31
32 // Class that can perform actions on behalf of the BrowserAccessibilityManager.
33 class BrowserAccessibilityDelegate {
34 public:
35 virtual ~BrowserAccessibilityDelegate() {}
36 virtual void SetAccessibilityFocus(int acc_obj_id) = 0;
37 virtual void AccessibilityDoDefaultAction(int acc_obj_id) = 0;
38 };
39
32 // Manages a tree of BrowserAccessibility objects. 40 // Manages a tree of BrowserAccessibility objects.
33 class BrowserAccessibilityManager { 41 class BrowserAccessibilityManager {
34 public: 42 public:
35 BrowserAccessibilityManager( 43 BrowserAccessibilityManager(
36 HWND parent_hwnd, 44 HWND parent_hwnd,
37 const webkit_glue::WebAccessibility& src, 45 const webkit_glue::WebAccessibility& src,
46 BrowserAccessibilityDelegate* delegate,
38 BrowserAccessibilityFactory* factory = new BrowserAccessibilityFactory()); 47 BrowserAccessibilityFactory* factory = new BrowserAccessibilityFactory());
39 48
40 virtual ~BrowserAccessibilityManager(); 49 virtual ~BrowserAccessibilityManager();
41 50
42 // Return a pointer to the root of the tree, does not make a new reference. 51 // Return a pointer to the root of the tree, does not make a new reference.
43 BrowserAccessibility* GetRoot(); 52 BrowserAccessibility* GetRoot();
44 53
45 // Return a pointer to the object corresponding to the given child_id, 54 // Return a pointer to the object corresponding to the given child_id,
46 // does not make a new reference. 55 // does not make a new reference.
47 BrowserAccessibility* GetFromChildID(LONG child_id); 56 BrowserAccessibility* GetFromChildID(LONG child_id);
48 57
49 // Get a the default IAccessible for the parent window, does not make a 58 // Get a the default IAccessible for the parent window, does not make a
50 // new reference. 59 // new reference.
51 IAccessible* GetParentWindowIAccessible(); 60 IAccessible* GetParentWindowIAccessible();
52 61
53 // Get the parent window. 62 // Get the parent window.
54 HWND GetParentHWND(); 63 HWND GetParentHWND();
55 64
56 // Return the object that has focus, if it's a descandant of the 65 // Return the object that has focus, if it's a descandant of the
57 // given root (inclusive). Does not make a new reference. 66 // given root (inclusive). Does not make a new reference.
58 BrowserAccessibility* GetFocus(BrowserAccessibility* root); 67 BrowserAccessibility* GetFocus(BrowserAccessibility* root);
59 68
69 // Tell the renderer to set focus to this node.
70 void SetFocus(const BrowserAccessibility& node);
71
72 // Tell the renderer to do the default action for this node.
73 void DoDefaultAction(const BrowserAccessibility& node);
74
60 // Called when the renderer process has notified us of a focus or state 75 // Called when the renderer process has notified us of a focus or state
61 // change. Send a notification to MSAA clients of the change. 76 // change. Send a notification to MSAA clients of the change.
62 void OnAccessibilityFocusChange(int acc_obj_id); 77 void OnAccessibilityFocusChange(int acc_obj_id);
63 void OnAccessibilityObjectStateChange(int acc_obj_id); 78 void OnAccessibilityObjectStateChange(int acc_obj_id);
64 79
65 private: 80 private:
66 // Recursively build a tree of BrowserAccessibility objects from 81 // Recursively build a tree of BrowserAccessibility objects from
67 // the WebAccessibility tree received from the renderer process. 82 // the WebAccessibility tree received from the renderer process.
68 BrowserAccessibility* CreateAccessibilityTree( 83 BrowserAccessibility* CreateAccessibilityTree(
69 BrowserAccessibility* parent, 84 BrowserAccessibility* parent,
70 const webkit_glue::WebAccessibility& src, 85 const webkit_glue::WebAccessibility& src,
71 int index_in_parent); 86 int index_in_parent);
72 87
73 // The parent window. 88 // The parent window.
74 HWND parent_hwnd_; 89 HWND parent_hwnd_;
75 90
91 // The object that can perform actions on our behalf.
92 BrowserAccessibilityDelegate* delegate_;
93
76 // Factory to create BrowserAccessibility objects (for dependency injection). 94 // Factory to create BrowserAccessibility objects (for dependency injection).
77 scoped_ptr<BrowserAccessibilityFactory> factory_; 95 scoped_ptr<BrowserAccessibilityFactory> factory_;
78 96
79 // A default IAccessible instance for the parent window. 97 // A default IAccessible instance for the parent window.
80 ScopedComPtr<IAccessible> window_iaccessible_; 98 ScopedComPtr<IAccessible> window_iaccessible_;
81 99
82 // The root of the tree of IAccessible objects and the element that 100 // The root of the tree of IAccessible objects and the element that
83 // currently has focus, if any. 101 // currently has focus, if any.
84 BrowserAccessibility* root_; 102 BrowserAccessibility* root_;
85 BrowserAccessibility* focus_; 103 BrowserAccessibility* focus_;
86 104
87 // A mapping from the IDs of objects in the renderer, to the child IDs 105 // A mapping from the IDs of objects in the renderer, to the child IDs
88 // we use internally here. 106 // we use internally here.
89 base::hash_map<int, LONG> renderer_id_to_child_id_map_; 107 base::hash_map<int, LONG> renderer_id_to_child_id_map_;
90 108
91 // A mapping from child IDs to BrowserAccessibility objects. 109 // A mapping from child IDs to BrowserAccessibility objects.
92 base::hash_map<LONG, BrowserAccessibility*> child_id_map_; 110 base::hash_map<LONG, BrowserAccessibility*> child_id_map_;
93 111
94 // The next child ID to use; static so that they're global to the process. 112 // The next child ID to use; static so that they're global to the process.
95 // Screen readers cache these IDs to see if they've seen the same object 113 // Screen readers cache these IDs to see if they've seen the same object
96 // before so we should avoid reusing them within the same project. 114 // before so we should avoid reusing them within the same project.
97 static LONG next_child_id_; 115 static LONG next_child_id_;
98 116
99 DISALLOW_COPY_AND_ASSIGN(BrowserAccessibilityManager); 117 DISALLOW_COPY_AND_ASSIGN(BrowserAccessibilityManager);
100 }; 118 };
101 119
102 #endif // CHROME_BROWSER_BROWSER_ACCESSIBILITY_MANAGER_H_ 120 #endif // CHROME_BROWSER_BROWSER_ACCESSIBILITY_MANAGER_H_
OLDNEW
« no previous file with comments | « chrome/browser/browser_accessibility.cc ('k') | chrome/browser/browser_accessibility_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698