| 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;
|
|
|