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

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: Added a unit test. 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..276adc287cb474af1c27972a1d19bba70647b8fc 100644
--- a/chrome/browser/extensions/component_loader_unittest.cc
+++ b/chrome/browser/extensions/component_loader_unittest.cc
@@ -21,12 +21,24 @@ class MockExtensionService : public TestExtensionService {
private:
bool ready_;
ExtensionList extension_list_;
+ size_t unloaded_;
Aaron Boodman 2011/12/05 22:11:26 This is not a good name. It should be unloaded_cou
SeRya 2011/12/06 08:19:27 Done.
+
+ bool find(std::string id) {
Aaron Boodman 2011/12/05 22:11:26 Methods are supposed to be ordered before fields.
SeRya 2011/12/06 08:19:27 Done.
+ for (ExtensionList::iterator it = extension_list_.begin();
+ it != extension_list_.end();
+ ++it)
+ if ((*it)->id() == id)
+ return true;
+
+ return false;
+ }
public:
- MockExtensionService() : ready_(false) {
+ MockExtensionService() : ready_(false), unloaded_(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_++;
return;
}
}
@@ -57,6 +71,10 @@ class MockExtensionService : public TestExtensionService {
ready_ = ready;
}
+ size_t get_unloaded_count() const {
Aaron Boodman 2011/12/05 22:11:26 getters in Chrome do not have the 'get_' prefix.
SeRya 2011/12/06 08:19:27 Done.
+ return unloaded_;
+ }
+
void clear_extension_list() {
extension_list_.clear();
}
@@ -109,6 +127,17 @@ class ComponentLoaderTest : public testing::Test {
// The contents of the text extension's manifest file.
std::string manifest_contents_;
+
+ FilePath get_extension_path(std::string name) {
Aaron Boodman 2011/12/05 22:11:26 Since this does significant work, it should be nam
SeRya 2011/12/06 08:19:27 Done.
+ FilePath test_data_dir;
+ PathService::Get(chrome::DIR_TEST_DATA, &test_data_dir);
+ return
+ test_data_dir.AppendASCII("extensions")
Aaron Boodman 2011/12/05 22:11:26 Line 135 looks like it can fit with line 134.
SeRya 2011/12/06 08:19:27 Done.
+ .AppendASCII("good")
+ .AppendASCII("Extensions")
+ .AppendASCII(name.c_str());
+
+ }
};
TEST_F(ComponentLoaderTest, ParseManifest) {
@@ -249,4 +278,32 @@ TEST_F(ComponentLoaderTest, EnterpriseWebStore) {
ASSERT_EQ(default_count + 1, extension_service_.extensions()->size());
}
+TEST_F(ComponentLoaderTest, AddOrReplace) {
+ ASSERT_EQ(0U, component_loader_.GetRegisteredExtensionsCount());
Aaron Boodman 2011/12/05 22:11:26 Chrome uses lower-case 'u'.
SeRya 2011/12/06 08:19:27 Done.
+ component_loader_.AddDefaultComponentExtensions();
+ size_t const default_count = component_loader_.GetRegisteredExtensionsCount();
+
+ // Replace a default component extension.
+ component_loader_.AddOrReplace(get_extension_path("hhaomjibdihmijegdhdafkllkbggdgoj"));
Aaron Boodman 2011/12/05 22:11:26 line length
SeRya 2011/12/06 08:19:27 Done.
+ ASSERT_EQ(default_count,
+ component_loader_.GetRegisteredExtensionsCount());
+
+ // Add a new component extension.
+ component_loader_.AddOrReplace(
+ get_extension_path("hpiknbiabeeppbpihjehijgoemciehgk/2"));
+ 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_.get_unloaded_count());
+
+ // replace loaded component extension.
+ component_loader_.AddOrReplace(get_extension_path("hhaomjibdihmijegdhdafkllkbggdgoj"));
Aaron Boodman 2011/12/05 22:11:26 line length
SeRya 2011/12/06 08:19:27 Done.
+ ASSERT_EQ(default_count + 1, extension_service_.extensions()->size());
+ ASSERT_EQ(1U, extension_service_.get_unloaded_count());
+}
+
} // namespace extensions

Powered by Google App Engine
This is Rietveld 408576698