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

Side by Side Diff: chrome/browser/extensions/api/declarative/initializing_rules_registry_unittest.cc

Issue 49693003: Refactor RulesRegistryWithCache to RulesRegistry (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Tests mostly work Created 7 years, 1 month 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
vabr (Chromium) 2013/10/29 16:05:54 The filename looks a bit strange, given that there
Jeffrey Yasskin 2013/10/30 22:30:48 +1 to renaming this file eventually, but a separat
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/extensions/api/declarative/initializing_rules_registry. h" 5 #include "chrome/browser/extensions/api/declarative/rules_registry.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/message_loop/message_loop.h" 9 #include "base/message_loop/message_loop.h"
10 #include "chrome/browser/extensions/api/declarative/test_rules_registry.h" 10 #include "chrome/browser/extensions/api/declarative/test_rules_registry.h"
11 #include "content/public/test/test_browser_thread.h" 11 #include "content/public/test/test_browser_thread.h"
12 #include "testing/gtest/include/gtest/gtest.h" 12 #include "testing/gtest/include/gtest/gtest.h"
13 13
14 namespace { 14 namespace {
15 const char kExtensionId[] = "foobar"; 15 const char kExtensionId[] = "foobar";
16 const char kRuleId[] = "foo"; 16 const char kRuleId[] = "foo";
17 } // namespace 17 } // namespace
18 18
19 namespace extensions { 19 namespace extensions {
20 20
21 TEST(InitializingRulesRegistryTest, FillOptionalIdentifiers) { 21 TEST(InitializingRulesRegistryTest, FillOptionalIdentifiers) {
22 base::MessageLoopForUI message_loop; 22 base::MessageLoopForUI message_loop;
23 content::TestBrowserThread thread(content::BrowserThread::UI, &message_loop); 23 content::TestBrowserThread thread(content::BrowserThread::UI, &message_loop);
24 24
25 std::string error; 25 std::string error;
26 scoped_refptr<RulesRegistry> registry = new InitializingRulesRegistry( 26 scoped_refptr<RulesRegistry> registry =
27 new TestRulesRegistry(content::BrowserThread::UI, "" /*event_name*/)); 27 new TestRulesRegistry(content::BrowserThread::UI, "" /*event_name*/);
28 InitializingRulesRegistry* init_registry =
29 static_cast<InitializingRulesRegistry*>(registry.get());
30 28
31 // Add rules and check that their identifiers are filled and unique. 29 // Add rules and check that their identifiers are filled and unique.
32 30
33 std::vector<linked_ptr<RulesRegistry::Rule> > add_rules; 31 std::vector<linked_ptr<RulesRegistry::Rule> > add_rules;
34 add_rules.push_back(make_linked_ptr(new RulesRegistry::Rule)); 32 add_rules.push_back(make_linked_ptr(new RulesRegistry::Rule));
35 add_rules.push_back(make_linked_ptr(new RulesRegistry::Rule)); 33 add_rules.push_back(make_linked_ptr(new RulesRegistry::Rule));
36 error = registry->AddRules(kExtensionId, add_rules); 34 error = registry->AddRules(kExtensionId, add_rules);
37 EXPECT_TRUE(error.empty()); 35 EXPECT_TRUE(error.empty());
38 36
39 std::vector<linked_ptr<RulesRegistry::Rule> > get_rules; 37 std::vector<linked_ptr<RulesRegistry::Rule> > get_rules;
40 error = registry->GetAllRules(kExtensionId, &get_rules); 38 error = registry->GetAllRules(kExtensionId, &get_rules);
41 EXPECT_TRUE(error.empty()); 39 EXPECT_TRUE(error.empty());
42 40
43 ASSERT_EQ(2u, get_rules.size()); 41 ASSERT_EQ(2u, get_rules.size());
44 42
45 ASSERT_TRUE(get_rules[0]->id.get()); 43 ASSERT_TRUE(get_rules[0]->id.get());
46 EXPECT_NE("", *get_rules[0]->id); 44 EXPECT_NE("", *get_rules[0]->id);
47 45
48 ASSERT_TRUE(get_rules[1]->id.get()); 46 ASSERT_TRUE(get_rules[1]->id.get());
49 EXPECT_NE("", *get_rules[1]->id); 47 EXPECT_NE("", *get_rules[1]->id);
50 48
51 EXPECT_NE(*get_rules[0]->id, *get_rules[1]->id); 49 EXPECT_NE(*get_rules[0]->id, *get_rules[1]->id);
52 50
53 EXPECT_EQ(1u /*extensions*/ + 2u /*rules*/, 51 EXPECT_EQ(1u /*extensions*/ + 2u /*rules*/,
54 init_registry->GetNumberOfUsedRuleIdentifiersForTesting()); 52 registry->GetNumberOfUsedRuleIdentifiersForTesting());
55 53
56 // Check that we cannot add a new rule with the same ID. 54 // Check that we cannot add a new rule with the same ID.
57 55
58 std::vector<linked_ptr<RulesRegistry::Rule> > add_rules_2; 56 std::vector<linked_ptr<RulesRegistry::Rule> > add_rules_2;
59 add_rules_2.push_back(make_linked_ptr(new RulesRegistry::Rule)); 57 add_rules_2.push_back(make_linked_ptr(new RulesRegistry::Rule));
60 add_rules_2[0]->id.reset(new std::string(*get_rules[0]->id)); 58 add_rules_2[0]->id.reset(new std::string(*get_rules[0]->id));
61 error = registry->AddRules(kExtensionId, add_rules_2); 59 error = registry->AddRules(kExtensionId, add_rules_2);
62 EXPECT_FALSE(error.empty()); 60 EXPECT_FALSE(error.empty());
63 61
64 std::vector<linked_ptr<RulesRegistry::Rule> > get_rules_2; 62 std::vector<linked_ptr<RulesRegistry::Rule> > get_rules_2;
65 error = registry->GetAllRules(kExtensionId, &get_rules_2); 63 error = registry->GetAllRules(kExtensionId, &get_rules_2);
66 EXPECT_TRUE(error.empty()); 64 EXPECT_TRUE(error.empty());
67 ASSERT_EQ(2u, get_rules_2.size()); 65 ASSERT_EQ(2u, get_rules_2.size());
68 EXPECT_EQ(1u /*extensions*/ + 2u /*rules*/, 66 EXPECT_EQ(1u /*extensions*/ + 2u /*rules*/,
69 init_registry->GetNumberOfUsedRuleIdentifiersForTesting()); 67 registry->GetNumberOfUsedRuleIdentifiersForTesting());
70 68
71 // Check that we can register the old rule IDs once they were unregistered. 69 // Check that we can register the old rule IDs once they were unregistered.
72 70
73 std::vector<std::string> remove_rules_3; 71 std::vector<std::string> remove_rules_3;
74 remove_rules_3.push_back(*get_rules[0]->id); 72 remove_rules_3.push_back(*get_rules[0]->id);
75 error = registry->RemoveRules(kExtensionId, remove_rules_3); 73 error = registry->RemoveRules(kExtensionId, remove_rules_3);
76 EXPECT_TRUE(error.empty()); 74 EXPECT_TRUE(error.empty());
77 75
78 EXPECT_EQ(1u /*extensions*/ + 1u /*rules*/, 76 EXPECT_EQ(1u /*extensions*/ + 1u /*rules*/,
79 init_registry->GetNumberOfUsedRuleIdentifiersForTesting()); 77 registry->GetNumberOfUsedRuleIdentifiersForTesting());
80 78
81 std::vector<linked_ptr<RulesRegistry::Rule> > get_rules_3a; 79 std::vector<linked_ptr<RulesRegistry::Rule> > get_rules_3a;
82 error = registry->GetAllRules(kExtensionId, &get_rules_3a); 80 error = registry->GetAllRules(kExtensionId, &get_rules_3a);
83 EXPECT_TRUE(error.empty()); 81 EXPECT_TRUE(error.empty());
84 ASSERT_EQ(1u, get_rules_3a.size()); 82 ASSERT_EQ(1u, get_rules_3a.size());
85 83
86 std::vector<linked_ptr<RulesRegistry::Rule> > add_rules_3; 84 std::vector<linked_ptr<RulesRegistry::Rule> > add_rules_3;
87 add_rules_3.push_back(make_linked_ptr(new RulesRegistry::Rule)); 85 add_rules_3.push_back(make_linked_ptr(new RulesRegistry::Rule));
88 add_rules_3[0]->id.reset(new std::string(*get_rules[0]->id)); 86 add_rules_3[0]->id.reset(new std::string(*get_rules[0]->id));
89 error = registry->AddRules(kExtensionId, add_rules_3); 87 error = registry->AddRules(kExtensionId, add_rules_3);
90 EXPECT_TRUE(error.empty()); 88 EXPECT_TRUE(error.empty());
91 EXPECT_EQ(1u /*extensions*/ + 2u /*rules*/, 89 EXPECT_EQ(1u /*extensions*/ + 2u /*rules*/,
92 init_registry->GetNumberOfUsedRuleIdentifiersForTesting()); 90 registry->GetNumberOfUsedRuleIdentifiersForTesting());
93 91
94 std::vector<linked_ptr<RulesRegistry::Rule> > get_rules_3b; 92 std::vector<linked_ptr<RulesRegistry::Rule> > get_rules_3b;
95 error = registry->GetAllRules(kExtensionId, &get_rules_3b); 93 error = registry->GetAllRules(kExtensionId, &get_rules_3b);
96 EXPECT_TRUE(error.empty()); 94 EXPECT_TRUE(error.empty());
97 ASSERT_EQ(2u, get_rules_3b.size()); 95 ASSERT_EQ(2u, get_rules_3b.size());
98 96
99 // Check that we can register a rule with an ID that is not modified. 97 // Check that we can register a rule with an ID that is not modified.
100 98
101 error = registry->RemoveAllRules(kExtensionId); 99 error = registry->RemoveAllRules(kExtensionId);
102 EXPECT_TRUE(error.empty()); 100 EXPECT_TRUE(error.empty());
103 EXPECT_EQ(0u /*extensions*/ + 0u /*rules*/, 101 EXPECT_EQ(0u /*extensions*/ + 0u /*rules*/,
104 init_registry->GetNumberOfUsedRuleIdentifiersForTesting()); 102 registry->GetNumberOfUsedRuleIdentifiersForTesting());
105 103
106 std::vector<linked_ptr<RulesRegistry::Rule> > get_rules_4a; 104 std::vector<linked_ptr<RulesRegistry::Rule> > get_rules_4a;
107 error = registry->GetAllRules(kExtensionId, &get_rules_4a); 105 error = registry->GetAllRules(kExtensionId, &get_rules_4a);
108 EXPECT_TRUE(error.empty()); 106 EXPECT_TRUE(error.empty());
109 ASSERT_TRUE(get_rules_4a.empty()); 107 ASSERT_TRUE(get_rules_4a.empty());
110 108
111 std::vector<linked_ptr<RulesRegistry::Rule> > add_rules_4; 109 std::vector<linked_ptr<RulesRegistry::Rule> > add_rules_4;
112 add_rules_4.push_back(make_linked_ptr(new RulesRegistry::Rule)); 110 add_rules_4.push_back(make_linked_ptr(new RulesRegistry::Rule));
113 add_rules_4[0]->id.reset(new std::string(kRuleId)); 111 add_rules_4[0]->id.reset(new std::string(kRuleId));
114 error = registry->AddRules(kExtensionId, add_rules_4); 112 error = registry->AddRules(kExtensionId, add_rules_4);
115 EXPECT_TRUE(error.empty()); 113 EXPECT_TRUE(error.empty());
116 114
117 EXPECT_EQ(1u /*extensions*/ + 1u /*rules*/, 115 EXPECT_EQ(1u /*extensions*/ + 1u /*rules*/,
118 init_registry->GetNumberOfUsedRuleIdentifiersForTesting()); 116 registry->GetNumberOfUsedRuleIdentifiersForTesting());
119 117
120 std::vector<linked_ptr<RulesRegistry::Rule> > get_rules_4b; 118 std::vector<linked_ptr<RulesRegistry::Rule> > get_rules_4b;
121 error = registry->GetAllRules(kExtensionId, &get_rules_4b); 119 error = registry->GetAllRules(kExtensionId, &get_rules_4b);
122 EXPECT_TRUE(error.empty()); 120 EXPECT_TRUE(error.empty());
123 121
124 ASSERT_EQ(1u, get_rules_4b.size()); 122 ASSERT_EQ(1u, get_rules_4b.size());
125 123
126 ASSERT_TRUE(get_rules_4b[0]->id.get()); 124 ASSERT_TRUE(get_rules_4b[0]->id.get());
127 EXPECT_EQ(kRuleId, *get_rules_4b[0]->id); 125 EXPECT_EQ(kRuleId, *get_rules_4b[0]->id);
128 126
129 registry->OnExtensionUnloaded(kExtensionId); 127 registry->OnExtensionUnloaded(kExtensionId);
130 EXPECT_EQ(0u /*extensions*/ + 0u /*rules*/, 128 EXPECT_EQ(0u /*extensions*/ + 0u /*rules*/,
131 init_registry->GetNumberOfUsedRuleIdentifiersForTesting()); 129 registry->GetNumberOfUsedRuleIdentifiersForTesting());
132 130
133 // Make sure that deletion traits of registry are executed. 131 // Make sure that deletion traits of registry are executed.
134 registry = NULL; 132 registry = NULL;
135 message_loop.RunUntilIdle(); 133 message_loop.RunUntilIdle();
136 } 134 }
137 135
138 TEST(InitializingRulesRegistryTest, FillOptionalPriority) { 136 TEST(InitializingRulesRegistryTest, FillOptionalPriority) {
139 base::MessageLoopForUI message_loop; 137 base::MessageLoopForUI message_loop;
140 content::TestBrowserThread thread(content::BrowserThread::UI, &message_loop); 138 content::TestBrowserThread thread(content::BrowserThread::UI, &message_loop);
141 139
142 std::string error; 140 std::string error;
143 scoped_refptr<RulesRegistry> registry = new InitializingRulesRegistry( 141 scoped_refptr<RulesRegistry> registry =
144 new TestRulesRegistry(content::BrowserThread::UI, "" /*event_name*/)); 142 new TestRulesRegistry(content::BrowserThread::UI, "" /*event_name*/);
145 143
146 // Add rules and check that their priorities are filled if they are empty. 144 // Add rules and check that their priorities are filled if they are empty.
147 145
148 std::vector<linked_ptr<RulesRegistry::Rule> > add_rules; 146 std::vector<linked_ptr<RulesRegistry::Rule> > add_rules;
149 add_rules.push_back(make_linked_ptr(new RulesRegistry::Rule)); 147 add_rules.push_back(make_linked_ptr(new RulesRegistry::Rule));
150 add_rules[0]->priority.reset(new int(2)); 148 add_rules[0]->priority.reset(new int(2));
151 add_rules.push_back(make_linked_ptr(new RulesRegistry::Rule)); 149 add_rules.push_back(make_linked_ptr(new RulesRegistry::Rule));
152 error = registry->AddRules(kExtensionId, add_rules); 150 error = registry->AddRules(kExtensionId, add_rules);
153 EXPECT_TRUE(error.empty()); 151 EXPECT_TRUE(error.empty());
154 152
155 std::vector<linked_ptr<RulesRegistry::Rule> > get_rules; 153 std::vector<linked_ptr<RulesRegistry::Rule> > get_rules;
156 error = registry->GetAllRules(kExtensionId, &get_rules); 154 error = registry->GetAllRules(kExtensionId, &get_rules);
157 EXPECT_TRUE(error.empty()); 155 EXPECT_TRUE(error.empty());
158 156
159 ASSERT_EQ(2u, get_rules.size()); 157 ASSERT_EQ(2u, get_rules.size());
160 158
161 ASSERT_TRUE(get_rules[0]->priority.get()); 159 ASSERT_TRUE(get_rules[0]->priority.get());
162 ASSERT_TRUE(get_rules[1]->priority.get()); 160 ASSERT_TRUE(get_rules[1]->priority.get());
163 161
164 // Verify the precondition so that the following EXPECT_EQ statements work. 162 // Verify the precondition so that the following EXPECT_EQ statements work.
165 EXPECT_GT(InitializingRulesRegistry::DEFAULT_PRIORITY, 2); 163 EXPECT_GT(RulesRegistry::DEFAULT_PRIORITY, 2);
166 EXPECT_EQ(2, std::min(*get_rules[0]->priority, *get_rules[1]->priority)); 164 EXPECT_EQ(2, std::min(*get_rules[0]->priority, *get_rules[1]->priority));
167 EXPECT_EQ(InitializingRulesRegistry::DEFAULT_PRIORITY, 165 EXPECT_EQ(RulesRegistry::DEFAULT_PRIORITY,
168 std::max(*get_rules[0]->priority, *get_rules[1]->priority)); 166 std::max(*get_rules[0]->priority, *get_rules[1]->priority));
169 167
170 // Make sure that deletion traits of registry are executed. 168 // Make sure that deletion traits of registry are executed.
171 registry = NULL; 169 registry = NULL;
172 message_loop.RunUntilIdle(); 170 message_loop.RunUntilIdle();
173 } 171 }
174 172
175 } // namespace extensions 173 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698