diff options
author | aa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-02-19 07:03:05 +0000 |
---|---|---|
committer | aa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-02-19 07:03:05 +0000 |
commit | 34aa8dce3a72a232fc92a5d95dffed3ac6ef00f8 (patch) | |
tree | 32d8153672624940da096cf136e37915468bb946 /chrome | |
parent | 082d3cae492040ea1a433b067d82654e98d59bf4 (diff) | |
download | chromium_src-34aa8dce3a72a232fc92a5d95dffed3ac6ef00f8.zip chromium_src-34aa8dce3a72a232fc92a5d95dffed3ac6ef00f8.tar.gz chromium_src-34aa8dce3a72a232fc92a5d95dffed3ac6ef00f8.tar.bz2 |
Manifest renames.
Renamed "user_scripts" back to "content_scripts"
and "files" to "js". The latter I'm a bit unsure
about and would like feedback on.
Frequently, authors only need to inject CSS, not
JS (witness usersstyles.org and the Stylish
Firefox extension). Making CSS injection first-
class allows us to tighten permissions for that
case and gives a fast path when that is all
authors want to do.
So I renamed "files" to "js" so that we could
someday have "css", too.
Review URL: http://codereview.chromium.org/21422
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@10007 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r-- | chrome/browser/extensions/extension.cc | 68 | ||||
-rw-r--r-- | chrome/browser/extensions/extension.h | 20 | ||||
-rw-r--r-- | chrome/browser/extensions/extension_unittest.cc | 38 | ||||
-rw-r--r-- | chrome/browser/extensions/extensions_service.cc | 2 | ||||
-rw-r--r-- | chrome/browser/extensions/extensions_service_unittest.cc | 6 | ||||
-rw-r--r-- | chrome/test/data/extensions/bad_hash.crx | bin | 1360 -> 885 bytes | |||
-rw-r--r-- | chrome/test/data/extensions/bad_json.crx | bin | 1360 -> 901 bytes | |||
-rw-r--r-- | chrome/test/data/extensions/bad_magic.crx | bin | 1360 -> 946 bytes | |||
-rw-r--r-- | chrome/test/data/extensions/good.crx | bin | 1360 -> 946 bytes | |||
-rw-r--r-- | chrome/test/data/extensions/good/extension1/1/manifest.json | 6 |
10 files changed, 70 insertions, 70 deletions
diff --git a/chrome/browser/extensions/extension.cc b/chrome/browser/extensions/extension.cc index d1d52a51..1c6fec1 100644 --- a/chrome/browser/extensions/extension.cc +++ b/chrome/browser/extensions/extension.cc @@ -15,13 +15,13 @@ const char kUserScriptURLScheme[] = "chrome-user-script"; const char Extension::kManifestFilename[] = "manifest.json"; +const wchar_t* Extension::kContentScriptsKey = L"content_scripts"; const wchar_t* Extension::kDescriptionKey = L"description"; -const wchar_t* Extension::kFilesKey = L"files"; const wchar_t* Extension::kFormatVersionKey = L"format_version"; const wchar_t* Extension::kIdKey = L"id"; +const wchar_t* Extension::kJsKey = L"js"; const wchar_t* Extension::kMatchesKey = L"matches"; const wchar_t* Extension::kNameKey = L"name"; -const wchar_t* Extension::kUserScriptsKey = L"user_scripts"; const wchar_t* Extension::kRunAtKey = L"run_at"; const wchar_t* Extension::kVersionKey = L"version"; const wchar_t* Extension::kZipHashKey = L"zip_hash"; @@ -33,36 +33,36 @@ const char* Extension::kRunAtDocumentEndValue = "document_end"; // '*' is replaced at runtime with a specific value. This is used instead of // printf because we want to unit test them and scanf is hard to make // cross-platform. +const char* Extension::kInvalidContentScriptError = + "Invalid value for 'content_scripts[*]'."; +const char* Extension::kInvalidContentScriptsListError = + "Invalid value for 'content_scripts'."; const char* Extension::kInvalidDescriptionError = "Invalid value for 'description'."; -const char* Extension::kInvalidFileCountError = - "Invalid value for 'user_scripts[*].files. Only one file is currently " - "supported per-user script."; -const char* Extension::kInvalidFileError = - "Invalid value for 'user_scripts[*].files[*]'."; -const char* Extension::kInvalidFilesError = - "Required value 'user_scripts[*].files is missing or invalid."; const char* Extension::kInvalidFormatVersionError = "Required value 'format_version' is missing or invalid."; const char* Extension::kInvalidIdError = "Required value 'id' is missing or invalid."; +const char* Extension::kInvalidJsCountError = + "Invalid value for 'content_scripts[*].js. Only one js file is currently " + "supported per-user script."; +const char* Extension::kInvalidJsError = + "Invalid value for 'content_scripts[*].js[*]'."; +const char* Extension::kInvalidJsListError = + "Required value 'content_scripts[*].js is missing or invalid."; const char* Extension::kInvalidManifestError = "Manifest is missing or invalid."; const char* Extension::kInvalidMatchCountError = - "Invalid value for 'user_scripts[*].matches. There must be at least one " + "Invalid value for 'content_scripts[*].matches. There must be at least one " "match specified."; const char* Extension::kInvalidMatchError = - "Invalid value for 'user_scripts[*].matches[*]'."; + "Invalid value for 'content_scripts[*].matches[*]'."; const char* Extension::kInvalidMatchesError = - "Required value 'user_scripts[*].matches' is missing or invalid."; + "Required value 'content_scripts[*].matches' is missing or invalid."; const char* Extension::kInvalidNameError = "Required value 'name' is missing or invalid."; const char* Extension::kInvalidRunAtError = - "Invalid value for 'user_scripts[*].run_at'."; -const char* Extension::kInvalidUserScriptError = - "Invalid value for 'user_scripts[*]'."; -const char* Extension::kInvalidUserScriptsListError = - "Invalid value for 'user_scripts'."; + "Invalid value for 'content_scripts[*].run_at'."; const char* Extension::kInvalidVersionError = "Required value 'version' is missing or invalid."; const char* Extension::kInvalidZipHashError = @@ -231,30 +231,30 @@ bool Extension::InitFromValue(const DictionaryValue& source, } // Initialize user scripts (optional). - if (source.HasKey(kUserScriptsKey)) { + if (source.HasKey(kContentScriptsKey)) { ListValue* list_value; - if (!source.GetList(kUserScriptsKey, &list_value)) { - *error = kInvalidUserScriptsListError; + if (!source.GetList(kContentScriptsKey, &list_value)) { + *error = kInvalidContentScriptsListError; return false; } for (size_t i = 0; i < list_value->GetSize(); ++i) { - DictionaryValue* user_script; - if (!list_value->GetDictionary(i, &user_script)) { - *error = FormatErrorMessage(kInvalidUserScriptError, IntToString(i)); + DictionaryValue* content_script; + if (!list_value->GetDictionary(i, &content_script)) { + *error = FormatErrorMessage(kInvalidContentScriptError, IntToString(i)); return false; } ListValue* matches; - ListValue* files; + ListValue* js; - if (!user_script->GetList(kMatchesKey, &matches)) { + if (!content_script->GetList(kMatchesKey, &matches)) { *error = FormatErrorMessage(kInvalidMatchesError, IntToString(i)); return false; } - if (!user_script->GetList(kFilesKey, &files)) { - *error = FormatErrorMessage(kInvalidFilesError, IntToString(i)); + if (!content_script->GetList(kJsKey, &js)) { + *error = FormatErrorMessage(kInvalidJsListError, IntToString(i)); return false; } @@ -264,15 +264,15 @@ bool Extension::InitFromValue(const DictionaryValue& source, } // NOTE: Only one file is supported right now. - if (files->GetSize() != 1) { - *error = FormatErrorMessage(kInvalidFileCountError, IntToString(i)); + if (js->GetSize() != 1) { + *error = FormatErrorMessage(kInvalidJsCountError, IntToString(i)); return false; } UserScript script; - if (user_script->HasKey(kRunAtKey)) { + if (content_script->HasKey(kRunAtKey)) { std::string run_location; - if (!user_script->GetString(kRunAtKey, &run_location)) { + if (!content_script->GetString(kRunAtKey, &run_location)) { *error = FormatErrorMessage(kInvalidRunAtError, IntToString(i)); return false; } @@ -307,15 +307,15 @@ bool Extension::InitFromValue(const DictionaryValue& source, // TODO(aa): Support multiple files. std::string file; - if (!files->GetString(0, &file)) { - *error = FormatErrorMessage(kInvalidFileError, IntToString(i), + if (!js->GetString(0, &file)) { + *error = FormatErrorMessage(kInvalidJsError, IntToString(i), IntToString(0)); return false; } script.set_path(Extension::GetResourcePath(path(), file)); script.set_url(Extension::GetResourceURL(url(), file)); - user_scripts_.push_back(script); + content_scripts_.push_back(script); } } diff --git a/chrome/browser/extensions/extension.h b/chrome/browser/extensions/extension.h index 5964ad4..eae110c 100644 --- a/chrome/browser/extensions/extension.h +++ b/chrome/browser/extensions/extension.h @@ -37,13 +37,13 @@ class Extension { static const char kManifestFilename[]; // Keys used in JSON representation of extensions. + static const wchar_t* kContentScriptsKey; static const wchar_t* kDescriptionKey; - static const wchar_t* kFilesKey; static const wchar_t* kFormatVersionKey; static const wchar_t* kIdKey; + static const wchar_t* kJsKey; static const wchar_t* kMatchesKey; static const wchar_t* kNameKey; - static const wchar_t* kUserScriptsKey; static const wchar_t* kRunAtKey; static const wchar_t* kVersionKey; static const wchar_t* kZipHashKey; @@ -53,20 +53,20 @@ class Extension { static const char* kRunAtDocumentEndValue; // Error messages returned from InitFromValue(). + static const char* kInvalidContentScriptError; + static const char* kInvalidContentScriptsListError; static const char* kInvalidDescriptionError; - static const char* kInvalidFileCountError; - static const char* kInvalidFileError; - static const char* kInvalidFilesError; static const char* kInvalidFormatVersionError; static const char* kInvalidIdError; + static const char* kInvalidJsCountError; + static const char* kInvalidJsError; + static const char* kInvalidJsListError; static const char* kInvalidManifestError; static const char* kInvalidMatchCountError; static const char* kInvalidMatchError; static const char* kInvalidMatchesError; static const char* kInvalidNameError; static const char* kInvalidRunAtError; - static const char* kInvalidUserScriptError; - static const char* kInvalidUserScriptsListError; static const char* kInvalidVersionError; static const char* kInvalidZipHashError; @@ -113,8 +113,8 @@ class Extension { const std::string& description() const { return description_; } // Paths to the content scripts that the extension contains. - const UserScriptList& user_scripts() const { - return user_scripts_; + const UserScriptList& content_scripts() const { + return content_scripts_; } // Initialize the extension from a parsed manifest. @@ -140,7 +140,7 @@ class Extension { std::string description_; // Paths to the content scripts the extension contains. - UserScriptList user_scripts_; + UserScriptList content_scripts_; // A SHA1 hash of the contents of the zip file. Note that this key is only // present in the manifest that's prepended to the zip. The inner manifest diff --git a/chrome/browser/extensions/extension_unittest.cc b/chrome/browser/extensions/extension_unittest.cc index fbce6ad..5001b4f 100644 --- a/chrome/browser/extensions/extension_unittest.cc +++ b/chrome/browser/extensions/extension_unittest.cc @@ -93,24 +93,24 @@ TEST(ExtensionTest, InitFromValueInvalid) { // Test invalid user scripts list input_value.reset(static_cast<DictionaryValue*>(valid_value->DeepCopy())); - input_value->SetInteger(Extension::kUserScriptsKey, 42); + input_value->SetInteger(Extension::kContentScriptsKey, 42); EXPECT_FALSE(extension.InitFromValue(*input_value, &error)); - EXPECT_EQ(Extension::kInvalidUserScriptsListError, error); + EXPECT_EQ(Extension::kInvalidContentScriptsListError, error); // Test invalid user script item input_value.reset(static_cast<DictionaryValue*>(valid_value->DeepCopy())); - ListValue* user_scripts = NULL; - input_value->GetList(Extension::kUserScriptsKey, &user_scripts); - ASSERT_FALSE(NULL == user_scripts); - user_scripts->Set(0, Value::CreateIntegerValue(42)); + ListValue* content_scripts = NULL; + input_value->GetList(Extension::kContentScriptsKey, &content_scripts); + ASSERT_FALSE(NULL == content_scripts); + content_scripts->Set(0, Value::CreateIntegerValue(42)); EXPECT_FALSE(extension.InitFromValue(*input_value, &error)); - EXPECT_TRUE(MatchPattern(error, Extension::kInvalidUserScriptError)); + EXPECT_TRUE(MatchPattern(error, Extension::kInvalidContentScriptError)); // Test missing and invalid matches array input_value.reset(static_cast<DictionaryValue*>(valid_value->DeepCopy())); - input_value->GetList(Extension::kUserScriptsKey, &user_scripts); + input_value->GetList(Extension::kContentScriptsKey, &content_scripts); DictionaryValue* user_script = NULL; - user_scripts->GetDictionary(0, &user_script); + content_scripts->GetDictionary(0, &user_script); user_script->Remove(Extension::kMatchesKey, NULL); EXPECT_FALSE(extension.InitFromValue(*input_value, &error)); EXPECT_TRUE(MatchPattern(error, Extension::kInvalidMatchesError)); @@ -131,31 +131,31 @@ TEST(ExtensionTest, InitFromValueInvalid) { // Test missing and invalid files array input_value.reset(static_cast<DictionaryValue*>(valid_value->DeepCopy())); - input_value->GetList(Extension::kUserScriptsKey, &user_scripts); - user_scripts->GetDictionary(0, &user_script); - user_script->Remove(Extension::kFilesKey, NULL); + input_value->GetList(Extension::kContentScriptsKey, &content_scripts); + content_scripts->GetDictionary(0, &user_script); + user_script->Remove(Extension::kJsKey, NULL); EXPECT_FALSE(extension.InitFromValue(*input_value, &error)); - EXPECT_TRUE(MatchPattern(error, Extension::kInvalidFilesError)); + EXPECT_TRUE(MatchPattern(error, Extension::kInvalidJsListError)); - user_script->Set(Extension::kFilesKey, Value::CreateIntegerValue(42)); + user_script->Set(Extension::kJsKey, Value::CreateIntegerValue(42)); EXPECT_FALSE(extension.InitFromValue(*input_value, &error)); - EXPECT_TRUE(MatchPattern(error, Extension::kInvalidFilesError)); + EXPECT_TRUE(MatchPattern(error, Extension::kInvalidJsListError)); ListValue* files = new ListValue; - user_script->Set(Extension::kFilesKey, files); + user_script->Set(Extension::kJsKey, files); EXPECT_FALSE(extension.InitFromValue(*input_value, &error)); - EXPECT_TRUE(MatchPattern(error, Extension::kInvalidFileCountError)); + EXPECT_TRUE(MatchPattern(error, Extension::kInvalidJsCountError)); // Test invalid file element files->Set(0, Value::CreateIntegerValue(42)); EXPECT_FALSE(extension.InitFromValue(*input_value, &error)); - EXPECT_TRUE(MatchPattern(error, Extension::kInvalidFileError)); + EXPECT_TRUE(MatchPattern(error, Extension::kInvalidJsError)); // Test too many file elements (more than one not yet supported) files->Set(0, Value::CreateStringValue("foo.js")); files->Set(1, Value::CreateStringValue("bar.js")); EXPECT_FALSE(extension.InitFromValue(*input_value, &error)); - EXPECT_TRUE(MatchPattern(error, Extension::kInvalidFileCountError)); + EXPECT_TRUE(MatchPattern(error, Extension::kInvalidJsCountError)); } TEST(ExtensionTest, InitFromValueValid) { diff --git a/chrome/browser/extensions/extensions_service.cc b/chrome/browser/extensions/extensions_service.cc index 2ddcbb1..e01c3ce 100644 --- a/chrome/browser/extensions/extensions_service.cc +++ b/chrome/browser/extensions/extensions_service.cc @@ -104,7 +104,7 @@ void ExtensionsService::OnExtensionsLoadedFromDirectory( // Tell UserScriptMaster about any scripts in the loaded extensions. for (ExtensionList::iterator extension = extensions_.begin(); extension != extensions_.end(); ++extension) { - const UserScriptList& scripts = (*extension)->user_scripts(); + const UserScriptList& scripts = (*extension)->content_scripts(); for (UserScriptList::const_iterator script = scripts.begin(); script != scripts.end(); ++script) { user_script_master_->AddLoneScript(*script); diff --git a/chrome/browser/extensions/extensions_service_unittest.cc b/chrome/browser/extensions/extensions_service_unittest.cc index 75a97a0..7871c5e 100644 --- a/chrome/browser/extensions/extensions_service_unittest.cc +++ b/chrome/browser/extensions/extensions_service_unittest.cc @@ -150,7 +150,7 @@ TEST_F(ExtensionsServiceTest, LoadAllExtensionsFromDirectorySuccess) { frontend->extensions()->at(0)->description()); Extension* extension = frontend->extensions()->at(0); - const UserScriptList& scripts = extension->user_scripts(); + const UserScriptList& scripts = extension->content_scripts(); ASSERT_EQ(2u, scripts.size()); EXPECT_EQ(2u, scripts[0].url_patterns().size()); EXPECT_EQ("http://*.google.com/*", @@ -170,7 +170,7 @@ TEST_F(ExtensionsServiceTest, LoadAllExtensionsFromDirectorySuccess) { frontend->extensions()->at(1)->name()); EXPECT_EQ(std::string(""), frontend->extensions()->at(1)->description()); - ASSERT_EQ(0u, frontend->extensions()->at(1)->user_scripts().size()); + ASSERT_EQ(0u, frontend->extensions()->at(1)->content_scripts().size()); EXPECT_EQ(std::string("com.google.myextension3"), frontend->extensions()->at(2)->id()); @@ -178,7 +178,7 @@ TEST_F(ExtensionsServiceTest, LoadAllExtensionsFromDirectorySuccess) { frontend->extensions()->at(2)->name()); EXPECT_EQ(std::string(""), frontend->extensions()->at(2)->description()); - ASSERT_EQ(0u, frontend->extensions()->at(2)->user_scripts().size()); + ASSERT_EQ(0u, frontend->extensions()->at(2)->content_scripts().size()); }; // Test loading bad extensions from the profile directory. diff --git a/chrome/test/data/extensions/bad_hash.crx b/chrome/test/data/extensions/bad_hash.crx Binary files differindex 9959e9c..8add85c 100644 --- a/chrome/test/data/extensions/bad_hash.crx +++ b/chrome/test/data/extensions/bad_hash.crx diff --git a/chrome/test/data/extensions/bad_json.crx b/chrome/test/data/extensions/bad_json.crx Binary files differindex cc15c0e..f249711 100644 --- a/chrome/test/data/extensions/bad_json.crx +++ b/chrome/test/data/extensions/bad_json.crx diff --git a/chrome/test/data/extensions/bad_magic.crx b/chrome/test/data/extensions/bad_magic.crx Binary files differindex 4603e00..da66e12 100644 --- a/chrome/test/data/extensions/bad_magic.crx +++ b/chrome/test/data/extensions/bad_magic.crx diff --git a/chrome/test/data/extensions/good.crx b/chrome/test/data/extensions/good.crx Binary files differindex c2108e2..722e753 100644 --- a/chrome/test/data/extensions/good.crx +++ b/chrome/test/data/extensions/good.crx diff --git a/chrome/test/data/extensions/good/extension1/1/manifest.json b/chrome/test/data/extensions/good/extension1/1/manifest.json index 1f5e362..ebf69d0 100644 --- a/chrome/test/data/extensions/good/extension1/1/manifest.json +++ b/chrome/test/data/extensions/good/extension1/1/manifest.json @@ -4,14 +4,14 @@ "version": "1.0.0.0",
"name": "My extension 1",
"description": "The first extension that I made.",
- "user_scripts": [
+ "content_scripts": [
{
"matches": ["http://*.google.com/*", "https://*.google.com/*"],
- "files": ["script1.js"]
+ "js": ["script1.js"]
},
{
"matches": ["http://*.yahoo.com/*"],
- "files": ["script2.js"]
+ "js": ["script2.js"]
}
]
}
|