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

Side by Side Diff: chrome/browser/browser_accessibility_manager_win.cc

Issue 3380017: Support additional webkit accessibility notifications and states. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Adding missig file. Created 10 years, 3 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 #include "chrome/browser/browser_accessibility_manager_win.h" 5 #include "chrome/browser/browser_accessibility_manager_win.h"
6 6
7 #include "chrome/browser/browser_accessibility_win.h" 7 #include "chrome/browser/browser_accessibility_win.h"
8 #include "chrome/browser/renderer_host/render_process_host.h" 8 #include "chrome/browser/renderer_host/render_process_host.h"
9 #include "chrome/browser/renderer_host/render_view_host.h" 9 #include "chrome/browser/renderer_host/render_view_host.h"
10 #include "chrome/common/render_messages.h" 10 #include "chrome/common/render_messages.h"
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
93 if (delegate_) 93 if (delegate_)
94 delegate_->SetAccessibilityFocus(node.renderer_id()); 94 delegate_->SetAccessibilityFocus(node.renderer_id());
95 } 95 }
96 96
97 void BrowserAccessibilityManager::DoDefaultAction( 97 void BrowserAccessibilityManager::DoDefaultAction(
98 const BrowserAccessibility& node) { 98 const BrowserAccessibility& node) {
99 if (delegate_) 99 if (delegate_)
100 delegate_->AccessibilityDoDefaultAction(node.renderer_id()); 100 delegate_->AccessibilityDoDefaultAction(node.renderer_id());
101 } 101 }
102 102
103 void BrowserAccessibilityManager::OnAccessibilityFocusChange(int renderer_id) {
104 base::hash_map<int, LONG>::iterator iter =
105 renderer_id_to_child_id_map_.find(renderer_id);
106 if (iter == renderer_id_to_child_id_map_.end())
107 return;
108
109 LONG child_id = iter->second;
110 base::hash_map<LONG, BrowserAccessibility*>::iterator uniq_iter =
111 child_id_map_.find(child_id);
112 if (uniq_iter != child_id_map_.end())
113 focus_ = uniq_iter->second;
114 ::NotifyWinEvent(EVENT_OBJECT_FOCUS, parent_hwnd_, OBJID_CLIENT, child_id);
115 }
116
117 void BrowserAccessibilityManager::OnAccessibilityNotifications( 103 void BrowserAccessibilityManager::OnAccessibilityNotifications(
118 const std::vector<ViewHostMsg_AccessibilityNotification_Params>& params) { 104 const std::vector<ViewHostMsg_AccessibilityNotification_Params>& params) {
119 if (delegate_) 105 if (delegate_)
120 delegate_->AccessibilityNotificationsAck(); 106 delegate_->AccessibilityNotificationsAck();
121 107
122 for (uint32 index = 0; index < params.size(); index++) { 108 for (uint32 index = 0; index < params.size(); index++) {
123 const ViewHostMsg_AccessibilityNotification_Params& param = params[index]; 109 const ViewHostMsg_AccessibilityNotification_Params& param = params[index];
124 110
125 switch (param.notification_type) { 111 switch (param.notification_type) {
126 case ViewHostMsg_AccessibilityNotification_Params:: 112 case ViewHostMsg_AccessibilityNotification_Params::
127 NOTIFICATION_TYPE_CHECK_STATE_CHANGED: 113 NOTIFICATION_TYPE_CHECK_STATE_CHANGED:
128 OnAccessibilityObjectStateChange(param.acc_obj); 114 OnAccessibilityObjectStateChange(param.acc_obj);
129 break; 115 break;
130 case ViewHostMsg_AccessibilityNotification_Params:: 116 case ViewHostMsg_AccessibilityNotification_Params::
131 NOTIFICATION_TYPE_CHILDREN_CHANGED: 117 NOTIFICATION_TYPE_CHILDREN_CHANGED:
132 OnAccessibilityObjectChildrenChange(param.acc_obj); 118 OnAccessibilityObjectChildrenChange(param.acc_obj);
133 break; 119 break;
134 case ViewHostMsg_AccessibilityNotification_Params:: 120 case ViewHostMsg_AccessibilityNotification_Params::
121 NOTIFICATION_TYPE_FOCUS_CHANGED:
122 OnAccessibilityObjectFocusChange(param.acc_obj);
123 break;
124 case ViewHostMsg_AccessibilityNotification_Params::
125 NOTIFICATION_TYPE_LOAD_COMPLETE:
126 OnAccessibilityObjectLoadComplete(param.acc_obj);
127 break;
128 case ViewHostMsg_AccessibilityNotification_Params::
135 NOTIFICATION_TYPE_VALUE_CHANGED: 129 NOTIFICATION_TYPE_VALUE_CHANGED:
136 OnAccessibilityObjectValueChange(param.acc_obj); 130 OnAccessibilityObjectValueChange(param.acc_obj);
137 break; 131 break;
138 default: 132 default:
139 DCHECK(0); 133 DCHECK(0);
140 break; 134 break;
141 } 135 }
142 } 136 }
143 } 137 }
144 138
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
207 LONG child_id; 201 LONG child_id;
208 if (root_ != new_browser_acc) { 202 if (root_ != new_browser_acc) {
209 child_id = new_browser_acc->GetParent()->child_id(); 203 child_id = new_browser_acc->GetParent()->child_id();
210 } else { 204 } else {
211 child_id = CHILDID_SELF; 205 child_id = CHILDID_SELF;
212 } 206 }
213 207
214 NotifyWinEvent(EVENT_OBJECT_REORDER, parent_hwnd_, OBJID_CLIENT, child_id); 208 NotifyWinEvent(EVENT_OBJECT_REORDER, parent_hwnd_, OBJID_CLIENT, child_id);
215 } 209 }
216 210
211 void BrowserAccessibilityManager::OnAccessibilityObjectFocusChange(
212 const webkit_glue::WebAccessibility& acc_obj) {
213 BrowserAccessibility* new_browser_acc = UpdateTree(acc_obj);
214 if (!new_browser_acc)
215 return;
216
217 focus_ = new_browser_acc;
218 LONG child_id = new_browser_acc->child_id();
219 NotifyWinEvent(EVENT_OBJECT_FOCUS, parent_hwnd_, OBJID_CLIENT, child_id);
220 }
221
222 void BrowserAccessibilityManager::OnAccessibilityObjectLoadComplete(
223 const webkit_glue::WebAccessibility& acc_obj) {
224 root_->InactivateTree();
225 root_->Release();
226 focus_ = NULL;
227
228 root_ = CreateAccessibilityTree(NULL, GetNextChildID(), acc_obj, 0);
229 if (!focus_)
230 focus_ = root_;
231
232 LONG root_id = root_->child_id();
233 NotifyWinEvent(EVENT_OBJECT_FOCUS, parent_hwnd_, OBJID_CLIENT, root_id);
234 NotifyWinEvent(
235 IA2_EVENT_DOCUMENT_LOAD_COMPLETE, parent_hwnd_, OBJID_CLIENT, root_id);
236 }
237
217 void BrowserAccessibilityManager::OnAccessibilityObjectValueChange( 238 void BrowserAccessibilityManager::OnAccessibilityObjectValueChange(
218 const webkit_glue::WebAccessibility& acc_obj) { 239 const webkit_glue::WebAccessibility& acc_obj) {
219 BrowserAccessibility* new_browser_acc = UpdateTree(acc_obj); 240 BrowserAccessibility* new_browser_acc = UpdateTree(acc_obj);
220 if (!new_browser_acc) 241 if (!new_browser_acc)
221 return; 242 return;
222 243
223 LONG child_id = new_browser_acc->child_id(); 244 LONG child_id = new_browser_acc->child_id();
224 NotifyWinEvent( 245 NotifyWinEvent(
225 EVENT_OBJECT_VALUECHANGE, parent_hwnd_, OBJID_CLIENT, child_id); 246 EVENT_OBJECT_VALUECHANGE, parent_hwnd_, OBJID_CLIENT, child_id);
226 } 247 }
(...skipping 23 matching lines...) Expand all
250 if ((src.state >> WebAccessibility::STATE_FOCUSED) & 1) 271 if ((src.state >> WebAccessibility::STATE_FOCUSED) & 1)
251 focus_ = instance; 272 focus_ = instance;
252 for (int i = 0; i < static_cast<int>(src.children.size()); ++i) { 273 for (int i = 0; i < static_cast<int>(src.children.size()); ++i) {
253 BrowserAccessibility* child = CreateAccessibilityTree( 274 BrowserAccessibility* child = CreateAccessibilityTree(
254 instance, GetNextChildID(), src.children[i], i); 275 instance, GetNextChildID(), src.children[i], i);
255 instance->AddChild(child); 276 instance->AddChild(child);
256 } 277 }
257 278
258 return instance; 279 return instance;
259 } 280 }
OLDNEW
« no previous file with comments | « chrome/browser/browser_accessibility_manager_win.h ('k') | chrome/browser/browser_accessibility_win.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698