OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
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 "base/macros.h" | 5 #include "base/macros.h" |
6 #include "base/memory/ref_counted.h" | 6 #include "base/memory/ref_counted.h" |
7 #include "base/memory/scoped_ptr.h" | 7 #include "base/memory/scoped_ptr.h" |
8 #include "chrome/browser/extensions/api/extension_action/extension_action_api.h" | 8 #include "chrome/browser/extensions/api/extension_action/extension_action_api.h" |
9 #include "chrome/browser/extensions/extension_service.h" | 9 #include "chrome/browser/extensions/extension_service.h" |
10 #include "chrome/browser/extensions/extension_service_test_base.h" | 10 #include "chrome/browser/extensions/extension_service_test_base.h" |
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
112 } // namespace | 112 } // namespace |
113 | 113 |
114 class ExtensionToolbarModelUnitTest : public ExtensionServiceTestBase { | 114 class ExtensionToolbarModelUnitTest : public ExtensionServiceTestBase { |
115 protected: | 115 protected: |
116 // Initialize the ExtensionService, ExtensionToolbarModel, and | 116 // Initialize the ExtensionService, ExtensionToolbarModel, and |
117 // ExtensionSystem. | 117 // ExtensionSystem. |
118 void Init(); | 118 void Init(); |
119 | 119 |
120 // Adds or removes the given |extension| and verify success. | 120 // Adds or removes the given |extension| and verify success. |
121 testing::AssertionResult AddExtension( | 121 testing::AssertionResult AddExtension( |
122 scoped_refptr<const Extension> extension) WARN_UNUSED_RESULT; | 122 const scoped_refptr<const Extension>& extension) WARN_UNUSED_RESULT; |
123 testing::AssertionResult RemoveExtension( | 123 testing::AssertionResult RemoveExtension( |
124 scoped_refptr<const Extension> extension) WARN_UNUSED_RESULT; | 124 const scoped_refptr<const Extension>& extension) WARN_UNUSED_RESULT; |
125 | 125 |
126 // Adds three extensions, all with browser actions. | 126 // Adds three extensions, all with browser actions. |
127 testing::AssertionResult AddBrowserActionExtensions() WARN_UNUSED_RESULT; | 127 testing::AssertionResult AddBrowserActionExtensions() WARN_UNUSED_RESULT; |
128 | 128 |
129 // Adds three extensions, one each for browser action, page action, and no | 129 // Adds three extensions, one each for browser action, page action, and no |
130 // action, and are added in that order. | 130 // action, and are added in that order. |
131 testing::AssertionResult AddActionExtensions() WARN_UNUSED_RESULT; | 131 testing::AssertionResult AddActionExtensions() WARN_UNUSED_RESULT; |
132 | 132 |
133 // Returns the extension at the given index in the toolbar model, or NULL | 133 // Returns the extension at the given index in the toolbar model, or NULL |
134 // if one does not exist. | 134 // if one does not exist. |
135 const Extension* GetExtensionAtIndex(size_t index) const; | 135 const Extension* GetExtensionAtIndex(size_t index) const; |
136 | 136 |
137 ExtensionToolbarModel* toolbar_model() { return toolbar_model_.get(); } | 137 ExtensionToolbarModel* toolbar_model() { return toolbar_model_.get(); } |
138 | 138 |
139 const ExtensionToolbarModelTestObserver* observer() const { | 139 const ExtensionToolbarModelTestObserver* observer() const { |
140 return model_observer_.get(); | 140 return model_observer_.get(); |
141 } | 141 } |
142 size_t num_toolbar_items() const { | 142 size_t num_toolbar_items() const { |
143 return toolbar_model_->toolbar_items().size(); | 143 return toolbar_model_->toolbar_items().size(); |
144 } | 144 } |
145 const Extension* browser_action_a() const { | 145 const Extension* browser_action_a() const { return browser_action_a_.get(); } |
146 return browser_action_a_; | 146 const Extension* browser_action_b() const { return browser_action_b_.get(); } |
147 } | 147 const Extension* browser_action_c() const { return browser_action_c_.get(); } |
148 const Extension* browser_action_b() const { | |
149 return browser_action_b_; | |
150 } | |
151 const Extension* browser_action_c() const { | |
152 return browser_action_c_; | |
153 } | |
154 const Extension* browser_action() const { | 148 const Extension* browser_action() const { |
155 return browser_action_extension_.get(); | 149 return browser_action_extension_.get(); |
156 } | 150 } |
157 const Extension* page_action() const { return page_action_extension_.get(); } | 151 const Extension* page_action() const { return page_action_extension_.get(); } |
158 const Extension* no_action() const { return no_action_extension_.get(); } | 152 const Extension* no_action() const { return no_action_extension_.get(); } |
159 | 153 |
160 private: | 154 private: |
161 // Verifies that all extensions in |extensions| are added successfully. | 155 // Verifies that all extensions in |extensions| are added successfully. |
162 testing::AssertionResult AddAndVerifyExtensions( | 156 testing::AssertionResult AddAndVerifyExtensions( |
163 const ExtensionList& extensions); | 157 const ExtensionList& extensions); |
(...skipping 22 matching lines...) Expand all Loading... |
186 new ExtensionToolbarModel(profile(), ExtensionPrefs::Get(profile()))); | 180 new ExtensionToolbarModel(profile(), ExtensionPrefs::Get(profile()))); |
187 model_observer_.reset( | 181 model_observer_.reset( |
188 new ExtensionToolbarModelTestObserver(toolbar_model_.get())); | 182 new ExtensionToolbarModelTestObserver(toolbar_model_.get())); |
189 static_cast<TestExtensionSystem*>(ExtensionSystem::Get(profile()))-> | 183 static_cast<TestExtensionSystem*>(ExtensionSystem::Get(profile()))-> |
190 SetReady(); | 184 SetReady(); |
191 // Run tasks posted to TestExtensionSystem. | 185 // Run tasks posted to TestExtensionSystem. |
192 base::RunLoop().RunUntilIdle(); | 186 base::RunLoop().RunUntilIdle(); |
193 } | 187 } |
194 | 188 |
195 testing::AssertionResult ExtensionToolbarModelUnitTest::AddExtension( | 189 testing::AssertionResult ExtensionToolbarModelUnitTest::AddExtension( |
196 scoped_refptr<const Extension> extension) { | 190 const scoped_refptr<const Extension>& extension) { |
197 if (registry()->enabled_extensions().GetByID(extension->id())) { | 191 if (registry()->enabled_extensions().GetByID(extension->id())) { |
198 return testing::AssertionFailure() << "Extension " << extension->name() << | 192 return testing::AssertionFailure() << "Extension " << extension->name() << |
199 " already installed!"; | 193 " already installed!"; |
200 } | 194 } |
201 service()->AddExtension(extension); | 195 service()->AddExtension(extension.get()); |
202 if (!registry()->enabled_extensions().GetByID(extension->id())) { | 196 if (!registry()->enabled_extensions().GetByID(extension->id())) { |
203 return testing::AssertionFailure() << "Failed to install extension: " << | 197 return testing::AssertionFailure() << "Failed to install extension: " << |
204 extension->name(); | 198 extension->name(); |
205 } | 199 } |
206 return testing::AssertionSuccess(); | 200 return testing::AssertionSuccess(); |
207 } | 201 } |
208 | 202 |
209 testing::AssertionResult ExtensionToolbarModelUnitTest::RemoveExtension( | 203 testing::AssertionResult ExtensionToolbarModelUnitTest::RemoveExtension( |
210 scoped_refptr<const Extension> extension) { | 204 const scoped_refptr<const Extension>& extension) { |
211 if (!registry()->enabled_extensions().GetByID(extension->id())) { | 205 if (!registry()->enabled_extensions().GetByID(extension->id())) { |
212 return testing::AssertionFailure() << "Extension " << extension->name() << | 206 return testing::AssertionFailure() << "Extension " << extension->name() << |
213 " not installed!"; | 207 " not installed!"; |
214 } | 208 } |
215 service()->UnloadExtension(extension->id(), | 209 service()->UnloadExtension(extension->id(), |
216 UnloadedExtensionInfo::REASON_DISABLE); | 210 UnloadedExtensionInfo::REASON_DISABLE); |
217 if (registry()->enabled_extensions().GetByID(extension->id())) { | 211 if (registry()->enabled_extensions().GetByID(extension->id())) { |
218 return testing::AssertionFailure() << "Failed to unload extension: " << | 212 return testing::AssertionFailure() << "Failed to unload extension: " << |
219 extension->name(); | 213 extension->name(); |
220 } | 214 } |
(...skipping 27 matching lines...) Expand all Loading... |
248 ExtensionList extensions; | 242 ExtensionList extensions; |
249 extensions.push_back(browser_action_a_); | 243 extensions.push_back(browser_action_a_); |
250 extensions.push_back(browser_action_b_); | 244 extensions.push_back(browser_action_b_); |
251 extensions.push_back(browser_action_c_); | 245 extensions.push_back(browser_action_c_); |
252 | 246 |
253 return AddAndVerifyExtensions(extensions); | 247 return AddAndVerifyExtensions(extensions); |
254 } | 248 } |
255 | 249 |
256 const Extension* ExtensionToolbarModelUnitTest::GetExtensionAtIndex( | 250 const Extension* ExtensionToolbarModelUnitTest::GetExtensionAtIndex( |
257 size_t index) const { | 251 size_t index) const { |
258 return index < toolbar_model_->toolbar_items().size() ? | 252 return index < toolbar_model_->toolbar_items().size() |
259 toolbar_model_->toolbar_items()[index] : NULL; | 253 ? toolbar_model_->toolbar_items()[index].get() |
| 254 : NULL; |
260 } | 255 } |
261 | 256 |
262 testing::AssertionResult ExtensionToolbarModelUnitTest::AddAndVerifyExtensions( | 257 testing::AssertionResult ExtensionToolbarModelUnitTest::AddAndVerifyExtensions( |
263 const ExtensionList& extensions) { | 258 const ExtensionList& extensions) { |
264 for (ExtensionList::const_iterator iter = extensions.begin(); | 259 for (ExtensionList::const_iterator iter = extensions.begin(); |
265 iter != extensions.end(); ++iter) { | 260 iter != extensions.end(); ++iter) { |
266 if (!AddExtension(*iter)) { | 261 if (!AddExtension(*iter)) { |
267 return testing::AssertionFailure() << "Failed to install extension: " << | 262 return testing::AssertionFailure() << "Failed to install extension: " << |
268 (*iter)->name(); | 263 (*iter)->name(); |
269 } | 264 } |
(...skipping 19 matching lines...) Expand all Loading... |
289 scoped_refptr<const Extension> extension2 = | 284 scoped_refptr<const Extension> extension2 = |
290 GetActionExtension("browser_action", manifest_keys::kBrowserAction); | 285 GetActionExtension("browser_action", manifest_keys::kBrowserAction); |
291 ASSERT_TRUE(AddExtension(extension2)); | 286 ASSERT_TRUE(AddExtension(extension2)); |
292 | 287 |
293 // We should now find our extension in the model. | 288 // We should now find our extension in the model. |
294 EXPECT_EQ(1u, observer()->inserted_count()); | 289 EXPECT_EQ(1u, observer()->inserted_count()); |
295 EXPECT_EQ(1u, num_toolbar_items()); | 290 EXPECT_EQ(1u, num_toolbar_items()); |
296 EXPECT_EQ(extension2, GetExtensionAtIndex(0u)); | 291 EXPECT_EQ(extension2, GetExtensionAtIndex(0u)); |
297 | 292 |
298 // Should be a no-op, but still fires the events. | 293 // Should be a no-op, but still fires the events. |
299 toolbar_model()->MoveExtensionIcon(extension2, 0); | 294 toolbar_model()->MoveExtensionIcon(extension2.get(), 0); |
300 EXPECT_EQ(1u, observer()->moved_count()); | 295 EXPECT_EQ(1u, observer()->moved_count()); |
301 EXPECT_EQ(1u, num_toolbar_items()); | 296 EXPECT_EQ(1u, num_toolbar_items()); |
302 EXPECT_EQ(extension2, GetExtensionAtIndex(0u)); | 297 EXPECT_EQ(extension2, GetExtensionAtIndex(0u)); |
303 | 298 |
304 // Remove the extension and verify. | 299 // Remove the extension and verify. |
305 ASSERT_TRUE(RemoveExtension(extension2)); | 300 ASSERT_TRUE(RemoveExtension(extension2)); |
306 EXPECT_EQ(1u, observer()->removed_count()); | 301 EXPECT_EQ(1u, observer()->removed_count()); |
307 EXPECT_EQ(0u, num_toolbar_items()); | 302 EXPECT_EQ(0u, num_toolbar_items()); |
308 EXPECT_EQ(NULL, GetExtensionAtIndex(0u)); | 303 EXPECT_EQ(NULL, GetExtensionAtIndex(0u)); |
309 } | 304 } |
(...skipping 501 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
811 ExtensionActionAPI::SetBrowserActionVisibility( | 806 ExtensionActionAPI::SetBrowserActionVisibility( |
812 prefs, extension_b->id(), true); | 807 prefs, extension_b->id(), true); |
813 EXPECT_EQ(3u, num_toolbar_items()); | 808 EXPECT_EQ(3u, num_toolbar_items()); |
814 EXPECT_EQ(-1, toolbar_model()->GetVisibleIconCount()); // -1 = 'all' | 809 EXPECT_EQ(-1, toolbar_model()->GetVisibleIconCount()); // -1 = 'all' |
815 EXPECT_EQ(extension_c, GetExtensionAtIndex(0u)); | 810 EXPECT_EQ(extension_c, GetExtensionAtIndex(0u)); |
816 EXPECT_EQ(extension_a, GetExtensionAtIndex(1u)); | 811 EXPECT_EQ(extension_a, GetExtensionAtIndex(1u)); |
817 EXPECT_EQ(extension_b, GetExtensionAtIndex(2u)); | 812 EXPECT_EQ(extension_b, GetExtensionAtIndex(2u)); |
818 } | 813 } |
819 | 814 |
820 } // namespace extensions | 815 } // namespace extensions |
OLD | NEW |