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