| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "extensions/browser/extension_registry.h" | 5 #include "extensions/browser/extension_registry.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 | 8 |
| 9 #include "base/memory/ref_counted.h" | 9 #include "base/memory/ref_counted.h" |
| 10 #include "base/strings/string_util.h" | |
| 11 #include "extensions/browser/extension_registry_observer.h" | 10 #include "extensions/browser/extension_registry_observer.h" |
| 12 #include "extensions/browser/uninstall_reason.h" | 11 #include "extensions/browser/uninstall_reason.h" |
| 13 #include "extensions/common/test_util.h" | 12 #include "extensions/common/test_util.h" |
| 14 #include "testing/gtest/include/gtest/gtest.h" | 13 #include "testing/gtest/include/gtest/gtest.h" |
| 15 | 14 |
| 16 namespace extensions { | 15 namespace extensions { |
| 17 namespace { | 16 namespace { |
| 18 | 17 |
| 19 typedef testing::Test ExtensionRegistryTest; | 18 typedef testing::Test ExtensionRegistryTest; |
| 20 | 19 |
| 21 testing::AssertionResult HasSingleExtension( | 20 testing::AssertionResult HasSingleExtension( |
| 22 const ExtensionList& list, | 21 const ExtensionList& list, |
| 23 const scoped_refptr<const Extension>& extension) { | 22 const scoped_refptr<const Extension>& extension) { |
| 24 if (list.empty()) | 23 if (list.empty()) |
| 25 return testing::AssertionFailure() << "No extensions in list"; | 24 return testing::AssertionFailure() << "No extensions in list"; |
| 26 if (list.size() > 1) | 25 if (list.size() > 1) { |
| 27 return testing::AssertionFailure() << list.size() | 26 return testing::AssertionFailure() << list.size() |
| 28 << " extensions, expected 1"; | 27 << " extensions, expected 1"; |
| 28 } |
| 29 const Extension* did_load = list[0].get(); | 29 const Extension* did_load = list[0].get(); |
| 30 if (did_load != extension.get()) | 30 if (did_load != extension.get()) { |
| 31 return testing::AssertionFailure() << "Expected " << extension->id() | 31 return testing::AssertionFailure() << "Expected " << extension->id() |
| 32 << " found " << did_load->id(); | 32 << " found " << did_load->id(); |
| 33 } |
| 33 return testing::AssertionSuccess(); | 34 return testing::AssertionSuccess(); |
| 34 } | 35 } |
| 35 | 36 |
| 36 class TestObserver : public ExtensionRegistryObserver { | 37 class TestObserver : public ExtensionRegistryObserver { |
| 37 public: | 38 public: |
| 39 TestObserver() {} |
| 40 |
| 38 void Reset() { | 41 void Reset() { |
| 39 loaded_.clear(); | 42 loaded_.clear(); |
| 40 unloaded_.clear(); | 43 unloaded_.clear(); |
| 41 installed_.clear(); | 44 installed_.clear(); |
| 42 uninstalled_.clear(); | 45 uninstalled_.clear(); |
| 43 } | 46 } |
| 44 | 47 |
| 45 const ExtensionList& loaded() { return loaded_; } | 48 const ExtensionList& loaded() { return loaded_; } |
| 46 const ExtensionList& unloaded() { return unloaded_; } | 49 const ExtensionList& unloaded() { return unloaded_; } |
| 47 const ExtensionList& installed() { return installed_; } | 50 const ExtensionList& installed() { return installed_; } |
| (...skipping 24 matching lines...) Expand all Loading... |
| 72 extensions::UninstallReason reason) override { | 75 extensions::UninstallReason reason) override { |
| 73 uninstalled_.push_back(extension); | 76 uninstalled_.push_back(extension); |
| 74 } | 77 } |
| 75 | 78 |
| 76 void OnShutdown(extensions::ExtensionRegistry* registry) override { Reset(); } | 79 void OnShutdown(extensions::ExtensionRegistry* registry) override { Reset(); } |
| 77 | 80 |
| 78 ExtensionList loaded_; | 81 ExtensionList loaded_; |
| 79 ExtensionList unloaded_; | 82 ExtensionList unloaded_; |
| 80 ExtensionList installed_; | 83 ExtensionList installed_; |
| 81 ExtensionList uninstalled_; | 84 ExtensionList uninstalled_; |
| 85 |
| 86 DISALLOW_COPY_AND_ASSIGN(TestObserver); |
| 82 }; | 87 }; |
| 83 | 88 |
| 84 TEST_F(ExtensionRegistryTest, FillAndClearRegistry) { | 89 TEST_F(ExtensionRegistryTest, FillAndClearRegistry) { |
| 85 ExtensionRegistry registry(NULL); | 90 ExtensionRegistry registry(NULL); |
| 86 scoped_refptr<Extension> extension1 = test_util::CreateEmptyExtension("id1"); | 91 scoped_refptr<Extension> extension1 = test_util::CreateEmptyExtension("id1"); |
| 87 scoped_refptr<Extension> extension2 = test_util::CreateEmptyExtension("id2"); | 92 scoped_refptr<Extension> extension2 = test_util::CreateEmptyExtension("id2"); |
| 88 scoped_refptr<Extension> extension3 = test_util::CreateEmptyExtension("id3"); | 93 scoped_refptr<Extension> extension3 = test_util::CreateEmptyExtension("id3"); |
| 89 scoped_refptr<Extension> extension4 = test_util::CreateEmptyExtension("id4"); | 94 scoped_refptr<Extension> extension4 = test_util::CreateEmptyExtension("id4"); |
| 90 | 95 |
| 91 // All the sets start empty. | 96 // All the sets start empty. |
| (...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 234 TestObserver observer; | 239 TestObserver observer; |
| 235 registry.AddObserver(&observer); | 240 registry.AddObserver(&observer); |
| 236 | 241 |
| 237 EXPECT_TRUE(observer.loaded().empty()); | 242 EXPECT_TRUE(observer.loaded().empty()); |
| 238 EXPECT_TRUE(observer.unloaded().empty()); | 243 EXPECT_TRUE(observer.unloaded().empty()); |
| 239 EXPECT_TRUE(observer.installed().empty()); | 244 EXPECT_TRUE(observer.installed().empty()); |
| 240 | 245 |
| 241 scoped_refptr<const Extension> extension = | 246 scoped_refptr<const Extension> extension = |
| 242 test_util::CreateEmptyExtension("id"); | 247 test_util::CreateEmptyExtension("id"); |
| 243 | 248 |
| 244 registry.TriggerOnWillBeInstalled( | 249 registry.TriggerOnWillBeInstalled(extension.get(), false, false, |
| 245 extension.get(), false, false, base::EmptyString()); | 250 std::string()); |
| 246 EXPECT_TRUE(HasSingleExtension(observer.installed(), extension.get())); | 251 EXPECT_TRUE(HasSingleExtension(observer.installed(), extension.get())); |
| 247 | 252 |
| 248 registry.AddEnabled(extension); | 253 registry.AddEnabled(extension); |
| 249 registry.TriggerOnLoaded(extension.get()); | 254 registry.TriggerOnLoaded(extension.get()); |
| 250 | 255 |
| 251 registry.TriggerOnWillBeInstalled(extension.get(), true, false, "foo"); | 256 registry.TriggerOnWillBeInstalled(extension.get(), true, false, "foo"); |
| 252 | 257 |
| 253 EXPECT_TRUE(HasSingleExtension(observer.loaded(), extension.get())); | 258 EXPECT_TRUE(HasSingleExtension(observer.loaded(), extension.get())); |
| 254 EXPECT_TRUE(observer.unloaded().empty()); | 259 EXPECT_TRUE(observer.unloaded().empty()); |
| 255 registry.Shutdown(); | 260 registry.Shutdown(); |
| 256 | 261 |
| 257 registry.RemoveEnabled(extension->id()); | 262 registry.RemoveEnabled(extension->id()); |
| 258 registry.TriggerOnUnloaded(extension.get(), | 263 registry.TriggerOnUnloaded(extension.get(), |
| 259 UnloadedExtensionInfo::REASON_DISABLE); | 264 UnloadedExtensionInfo::REASON_DISABLE); |
| 260 | 265 |
| 261 EXPECT_TRUE(observer.loaded().empty()); | 266 EXPECT_TRUE(observer.loaded().empty()); |
| 262 EXPECT_TRUE(HasSingleExtension(observer.unloaded(), extension.get())); | 267 EXPECT_TRUE(HasSingleExtension(observer.unloaded(), extension.get())); |
| 263 registry.Shutdown(); | 268 registry.Shutdown(); |
| 264 | 269 |
| 265 registry.TriggerOnUninstalled(extension.get(), | 270 registry.TriggerOnUninstalled(extension.get(), UNINSTALL_REASON_FOR_TESTING); |
| 266 extensions::UNINSTALL_REASON_FOR_TESTING); | |
| 267 EXPECT_TRUE(observer.installed().empty()); | 271 EXPECT_TRUE(observer.installed().empty()); |
| 268 EXPECT_TRUE(HasSingleExtension(observer.uninstalled(), extension.get())); | 272 EXPECT_TRUE(HasSingleExtension(observer.uninstalled(), extension.get())); |
| 269 | 273 |
| 270 registry.RemoveObserver(&observer); | 274 registry.RemoveObserver(&observer); |
| 271 } | 275 } |
| 272 | 276 |
| 273 } // namespace | 277 } // namespace |
| 274 } // namespace extensions | 278 } // namespace extensions |
| OLD | NEW |