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

Unified Diff: chrome/browser/ui/ash/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: Move files from c/b/u/views/accessibility to c/b/u/ash/accessibility 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/ash/accessibility/automation_manager_views.cc
diff --git a/chrome/browser/ui/views/accessibility/automation_manager_views.cc b/chrome/browser/ui/ash/accessibility/automation_manager_views.cc
similarity index 69%
rename from chrome/browser/ui/views/accessibility/automation_manager_views.cc
rename to chrome/browser/ui/ash/accessibility/automation_manager_views.cc
index 9b4812e0e579c909aa9bc6ce6adb89c5fa080efd..92c808531042985aa2eb67d41059ccd2d29ec341 100644
--- a/chrome/browser/ui/views/accessibility/automation_manager_views.cc
+++ b/chrome/browser/ui/ash/accessibility/automation_manager_views.cc
@@ -2,18 +2,18 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "chrome/browser/ui/views/accessibility/automation_manager_views.h"
+#include "chrome/browser/ui/ash/accessibility/automation_manager_views.h"
#include <vector>
-#include "base/command_line.h"
#include "base/memory/singleton.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/extensions/api/automation_internal/automation_util.h"
#include "chrome/browser/profiles/profile.h"
#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"
@@ -22,11 +22,21 @@ AutomationManagerViews* AutomationManagerViews::GetInstance() {
return Singleton<AutomationManagerViews>::get();
}
+void AutomationManagerViews::Enable() {
+ enabled_ = true;
+ if (current_tree_serializer_.get())
+ current_tree_serializer_->Reset();
+}
+
+void AutomationManagerViews::Disable() {
+ enabled_ = false;
+ current_tree_serializer_->Reset();
+}
+
void AutomationManagerViews::HandleEvent(Profile* profile,
views::View* view,
ui::AXEvent event_type) {
- if (!CommandLine::ForCurrentProcess()->HasSwitch(
- switches::kEnableAutomationAPI)) {
+ if (!enabled_) {
return;
}
@@ -44,25 +54,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 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* aura_obj =
+ views::AXAuraObjCache::GetInstance()->GetOrCreate(view);
+ current_tree_serializer_->SerializeChanges(aura_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),
+ aura_obj->GetID(),
0, /* process_id */
0 /* routing_id */);
std::vector<content::AXEventNotificationDetails> details;
@@ -71,6 +80,6 @@ void AutomationManagerViews::HandleEvent(Profile* profile,
details, profile);
}
-AutomationManagerViews::AutomationManagerViews() {}
+AutomationManagerViews::AutomationManagerViews() : enabled_(false) {}
AutomationManagerViews:: ~AutomationManagerViews() {}

Powered by Google App Engine
This is Rietveld 408576698