Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(245)

Unified Diff: chrome/browser/extensions/component_loader_unittest.cc

Issue 8659002: Adding the --load-component-extension flag. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Code review fix. Created 9 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 3e3d8c81166f775f8e76461e27b5490e7b2fe4a0..415b67508ce7b9d60d50861378f7fa65dbd9015b 100644
--- a/chrome/browser/extensions/component_loader_unittest.cc
+++ b/chrome/browser/extensions/component_loader_unittest.cc
@@ -19,14 +19,26 @@ namespace {
class MockExtensionService : public TestExtensionService {
private:
+ bool find(std::string id) {
Aaron Boodman 2011/12/06 19:43:35 There is already GetExtensionById in TestExtension
SeRya 2011/12/06 22:19:37 Irrelevant after merge.
Aaron Boodman 2011/12/07 00:09:02 What I mean is that the TestExtensionService base
+ for (ExtensionList::iterator it = extension_list_.begin();
+ it != extension_list_.end();
+ ++it)
+ if ((*it)->id() == id)
+ return true;
+
+ return false;
+ }
+
bool ready_;
ExtensionList extension_list_;
+ size_t unloaded_count_;
public:
- MockExtensionService() : ready_(false) {
+ MockExtensionService() : ready_(false), unloaded_count_(0) {
}
virtual void AddExtension(const Extension* extension) OVERRIDE {
+ ASSERT_FALSE(find(extension->id()));
// ExtensionService must become the owner of the extension object.
extension_list_.push_back(extension);
}
@@ -34,12 +46,14 @@ class MockExtensionService : public TestExtensionService {
virtual void UnloadExtension(
const std::string& extension_id,
extension_misc::UnloadedExtensionReason reason) OVERRIDE {
+ ASSERT_TRUE(find(extension_id));
// Remove the extension with the matching id.
for (ExtensionList::iterator it = extension_list_.begin();
it != extension_list_.end();
++it) {
if ((*it)->id() == extension_id) {
extension_list_.erase(it);
+ unloaded_count_++;
return;
}
}
@@ -57,6 +71,10 @@ class MockExtensionService : public TestExtensionService {
ready_ = ready;
}
+ size_t unloaded_count() const {
+ return unloaded_count_;
+ }
+
void clear_extension_list() {
extension_list_.clear();
}
@@ -75,13 +93,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")
- .AppendASCII("Extensions")
- .AppendASCII("behllobkkfkfnphdnhnkndlbkcpglgmj")
+ GetBasePath().AppendASCII("behllobkkfkfnphdnhnkndlbkcpglgmj")
.AppendASCII("1.0.0.0");
// Read in the extension manifest.
@@ -109,6 +122,14 @@ 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")
+ .AppendASCII("good")
+ .AppendASCII("Extensions");
+ }
};
TEST_F(ComponentLoaderTest, ParseManifest) {
@@ -166,7 +187,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.
@@ -175,7 +196,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) {
@@ -183,13 +204,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;
@@ -197,11 +218,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) {
@@ -209,7 +230,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());
Aaron Boodman 2011/12/06 19:43:35 thank-you!
// Use LoadAll() to load the default extensions.
component_loader_.AddDefaultComponentExtensions();
@@ -249,4 +270,36 @@ TEST_F(ComponentLoaderTest, EnterpriseWebStore) {
ASSERT_EQ(default_count + 1, extension_service_.extensions()->size());
}
+TEST_F(ComponentLoaderTest, AddOrReplace) {
+ ASSERT_EQ(0u, component_loader_.GetRegisteredExtensionsCount());
+ component_loader_.AddDefaultComponentExtensions();
+ size_t const default_count = component_loader_.GetRegisteredExtensionsCount();
+ FilePath known_extension = GetBasePath()
+ .AppendASCII("mndnfokpggljbaajbnioimlmbfngpief");
+ FilePath unknow_extension = GetBasePath()
+ .AppendASCII("hpiknbiabeeppbpihjehijgoemciehgk")
+ .AppendASCII("2");
+
+ // Replace a default component extension.
+ component_loader_.AddOrReplace(known_extension);
+ ASSERT_EQ(default_count,
+ component_loader_.GetRegisteredExtensionsCount());
+
+ // Add a new component extension.
+ component_loader_.AddOrReplace(unknow_extension);
+ ASSERT_EQ(default_count + 1,
+ component_loader_.GetRegisteredExtensionsCount());
+
+ 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

Powered by Google App Engine
This is Rietveld 408576698