| 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) {
|
|
|