OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 CONTENT_BROWSER_ACCESSIBILITY_BROWSER_ACCESSIBILITY_MANAGER_WIN_H_ | 5 #ifndef CONTENT_BROWSER_ACCESSIBILITY_BROWSER_ACCESSIBILITY_MANAGER_WIN_H_ |
6 #define CONTENT_BROWSER_ACCESSIBILITY_BROWSER_ACCESSIBILITY_MANAGER_WIN_H_ | 6 #define CONTENT_BROWSER_ACCESSIBILITY_BROWSER_ACCESSIBILITY_MANAGER_WIN_H_ |
7 | 7 |
8 #include <oleacc.h> | 8 #include <oleacc.h> |
9 | 9 |
10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
11 #include "base/win/scoped_comptr.h" | 11 #include "base/win/scoped_comptr.h" |
12 #include "content/browser/accessibility/browser_accessibility_manager.h" | 12 #include "content/browser/accessibility/browser_accessibility_manager.h" |
13 | 13 |
14 namespace content { | 14 namespace content { |
15 class BrowserAccessibilityWin; | 15 class BrowserAccessibilityWin; |
16 | 16 |
17 class LegacyRenderWidgetHostHWND; | |
18 | |
19 // Manages a tree of BrowserAccessibilityWin objects. | 17 // Manages a tree of BrowserAccessibilityWin objects. |
20 class CONTENT_EXPORT BrowserAccessibilityManagerWin | 18 class CONTENT_EXPORT BrowserAccessibilityManagerWin |
21 : public BrowserAccessibilityManager { | 19 : public BrowserAccessibilityManager { |
22 public: | 20 public: |
23 BrowserAccessibilityManagerWin( | 21 BrowserAccessibilityManagerWin( |
24 content::LegacyRenderWidgetHostHWND* accessible_hwnd, | |
25 IAccessible* parent_iaccessible, | |
26 const ui::AXTreeUpdate& initial_tree, | 22 const ui::AXTreeUpdate& initial_tree, |
27 BrowserAccessibilityDelegate* delegate, | 23 BrowserAccessibilityDelegate* delegate, |
28 BrowserAccessibilityFactory* factory = new BrowserAccessibilityFactory()); | 24 BrowserAccessibilityFactory* factory = new BrowserAccessibilityFactory()); |
29 | 25 |
30 virtual ~BrowserAccessibilityManagerWin(); | 26 virtual ~BrowserAccessibilityManagerWin(); |
31 | 27 |
32 static ui::AXTreeUpdate GetEmptyDocument(); | 28 static ui::AXTreeUpdate GetEmptyDocument(); |
33 | 29 |
34 // Get the closest containing HWND. | 30 // Get the closest containing HWND. |
35 HWND parent_hwnd() { return parent_hwnd_; } | 31 HWND GetParentHWND(); |
36 | 32 |
37 // The IAccessible for the parent window. | 33 // The IAccessible for the parent window. |
38 IAccessible* parent_iaccessible() { return parent_iaccessible_; } | 34 IAccessible* GetParentIAccessible(); |
39 void set_parent_iaccessible(IAccessible* parent_iaccessible) { | |
40 parent_iaccessible_ = parent_iaccessible; | |
41 } | |
42 | |
43 void SetAccessibleHWND(LegacyRenderWidgetHostHWND* accessible_hwnd); | |
44 | 35 |
45 // Calls NotifyWinEvent if the parent window's IAccessible pointer is known. | 36 // Calls NotifyWinEvent if the parent window's IAccessible pointer is known. |
46 void MaybeCallNotifyWinEvent(DWORD event, LONG child_id); | 37 void MaybeCallNotifyWinEvent(DWORD event, LONG child_id); |
47 | 38 |
48 // AXTree methods | 39 // AXTree methods |
49 virtual void OnNodeWillBeDeleted(ui::AXNode* node) OVERRIDE; | 40 virtual void OnNodeWillBeDeleted(ui::AXNode* node) OVERRIDE; |
50 virtual void OnNodeCreated(ui::AXNode* node) OVERRIDE; | 41 virtual void OnNodeCreated(ui::AXNode* node) OVERRIDE; |
51 | 42 |
52 // BrowserAccessibilityManager methods | 43 // BrowserAccessibilityManager methods |
53 virtual void OnWindowFocused() OVERRIDE; | 44 virtual void OnWindowFocused() OVERRIDE; |
(...skipping 10 matching lines...) Expand all Loading... |
64 BrowserAccessibilityWin* GetFromUniqueIdWin(LONG unique_id_win); | 55 BrowserAccessibilityWin* GetFromUniqueIdWin(LONG unique_id_win); |
65 | 56 |
66 // Called when |accessible_hwnd_| is deleted by its parent. | 57 // Called when |accessible_hwnd_| is deleted by its parent. |
67 void OnAccessibleHwndDeleted(); | 58 void OnAccessibleHwndDeleted(); |
68 | 59 |
69 protected: | 60 protected: |
70 // BrowserAccessibilityManager methods | 61 // BrowserAccessibilityManager methods |
71 virtual void OnRootChanged(ui::AXNode* new_root) OVERRIDE; | 62 virtual void OnRootChanged(ui::AXNode* new_root) OVERRIDE; |
72 | 63 |
73 private: | 64 private: |
74 // The closest ancestor HWND. | |
75 HWND parent_hwnd_; | |
76 | |
77 // The accessibility instance for the parent window. | |
78 IAccessible* parent_iaccessible_; | |
79 | |
80 // Give BrowserAccessibilityManager::Create access to our constructor. | 65 // Give BrowserAccessibilityManager::Create access to our constructor. |
81 friend class BrowserAccessibilityManager; | 66 friend class BrowserAccessibilityManager; |
82 | 67 |
83 // Track the most recent object that has been asked to scroll and | 68 // Track the most recent object that has been asked to scroll and |
84 // post a notification directly on it when it reaches its destination. | 69 // post a notification directly on it when it reaches its destination. |
85 // TODO(dmazzoni): remove once http://crbug.com/113483 is fixed. | 70 // TODO(dmazzoni): remove once http://crbug.com/113483 is fixed. |
86 BrowserAccessibilityWin* tracked_scroll_object_; | 71 BrowserAccessibilityWin* tracked_scroll_object_; |
87 | 72 |
88 // A mapping from the Windows-specific unique IDs (unique within the | 73 // A mapping from the Windows-specific unique IDs (unique within the |
89 // browser process) to accessibility ids within this page. | 74 // browser process) to accessibility ids within this page. |
90 base::hash_map<long, int32> unique_id_to_ax_id_map_; | 75 base::hash_map<long, int32> unique_id_to_ax_id_map_; |
91 | 76 |
92 // Owned by its parent; OnAccessibleHwndDeleted gets called upon deletion. | |
93 LegacyRenderWidgetHostHWND* accessible_hwnd_; | |
94 | |
95 // Set to true if we need to fire a focus event on the root as soon as | 77 // Set to true if we need to fire a focus event on the root as soon as |
96 // possible. | 78 // possible. |
97 bool focus_event_on_root_needed_; | 79 bool focus_event_on_root_needed_; |
98 | 80 |
99 DISALLOW_COPY_AND_ASSIGN(BrowserAccessibilityManagerWin); | 81 DISALLOW_COPY_AND_ASSIGN(BrowserAccessibilityManagerWin); |
100 }; | 82 }; |
101 | 83 |
102 } // namespace content | 84 } // namespace content |
103 | 85 |
104 #endif // CONTENT_BROWSER_ACCESSIBILITY_BROWSER_ACCESSIBILITY_MANAGER_WIN_H_ | 86 #endif // CONTENT_BROWSER_ACCESSIBILITY_BROWSER_ACCESSIBILITY_MANAGER_WIN_H_ |
OLD | NEW |