| Index: chrome/browser/accessibility/browser_accessibility_win_unittest.cc
|
| ===================================================================
|
| --- chrome/browser/accessibility/browser_accessibility_win_unittest.cc (revision 61758)
|
| +++ chrome/browser/accessibility/browser_accessibility_win_unittest.cc (working copy)
|
| @@ -4,34 +4,35 @@
|
|
|
| #include "base/scoped_ptr.h"
|
| #include "base/scoped_comptr_win.h"
|
| -#include "chrome/browser/accessibility/browser_accessibility_manager_win.h"
|
| +#include "chrome/browser/accessibility/browser_accessibility_manager.h"
|
| #include "chrome/browser/accessibility/browser_accessibility_win.h"
|
| #include "chrome/common/render_messages_params.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
|
|
| using webkit_glue::WebAccessibility;
|
|
|
| -// Subclass of BrowserAccessibility that counts the number of instances.
|
| -class CountedBrowserAccessibilityWin : public BrowserAccessibilityWin {
|
| +// Subclass of BrowserAccessibilityWin that counts the number of instances.
|
| +class CountedBrowserAccessibility : public BrowserAccessibilityWin {
|
| public:
|
| - CountedBrowserAccessibilityWin() { global_obj_count_++; }
|
| - virtual ~CountedBrowserAccessibilityWin() { global_obj_count_--; }
|
| + CountedBrowserAccessibility() { global_obj_count_++; }
|
| + virtual ~CountedBrowserAccessibility() { global_obj_count_--; }
|
| static int global_obj_count_;
|
| };
|
|
|
| -int CountedBrowserAccessibilityWin::global_obj_count_ = 0;
|
| +int CountedBrowserAccessibility::global_obj_count_ = 0;
|
|
|
| -// Factory that creates a CountedBrowserAccessibilityWin.
|
| -class CountedBrowserAccessibilityWinFactory
|
| - : public BrowserAccessibilityWinFactory {
|
| +// Factory that creates a CountedBrowserAccessibility.
|
| +class CountedBrowserAccessibilityFactory
|
| + : public BrowserAccessibilityFactory {
|
| public:
|
| - virtual ~CountedBrowserAccessibilityWinFactory() {}
|
| - virtual BrowserAccessibilityWin* Create() {
|
| - CComObject<CountedBrowserAccessibilityWin>* instance;
|
| - HRESULT hr = CComObject<CountedBrowserAccessibilityWin>::CreateInstance(
|
| + virtual ~CountedBrowserAccessibilityFactory() {}
|
| + virtual BrowserAccessibility* Create() {
|
| + CComObject<CountedBrowserAccessibility>* instance;
|
| + HRESULT hr = CComObject<CountedBrowserAccessibility>::CreateInstance(
|
| &instance);
|
| DCHECK(SUCCEEDED(hr));
|
| - return instance->NewReference();
|
| + instance->AddRef();
|
| + return instance;
|
| }
|
| };
|
|
|
| @@ -90,25 +91,30 @@
|
| // and a factory for an instance-counting BrowserAccessibility, and ensure
|
| // that exactly 3 instances were created. Note that the manager takes
|
| // ownership of the factory.
|
| - CountedBrowserAccessibilityWin::global_obj_count_ = 0;
|
| - // TODO: Use BrowserAccessibilityManager::Create instead of new below.
|
| + CountedBrowserAccessibility::global_obj_count_ = 0;
|
| BrowserAccessibilityManager* manager =
|
| - new BrowserAccessibilityManagerWin(
|
| - GetDesktopWindow(), root, NULL,
|
| - new CountedBrowserAccessibilityWinFactory());
|
| - ASSERT_EQ(3, CountedBrowserAccessibilityWin::global_obj_count_);
|
| + BrowserAccessibilityManager::Create(
|
| + GetDesktopWindow(),
|
| + root,
|
| + NULL,
|
| + new CountedBrowserAccessibilityFactory());
|
| + ASSERT_EQ(3, CountedBrowserAccessibility::global_obj_count_);
|
|
|
| // Delete the manager and test that all 3 instances are deleted.
|
| delete manager;
|
| - ASSERT_EQ(0, CountedBrowserAccessibilityWin::global_obj_count_);
|
| + ASSERT_EQ(0, CountedBrowserAccessibility::global_obj_count_);
|
|
|
| // Construct a manager again, and this time use the IAccessible interface
|
| // to get new references to two of the three nodes in the tree.
|
| - manager = new BrowserAccessibilityManagerWin(
|
| - GetDesktopWindow(), root, NULL,
|
| - new CountedBrowserAccessibilityWinFactory());
|
| - ASSERT_EQ(3, CountedBrowserAccessibilityWin::global_obj_count_);
|
| - IAccessible* root_accessible = manager->GetRootAccessible();
|
| + manager =
|
| + BrowserAccessibilityManager::Create(
|
| + GetDesktopWindow(),
|
| + root,
|
| + NULL,
|
| + new CountedBrowserAccessibilityFactory());
|
| + ASSERT_EQ(3, CountedBrowserAccessibility::global_obj_count_);
|
| + IAccessible* root_accessible =
|
| + manager->GetRoot()->toBrowserAccessibilityWin();
|
| IDispatch* root_iaccessible = NULL;
|
| IDispatch* child1_iaccessible = NULL;
|
| VARIANT var_child;
|
| @@ -123,14 +129,14 @@
|
| // Now delete the manager, and only one of the three nodes in the tree
|
| // should be released.
|
| delete manager;
|
| - ASSERT_EQ(2, CountedBrowserAccessibilityWin::global_obj_count_);
|
| + ASSERT_EQ(2, CountedBrowserAccessibility::global_obj_count_);
|
|
|
| // Release each of our references and make sure that each one results in
|
| // the instance being deleted as its reference count hits zero.
|
| root_iaccessible->Release();
|
| - ASSERT_EQ(1, CountedBrowserAccessibilityWin::global_obj_count_);
|
| + ASSERT_EQ(1, CountedBrowserAccessibility::global_obj_count_);
|
| child1_iaccessible->Release();
|
| - ASSERT_EQ(0, CountedBrowserAccessibilityWin::global_obj_count_);
|
| + ASSERT_EQ(0, CountedBrowserAccessibility::global_obj_count_);
|
| }
|
|
|
| TEST_F(BrowserAccessibilityTest, TestChildrenChange) {
|
| @@ -152,16 +158,18 @@
|
|
|
| // Construct a BrowserAccessibilityManager with this WebAccessibility tree
|
| // and a factory for an instance-counting BrowserAccessibility.
|
| - CountedBrowserAccessibilityWin::global_obj_count_ = 0;
|
| + CountedBrowserAccessibility::global_obj_count_ = 0;
|
| BrowserAccessibilityManager* manager =
|
| - new BrowserAccessibilityManagerWin(
|
| - GetDesktopWindow(), root, NULL,
|
| - new CountedBrowserAccessibilityWinFactory());
|
| + BrowserAccessibilityManager::Create(
|
| + GetDesktopWindow(),
|
| + root,
|
| + NULL,
|
| + new CountedBrowserAccessibilityFactory());
|
|
|
| // Query for the text IAccessible and verify that it returns "old text" as its
|
| // value.
|
| ScopedComPtr<IDispatch> text_dispatch;
|
| - HRESULT hr = manager->GetRootAccessible()->get_accChild(
|
| + HRESULT hr = manager->GetRoot()->toBrowserAccessibilityWin()->get_accChild(
|
| CreateI4Variant(1), text_dispatch.Receive());
|
| ASSERT_EQ(S_OK, hr);
|
|
|
| @@ -190,7 +198,7 @@
|
|
|
| // Query for the text IAccessible and verify that it now returns "new text"
|
| // as its value.
|
| - hr = manager->GetRootAccessible()->get_accChild(
|
| + hr = manager->GetRoot()->toBrowserAccessibilityWin()->get_accChild(
|
| CreateI4Variant(1),
|
| text_dispatch.Receive());
|
| ASSERT_EQ(S_OK, hr);
|
| @@ -208,7 +216,7 @@
|
| // Delete the manager and test that all BrowserAccessibility instances are
|
| // deleted.
|
| delete manager;
|
| - ASSERT_EQ(0, CountedBrowserAccessibilityWin::global_obj_count_);
|
| + ASSERT_EQ(0, CountedBrowserAccessibility::global_obj_count_);
|
| }
|
|
|
| TEST_F(BrowserAccessibilityTest, TestChildrenChangeNoLeaks) {
|
| @@ -239,12 +247,14 @@
|
| // and a factory for an instance-counting BrowserAccessibility and ensure
|
| // that exactly 4 instances were created. Note that the manager takes
|
| // ownership of the factory.
|
| - CountedBrowserAccessibilityWin::global_obj_count_ = 0;
|
| + CountedBrowserAccessibility::global_obj_count_ = 0;
|
| BrowserAccessibilityManager* manager =
|
| - new BrowserAccessibilityManagerWin(
|
| - GetDesktopWindow(), root, NULL,
|
| - new CountedBrowserAccessibilityWinFactory());
|
| - ASSERT_EQ(4, CountedBrowserAccessibilityWin::global_obj_count_);
|
| + BrowserAccessibilityManager::Create(
|
| + GetDesktopWindow(),
|
| + root,
|
| + NULL,
|
| + new CountedBrowserAccessibilityFactory());
|
| + ASSERT_EQ(4, CountedBrowserAccessibility::global_obj_count_);
|
|
|
| // Notify the BrowserAccessibilityManager that the div node and its children
|
| // were removed and ensure that only one BrowserAccessibility instance exists.
|
| @@ -257,10 +267,10 @@
|
| std::vector<ViewHostMsg_AccessibilityNotification_Params> notifications;
|
| notifications.push_back(param);
|
| manager->OnAccessibilityNotifications(notifications);
|
| - ASSERT_EQ(1, CountedBrowserAccessibilityWin::global_obj_count_);
|
| + ASSERT_EQ(1, CountedBrowserAccessibility::global_obj_count_);
|
|
|
| // Delete the manager and test that all BrowserAccessibility instances are
|
| // deleted.
|
| delete manager;
|
| - ASSERT_EQ(0, CountedBrowserAccessibilityWin::global_obj_count_);
|
| + ASSERT_EQ(0, CountedBrowserAccessibility::global_obj_count_);
|
| }
|
|
|