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

Unified Diff: chrome/common/extensions/manifest_handlers/settings_overrides_handler_unittest.cc

Issue 71303009: Fix browser crash when parsing invalid Settings Override extension (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 1 month 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/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 6b9a3320ea8f0ff0ea8271ac839444fee668c031..201e2bc1a71ee9e9a38d621097de900d191ccc03 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,21 @@ 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);
not at google - send to devlin 2013/11/16 00:38:30 EXPECT_EQ(that error you just added, error) ?
vasilii 2013/11/16 00:55:38 Done.
+ EXPECT_FALSE(extension);
+}
+
} // namespace
« no previous file with comments | « chrome/common/extensions/manifest_handlers/settings_overrides_handler.cc ('k') | extensions/common/manifest_constants.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698