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

Unified Diff: ui/accessibility/ax_tree_id_registry.cc

Issue 2700103004: Initial support for accessibility actions on ARC. (Closed)
Patch Set: Use desktop tree id. Created 3 years, 10 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
« no previous file with comments | « ui/accessibility/ax_tree_id_registry.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/accessibility/ax_tree_id_registry.cc
diff --git a/ui/accessibility/ax_tree_id_registry.cc b/ui/accessibility/ax_tree_id_registry.cc
index 35e5d2ad7ade35262cb607d58f9841b2ef06b958..d880b7949ad260c5b90abc4554885345426a8386 100644
--- a/ui/accessibility/ax_tree_id_registry.cc
+++ b/ui/accessibility/ax_tree_id_registry.cc
@@ -5,6 +5,7 @@
#include "ui/accessibility/ax_tree_id_registry.h"
#include "base/memory/singleton.h"
+#include "ui/accessibility/ax_host_delegate.h"
namespace ui {
@@ -20,8 +21,7 @@ AXTreeIDRegistry::AXTreeID AXTreeIDRegistry::GetOrCreateAXTreeID(
int process_id,
int routing_id) {
FrameID frame_id(process_id, routing_id);
- std::map<FrameID, AXTreeID>::iterator it;
- it = frame_to_ax_tree_id_map_.find(frame_id);
+ auto it = frame_to_ax_tree_id_map_.find(frame_id);
if (it != frame_to_ax_tree_id_map_.end())
return it->second;
@@ -32,27 +32,49 @@ AXTreeIDRegistry::AXTreeID AXTreeIDRegistry::GetOrCreateAXTreeID(
return new_id;
}
-int AXTreeIDRegistry::CreateID() {
- return ++ax_tree_id_counter_;
-}
-
AXTreeIDRegistry::FrameID AXTreeIDRegistry::GetFrameID(
AXTreeIDRegistry::AXTreeID ax_tree_id) {
- std::map<AXTreeID, FrameID>::iterator it;
- it = ax_tree_to_frame_id_map_.find(ax_tree_id);
+ auto it = ax_tree_to_frame_id_map_.find(ax_tree_id);
if (it != ax_tree_to_frame_id_map_.end())
return it->second;
return FrameID(-1, -1);
}
+AXTreeIDRegistry::AXTreeID AXTreeIDRegistry::GetOrCreateAXTreeID(
+ AXHostDelegate* delegate) {
+ for (auto it : id_to_host_delegate_) {
+ if (it.second == delegate)
+ return it.first;
+ }
+ id_to_host_delegate_[++ax_tree_id_counter_] = delegate;
+ return ax_tree_id_counter_;
+}
+
+AXHostDelegate* AXTreeIDRegistry::GetHostDelegate(
+ AXTreeIDRegistry::AXTreeID ax_tree_id) {
+ auto it = id_to_host_delegate_.find(ax_tree_id);
+ if (it == id_to_host_delegate_.end())
+ return nullptr;
+ return it->second;
+}
+
+void AXTreeIDRegistry::SetDelegateForID(AXHostDelegate* delegate,
+ AXTreeIDRegistry::AXTreeID id) {
+ id_to_host_delegate_[id] = delegate;
+}
+
void AXTreeIDRegistry::RemoveAXTreeID(AXTreeIDRegistry::AXTreeID ax_tree_id) {
- std::map<AXTreeID, FrameID>::iterator it;
- it = ax_tree_to_frame_id_map_.find(ax_tree_id);
- if (it != ax_tree_to_frame_id_map_.end()) {
- frame_to_ax_tree_id_map_.erase(it->second);
- ax_tree_to_frame_id_map_.erase(it);
+ auto frame_it = ax_tree_to_frame_id_map_.find(ax_tree_id);
+ if (frame_it != ax_tree_to_frame_id_map_.end()) {
+ frame_to_ax_tree_id_map_.erase(frame_it->second);
+ ax_tree_to_frame_id_map_.erase(frame_it);
+ return;
}
+
+ auto action_it = id_to_host_delegate_.find(ax_tree_id);
+ if (action_it != id_to_host_delegate_.end())
+ id_to_host_delegate_.erase(action_it);
}
AXTreeIDRegistry::AXTreeIDRegistry() : ax_tree_id_counter_(-1) {
« no previous file with comments | « ui/accessibility/ax_tree_id_registry.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698