summaryrefslogtreecommitdiffstats
path: root/extensions/browser/extension_registry_unittest.cc
diff options
context:
space:
mode:
authorkalman@chromium.org <kalman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-03-26 22:03:49 +0000
committerkalman@chromium.org <kalman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-03-26 22:03:49 +0000
commitdcc476468472be99899fe1942a856d3003c4e3d7 (patch)
tree53ee9923e5522a15930bc8adb786d115f9a93cc3 /extensions/browser/extension_registry_unittest.cc
parent15d0326aff71e7653166f757089794bf6ca9c21c (diff)
downloadchromium_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.cc67
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