| Index: chrome/common/extensions/manifest_handlers/settings_overrides_handler_unittest.cc
|
| diff --git a/chrome/common/extensions/manifest_handlers/settings_overrides_handler_unittest.cc b/chrome/common/extensions/manifest_handlers/settings_overrides_handler_unittest.cc
|
| index c9f41624c4e97dead88110956e53b031dfd35b7f..0b4e72484d23a8987bf3febbe859f5c84657a1e8 100644
|
| --- a/chrome/common/extensions/manifest_handlers/settings_overrides_handler_unittest.cc
|
| +++ b/chrome/common/extensions/manifest_handlers/settings_overrides_handler_unittest.cc
|
| @@ -32,17 +32,34 @@ const char kManifest[] = "{"
|
| " }"
|
| "}";
|
|
|
| +const char kBrokenManifest[] = "{"
|
| + " \"version\" : \"1.0.0.0\","
|
| + " \"name\" : \"Test\","
|
| + " \"chrome_settings_overrides\" : {"
|
| + " \"homepage\" : \"{invalid}\","
|
| + " \"search_provider\" : {"
|
| + " \"name\" : \"first\","
|
| + " \"keyword\" : \"firstkey\","
|
| + " \"search_url\" : \"{invalid}/s?q={searchTerms}\","
|
| + " \"favicon_url\" : \"{invalid}/favicon.ico\","
|
| + " \"encoding\" : \"UTF-8\","
|
| + " \"is_default\" : true"
|
| + " },"
|
| + " \"startup_pages\" : [\"{invalid}\"]"
|
| + " }"
|
| + "}";
|
| +
|
| using extensions::api::manifest_types::ChromeSettingsOverrides;
|
| using extensions::Extension;
|
| using extensions::Manifest;
|
| using extensions::SettingsOverrides;
|
| namespace manifest_keys = extensions::manifest_keys;
|
|
|
| -class DeclarativeSettingsTest : public testing::Test {
|
| +class OverrideSettingsTest : public testing::Test {
|
| };
|
|
|
|
|
| -TEST_F(DeclarativeSettingsTest, ParseManifest) {
|
| +TEST_F(OverrideSettingsTest, ParseManifest) {
|
| extensions::ScopedCurrentChannel channel(chrome::VersionInfo::CHANNEL_DEV);
|
| std::string manifest(kManifest);
|
| JSONStringValueSerializer json(&manifest);
|
| @@ -60,7 +77,7 @@ TEST_F(DeclarativeSettingsTest, ParseManifest) {
|
| ASSERT_TRUE(extension->manifest()->HasPath(manifest_keys::kSettingsOverride));
|
|
|
| SettingsOverrides* settings_override = static_cast<SettingsOverrides*>(
|
| - extension->GetManifestData(manifest_keys::kSettingsOverride));
|
| + extension->GetManifestData(manifest_keys::kSettingsOverride));
|
| ASSERT_TRUE(settings_override);
|
| ASSERT_TRUE(settings_override->search_engine);
|
| EXPECT_TRUE(settings_override->search_engine->is_default);
|
| @@ -81,4 +98,24 @@ TEST_F(DeclarativeSettingsTest, ParseManifest) {
|
| EXPECT_EQ(GURL("http://www.homepage.com"), *settings_override->homepage);
|
| }
|
|
|
| +TEST_F(OverrideSettingsTest, ParseBrokenManifest) {
|
| + extensions::ScopedCurrentChannel channel(chrome::VersionInfo::CHANNEL_DEV);
|
| + std::string manifest(kBrokenManifest);
|
| + JSONStringValueSerializer json(&manifest);
|
| + std::string error;
|
| + scoped_ptr<base::Value> root(json.Deserialize(NULL, &error));
|
| + ASSERT_TRUE(root);
|
| + ASSERT_TRUE(root->IsType(base::Value::TYPE_DICTIONARY));
|
| + scoped_refptr<Extension> extension = Extension::Create(
|
| + base::FilePath(FILE_PATH_LITERAL("//nonexistent")),
|
| + Manifest::INVALID_LOCATION,
|
| + *static_cast<base::DictionaryValue*>(root.get()),
|
| + Extension::NO_FLAGS,
|
| + &error);
|
| + EXPECT_FALSE(extension);
|
| + EXPECT_EQ(
|
| + std::string(extensions::manifest_errors::kInvalidEmptySettingsOverrides),
|
| + error);
|
| +}
|
| +
|
| } // namespace
|
|
|