| 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" | 10 #include "base/strings/string_util.h" |
| 11 #include "extensions/browser/extension_registry_observer.h" | 11 #include "extensions/browser/extension_registry_observer.h" |
| 12 #include "extensions/browser/uninstall_reason.h" | 12 #include "extensions/browser/uninstall_reason.h" |
| 13 #include "extensions/common/test_util.h" | 13 #include "extensions/common/test_util.h" |
| 14 #include "testing/gtest/include/gtest/gtest.h" | 14 #include "testing/gtest/include/gtest/gtest.h" |
| 15 | 15 |
| 16 namespace extensions { | 16 namespace extensions { |
| 17 namespace { | 17 namespace { |
| 18 | 18 |
| 19 typedef testing::Test ExtensionRegistryTest; | 19 typedef testing::Test ExtensionRegistryTest; |
| 20 | 20 |
| 21 testing::AssertionResult HasSingleExtension( | 21 testing::AssertionResult HasSingleExtension( |
| 22 const ExtensionList& list, | 22 const ExtensionList& list, |
| 23 const scoped_refptr<const Extension>& extension) { | 23 const scoped_refptr<const Extension>& extension) { |
| 24 if (list.empty()) | 24 if (list.empty()) |
| 25 return testing::AssertionFailure() << "No extensions in list"; | 25 return testing::AssertionFailure() << "No extensions in list"; |
| 26 if (list.size() > 1) | 26 if (list.size() > 1) |
| 27 return testing::AssertionFailure() << list.size() | 27 return testing::AssertionFailure() << list.size() |
| 28 << " extensions, expected 1"; | 28 << " extensions, expected 1"; |
| 29 const Extension* did_load = list[0].get(); | 29 const Extension* did_load = list[0].get(); |
| 30 if (did_load != extension) | 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 return testing::AssertionSuccess(); | 33 return testing::AssertionSuccess(); |
| 34 } | 34 } |
| 35 | 35 |
| 36 class TestObserver : public ExtensionRegistryObserver { | 36 class TestObserver : public ExtensionRegistryObserver { |
| 37 public: | 37 public: |
| 38 void Reset() { | 38 void Reset() { |
| 39 loaded_.clear(); | 39 loaded_.clear(); |
| 40 unloaded_.clear(); | 40 unloaded_.clear(); |
| (...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 241 registry.AddObserver(&observer); | 241 registry.AddObserver(&observer); |
| 242 | 242 |
| 243 EXPECT_TRUE(observer.loaded().empty()); | 243 EXPECT_TRUE(observer.loaded().empty()); |
| 244 EXPECT_TRUE(observer.unloaded().empty()); | 244 EXPECT_TRUE(observer.unloaded().empty()); |
| 245 EXPECT_TRUE(observer.installed().empty()); | 245 EXPECT_TRUE(observer.installed().empty()); |
| 246 | 246 |
| 247 scoped_refptr<const Extension> extension = | 247 scoped_refptr<const Extension> extension = |
| 248 test_util::CreateExtensionWithID("id"); | 248 test_util::CreateExtensionWithID("id"); |
| 249 | 249 |
| 250 registry.TriggerOnWillBeInstalled( | 250 registry.TriggerOnWillBeInstalled( |
| 251 extension, false, false, base::EmptyString()); | 251 extension.get(), false, false, base::EmptyString()); |
| 252 EXPECT_TRUE(HasSingleExtension(observer.installed(), extension.get())); | 252 EXPECT_TRUE(HasSingleExtension(observer.installed(), extension.get())); |
| 253 | 253 |
| 254 registry.AddEnabled(extension); | 254 registry.AddEnabled(extension); |
| 255 registry.TriggerOnLoaded(extension); | 255 registry.TriggerOnLoaded(extension.get()); |
| 256 | 256 |
| 257 registry.TriggerOnWillBeInstalled(extension, true, false, "foo"); | 257 registry.TriggerOnWillBeInstalled(extension.get(), true, false, "foo"); |
| 258 | 258 |
| 259 EXPECT_TRUE(HasSingleExtension(observer.loaded(), extension.get())); | 259 EXPECT_TRUE(HasSingleExtension(observer.loaded(), extension.get())); |
| 260 EXPECT_TRUE(observer.unloaded().empty()); | 260 EXPECT_TRUE(observer.unloaded().empty()); |
| 261 registry.Shutdown(); | 261 registry.Shutdown(); |
| 262 | 262 |
| 263 registry.RemoveEnabled(extension->id()); | 263 registry.RemoveEnabled(extension->id()); |
| 264 registry.TriggerOnUnloaded(extension, UnloadedExtensionInfo::REASON_DISABLE); | 264 registry.TriggerOnUnloaded(extension.get(), |
| 265 UnloadedExtensionInfo::REASON_DISABLE); |
| 265 | 266 |
| 266 EXPECT_TRUE(observer.loaded().empty()); | 267 EXPECT_TRUE(observer.loaded().empty()); |
| 267 EXPECT_TRUE(HasSingleExtension(observer.unloaded(), extension.get())); | 268 EXPECT_TRUE(HasSingleExtension(observer.unloaded(), extension.get())); |
| 268 registry.Shutdown(); | 269 registry.Shutdown(); |
| 269 | 270 |
| 270 registry.TriggerOnUninstalled(extension, | 271 registry.TriggerOnUninstalled(extension.get(), |
| 271 extensions::UNINSTALL_REASON_FOR_TESTING); | 272 extensions::UNINSTALL_REASON_FOR_TESTING); |
| 272 EXPECT_TRUE(observer.installed().empty()); | 273 EXPECT_TRUE(observer.installed().empty()); |
| 273 EXPECT_TRUE(HasSingleExtension(observer.uninstalled(), extension.get())); | 274 EXPECT_TRUE(HasSingleExtension(observer.uninstalled(), extension.get())); |
| 274 | 275 |
| 275 registry.RemoveObserver(&observer); | 276 registry.RemoveObserver(&observer); |
| 276 } | 277 } |
| 277 | 278 |
| 278 } // namespace | 279 } // namespace |
| 279 } // namespace extensions | 280 } // namespace extensions |
| OLD | NEW |