| Index: content/browser/accessibility/browser_accessibility.cc
|
| diff --git a/content/browser/accessibility/browser_accessibility.cc b/content/browser/accessibility/browser_accessibility.cc
|
| index 6a01f3d471f6e593c6b37446d7a636e492eeb9c6..3824914ff94178face04b07104e45331ba0bf2a0 100644
|
| --- a/content/browser/accessibility/browser_accessibility.cc
|
| +++ b/content/browser/accessibility/browser_accessibility.cc
|
| @@ -17,10 +17,19 @@
|
| #include "content/common/accessibility_messages.h"
|
| #include "ui/accessibility/ax_role_properties.h"
|
| #include "ui/accessibility/ax_text_utils.h"
|
| +#include "ui/accessibility/platform/ax_platform_unique_id.h"
|
| #include "ui/gfx/geometry/rect_conversions.h"
|
| #include "ui/gfx/geometry/rect_f.h"
|
|
|
| namespace content {
|
| +
|
| +namespace {
|
| +
|
| +// Map from unique_id to BrowserAccessibility
|
| +using UniqueIDMap = base::hash_map<int32_t, BrowserAccessibility*>;
|
| +base::LazyInstance<UniqueIDMap>::DestructorAtExit g_unique_id_map =
|
| + LAZY_INSTANCE_INITIALIZER;
|
| +}
|
|
|
| #if !defined(PLATFORM_HAS_NATIVE_ACCESSIBILITY_IMPL)
|
| // static
|
| @@ -30,9 +39,24 @@
|
| #endif
|
|
|
| BrowserAccessibility::BrowserAccessibility()
|
| - : manager_(nullptr), node_(nullptr) {}
|
| + : manager_(nullptr),
|
| + node_(nullptr),
|
| + unique_id_(ui::GetNextAXPlatformNodeUniqueId()) {
|
| + g_unique_id_map.Get()[unique_id_] = this;
|
| +}
|
|
|
| BrowserAccessibility::~BrowserAccessibility() {
|
| + if (unique_id_)
|
| + g_unique_id_map.Get().erase(unique_id_);
|
| +}
|
| +
|
| +// static
|
| +BrowserAccessibility* BrowserAccessibility::GetFromUniqueID(int32_t unique_id) {
|
| + auto iter = g_unique_id_map.Get().find(unique_id);
|
| + if (iter == g_unique_id_map.Get().end())
|
| + return nullptr;
|
| +
|
| + return iter->second;
|
| }
|
|
|
| void BrowserAccessibility::Init(BrowserAccessibilityManager* manager,
|
| @@ -549,6 +573,10 @@
|
| node_ = NULL;
|
| manager_ = NULL;
|
|
|
| + if (unique_id_)
|
| + g_unique_id_map.Get().erase(unique_id_);
|
| + unique_id_ = 0;
|
| +
|
| NativeReleaseReference();
|
| }
|
|
|
|
|