diff options
author | kalman@chromium.org <kalman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-03-26 22:03:49 +0000 |
---|---|---|
committer | kalman@chromium.org <kalman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-03-26 22:03:49 +0000 |
commit | dcc476468472be99899fe1942a856d3003c4e3d7 (patch) | |
tree | 53ee9923e5522a15930bc8adb786d115f9a93cc3 /extensions/browser/extension_registry_unittest.cc | |
parent | 15d0326aff71e7653166f757089794bf6ca9c21c (diff) | |
download | chromium_src-dcc476468472be99899fe1942a856d3003c4e3d7.zip chromium_src-dcc476468472be99899fe1942a856d3003c4e3d7.tar.gz chromium_src-dcc476468472be99899fe1942a856d3003c4e3d7.tar.bz2 |
Add OnLoaded to ExtensionRegistryObserver. Change GalleryWatchStateTracker
to use it rather than notifications to prove it works.
BUG=354367
R=jamescook@chromium.org, thestig@chromium.org
Review URL: https://codereview.chromium.org/206413002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@259708 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'extensions/browser/extension_registry_unittest.cc')
-rw-r--r-- | extensions/browser/extension_registry_unittest.cc | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/extensions/browser/extension_registry_unittest.cc b/extensions/browser/extension_registry_unittest.cc index 075019b..7eaec65 100644 --- a/extensions/browser/extension_registry_unittest.cc +++ b/extensions/browser/extension_registry_unittest.cc @@ -7,6 +7,7 @@ #include <string> #include "base/memory/ref_counted.h" +#include "extensions/browser/extension_registry_observer.h" #include "extensions/common/extension.h" #include "extensions/common/test_util.h" #include "testing/gtest/include/gtest/gtest.h" @@ -16,6 +17,44 @@ namespace { typedef testing::Test ExtensionRegistryTest; +testing::AssertionResult HasSingleExtension( + const ExtensionList& list, + const scoped_refptr<const Extension>& extension) { + if (list.empty()) + return testing::AssertionFailure() << "No extensions in list"; + if (list.size() > 1) + return testing::AssertionFailure() << list.size() + << " extensions, expected 1"; + const Extension* did_load = list[0].get(); + if (did_load != extension) + return testing::AssertionFailure() << "Expected " << extension->id() + << " found " << did_load->id(); + return testing::AssertionSuccess(); +} + +class TestObserver : public ExtensionRegistryObserver { + public: + void Reset() { + loaded_.clear(); + unloaded_.clear(); + } + + const ExtensionList& loaded() { return loaded_; } + const ExtensionList& unloaded() { return unloaded_; } + + private: + virtual void OnExtensionLoaded(const Extension* extension) OVERRIDE { + loaded_.push_back(extension); + } + + virtual void OnExtensionUnloaded(const Extension* extension) OVERRIDE { + unloaded_.push_back(extension); + } + + ExtensionList loaded_; + ExtensionList unloaded_; +}; + TEST_F(ExtensionRegistryTest, FillAndClearRegistry) { ExtensionRegistry registry; scoped_refptr<Extension> extension1 = test_util::CreateExtensionWithID("id1"); @@ -165,5 +204,33 @@ TEST_F(ExtensionRegistryTest, GetExtensionById) { "enabled", ExtensionRegistry::DISABLED | ExtensionRegistry::BLACKLISTED)); } +TEST_F(ExtensionRegistryTest, Observer) { + ExtensionRegistry registry; + TestObserver observer; + registry.AddObserver(&observer); + + EXPECT_TRUE(observer.loaded().empty()); + EXPECT_TRUE(observer.unloaded().empty()); + + scoped_refptr<const Extension> extension = + test_util::CreateExtensionWithID("id"); + + registry.AddEnabled(extension); + registry.TriggerOnLoaded(extension); + + EXPECT_TRUE(HasSingleExtension(observer.loaded(), extension.get())); + EXPECT_TRUE(observer.unloaded().empty()); + observer.Reset(); + + registry.RemoveEnabled(extension->id()); + registry.TriggerOnUnloaded(extension); + + EXPECT_TRUE(observer.loaded().empty()); + EXPECT_TRUE(HasSingleExtension(observer.unloaded(), extension.get())); + observer.Reset(); + + registry.RemoveObserver(&observer); +} + } // namespace } // namespace extensions |