Index: chrome/common/extensions/manifest_unittest.cc |
diff --git a/chrome/common/extensions/manifest_unittest.cc b/chrome/common/extensions/manifest_unittest.cc |
index 5cabe03e342518c680de4ebe609869f6b5ba6ccc..b03b5d390989553438e95549721b278ba4b5ac57 100644 |
--- a/chrome/common/extensions/manifest_unittest.cc |
+++ b/chrome/common/extensions/manifest_unittest.cc |
@@ -48,9 +48,9 @@ TEST_F(ManifestTest, Extension) { |
scoped_ptr<Manifest> manifest( |
new Manifest(Extension::INTERNAL, manifest_value.Pass())); |
- string16 error; |
- EXPECT_TRUE(manifest->ValidateManifest(&error)); |
- EXPECT_EQ(ASCIIToUTF16(""), error); |
+ std::vector<std::string> warnings; |
+ manifest->ValidateManifest(&warnings); |
+ EXPECT_TRUE(warnings.empty()); |
AssertType(manifest.get(), Extension::TYPE_EXTENSION); |
// The known key 'background_page' should be accessible. |
@@ -58,10 +58,10 @@ TEST_F(ManifestTest, Extension) { |
EXPECT_TRUE(manifest->GetString(keys::kBackgroundPageLegacy, &value)); |
EXPECT_EQ("bg.html", value); |
- // The unknown key 'unknown_key' should be inaccesible. |
+ // The unknown key 'unknown_key' should be accesible. |
value.clear(); |
- EXPECT_FALSE(manifest->GetString("unknown_key", &value)); |
- EXPECT_EQ("", value); |
+ EXPECT_TRUE(manifest->GetString("unknown_key", &value)); |
+ EXPECT_EQ("foo", value); |
// Set the manifest_version to 2; background_page should stop working. |
value.clear(); |
@@ -69,17 +69,16 @@ TEST_F(ManifestTest, Extension) { |
EXPECT_FALSE(manifest->GetString("background_page", &value)); |
EXPECT_EQ("", value); |
- // Validate should also stop working. |
- error.clear(); |
- EXPECT_FALSE(manifest->ValidateManifest(&error)); |
+ // Validate should also give a warning. |
+ warnings.clear(); |
+ manifest->ValidateManifest(&warnings); |
+ ASSERT_EQ(1u, warnings.size()); |
{ |
Feature feature; |
feature.set_name("background_page"); |
feature.set_max_manifest_version(1); |
- EXPECT_EQ(ExtensionErrorUtils::FormatErrorMessageUTF16( |
- errors::kFeatureNotAllowed, |
- "background_page", |
- feature.GetErrorMessage(Feature::INVALID_MAX_MANIFEST_VERSION)), error); |
+ EXPECT_EQ(feature.GetErrorMessage(Feature::INVALID_MAX_MANIFEST_VERSION), |
+ warnings[0]); |
} |
// Test DeepCopy and Equals. |
@@ -98,9 +97,9 @@ TEST_F(ManifestTest, ExtensionTypes) { |
scoped_ptr<Manifest> manifest( |
new Manifest(Extension::INTERNAL, value.Pass())); |
- string16 error; |
- EXPECT_TRUE(manifest->ValidateManifest(&error)); |
- EXPECT_EQ(ASCIIToUTF16(""), error); |
+ std::vector<std::string> warnings; |
+ manifest->ValidateManifest(&warnings); |
+ EXPECT_TRUE(warnings.empty()); |
// By default, the type is Extension. |
AssertType(manifest.get(), Extension::TYPE_EXTENSION); |
@@ -132,65 +131,39 @@ TEST_F(ManifestTest, ExtensionTypes) { |
manifest->value()->Remove(keys::kLaunchWebURL, NULL); |
}; |
-// Verifies that the various getters filter unknown and restricted keys. |
-TEST_F(ManifestTest, Getters) { |
+// Verifies that the getters filter restricted keys. |
+TEST_F(ManifestTest, RestrictedKeys) { |
scoped_ptr<DictionaryValue> value(new DictionaryValue()); |
+ value->SetString(keys::kName, "extension"); |
+ value->SetString(keys::kVersion, "1"); |
+ |
scoped_ptr<Manifest> manifest( |
new Manifest(Extension::INTERNAL, value.Pass())); |
- std::string unknown_key = "asdfaskldjf"; |
- |
- // Verify that the key filtering works for each of the getters. |
- // Get and GetBoolean |
- bool expected_bool = true, actual_bool = false; |
- manifest->value()->Set(unknown_key, Value::CreateBooleanValue(expected_bool)); |
- EXPECT_FALSE(manifest->HasKey(unknown_key)); |
- EXPECT_FALSE(manifest->GetBoolean(unknown_key, &actual_bool)); |
- EXPECT_FALSE(actual_bool); |
- Value* actual_value = NULL; |
- EXPECT_FALSE(manifest->Get(unknown_key, &actual_value)); |
- EXPECT_TRUE(manifest->value()->Remove(unknown_key, NULL)); |
- |
- // GetInteger |
- int expected_int = 5, actual_int = 0; |
- manifest->value()->Set(unknown_key, Value::CreateIntegerValue(expected_int)); |
- EXPECT_FALSE(manifest->GetInteger(unknown_key, &actual_int)); |
- EXPECT_NE(expected_int, actual_int); |
- EXPECT_TRUE(manifest->value()->Remove(unknown_key, NULL)); |
- |
- // GetString |
- std::string expected_str = "hello", actual_str; |
- manifest->value()->Set(unknown_key, Value::CreateStringValue(expected_str)); |
- EXPECT_FALSE(manifest->GetString(unknown_key, &actual_str)); |
- EXPECT_NE(expected_str, actual_str); |
- EXPECT_TRUE(manifest->value()->Remove(unknown_key, NULL)); |
- |
- // GetString (string16) |
- string16 expected_str16(UTF8ToUTF16("hello")), actual_str16; |
- manifest->value()->Set(unknown_key, Value::CreateStringValue(expected_str16)); |
- EXPECT_FALSE(manifest->GetString(unknown_key, &actual_str16)); |
- EXPECT_NE(expected_str16, actual_str16); |
- EXPECT_TRUE(manifest->value()->Remove(unknown_key, NULL)); |
- |
- // GetDictionary |
- DictionaryValue* expected_dict = new DictionaryValue(); |
- DictionaryValue* actual_dict = NULL; |
- expected_dict->Set("foo", Value::CreateStringValue("bar")); |
- manifest->value()->Set(unknown_key, expected_dict); |
- EXPECT_FALSE(manifest->GetDictionary(unknown_key, &actual_dict)); |
- EXPECT_EQ(NULL, actual_dict); |
- std::string path = unknown_key + ".foo"; |
- EXPECT_FALSE(manifest->GetString(path, &actual_str)); |
- EXPECT_NE("bar", actual_str); |
- EXPECT_TRUE(manifest->value()->Remove(unknown_key, NULL)); |
- |
- // GetList |
- ListValue* expected_list = new ListValue(); |
- ListValue* actual_list = NULL; |
- expected_list->Append(Value::CreateStringValue("blah")); |
- manifest->value()->Set(unknown_key, expected_list); |
- EXPECT_FALSE(manifest->GetList(unknown_key, &actual_list)); |
- EXPECT_EQ(NULL, actual_list); |
- EXPECT_TRUE(manifest->value()->Remove(unknown_key, NULL)); |
-} |
+ std::vector<std::string> warnings; |
+ manifest->ValidateManifest(&warnings); |
+ EXPECT_TRUE(warnings.empty()); |
+ |
+ // Platform apps cannot have a "page_action" key. |
+ manifest->value()->Set(keys::kPageAction, new DictionaryValue()); |
+ AssertType(manifest.get(), Extension::TYPE_EXTENSION); |
+ base::Value* output = NULL; |
+ EXPECT_TRUE(manifest->HasKey(keys::kPageAction)); |
+ EXPECT_TRUE(manifest->Get(keys::kPageAction, &output)); |
+ |
+ manifest->value()->SetBoolean(keys::kPlatformApp, true); |
+ AssertType(manifest.get(), Extension::TYPE_PLATFORM_APP); |
+ EXPECT_FALSE(manifest->HasKey(keys::kPageAction)); |
+ EXPECT_FALSE(manifest->Get(keys::kPageAction, &output)); |
+ manifest->value()->Remove(keys::kPlatformApp, NULL); |
+ |
+ // "commands" is restricted to manifest_version >= 2. |
+ manifest->value()->Set(keys::kCommands, new DictionaryValue()); |
+ EXPECT_FALSE(manifest->HasKey(keys::kCommands)); |
+ EXPECT_FALSE(manifest->Get(keys::kCommands, &output)); |
+ |
+ manifest->value()->SetInteger(keys::kManifestVersion, 2); |
+ EXPECT_TRUE(manifest->HasKey(keys::kCommands)); |
+ EXPECT_TRUE(manifest->Get(keys::kCommands, &output)); |
+}; |
} // namespace extensions |