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_RENDERER_RENDERER_ACCESSIBILITY_COMPLETE_H_ | 5 #ifndef CONTENT_RENDERER_RENDERER_ACCESSIBILITY_COMPLETE_H_ |
6 #define CONTENT_RENDERER_RENDERER_ACCESSIBILITY_COMPLETE_H_ | 6 #define CONTENT_RENDERER_RENDERER_ACCESSIBILITY_COMPLETE_H_ |
7 #pragma once | 7 #pragma once |
8 | 8 |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
11 #include "base/hash_tables.h" | 11 #include "base/hash_tables.h" |
12 #include "base/memory/weak_ptr.h" | 12 #include "base/memory/weak_ptr.h" |
| 13 #include "content/common/accessibility_node_data.h" |
13 #include "content/public/renderer/render_view_observer.h" | 14 #include "content/public/renderer/render_view_observer.h" |
14 #include "content/renderer/renderer_accessibility.h" | 15 #include "content/renderer/renderer_accessibility.h" |
15 #include "third_party/WebKit/Source/WebKit/chromium/public/WebAccessibilityNotif
ication.h" | 16 #include "third_party/WebKit/Source/WebKit/chromium/public/WebAccessibilityNotif
ication.h" |
16 | 17 |
17 class RenderViewImpl; | 18 class RenderViewImpl; |
18 | 19 |
19 namespace WebKit { | 20 namespace WebKit { |
20 class WebAccessibilityObject; | 21 class WebAccessibilityObject; |
21 class WebDocument; | 22 class WebDocument; |
22 class WebNode; | 23 class WebNode; |
23 }; | 24 }; |
24 | 25 |
25 namespace webkit_glue { | |
26 struct WebAccessibility; | |
27 }; | |
28 | |
29 namespace content { | 26 namespace content { |
30 | 27 |
31 // This is the subclass of RendererAccessibility that implements | 28 // This is the subclass of RendererAccessibility that implements |
32 // complete accessibility support for assistive technology (as opposed to | 29 // complete accessibility support for assistive technology (as opposed to |
33 // partial support - see RendererAccessibilityFocusOnly). | 30 // partial support - see RendererAccessibilityFocusOnly). |
34 // | 31 // |
35 // This version turns on WebKit's accessibility code and sends | 32 // This version turns on WebKit's accessibility code and sends |
36 // a serialized representation of that tree whenever it changes. It also | 33 // a serialized representation of that tree whenever it changes. It also |
37 // handles requests from the browser to perform accessibility actions on | 34 // handles requests from the browser to perform accessibility actions on |
38 // nodes in the tree (e.g., change focus, or click on a button). | 35 // nodes in the tree (e.g., change focus, or click on a button). |
(...skipping 26 matching lines...) Expand all Loading... |
65 ~BrowserTreeNode() {} | 62 ~BrowserTreeNode() {} |
66 int32 id; | 63 int32 id; |
67 std::vector<BrowserTreeNode*> children; | 64 std::vector<BrowserTreeNode*> children; |
68 }; | 65 }; |
69 | 66 |
70 // Send queued notifications from the renderer to the browser. | 67 // Send queued notifications from the renderer to the browser. |
71 void SendPendingAccessibilityNotifications(); | 68 void SendPendingAccessibilityNotifications(); |
72 | 69 |
73 // Update our representation of what nodes the browser has, given a | 70 // Update our representation of what nodes the browser has, given a |
74 // tree of nodes. | 71 // tree of nodes. |
75 void UpdateBrowserTree(const webkit_glue::WebAccessibility& renderer_node); | 72 void UpdateBrowserTree(const AccessibilityNodeData& renderer_node); |
76 | 73 |
77 // Clear the given node and recursively delete all of its descendants | 74 // Clear the given node and recursively delete all of its descendants |
78 // from the browser tree. (Does not delete |browser_node|). | 75 // from the browser tree. (Does not delete |browser_node|). |
79 void ClearBrowserTreeNode(BrowserTreeNode* browser_node); | 76 void ClearBrowserTreeNode(BrowserTreeNode* browser_node); |
80 | 77 |
81 // Handlers for messages from the browser to the renderer. | 78 // Handlers for messages from the browser to the renderer. |
82 void OnDoDefaultAction(int acc_obj_id); | 79 void OnDoDefaultAction(int acc_obj_id); |
83 void OnNotificationsAck(); | 80 void OnNotificationsAck(); |
84 void OnChangeScrollPosition(int acc_obj_id, int scroll_x, int scroll_y); | 81 void OnChangeScrollPosition(int acc_obj_id, int scroll_x, int scroll_y); |
85 void OnScrollToMakeVisible(int acc_obj_id, gfx::Rect subfocus); | 82 void OnScrollToMakeVisible(int acc_obj_id, gfx::Rect subfocus); |
86 void OnScrollToPoint(int acc_obj_id, gfx::Point point); | 83 void OnScrollToPoint(int acc_obj_id, gfx::Point point); |
87 void OnSetFocus(int acc_obj_id); | 84 void OnSetFocus(int acc_obj_id); |
88 | 85 |
89 void OnSetTextSelection(int acc_obj_id, int start_offset, int end_offset); | 86 void OnSetTextSelection(int acc_obj_id, int start_offset, int end_offset); |
90 | 87 |
91 // Whether or not this notification typically needs to send | 88 // Whether or not this notification typically needs to send |
92 // updates to its children, too. | 89 // updates to its children, too. |
93 bool ShouldIncludeChildren( | 90 bool ShouldIncludeChildren( |
94 const AccessibilityHostMsg_NotificationParams& notification); | 91 const AccessibilityHostMsg_NotificationParams& notification); |
95 | 92 |
96 // Checks if a WebKit accessibility object is an editable text node. | 93 // Checks if a WebKit accessibility object is an editable text node. |
97 bool IsEditableText(const WebKit::WebAccessibilityObject& node); | 94 bool IsEditableText(const WebKit::WebAccessibilityObject& node); |
98 | 95 |
99 // Recursively explore the tree of WebKit accessibility objects rooted | 96 // Recursively explore the tree of WebKit accessibility objects rooted |
100 // at |src|, and for each editable text node encountered, add a | 97 // at |src|, and for each editable text node encountered, add a |
101 // corresponding WebAccessibility node as a child of |dst|. | 98 // corresponding WebAccessibility node as a child of |dst|. |
102 void RecursiveAddEditableTextNodesToTree( | 99 void RecursiveAddEditableTextNodesToTree( |
103 const WebKit::WebAccessibilityObject& src, | 100 const WebKit::WebAccessibilityObject& src, |
104 webkit_glue::WebAccessibility* dst); | 101 AccessibilityNodeData* dst); |
105 | 102 |
106 // Build a tree of serializable WebAccessibility nodes to send to the | 103 // Build a tree of serializable AccessibilityNodeData nodes to send to the |
107 // browser process, given a WebAccessibilityObject node from WebKit. | 104 // browser process, given a WebAccessibilityObject node from WebKit. |
108 // Modifies |dst| in-place, it's assumed to be empty. | 105 // Modifies |dst| in-place, it's assumed to be empty. |
109 void BuildAccessibilityTree(const WebKit::WebAccessibilityObject& src, | 106 void BuildAccessibilityTree(const WebKit::WebAccessibilityObject& src, |
110 bool include_children, | 107 bool include_children, |
111 webkit_glue::WebAccessibility* dst); | 108 AccessibilityNodeData* dst); |
112 | 109 |
113 // So we can queue up tasks to be executed later. | 110 // So we can queue up tasks to be executed later. |
114 base::WeakPtrFactory<RendererAccessibilityComplete> weak_factory_; | 111 base::WeakPtrFactory<RendererAccessibilityComplete> weak_factory_; |
115 | 112 |
116 // Notifications from WebKit are collected until they are ready to be | 113 // Notifications from WebKit are collected until they are ready to be |
117 // sent to the browser. | 114 // sent to the browser. |
118 std::vector<AccessibilityHostMsg_NotificationParams> pending_notifications_; | 115 std::vector<AccessibilityHostMsg_NotificationParams> pending_notifications_; |
119 | 116 |
120 // Our representation of the browser tree. | 117 // Our representation of the browser tree. |
121 BrowserTreeNode* browser_root_; | 118 BrowserTreeNode* browser_root_; |
(...skipping 14 matching lines...) Expand all Loading... |
136 | 133 |
137 // True if verbose logging of accessibility events is on. | 134 // True if verbose logging of accessibility events is on. |
138 bool logging_; | 135 bool logging_; |
139 | 136 |
140 DISALLOW_COPY_AND_ASSIGN(RendererAccessibilityComplete); | 137 DISALLOW_COPY_AND_ASSIGN(RendererAccessibilityComplete); |
141 }; | 138 }; |
142 | 139 |
143 #endif // CONTENT_RENDERER_RENDERER_ACCESSIBILITY_COMPLETE_H_ | 140 #endif // CONTENT_RENDERER_RENDERER_ACCESSIBILITY_COMPLETE_H_ |
144 | 141 |
145 } // namespace content | 142 } // namespace content |
OLD | NEW |