Commit 5734465b authored by Devlin Cronin's avatar Devlin Cronin Committed by Commit Bot

[Extensions Cleanup] Remove WriteManifestWithSingleQuotes()

Remove TestExtensionDir::WriteManifestWithSingleQuotes(). This was a
convenience function introduced before we had support for string
literals in the language.  Now that we have string literals, those are
preferred:
- They are more consistent
- They preserve newlines
- They don't clutter each line with double-quotes
- It is mildly faster, since we don't have to do string replacement.

Remove the old WriteManifestWithSingleQuotes() function, and update
all call sites.

This CL should have no behavior change.

Bug: None
Change-Id: I2e65c514530316d2d25fd75cb33ca2ffcb1a244e
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1975073
Commit-Queue: Devlin <rdevlin.cronin@chromium.org>
Reviewed-by: default avatarNathan Parker <nparker@chromium.org>
Reviewed-by: default avatarIlya Sherman <isherman@chromium.org>
Reviewed-by: default avatarIstiaque Ahmed <lazyboy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#727621}
parent c5a18ccd
......@@ -47,19 +47,19 @@ class APIBindingPerfBrowserTest : public ExtensionBrowserTest {
DISALLOW_COPY_AND_ASSIGN(APIBindingPerfBrowserTest);
};
const char kSimpleContentScriptManifest[] =
"{"
" 'name': 'Perf test extension',"
" 'version': '0',"
" 'manifest_version': 2,"
" 'content_scripts': [ {"
" 'all_frames': true,"
" 'matches': [ '<all_urls>' ],"
" 'run_at': 'document_end',"
" 'js': [ 'content_script.js' ]"
" } ],"
" 'permissions': [ 'storage' ]"
"}";
constexpr char kSimpleContentScriptManifest[] =
R"({
"name": "Perf test extension",
"version": "0",
"manifest_version": 2,
"content_scripts": [ {
"all_frames": true,
"matches": [ "<all_urls>" ],
"run_at": "document_end",
"js": [ "content_script.js" ]
} ],
"permissions": [ "storage" ]
})";
IN_PROC_BROWSER_TEST_F(APIBindingPerfBrowserTest,
LOCAL_TEST(ManyFramesWithNoContentScript)) {
......@@ -74,7 +74,7 @@ IN_PROC_BROWSER_TEST_F(APIBindingPerfBrowserTest,
IN_PROC_BROWSER_TEST_F(APIBindingPerfBrowserTest,
LOCAL_TEST(ManyFramesWithEmptyContentScript)) {
TestExtensionDir extension_dir;
extension_dir.WriteManifestWithSingleQuotes(kSimpleContentScriptManifest);
extension_dir.WriteManifest(kSimpleContentScriptManifest);
extension_dir.WriteFile(FILE_PATH_LITERAL("content_script.js"),
"// This space intentionally left blank.");
ASSERT_TRUE(LoadExtension(extension_dir.UnpackedPath()));
......@@ -90,7 +90,7 @@ IN_PROC_BROWSER_TEST_F(APIBindingPerfBrowserTest,
IN_PROC_BROWSER_TEST_F(APIBindingPerfBrowserTest,
LOCAL_TEST(ManyFramesWithStorageAndRuntime)) {
TestExtensionDir extension_dir;
extension_dir.WriteManifestWithSingleQuotes(kSimpleContentScriptManifest);
extension_dir.WriteManifest(kSimpleContentScriptManifest);
extension_dir.WriteFile(FILE_PATH_LITERAL("content_script.js"),
"chrome.storage.onChanged.addListener;"
"chrome.runtime.onMessage.addListener;");
......
......@@ -44,22 +44,21 @@ IN_PROC_BROWSER_TEST_F(ExtensionLoadingTest,
ASSERT_TRUE(embedded_test_server()->Start());
TestExtensionDir extension_dir;
const char kManifestTemplate[] =
"{"
" 'name': 'Overrides New Tab',"
" 'version': '%d',"
" 'description': 'Overrides New Tab',"
" 'manifest_version': 2,"
" 'background': {"
" 'persistent': false,"
" 'scripts': ['event.js']"
" },"
" 'chrome_url_overrides': {"
" 'newtab': 'newtab.html'"
" }"
"}";
extension_dir.WriteManifestWithSingleQuotes(
base::StringPrintf(kManifestTemplate, 1));
constexpr char kManifestTemplate[] =
R"({
"name": "Overrides New Tab",
"version": "%d",
"description": "Overrides New Tab",
"manifest_version": 2,
"background": {
"persistent": false,
"scripts": ["event.js"]
},
"chrome_url_overrides": {
"newtab": "newtab.html"
}
})";
extension_dir.WriteManifest(base::StringPrintf(kManifestTemplate, 1));
extension_dir.WriteFile(FILE_PATH_LITERAL("event.js"), "");
extension_dir.WriteFile(FILE_PATH_LITERAL("newtab.html"),
"<h1>Overridden New Tab Page</h1>");
......@@ -81,8 +80,7 @@ IN_PROC_BROWSER_TEST_F(ExtensionLoadingTest,
test_link_from_NTP);
// Increase the extension's version.
extension_dir.WriteManifestWithSingleQuotes(
base::StringPrintf(kManifestTemplate, 2));
extension_dir.WriteManifest(base::StringPrintf(kManifestTemplate, 2));
// Upgrade the extension.
new_tab_extension = UpdateExtension(
......@@ -107,16 +105,15 @@ IN_PROC_BROWSER_TEST_F(ExtensionLoadingTest,
ASSERT_TRUE(embedded_test_server()->Start());
TestExtensionDir extension_dir;
const char kManifestTemplate[] =
"{"
" 'name': 'Overrides New Tab',"
" 'version': '%d',"
" 'description': 'Will override New Tab soon',"
" %s" // Placeholder for future NTP url override block.
" 'manifest_version': 2"
"}";
extension_dir.WriteManifestWithSingleQuotes(
base::StringPrintf(kManifestTemplate, 1, ""));
constexpr char kManifestTemplate[] =
R"({
"name": "Overrides New Tab",
"version": "%d",
"description": "Will override New Tab soon",
%s // Placeholder for future NTP url override block.
"manifest_version": 2
})";
extension_dir.WriteManifest(base::StringPrintf(kManifestTemplate, 1, ""));
extension_dir.WriteFile(FILE_PATH_LITERAL("event.js"), "");
extension_dir.WriteFile(FILE_PATH_LITERAL("newtab.html"),
"<h1>Overridden New Tab Page</h1>");
......@@ -139,12 +136,12 @@ IN_PROC_BROWSER_TEST_F(ExtensionLoadingTest,
// Increase the extension's version and add the NTP url override which will
// add the kNewTabPageOverride permission.
const char ntp_override_string[] =
" 'chrome_url_overrides': {"
" 'newtab': 'newtab.html'"
" },";
extension_dir.WriteManifestWithSingleQuotes(
base::StringPrintf(kManifestTemplate, 2, ntp_override_string));
constexpr char kNtpOverrideString[] =
R"("chrome_url_overrides": {
"newtab": "newtab.html"
},)";
extension_dir.WriteManifest(
base::StringPrintf(kManifestTemplate, 2, kNtpOverrideString));
// Upgrade the extension, ensure that the upgrade 'worked' in the sense that
// the extension is still present and not disabled and that it now has the
......@@ -168,17 +165,17 @@ IN_PROC_BROWSER_TEST_F(ExtensionLoadingTest,
TestExtensionDir extension_dir;
const char manifest_contents[] =
"{"
" 'name': 'Test With Lazy Background Page',"
" 'version': '0',"
" 'manifest_version': 2,"
" 'app': {"
" 'background': {"
" 'scripts': ['event.js']"
" }"
" }"
"}";
extension_dir.WriteManifestWithSingleQuotes(manifest_contents);
R"({
"name": "Test With Lazy Background Page",
"version": "0",
"manifest_version": 2,
"app": {
"background": {
"scripts": ["event.js"]
}
}
})";
extension_dir.WriteManifest(manifest_contents);
extension_dir.WriteFile(FILE_PATH_LITERAL("event.js"), "");
const Extension* extension =
......@@ -235,41 +232,41 @@ IN_PROC_BROWSER_TEST_F(ExtensionLoadingTest, RuntimeValidWhileDevToolsOpen) {
TestExtensionDir devtools_dir;
TestExtensionDir inspect_dir;
const char kDevtoolsManifest[] =
"{"
" 'name': 'Devtools',"
" 'version': '1',"
" 'manifest_version': 2,"
" 'devtools_page': 'devtools.html'"
"}";
const char kDevtoolsJs[] =
"setInterval(function() {"
" chrome.devtools.inspectedWindow.eval('1', function() {"
" });"
"}, 4);"
"chrome.test.sendMessage('devtools_page_ready');";
const char kTargetManifest[] =
"{"
" 'name': 'Inspect target',"
" 'version': '1',"
" 'manifest_version': 2,"
" 'background': {"
" 'scripts': ['background.js']"
" }"
"}";
constexpr char kDevtoolsManifest[] =
R"({
"name": "Devtools",
"version": "1",
"manifest_version": 2,
"devtools_page": "devtools.html"
})";
constexpr char kDevtoolsJs[] =
R"(setInterval(function() {
chrome.devtools.inspectedWindow.eval('1', function() {
});
}, 4);
chrome.test.sendMessage('devtools_page_ready');)";
constexpr char kTargetManifest[] =
R"({
"name": "Inspect target",
"version": "1",
"manifest_version": 2,
"background": {
"scripts": ["background.js"]
}
})";
// A script to duck-type whether it runs in a background page.
const char kTargetJs[] =
"var is_valid = !!(chrome.tabs && chrome.tabs.create);";
devtools_dir.WriteManifestWithSingleQuotes(kDevtoolsManifest);
devtools_dir.WriteManifest(kDevtoolsManifest);
devtools_dir.WriteFile(FILE_PATH_LITERAL("devtools.js"), kDevtoolsJs);
devtools_dir.WriteFile(FILE_PATH_LITERAL("devtools.html"),
"<script src='devtools.js'></script>");
inspect_dir.WriteManifestWithSingleQuotes(kTargetManifest);
inspect_dir.WriteManifest(kTargetManifest);
inspect_dir.WriteFile(FILE_PATH_LITERAL("background.js"), kTargetJs);
const Extension* devtools_ext = LoadExtension(devtools_dir.UnpackedPath());
ASSERT_TRUE(devtools_ext);
......
......@@ -116,13 +116,14 @@ class ExtensionFetchTest : public ExtensionApiTest {
IN_PROC_BROWSER_TEST_F(ExtensionFetchTest, ExtensionCanFetchExtensionResource) {
TestExtensionDir dir;
dir.WriteManifestWithSingleQuotes(
"{"
"'background': {'scripts': ['bg.js']},"
"'manifest_version': 2,"
"'name': 'ExtensionCanFetchExtensionResource',"
"'version': '1'"
"}");
constexpr char kManifest[] =
R"({
"background": {"scripts": ["bg.js"]},
"manifest_version": 2,
"name": "ExtensionCanFetchExtensionResource",
"version": "1"
})";
dir.WriteManifest(kManifest);
const Extension* extension = WriteFilesAndLoadTestExtension(&dir);
ASSERT_TRUE(extension);
......@@ -135,14 +136,15 @@ IN_PROC_BROWSER_TEST_F(ExtensionFetchTest, ExtensionCanFetchExtensionResource) {
IN_PROC_BROWSER_TEST_F(ExtensionFetchTest,
ExtensionCanFetchHostedResourceWithHostPermissions) {
TestExtensionDir dir;
dir.WriteManifestWithSingleQuotes(
"{"
"'background': {'scripts': ['bg.js']},"
"'manifest_version': 2,"
"'name': 'ExtensionCanFetchHostedResourceWithHostPermissions',"
"'permissions': ['http://example.com/*'],"
"'version': '1'"
"}");
constexpr char kManifest[] =
R"({
"background": {"scripts": ["bg.js"]},
"manifest_version": 2,
"name": "ExtensionCanFetchHostedResourceWithHostPermissions",
"permissions": ["http://example.com/*"],
"version": "1"
})";
dir.WriteManifest(kManifest);
const Extension* extension = WriteFilesAndLoadTestExtension(&dir);
ASSERT_TRUE(extension);
......@@ -156,13 +158,14 @@ IN_PROC_BROWSER_TEST_F(
ExtensionFetchTest,
ExtensionCannotFetchHostedResourceWithoutHostPermissions) {
TestExtensionDir dir;
dir.WriteManifestWithSingleQuotes(
"{"
"'background': {'scripts': ['bg.js']},"
"'manifest_version': 2,"
"'name': 'ExtensionCannotFetchHostedResourceWithoutHostPermissions',"
"'version': '1'"
"}");
constexpr char kManifest[] =
R"({
"background": {"scripts": ["bg.js"]},
"manifest_version": 2,
"name": "ExtensionCannotFetchHostedResourceWithoutHostPermissions",
"version": "1"
})";
dir.WriteManifest(kManifest);
const Extension* extension = WriteFilesAndLoadTestExtension(&dir);
ASSERT_TRUE(extension);
......@@ -178,14 +181,15 @@ IN_PROC_BROWSER_TEST_F(
IN_PROC_BROWSER_TEST_F(ExtensionFetchTest,
HostCanFetchWebAccessibleExtensionResource) {
TestExtensionDir dir;
dir.WriteManifestWithSingleQuotes(
"{"
"'background': {'scripts': ['bg.js']},"
"'manifest_version': 2,"
"'name': 'HostCanFetchWebAccessibleExtensionResource',"
"'version': '1',"
"'web_accessible_resources': ['text']"
"}");
constexpr char kManifest[] =
R"({
"background": {"scripts": ["bg.js"]},
"manifest_version": 2,
"name": "HostCanFetchWebAccessibleExtensionResource",
"version": "1",
"web_accessible_resources": ["text"]
})";
dir.WriteManifest(kManifest);
const Extension* extension = WriteFilesAndLoadTestExtension(&dir);
ASSERT_TRUE(extension);
......@@ -209,15 +213,15 @@ IN_PROC_BROWSER_TEST_F(
ExtensionFetchTest,
HostCanFetchWebAccessibleExtensionResource_FetchFromServiceWorker) {
TestExtensionDir dir;
dir.WriteManifestWithSingleQuotes(
"{"
"'background': {'scripts': ['bg.js']},"
"'manifest_version': 2,"
"'name': 'HostCanFetchWebAccessibleExtensionResource_"
"FetchFromServiceWorker',"
"'version': '1',"
"'web_accessible_resources': ['text']"
"}");
constexpr char kManifest[] =
R"({
"background": {"scripts": ["bg.js"]},
"manifest_version": 2,
"name": "FetchFromServiceWorker",
"version": "1",
"web_accessible_resources": ["text"]
})";
dir.WriteManifest(kManifest);
const Extension* extension = WriteFilesAndLoadTestExtension(&dir);
ASSERT_TRUE(extension);
......@@ -235,13 +239,14 @@ IN_PROC_BROWSER_TEST_F(
IN_PROC_BROWSER_TEST_F(ExtensionFetchTest,
HostCannotFetchNonWebAccessibleExtensionResource) {
TestExtensionDir dir;
dir.WriteManifestWithSingleQuotes(
"{"
"'background': {'scripts': ['bg.js']},"
"'manifest_version': 2,"
"'name': 'HostCannotFetchNonWebAccessibleExtensionResource',"
"'version': '1'"
"}");
constexpr char kManifest[] =
R"({
"background": {"scripts": ["bg.js"]},
"manifest_version": 2,
"name": "HostCannotFetchNonWebAccessibleExtensionResource",
"version": "1"
})";
dir.WriteManifest(kManifest);
const Extension* extension = WriteFilesAndLoadTestExtension(&dir);
ASSERT_TRUE(extension);
......@@ -267,14 +272,15 @@ IN_PROC_BROWSER_TEST_F(ExtensionFetchTest, FetchResponseType) {
GetQuotedTestServerURL("example.com", "/extensions/test_file.txt")
.data());
TestExtensionDir dir;
dir.WriteManifestWithSingleQuotes(
"{"
"'background': {'scripts': ['bg.js']},"
"'manifest_version': 2,"
"'name': 'FetchResponseType',"
"'permissions': ['http://example.com/*'],"
"'version': '1'"
"}");
constexpr char kManifest[] =
R"({
"background": {"scripts": ["bg.js"]},
"manifest_version": 2,
"name": "FetchResponseType",
"permissions": ["http://example.com/*"],
"version": "1"
})";
dir.WriteManifest(kManifest);
const Extension* extension = WriteFilesAndLoadTestExtension(&dir);
ASSERT_TRUE(extension);
......
......@@ -467,14 +467,14 @@ class ProcessMemoryMetricsEmitterTest
// Create an barebones extension with a background page for the given name.
const Extension* CreateExtension(const std::string& name) {
auto dir = std::make_unique<TestExtensionDir>();
dir->WriteManifestWithSingleQuotes(
base::StringPrintf("{"
"'name': '%s',"
"'version': '1',"
"'manifest_version': 2,"
"'background': {'page': 'bg.html'}"
"}",
name.c_str()));
constexpr char kManifestTemplate[] =
R"({
"name": "%s",
"version": "1",
"manifest_version": 2,
"background": {"page": "bg.html"}
})";
dir->WriteManifest(base::StringPrintf(kManifestTemplate, name.c_str()));
dir->WriteFile(FILE_PATH_LITERAL("bg.html"), "");
const Extension* extension = LoadExtension(dir->UnpackedPath());
......@@ -485,15 +485,17 @@ class ProcessMemoryMetricsEmitterTest
const Extension* CreateHostedApp(const std::string& name,
const GURL& app_url) {
std::unique_ptr<TestExtensionDir> dir(new TestExtensionDir);
dir->WriteManifestWithSingleQuotes(base::StringPrintf(
"{"
"'name': '%s',"
"'version': '1',"
"'manifest_version': 2,"
"'app': {'urls': ['%s'], 'launch': {'web_url': '%s'}}"
"}",
name.c_str(), app_url.spec().c_str(), app_url.spec().c_str()));
auto dir = std::make_unique<TestExtensionDir>();
constexpr char kManifestTemplate[] =
R"({
"name": "%s",
"version": "1",
"manifest_version": 2,
"app": {"urls": ["%s"], "launch": {"web_url": "%s"}}
})";
dir->WriteManifest(base::StringPrintf(kManifestTemplate, name.c_str(),
app_url.spec().c_str(),
app_url.spec().c_str()));
const Extension* extension = LoadExtension(dir->UnpackedPath());
EXPECT_TRUE(extension);
......
......@@ -54,48 +54,48 @@ const char kStartupUrl2[] = "http://awesome-start-page.com";
// Extension manifests to override settings.
const char kManifestNoOverride[] =
"{"
" 'name': 'Safe Extension',"
" 'version': '1',"
" 'manifest_version': 2"
"}";
R"({
"name": "Safe Extension",
"version": "1",
"manifest_version": 2
})";
const char kManifestToOverrideHomepage[] =
"{"
" 'name': 'Homepage Extension',"
" 'version': '1',"
" 'manifest_version': 2,"
" 'chrome_settings_overrides' : {"
" 'homepage': '%s'"
" }"
"}";
R"({
"name": "Homepage Extension",
"version": "1",
"manifest_version": 2,
"chrome_settings_overrides" : {
"homepage": "%s"
}
})";
const char kManifestToOverrideSearch[] =
"{"
" 'name': 'Search Extension',"
" 'version': '0.1',"
" 'manifest_version': 2,"
" 'chrome_settings_overrides': {"
" 'search_provider': {"
" 'name': 'name',"
" 'keyword': 'keyword',"
" 'search_url': '%s',"
" 'favicon_url': 'http://someplace.com/favicon.ico',"
" 'encoding': 'UTF-8',"
" 'is_default': true"
" }"
" }"
"}";
R"({
"name": "Search Extension",
"version": "0.1",
"manifest_version": 2,
"chrome_settings_overrides": {
"search_provider": {
"name": "name",
"keyword": "keyword",
"search_url": "%s",
"favicon_url": "http://someplace.com/favicon.ico",
"encoding": "UTF-8",
"is_default": true
}
}
})";
const char kManifestToOverrideStartupUrls[] =
"{"
" 'name': 'Startup URLs Extension',"
" 'version': '1',"
" 'manifest_version': 2,"
" 'chrome_settings_overrides' : {"
" 'startup_pages': ['%s']"
" }"
"}";
R"({
"name": "Startup URLs Extension",
"version": "1",
"manifest_version": 2,
"chrome_settings_overrides" : {
"startup_pages": ["%s"]
}
})";
class SettingsResetPromptModelBrowserTest
: public extensions::ExtensionBrowserTest {
......@@ -183,7 +183,7 @@ class SettingsResetPromptModelBrowserTest
void LoadManifest(const std::string& manifest,
const Extension** out_extension) {
extensions::TestExtensionDir extension_dir;
extension_dir.WriteManifestWithSingleQuotes(manifest);
extension_dir.WriteManifest(manifest);
*out_extension = LoadExtension(extension_dir.UnpackedPath());
ASSERT_TRUE(*out_extension);
}
......
......@@ -60,17 +60,18 @@ void ExtensionMessageBubbleBrowserTest::AddSettingsOverrideExtension(
const std::string& settings_override_value) {
DCHECK(!custom_extension_dir_);
custom_extension_dir_ = std::make_unique<extensions::TestExtensionDir>();
std::string manifest = base::StringPrintf(
"{\n"
" 'name': 'settings override',\n"
" 'version': '0.1',\n"
" 'manifest_version': 2,\n"
" 'description': 'controls settings',\n"
" 'chrome_settings_overrides': {\n"
" %s\n"
" }\n"
"}", settings_override_value.c_str());
custom_extension_dir_->WriteManifestWithSingleQuotes(manifest);
constexpr char kManifestTemplate[] =
R"({
"name": "settings override",
"version": "0.1",
"manifest_version": 2,
"description": "controls settings",
"chrome_settings_overrides": {
%s
}
})";
custom_extension_dir_->WriteManifest(
base::StringPrintf(kManifestTemplate, settings_override_value.c_str()));
ASSERT_TRUE(LoadExtension(custom_extension_dir_->UnpackedPath()));
}
......@@ -279,7 +280,7 @@ void ExtensionMessageBubbleBrowserTest::TestControlledNewTabPageBubbleShown(
void ExtensionMessageBubbleBrowserTest::TestControlledHomeBubbleShown() {
browser()->profile()->GetPrefs()->SetBoolean(prefs::kShowHomeButton, true);
const char kHomePage[] = "'homepage': 'https://www.google.com'\n";
const char kHomePage[] = R"("homepage": "https://www.google.com")";
AddSettingsOverrideExtension(kHomePage);
CheckBubbleIsNotPresent(browser(), false, false);
......@@ -294,14 +295,14 @@ void ExtensionMessageBubbleBrowserTest::TestControlledHomeBubbleShown() {
void ExtensionMessageBubbleBrowserTest::TestControlledSearchBubbleShown() {
const char kSearchProvider[] =
"'search_provider': {\n"
" 'search_url': 'https://www.google.com/search?q={searchTerms}',\n"
" 'is_default': true,\n"
" 'favicon_url': 'https://www.google.com/favicon.icon',\n"
" 'keyword': 'TheGoogs',\n"
" 'name': 'Google',\n"
" 'encoding': 'UTF-8'\n"
"}\n";
R"("search_provider": {
"search_url": "https://www.google.com/search?q={searchTerms}",
"is_default": true,
"favicon_url": "https://www.google.com/favicon.icon",
"keyword": "TheGoogs",
"name": "Google",
"encoding": "UTF-8"
})";
AddSettingsOverrideExtension(kSearchProvider);
CheckBubbleIsNotPresent(browser(), false, false);
......
......@@ -619,13 +619,13 @@ TEST_P(ToolbarActionsBarUnitTest, ReuploadExtensionFailed) {
extensions::ExtensionRegistry::Get(profile());
extensions::TestExtensionDir ext_dir;
const char kManifest[] =
"{"
" 'name': 'Test',"
" 'version': '1',"
" 'manifest_version': 2"
"}";
ext_dir.WriteManifestWithSingleQuotes(kManifest);
constexpr char kManifest[] =
R"({
"name": "Test",
"version": "1",
"manifest_version": 2
})";
ext_dir.WriteManifest(kManifest);
scoped_refptr<extensions::UnpackedInstaller> installer =
extensions::UnpackedInstaller::Create(service);
......@@ -657,15 +657,15 @@ TEST_P(ToolbarActionsBarUnitTest, ReuploadExtensionFailed) {
// Replace the extension's valid manifest with one containing errors. In this
// case, the error is that both the 'browser_action' and 'page_action' keys
// are specified instead of only one.
const char kManifestWithErrors[] =
"{"
" 'name': 'Test',"
" 'version': '1',"
" 'manifest_version': 2,"
" 'page_action' : {},"
" 'browser_action' : {}"
"}";
ext_dir.WriteManifestWithSingleQuotes(kManifestWithErrors);
constexpr char kManifestWithErrors[] =
R"({
"name": "Test",
"version": "1",
"manifest_version": 2,
"page_action" : {},
"browser_action" : {}
})";
ext_dir.WriteManifest(kManifestWithErrors);
// Reload the extension again. Check that the updated extension cannot be
// loaded due to the manifest errors.
......
......@@ -28,13 +28,6 @@ void TestExtensionDir::WriteManifest(base::StringPiece manifest) {
WriteFile(FILE_PATH_LITERAL("manifest.json"), manifest);
}
void TestExtensionDir::WriteManifestWithSingleQuotes(
base::StringPiece manifest) {
std::string double_quotes;
base::ReplaceChars(manifest.data(), "'", "\"", &double_quotes);
WriteManifest(double_quotes);
}
void TestExtensionDir::WriteFile(const base::FilePath::StringType& filename,
base::StringPiece contents) {
base::ScopedAllowBlockingForTesting allow_blocking;
......
......@@ -23,12 +23,6 @@ class TestExtensionDir {
// is performed. If desired this should be done on extension installation.
void WriteManifest(base::StringPiece manifest);
// Like WriteManifest, but where the |manifest| is given in single-quotes
// rather than double-quotes. This is for convenience to avoid escaping.
//
// E.g. |manifest| can be {'name': 'me'} rather than {\"name\": \"me\"}.
void WriteManifestWithSingleQuotes(base::StringPiece manifest);
// Writes |contents| to |filename| within the unpacked dir, overwriting
// anything that was already there.
void WriteFile(const base::FilePath::StringType& filename,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment