diff --git a/ui/accessibility/platform/ax_platform_node_win.cc b/ui/accessibility/platform/ax_platform_node_win.cc index 85a012a849e71c..f13a6cc57db447 100644 --- a/ui/accessibility/platform/ax_platform_node_win.cc +++ b/ui/accessibility/platform/ax_platform_node_win.cc @@ -367,6 +367,11 @@ AXPlatformNodeWin::~AXPlatformNodeWin() { g_unique_id_map.Get().erase(unique_id_); } +// static +size_t AXPlatformNodeWin::GetInstanceCountForTesting() { + return g_unique_id_map.Get().size(); +} + const base::char16 AXPlatformNodeWin::kEmbeddedCharacter = L'\xfffc'; void AXPlatformNodeWin::CalculateRelationships() { diff --git a/ui/accessibility/platform/ax_platform_node_win.h b/ui/accessibility/platform/ax_platform_node_win.h index 9bfdd15a196c6d..a5af54561a62f8 100644 --- a/ui/accessibility/platform/ax_platform_node_win.h +++ b/ui/accessibility/platform/ax_platform_node_win.h @@ -292,6 +292,9 @@ class AX_EXPORT __declspec(uuid("26f5641a-246d-457b-a96d-07f3fae6acf2")) ~AXPlatformNodeWin() override; + // Return the number of instances of AXPlatformNodeWin, for leak testing. + static size_t GetInstanceCountForTesting(); + // Represents a non-static text node in IAccessibleHypertext. This character // is embedded in the response to IAccessibleText::get_text, indicating the // position where a non-static text child object appears. diff --git a/ui/accessibility/platform/ax_platform_node_win_unittest.cc b/ui/accessibility/platform/ax_platform_node_win_unittest.cc index eef013f827cae5..bbaf4a46b55217 100644 --- a/ui/accessibility/platform/ax_platform_node_win_unittest.cc +++ b/ui/accessibility/platform/ax_platform_node_win_unittest.cc @@ -44,6 +44,12 @@ class AXPlatformNodeWinTest : public ui::AXPlatformNodeTest { win::CreateATLModuleIfNeeded(); } + void TearDown() override { + // Destroy the tree and make sure we're not leaking any objects. + tree_.reset(nullptr); + ASSERT_EQ(0U, AXPlatformNodeWin::GetInstanceCountForTesting()); + } + protected: void BuildRelationships(ComPtr accessible) { CHECK(accessible);