Index: chrome/browser/ui/views/accessibility/automation_manager_views.cc |
diff --git a/chrome/browser/ui/views/accessibility/automation_manager_views.cc b/chrome/browser/ui/views/accessibility/automation_manager_views.cc |
index 9b4812e0e579c909aa9bc6ce6adb89c5fa080efd..c8b512aabc61688307fd8a7e70555660a9a47014 100644 |
--- a/chrome/browser/ui/views/accessibility/automation_manager_views.cc |
+++ b/chrome/browser/ui/views/accessibility/automation_manager_views.cc |
@@ -14,6 +14,8 @@ |
#include "chrome/browser/profiles/profile_manager.h" |
#include "chrome/common/chrome_switches.h" |
#include "content/public/browser/ax_event_notification_details.h" |
+#include "ui/views/accessibility/ax_aura_obj_cache.h" |
+#include "ui/views/accessibility/ax_aura_obj_wrapper.h" |
#include "ui/views/view.h" |
#include "ui/views/widget/widget.h" |
@@ -44,25 +46,24 @@ void AutomationManagerViews::HandleEvent(Profile* profile, |
return; |
} |
- if (!current_tree_.get() || |
- current_tree_->GetRoot()->GetWidget() != widget) { |
- current_tree_.reset(new views::AXTreeSourceViews(widget)); |
+ if (!current_tree_.get()) { |
+ current_tree_.reset(new views::AXTreeSourceViews()); |
current_tree_serializer_.reset( |
- new ui::AXTreeSerializer<views::View*>(current_tree_.get())); |
- // TODO(dtseng): Need to send a load complete and clear any previous desktop |
- // trees. |
+ new ui::AXTreeSerializer<views::AXAuraObjWrapper*>( |
+ current_tree_.get())); |
} |
ui::AXTreeUpdate out_update; |
- current_tree_serializer_->SerializeChanges(view, &out_update); |
+ views::AXAuraObjWrapper* obj = |
+ views::AXAuraObjCache::GetInstance()->GetOrCreate(view); |
+ current_tree_serializer_->SerializeChanges(obj, &out_update); |
// Route this event to special process/routing ids recognized by the |
// Automation API as the desktop tree. |
- |
// TODO(dtseng): Would idealy define these special desktop constants in idl. |
content::AXEventNotificationDetails detail(out_update.nodes, |
event_type, |
- current_tree_->GetId(view), |
+ obj->GetID(), |
0, /* process_id */ |
0 /* routing_id */); |
std::vector<content::AXEventNotificationDetails> details; |