Index: chrome/browser/browser_accessibility_manager_win.cc |
=================================================================== |
--- chrome/browser/browser_accessibility_manager_win.cc (revision 60480) |
+++ chrome/browser/browser_accessibility_manager_win.cc (working copy) |
@@ -100,20 +100,6 @@ |
delegate_->AccessibilityDoDefaultAction(node.renderer_id()); |
} |
-void BrowserAccessibilityManager::OnAccessibilityFocusChange(int renderer_id) { |
- base::hash_map<int, LONG>::iterator iter = |
- renderer_id_to_child_id_map_.find(renderer_id); |
- if (iter == renderer_id_to_child_id_map_.end()) |
- return; |
- |
- LONG child_id = iter->second; |
- base::hash_map<LONG, BrowserAccessibility*>::iterator uniq_iter = |
- child_id_map_.find(child_id); |
- if (uniq_iter != child_id_map_.end()) |
- focus_ = uniq_iter->second; |
- ::NotifyWinEvent(EVENT_OBJECT_FOCUS, parent_hwnd_, OBJID_CLIENT, child_id); |
-} |
- |
void BrowserAccessibilityManager::OnAccessibilityNotifications( |
const std::vector<ViewHostMsg_AccessibilityNotification_Params>& params) { |
if (delegate_) |
@@ -132,6 +118,14 @@ |
OnAccessibilityObjectChildrenChange(param.acc_obj); |
break; |
case ViewHostMsg_AccessibilityNotification_Params:: |
+ NOTIFICATION_TYPE_FOCUS_CHANGED: |
+ OnAccessibilityObjectFocusChange(param.acc_obj); |
+ break; |
+ case ViewHostMsg_AccessibilityNotification_Params:: |
+ NOTIFICATION_TYPE_LOAD_COMPLETE: |
+ OnAccessibilityObjectLoadComplete(param.acc_obj); |
+ break; |
+ case ViewHostMsg_AccessibilityNotification_Params:: |
NOTIFICATION_TYPE_VALUE_CHANGED: |
OnAccessibilityObjectValueChange(param.acc_obj); |
break; |
@@ -214,6 +208,33 @@ |
NotifyWinEvent(EVENT_OBJECT_REORDER, parent_hwnd_, OBJID_CLIENT, child_id); |
} |
+void BrowserAccessibilityManager::OnAccessibilityObjectFocusChange( |
+ const webkit_glue::WebAccessibility& acc_obj) { |
+ BrowserAccessibility* new_browser_acc = UpdateTree(acc_obj); |
+ if (!new_browser_acc) |
+ return; |
+ |
+ focus_ = new_browser_acc; |
+ LONG child_id = new_browser_acc->child_id(); |
+ NotifyWinEvent(EVENT_OBJECT_FOCUS, parent_hwnd_, OBJID_CLIENT, child_id); |
+} |
+ |
+void BrowserAccessibilityManager::OnAccessibilityObjectLoadComplete( |
+ const webkit_glue::WebAccessibility& acc_obj) { |
+ root_->InactivateTree(); |
+ root_->Release(); |
+ focus_ = NULL; |
+ |
+ root_ = CreateAccessibilityTree(NULL, GetNextChildID(), acc_obj, 0); |
+ if (!focus_) |
+ focus_ = root_; |
+ |
+ LONG root_id = root_->child_id(); |
+ NotifyWinEvent(EVENT_OBJECT_FOCUS, parent_hwnd_, OBJID_CLIENT, root_id); |
+ NotifyWinEvent( |
+ IA2_EVENT_DOCUMENT_LOAD_COMPLETE, parent_hwnd_, OBJID_CLIENT, root_id); |
+} |
+ |
void BrowserAccessibilityManager::OnAccessibilityObjectValueChange( |
const webkit_glue::WebAccessibility& acc_obj) { |
BrowserAccessibility* new_browser_acc = UpdateTree(acc_obj); |