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

Unified Diff: content/browser/accessibility/browser_accessibility_win_unittest.cc

Issue 14264015: Misc. cleanup: (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 7 years, 8 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 | « content/browser/accessibility/accessibility_win_browsertest.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/browser/accessibility/browser_accessibility_win_unittest.cc
===================================================================
--- content/browser/accessibility/browser_accessibility_win_unittest.cc (revision 194111)
+++ content/browser/accessibility/browser_accessibility_win_unittest.cc (working copy)
@@ -16,45 +16,94 @@
namespace content {
namespace {
+
+// CountedBrowserAccessibility ------------------------------------------------
+
// Subclass of BrowserAccessibilityWin that counts the number of instances.
class CountedBrowserAccessibility : public BrowserAccessibilityWin {
public:
- CountedBrowserAccessibility() { global_obj_count_++; }
- virtual ~CountedBrowserAccessibility() { global_obj_count_--; }
- static int global_obj_count_;
+ CountedBrowserAccessibility();
+ virtual ~CountedBrowserAccessibility();
+
+ static int num_instances() { return num_instances_; }
+
+ private:
+ static int num_instances_;
+
+ DISALLOW_COPY_AND_ASSIGN(CountedBrowserAccessibility);
};
-int CountedBrowserAccessibility::global_obj_count_ = 0;
+// static
+int CountedBrowserAccessibility::num_instances_ = 0;
+CountedBrowserAccessibility::CountedBrowserAccessibility() {
+ ++num_instances_;
+}
+
+CountedBrowserAccessibility::~CountedBrowserAccessibility() {
+ --num_instances_;
+}
+
+
+// CountedBrowserAccessibilityFactory -----------------------------------------
+
// Factory that creates a CountedBrowserAccessibility.
-class CountedBrowserAccessibilityFactory
- : public BrowserAccessibilityFactory {
+class CountedBrowserAccessibilityFactory : public BrowserAccessibilityFactory {
public:
- virtual ~CountedBrowserAccessibilityFactory() {}
- virtual BrowserAccessibility* Create() {
- CComObject<CountedBrowserAccessibility>* instance;
- HRESULT hr = CComObject<CountedBrowserAccessibility>::CreateInstance(
- &instance);
- DCHECK(SUCCEEDED(hr));
- instance->AddRef();
- return instance;
- }
+ CountedBrowserAccessibilityFactory();
+
+ private:
+ virtual ~CountedBrowserAccessibilityFactory();
+
+ virtual BrowserAccessibility* Create() OVERRIDE;
+
+ DISALLOW_COPY_AND_ASSIGN(CountedBrowserAccessibilityFactory);
};
-} // anonymous namespace
+CountedBrowserAccessibilityFactory::CountedBrowserAccessibilityFactory() {
+}
+CountedBrowserAccessibilityFactory::~CountedBrowserAccessibilityFactory() {
+}
+
+BrowserAccessibility* CountedBrowserAccessibilityFactory::Create() {
+ CComObject<CountedBrowserAccessibility>* instance;
+ HRESULT hr = CComObject<CountedBrowserAccessibility>::CreateInstance(
+ &instance);
+ DCHECK(SUCCEEDED(hr));
+ instance->AddRef();
+ return instance;
+}
+
+} // namespace
+
+
+// BrowserAccessibilityTest ---------------------------------------------------
+
class BrowserAccessibilityTest : public testing::Test {
public:
- BrowserAccessibilityTest() {}
+ BrowserAccessibilityTest();
+ virtual ~BrowserAccessibilityTest();
private:
- virtual void SetUp() {
- ui::win::CreateATLModuleIfNeeded();
- }
+ virtual void SetUp() OVERRIDE;
DISALLOW_COPY_AND_ASSIGN(BrowserAccessibilityTest);
};
+BrowserAccessibilityTest::BrowserAccessibilityTest() {
+}
+
+BrowserAccessibilityTest::~BrowserAccessibilityTest() {
+}
+
+void BrowserAccessibilityTest::SetUp() {
+ ui::win::CreateATLModuleIfNeeded();
+}
+
+
+// Actual tests ---------------------------------------------------------------
+
// Test that BrowserAccessibilityManager correctly releases the tree of
// BrowserAccessibility instances upon delete.
TEST_F(BrowserAccessibilityTest, TestNoLeaks) {
@@ -85,28 +134,25 @@
// AccessibilityNodeData tree 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.
- CountedBrowserAccessibility::global_obj_count_ = 0;
- BrowserAccessibilityManager* manager =
+ int initial_instances = CountedBrowserAccessibility::num_instances();
+ scoped_ptr<BrowserAccessibilityManager> manager(
BrowserAccessibilityManager::Create(
- root,
- NULL,
- new CountedBrowserAccessibilityFactory());
+ root, NULL, new CountedBrowserAccessibilityFactory()));
manager->UpdateNodesForTesting(button, checkbox);
- ASSERT_EQ(3, CountedBrowserAccessibility::global_obj_count_);
+ ASSERT_EQ(initial_instances + 3,
dmazzoni 2013/04/15 21:51:44 This change looks like it will make it harder to u
Peter Kasting 2013/04/15 23:33:40 I liked that idea and changed to that and then dec
+ CountedBrowserAccessibility::num_instances());
// Delete the manager and test that all 3 instances are deleted.
- delete manager;
- ASSERT_EQ(0, CountedBrowserAccessibility::global_obj_count_);
+ manager.reset();
+ ASSERT_EQ(initial_instances, CountedBrowserAccessibility::num_instances());
// 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 =
- BrowserAccessibilityManager::Create(
- root,
- NULL,
- new CountedBrowserAccessibilityFactory());
+ manager.reset(BrowserAccessibilityManager::Create(
+ root, NULL, new CountedBrowserAccessibilityFactory()));
manager->UpdateNodesForTesting(button, checkbox);
- ASSERT_EQ(3, CountedBrowserAccessibility::global_obj_count_);
+ ASSERT_EQ(initial_instances + 3,
+ CountedBrowserAccessibility::num_instances());
IAccessible* root_accessible =
manager->GetRoot()->ToBrowserAccessibilityWin();
IDispatch* root_iaccessible = NULL;
@@ -120,15 +166,17 @@
// Now delete the manager, and only one of the three nodes in the tree
// should be released.
- delete manager;
- ASSERT_EQ(2, CountedBrowserAccessibility::global_obj_count_);
+ manager.reset();
+ ASSERT_EQ(initial_instances + 2,
+ CountedBrowserAccessibility::num_instances());
// 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, CountedBrowserAccessibility::global_obj_count_);
+ ASSERT_EQ(initial_instances + 1,
+ CountedBrowserAccessibility::num_instances());
child1_iaccessible->Release();
- ASSERT_EQ(0, CountedBrowserAccessibility::global_obj_count_);
+ ASSERT_EQ(initial_instances, CountedBrowserAccessibility::num_instances());
}
TEST_F(BrowserAccessibilityTest, TestChildrenChange) {
@@ -151,12 +199,10 @@
// Construct a BrowserAccessibilityManager with this
// AccessibilityNodeData tree and a factory for an instance-counting
// BrowserAccessibility.
- CountedBrowserAccessibility::global_obj_count_ = 0;
- BrowserAccessibilityManager* manager =
+ int initial_instances = CountedBrowserAccessibility::num_instances();
+ scoped_ptr<BrowserAccessibilityManager> manager(
BrowserAccessibilityManager::Create(
- root,
- NULL,
- new CountedBrowserAccessibilityFactory());
+ root, NULL, new CountedBrowserAccessibilityFactory()));
manager->UpdateNodesForTesting(text);
// Query for the text IAccessible and verify that it returns "old text" as its
@@ -194,8 +240,7 @@
// Query for the text IAccessible and verify that it now returns "new text"
// as its value.
hr = manager->GetRoot()->ToBrowserAccessibilityWin()->get_accChild(
- one,
- text_dispatch.Receive());
+ one, text_dispatch.Receive());
ASSERT_EQ(S_OK, hr);
hr = text_dispatch.QueryInterface(text_accessible.Receive());
@@ -210,8 +255,8 @@
// Delete the manager and test that all BrowserAccessibility instances are
// deleted.
- delete manager;
- ASSERT_EQ(0, CountedBrowserAccessibility::global_obj_count_);
+ manager.reset();
+ ASSERT_EQ(initial_instances, CountedBrowserAccessibility::num_instances());
}
TEST_F(BrowserAccessibilityTest, TestChildrenChangeNoLeaks) {
@@ -246,14 +291,13 @@
// AccessibilityNodeData tree 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.
- CountedBrowserAccessibility::global_obj_count_ = 0;
- BrowserAccessibilityManager* manager =
+ int initial_instances = CountedBrowserAccessibility::num_instances();
+ scoped_ptr<BrowserAccessibilityManager> manager(
BrowserAccessibilityManager::Create(
- root,
- NULL,
- new CountedBrowserAccessibilityFactory());
+ root, NULL, new CountedBrowserAccessibilityFactory()));
manager->UpdateNodesForTesting(div, text3, text4);
- ASSERT_EQ(4, CountedBrowserAccessibility::global_obj_count_);
+ ASSERT_EQ(initial_instances + 4,
+ CountedBrowserAccessibility::num_instances());
// Notify the BrowserAccessibilityManager that the div node and its children
// were removed and ensure that only one BrowserAccessibility instance exists.
@@ -265,12 +309,13 @@
std::vector<AccessibilityHostMsg_NotificationParams> notifications;
notifications.push_back(param);
manager->OnAccessibilityNotifications(notifications);
- ASSERT_EQ(1, CountedBrowserAccessibility::global_obj_count_);
+ ASSERT_EQ(initial_instances + 1,
+ CountedBrowserAccessibility::num_instances());
// Delete the manager and test that all BrowserAccessibility instances are
// deleted.
- delete manager;
- ASSERT_EQ(0, CountedBrowserAccessibility::global_obj_count_);
+ manager.reset();
+ ASSERT_EQ(initial_instances, CountedBrowserAccessibility::num_instances());
}
TEST_F(BrowserAccessibilityTest, TestTextBoundaries) {
@@ -287,82 +332,82 @@
root.state = 0;
root.child_ids.push_back(11);
- CountedBrowserAccessibility::global_obj_count_ = 0;
- BrowserAccessibilityManager* manager = BrowserAccessibilityManager::Create(
- root, NULL,
- new CountedBrowserAccessibilityFactory());
+ int initial_instances = CountedBrowserAccessibility::num_instances();
+ scoped_ptr<BrowserAccessibilityManager> manager(
+ BrowserAccessibilityManager::Create(
+ root, NULL, new CountedBrowserAccessibilityFactory()));
manager->UpdateNodesForTesting(text1);
- ASSERT_EQ(2, CountedBrowserAccessibility::global_obj_count_);
+ ASSERT_EQ(initial_instances + 2,
+ CountedBrowserAccessibility::num_instances());
BrowserAccessibilityWin* root_obj =
manager->GetRoot()->ToBrowserAccessibilityWin();
BrowserAccessibilityWin* text1_obj =
root_obj->GetChild(0)->ToBrowserAccessibilityWin();
- base::win::ScopedBstr text;
- long start;
- long end;
-
long text1_len;
ASSERT_EQ(S_OK, text1_obj->get_nCharacters(&text1_len));
+ base::win::ScopedBstr text;
ASSERT_EQ(S_OK, text1_obj->get_text(0, text1_len, text.Receive()));
- ASSERT_EQ(string16(text), text1.value);
+ ASSERT_EQ(text1.value, string16(text));
text.Reset();
ASSERT_EQ(S_OK, text1_obj->get_text(0, 4, text.Receive()));
- ASSERT_STREQ(text, L"One ");
+ ASSERT_STREQ(L"One ", text);
text.Reset();
+ long start;
+ long end;
ASSERT_EQ(S_OK, text1_obj->get_textAtOffset(
1, IA2_TEXT_BOUNDARY_CHAR, &start, &end, text.Receive()));
- ASSERT_EQ(start, 1);
- ASSERT_EQ(end, 2);
- ASSERT_STREQ(text, L"n");
+ ASSERT_EQ(1, start);
+ ASSERT_EQ(2, end);
+ ASSERT_STREQ(L"n", text);
text.Reset();
ASSERT_EQ(S_FALSE, text1_obj->get_textAtOffset(
text1_len, IA2_TEXT_BOUNDARY_CHAR, &start, &end, text.Receive()));
- ASSERT_EQ(start, text1_len);
- ASSERT_EQ(end, text1_len);
+ ASSERT_EQ(text1_len, start);
+ ASSERT_EQ(text1_len, end);
text.Reset();
ASSERT_EQ(S_OK, text1_obj->get_textAtOffset(
1, IA2_TEXT_BOUNDARY_WORD, &start, &end, text.Receive()));
- ASSERT_EQ(start, 0);
- ASSERT_EQ(end, 3);
- ASSERT_STREQ(text, L"One");
+ ASSERT_EQ(0, start);
+ ASSERT_EQ(3, end);
+ ASSERT_STREQ(L"One", text);
text.Reset();
ASSERT_EQ(S_OK, text1_obj->get_textAtOffset(
6, IA2_TEXT_BOUNDARY_WORD, &start, &end, text.Receive()));
- ASSERT_EQ(start, 4);
- ASSERT_EQ(end, 7);
- ASSERT_STREQ(text, L"two");
+ ASSERT_EQ(4, start);
+ ASSERT_EQ(7, end);
+ ASSERT_STREQ(L"two", text);
text.Reset();
ASSERT_EQ(S_OK, text1_obj->get_textAtOffset(
text1_len, IA2_TEXT_BOUNDARY_WORD, &start, &end, text.Receive()));
- ASSERT_EQ(start, 25);
- ASSERT_EQ(end, 29);
- ASSERT_STREQ(text, L"six.");
+ ASSERT_EQ(25, start);
+ ASSERT_EQ(29, end);
+ ASSERT_STREQ(L"six.", text);
text.Reset();
ASSERT_EQ(S_OK, text1_obj->get_textAtOffset(
1, IA2_TEXT_BOUNDARY_LINE, &start, &end, text.Receive()));
- ASSERT_EQ(start, 0);
- ASSERT_EQ(end, 15);
- ASSERT_STREQ(text, L"One two three.\n");
+ ASSERT_EQ(0, start);
+ ASSERT_EQ(15, end);
+ ASSERT_STREQ(L"One two three.\n", text);
text.Reset();
ASSERT_EQ(S_OK,
text1_obj->get_text(0, IA2_TEXT_OFFSET_LENGTH, text.Receive()));
- ASSERT_STREQ(text, L"One two three.\nFour five six.");
+ ASSERT_STREQ(L"One two three.\nFour five six.", text);
// Delete the manager and test that all BrowserAccessibility instances are
// deleted.
- delete manager;
- ASSERT_EQ(0, CountedBrowserAccessibility::global_obj_count_);
+ manager.reset();
+ ASSERT_EQ(initial_instances, CountedBrowserAccessibility::num_instances());
}
TEST_F(BrowserAccessibilityTest, TestSimpleHypertext) {
@@ -385,23 +430,23 @@
root.child_ids.push_back(11);
root.child_ids.push_back(12);
- CountedBrowserAccessibility::global_obj_count_ = 0;
- BrowserAccessibilityManager* manager = BrowserAccessibilityManager::Create(
- root, NULL,
- new CountedBrowserAccessibilityFactory());
+ int initial_instances = CountedBrowserAccessibility::num_instances();
+ scoped_ptr<BrowserAccessibilityManager> manager(
+ BrowserAccessibilityManager::Create(
+ root, NULL, new CountedBrowserAccessibilityFactory()));
manager->UpdateNodesForTesting(root, text1, text2);
- ASSERT_EQ(3, CountedBrowserAccessibility::global_obj_count_);
+ ASSERT_EQ(initial_instances + 3,
+ CountedBrowserAccessibility::num_instances());
BrowserAccessibilityWin* root_obj =
manager->GetRoot()->ToBrowserAccessibilityWin();
- base::win::ScopedBstr text;
-
long text_len;
ASSERT_EQ(S_OK, root_obj->get_nCharacters(&text_len));
+ base::win::ScopedBstr text;
ASSERT_EQ(S_OK, root_obj->get_text(0, text_len, text.Receive()));
- EXPECT_EQ(string16(text), text1.name + text2.name);
+ EXPECT_EQ(text1.name + text2.name, string16(text));
long hyperlink_count;
ASSERT_EQ(S_OK, root_obj->get_nHyperlinks(&hyperlink_count));
@@ -425,8 +470,8 @@
// Delete the manager and test that all BrowserAccessibility instances are
// deleted.
- delete manager;
- ASSERT_EQ(0, CountedBrowserAccessibility::global_obj_count_);
+ manager.reset();
+ ASSERT_EQ(initial_instances, CountedBrowserAccessibility::num_instances());
}
TEST_F(BrowserAccessibilityTest, TestComplexHypertext) {
@@ -471,27 +516,27 @@
root.child_ids.push_back(12);
root.child_ids.push_back(14);
- CountedBrowserAccessibility::global_obj_count_ = 0;
- BrowserAccessibilityManager* manager = BrowserAccessibilityManager::Create(
- root, NULL,
- new CountedBrowserAccessibilityFactory());
+ int initial_instances = CountedBrowserAccessibility::num_instances();
+ scoped_ptr<BrowserAccessibilityManager> manager(
+ BrowserAccessibilityManager::Create(
+ root, NULL, new CountedBrowserAccessibilityFactory()));
manager->UpdateNodesForTesting(root,
text1, button1, button1_text,
text2, link1, link1_text);
- ASSERT_EQ(7, CountedBrowserAccessibility::global_obj_count_);
+ ASSERT_EQ(initial_instances + 7,
+ CountedBrowserAccessibility::num_instances());
BrowserAccessibilityWin* root_obj =
manager->GetRoot()->ToBrowserAccessibilityWin();
- base::win::ScopedBstr text;
-
long text_len;
ASSERT_EQ(S_OK, root_obj->get_nCharacters(&text_len));
+ base::win::ScopedBstr text;
ASSERT_EQ(S_OK, root_obj->get_text(0, text_len, text.Receive()));
const string16 embed = BrowserAccessibilityWin::kEmbeddedCharacter;
- EXPECT_EQ(string16(text), text1.name + embed + text2.name + embed);
+ EXPECT_EQ(text1.name + embed + text2.name + embed, string16(text));
text.Reset();
long hyperlink_count;
@@ -508,7 +553,7 @@
EXPECT_EQ(S_OK,
hyperlink.QueryInterface<IAccessibleText>(hypertext.Receive()));
EXPECT_EQ(S_OK, hypertext->get_text(0, 3, text.Receive()));
- EXPECT_STREQ(text, L"red");
+ EXPECT_STREQ(L"red", text);
text.Reset();
hyperlink.Release();
hypertext.Release();
@@ -517,7 +562,7 @@
EXPECT_EQ(S_OK,
hyperlink.QueryInterface<IAccessibleText>(hypertext.Receive()));
EXPECT_EQ(S_OK, hypertext->get_text(0, 4, text.Receive()));
- EXPECT_STREQ(text, L"blue");
+ EXPECT_STREQ(L"blue", text);
text.Reset();
hyperlink.Release();
hypertext.Release();
@@ -534,22 +579,23 @@
// Delete the manager and test that all BrowserAccessibility instances are
// deleted.
- delete manager;
- ASSERT_EQ(0, CountedBrowserAccessibility::global_obj_count_);
+ manager.reset();
+ ASSERT_EQ(initial_instances, CountedBrowserAccessibility::num_instances());
}
TEST_F(BrowserAccessibilityTest, TestCreateEmptyDocument) {
// Try creating an empty document with busy state. Readonly is
// set automatically.
+ int initial_instances = CountedBrowserAccessibility::num_instances();
const int32 busy_state = 1 << AccessibilityNodeData::STATE_BUSY;
const int32 readonly_state = 1 << AccessibilityNodeData::STATE_READONLY;
- scoped_ptr<BrowserAccessibilityManager> manager;
- manager.reset(new BrowserAccessibilityManagerWin(
- GetDesktopWindow(),
- NULL,
- BrowserAccessibilityManagerWin::GetEmptyDocument(),
- NULL,
- new CountedBrowserAccessibilityFactory()));
+ scoped_ptr<BrowserAccessibilityManager> manager(
+ new BrowserAccessibilityManagerWin(
+ GetDesktopWindow(),
+ NULL,
+ BrowserAccessibilityManagerWin::GetEmptyDocument(),
+ NULL,
+ new CountedBrowserAccessibilityFactory()));
// Verify the root is as we expect by default.
BrowserAccessibility* root = manager->GetRoot();
@@ -616,7 +662,7 @@
// Ensure we properly cleaned up.
manager.reset();
- ASSERT_EQ(0, CountedBrowserAccessibility::global_obj_count_);
+ ASSERT_EQ(initial_instances, CountedBrowserAccessibility::num_instances());
}
} // namespace content
« no previous file with comments | « content/browser/accessibility/accessibility_win_browsertest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698