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

Unified Diff: chrome/browser/ui/views/accessibility/automation_manager_views.cc

Issue 246433012: Extend AXTreeSourceViews to handle aura::Window and views::Widget. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: With tests. Created 6 years, 8 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 side-by-side diff with in-line comments
Download patch
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;

Powered by Google App Engine
This is Rietveld 408576698