summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
authoraa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-02-19 07:03:05 +0000
committeraa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-02-19 07:03:05 +0000
commit34aa8dce3a72a232fc92a5d95dffed3ac6ef00f8 (patch)
tree32d8153672624940da096cf136e37915468bb946 /chrome
parent082d3cae492040ea1a433b067d82654e98d59bf4 (diff)
downloadchromium_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.cc68
-rw-r--r--chrome/browser/extensions/extension.h20
-rw-r--r--chrome/browser/extensions/extension_unittest.cc38
-rw-r--r--chrome/browser/extensions/extensions_service.cc2
-rw-r--r--chrome/browser/extensions/extensions_service_unittest.cc6
-rw-r--r--chrome/test/data/extensions/bad_hash.crxbin1360 -> 885 bytes
-rw-r--r--chrome/test/data/extensions/bad_json.crxbin1360 -> 901 bytes
-rw-r--r--chrome/test/data/extensions/bad_magic.crxbin1360 -> 946 bytes
-rw-r--r--chrome/test/data/extensions/good.crxbin1360 -> 946 bytes
-rw-r--r--chrome/test/data/extensions/good/extension1/1/manifest.json6
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
index 9959e9c..8add85c 100644
--- a/chrome/test/data/extensions/bad_hash.crx
+++ b/chrome/test/data/extensions/bad_hash.crx
Binary files differ
diff --git a/chrome/test/data/extensions/bad_json.crx b/chrome/test/data/extensions/bad_json.crx
index cc15c0e..f249711 100644
--- a/chrome/test/data/extensions/bad_json.crx
+++ b/chrome/test/data/extensions/bad_json.crx
Binary files differ
diff --git a/chrome/test/data/extensions/bad_magic.crx b/chrome/test/data/extensions/bad_magic.crx
index 4603e00..da66e12 100644
--- a/chrome/test/data/extensions/bad_magic.crx
+++ b/chrome/test/data/extensions/bad_magic.crx
Binary files differ
diff --git a/chrome/test/data/extensions/good.crx b/chrome/test/data/extensions/good.crx
index c2108e2..722e753 100644
--- a/chrome/test/data/extensions/good.crx
+++ b/chrome/test/data/extensions/good.crx
Binary files differ
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"]
}
]
}