| Index: chrome/browser/extensions/component_loader_unittest.cc
|
| diff --git a/chrome/browser/extensions/component_loader_unittest.cc b/chrome/browser/extensions/component_loader_unittest.cc
|
| index 89f47629dce0311a1c047bbe40ce5eeb0e3b3f82..63073802199d6a0687ab90d43606f4dad91402e2 100644
|
| --- a/chrome/browser/extensions/component_loader_unittest.cc
|
| +++ b/chrome/browser/extensions/component_loader_unittest.cc
|
| @@ -21,13 +21,15 @@ namespace {
|
| class MockExtensionService : public TestExtensionService {
|
| private:
|
| bool ready_;
|
| + size_t unloaded_count_;
|
| ExtensionSet extension_set_;
|
|
|
| public:
|
| - MockExtensionService() : ready_(false) {
|
| + MockExtensionService() : ready_(false), unloaded_count_(0) {
|
| }
|
|
|
| virtual void AddExtension(const Extension* extension) OVERRIDE {
|
| + ASSERT_FALSE(extension_set_.Contains(extension->id()));
|
| // ExtensionService must become the owner of the extension object.
|
| extension_set_.Insert(extension);
|
| }
|
| @@ -35,8 +37,10 @@ class MockExtensionService : public TestExtensionService {
|
| virtual void UnloadExtension(
|
| const std::string& extension_id,
|
| extension_misc::UnloadedExtensionReason reason) OVERRIDE {
|
| + ASSERT_TRUE(extension_set_.Contains(extension_id));
|
| // Remove the extension with the matching id.
|
| extension_set_.Remove(extension_id);
|
| + unloaded_count_++;
|
| }
|
|
|
| virtual bool is_ready() OVERRIDE {
|
| @@ -51,6 +55,10 @@ class MockExtensionService : public TestExtensionService {
|
| ready_ = ready;
|
| }
|
|
|
| + size_t unloaded_count() const {
|
| + return unloaded_count_;
|
| + }
|
| +
|
| void clear_extensions() {
|
| extension_set_.Clear();
|
| }
|
| @@ -69,11 +77,8 @@ class ComponentLoaderTest : public testing::Test {
|
| }
|
|
|
| void SetUp() {
|
| - FilePath test_data_dir;
|
| - ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &test_data_dir));
|
| extension_path_ =
|
| - test_data_dir.AppendASCII("extensions")
|
| - .AppendASCII("good")
|
| + GetBasePath().AppendASCII("good")
|
| .AppendASCII("Extensions")
|
| .AppendASCII("behllobkkfkfnphdnhnkndlbkcpglgmj")
|
| .AppendASCII("1.0.0.0");
|
| @@ -103,6 +108,12 @@ class ComponentLoaderTest : public testing::Test {
|
|
|
| // The contents of the text extension's manifest file.
|
| std::string manifest_contents_;
|
| +
|
| + FilePath GetBasePath() {
|
| + FilePath test_data_dir;
|
| + PathService::Get(chrome::DIR_TEST_DATA, &test_data_dir);
|
| + return test_data_dir.AppendASCII("extensions");
|
| + }
|
| };
|
|
|
| TEST_F(ComponentLoaderTest, ParseManifest) {
|
| @@ -160,7 +171,7 @@ TEST_F(ComponentLoaderTest, AddWhenNotReady) {
|
| extension_service_.set_ready(false);
|
| extension = component_loader_.Add(manifest_contents_, extension_path_);
|
| ASSERT_EQ((Extension*)NULL, extension.get());
|
| - ASSERT_EQ(0U, extension_service_.extensions()->size());
|
| + ASSERT_EQ(0u, extension_service_.extensions()->size());
|
| }
|
|
|
| // Test that it *is* loaded when the extension service *is* ready.
|
| @@ -169,7 +180,7 @@ TEST_F(ComponentLoaderTest, AddWhenReady) {
|
| extension_service_.set_ready(true);
|
| extension = component_loader_.Add(manifest_contents_, extension_path_);
|
| ASSERT_NE((Extension*)NULL, extension.get());
|
| - ASSERT_EQ(1U, extension_service_.extensions()->size());
|
| + ASSERT_EQ(1u, extension_service_.extensions()->size());
|
| }
|
|
|
| TEST_F(ComponentLoaderTest, Remove) {
|
| @@ -177,13 +188,13 @@ TEST_F(ComponentLoaderTest, Remove) {
|
|
|
| // Removing an extension that was never added should be ok.
|
| component_loader_.Remove(extension_path_);
|
| - ASSERT_EQ(0U, extension_service_.extensions()->size());
|
| + ASSERT_EQ(0u, extension_service_.extensions()->size());
|
|
|
| // Try adding and removing before LoadAll() is called.
|
| component_loader_.Add(manifest_contents_, extension_path_);
|
| component_loader_.Remove(extension_path_);
|
| component_loader_.LoadAll();
|
| - ASSERT_EQ(0U, extension_service_.extensions()->size());
|
| + ASSERT_EQ(0u, extension_service_.extensions()->size());
|
|
|
| // Load an extension, and check that it's unloaded when Remove() is called.
|
| scoped_refptr<const Extension> extension;
|
| @@ -191,11 +202,11 @@ TEST_F(ComponentLoaderTest, Remove) {
|
| extension = component_loader_.Add(manifest_contents_, extension_path_);
|
| ASSERT_NE((Extension*)NULL, extension.get());
|
| component_loader_.Remove(extension_path_);
|
| - ASSERT_EQ(0U, extension_service_.extensions()->size());
|
| + ASSERT_EQ(0u, extension_service_.extensions()->size());
|
|
|
| // And after calling LoadAll(), it shouldn't get loaded.
|
| component_loader_.LoadAll();
|
| - ASSERT_EQ(0U, extension_service_.extensions()->size());
|
| + ASSERT_EQ(0u, extension_service_.extensions()->size());
|
| }
|
|
|
| TEST_F(ComponentLoaderTest, LoadAll) {
|
| @@ -203,7 +214,7 @@ TEST_F(ComponentLoaderTest, LoadAll) {
|
|
|
| // No extensions should be loaded if none were added.
|
| component_loader_.LoadAll();
|
| - ASSERT_EQ(0U, extension_service_.extensions()->size());
|
| + ASSERT_EQ(0u, extension_service_.extensions()->size());
|
|
|
| // Use LoadAll() to load the default extensions.
|
| component_loader_.AddDefaultComponentExtensions();
|
| @@ -243,4 +254,34 @@ TEST_F(ComponentLoaderTest, EnterpriseWebStore) {
|
| ASSERT_EQ(default_count + 1, extension_service_.extensions()->size());
|
| }
|
|
|
| +TEST_F(ComponentLoaderTest, AddOrReplace) {
|
| + ASSERT_EQ(0u, component_loader_.registered_extensions_count());
|
| + component_loader_.AddDefaultComponentExtensions();
|
| + size_t const default_count = component_loader_.registered_extensions_count();
|
| + FilePath known_extension = GetBasePath()
|
| + .AppendASCII("override_component_extension");
|
| + FilePath unknow_extension = extension_path_;
|
| +
|
| + // Replace a default component extension.
|
| + component_loader_.AddOrReplace(known_extension);
|
| + ASSERT_EQ(default_count,
|
| + component_loader_.registered_extensions_count());
|
| +
|
| + // Add a new component extension.
|
| + component_loader_.AddOrReplace(unknow_extension);
|
| + ASSERT_EQ(default_count + 1,
|
| + component_loader_.registered_extensions_count());
|
| +
|
| + extension_service_.set_ready(true);
|
| + component_loader_.LoadAll();
|
| +
|
| + ASSERT_EQ(default_count + 1, extension_service_.extensions()->size());
|
| + ASSERT_EQ(0u, extension_service_.unloaded_count());
|
| +
|
| + // replace loaded component extension.
|
| + component_loader_.AddOrReplace(known_extension);
|
| + ASSERT_EQ(default_count + 1, extension_service_.extensions()->size());
|
| + ASSERT_EQ(1u, extension_service_.unloaded_count());
|
| +}
|
| +
|
| } // namespace extensions
|
|
|