Commit 33164995 authored by Demetrios Papadopoulos's avatar Demetrios Papadopoulos Committed by Commit Bot

Settings: Create dummy chrome://settings/settings_v3.html page.

 - Modify Settings data source to serve generated files.
 - Add top-level JS/HTML files that will host the V3 version.
 - Use a JS import for the generated
   chrome://settings/search_settings.m.js as a proof of concept.
 - Update BUILD.gn files as needed.

Note that the dummy page is currently only available for
optimized_webui=false builds.

This is in preparation of migrating to Polymer 3.

Bug: 1026426
Change-Id: I53dc831bfad3cf4645fa91c643bd5e34d14190de
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2024161
Commit-Queue: Demetrios Papadopoulos <dpapad@chromium.org>
Reviewed-by: default avatarRebekah Potter <rbpotter@chromium.org>
Cr-Commit-Position: refs/heads/master@{#736112}
parent 323de3b8
......@@ -216,6 +216,7 @@ if (!is_android) {
deps = [ "//chrome/browser/resources/settings:build" ]
} else {
source = "settings/settings_resources.grd"
deps = [ "//chrome/browser/resources/settings:polymer3_elements" ]
}
defines = chrome_grit_defines
......
......@@ -5,6 +5,7 @@
import("//chrome/common/features.gni")
import("//third_party/closure_compiler/compile_js.gni")
import("//tools/grit/grit_rule.gni")
import("//ui/webui/resources/tools/js_modulizer.gni")
import("//ui/webui/webui_features.gni")
import("../optimize_webui.gni")
......@@ -45,7 +46,12 @@ if (optimize_webui) {
# The .grd contains references to generated files.
source_is_generated = true
grit_flags = [
"-E",
"root_gen_dir=" + rebase_path(root_gen_dir, root_build_dir),
]
deps = [ ":polymer3_elements" ]
defines = chrome_grit_defines
outputs = [
"grit/settings_resources.h",
......@@ -186,3 +192,13 @@ js_library("search_settings") {
]
externs_list = [ "$externs_path/pending_polymer.js" ]
}
# Polymer 3 related rules.
group("polymer3_elements") {
public_deps = [ ":modulize" ]
}
js_modulizer("modulize") {
input_files = [ "search_settings.js" ]
}
......@@ -603,7 +603,7 @@ cr.define('settings', function() {
let instance = null;
/** @return {!SearchManager} */
function getSearchManager() {
/* #export */ function getSearchManager() {
if (instance === null) {
instance = new SearchManagerImpl();
}
......@@ -618,6 +618,7 @@ cr.define('settings', function() {
instance = searchManager;
}
// #cr_define_end
return {
getSearchManager,
setSearchManagerForTesting,
......
import {getSearchManager} from 'chrome://settings/search_settings.m.js';
console.log('getSearchManager', getSearchManager);
<?xml version="1.0" encoding="utf-8"?>
<grit-part>
<!--TODO(crbug.com/1026426): Add generated Polymer 3 files here-->
<include name="IDR_SETTINGS_SEARCH_SETTINGS_M_JS"
file="${root_gen_dir}/chrome/browser/resources/settings/search_settings.m.js"
use_base_dir="false"
type="BINDATA" />
<include name="IDR_SETTINGS_SETTINGS_V3_HTML"
file="settings_v3.html"
type="BINDATA" />
<include name="IDR_SETTINGS_SETTINGS_V3_JS"
file="settings.js"
type="BINDATA" />
</grit-part>
<!doctype html>
<html dir="$i18n{textdirection}" lang="$i18n{language}" class="loading"
$i18n{a11yenhanced}>
<head>
<meta charset="utf-8">
<title>$i18n{settings}</title>
<base href="chrome://settings">
<link rel="stylesheet" href="chrome://resources/css/md_colors.css">
<style>
html {
background: var(--md-background-color);
overflow: hidden;
/* Remove 300ms delay for 'click' event, when using touch interface. */
touch-action: manipulation;
}
html.loading::before {
background-color: var(--md-toolbar-color);
border-bottom: var(--md-toolbar-border);
box-sizing: border-box;
content: '';
display: block;
height: var(--md-toolbar-height);
}
</style>
</head>
<body>
<link rel="stylesheet" href="chrome://resources/css/text_defaults_md.css">
<script type="module" src="settings.js"></script>
</body>
</html>
......@@ -49,6 +49,7 @@
#include "chrome/browser/ui/webui/settings/settings_startup_pages_handler.h"
#include "chrome/browser/ui/webui/settings/shared_settings_localized_strings_provider.h"
#include "chrome/browser/ui/webui/settings/site_settings_handler.h"
#include "chrome/browser/ui/webui/webui_util.h"
#include "chrome/browser/web_applications/components/app_registrar.h"
#include "chrome/browser/web_applications/web_app_provider.h"
#include "chrome/browser/web_applications/web_app_registrar.h"
......@@ -120,6 +121,11 @@
#include "chrome/browser/ui/webui/settings/printing_handler.h"
#endif
#if !BUILDFLAG(OPTIMIZE_WEBUI)
constexpr char kGeneratedPath[] =
"@out_folder@/gen/chrome/browser/resources/settings/";
#endif
namespace settings {
// static
void SettingsUI::RegisterProfilePrefs(
......@@ -144,14 +150,16 @@ SettingsUI::SettingsUI(content::WebUI* web_ui)
content::WebUIDataSource* html_source =
content::WebUIDataSource::Create(chrome::kChromeUISettingsHost);
// TODO(dpapad): Replace the following calls with SetupWebUIDataSource()
// when Settings is migrated to Polymer3.
// TODO(dpapad): Replace the following calls with
// SetupBundledWebUIDataSource() when Settings is migrated to Polymer3.
// Currently only used for testing the Polymer 3 version of
// certificate-manager.
#if BUILDFLAG(OPTIMIZE_WEBUI)
html_source->OverrideContentSecurityPolicyScriptSrc(
"script-src chrome://resources chrome://test 'self';");
html_source->AddResourcePath("test_loader.js", IDR_WEBUI_JS_TEST_LOADER);
html_source->AddResourcePath("test_loader.html", IDR_WEBUI_HTML_TEST_LOADER);
#endif
AddSettingsPageUIHandler(std::make_unique<AppearanceHandler>(web_ui));
......@@ -284,12 +292,9 @@ SettingsUI::SettingsUI(content::WebUI* web_ui)
IDR_SETTINGS_LAZY_LOAD_VULCANIZED_HTML);
html_source->SetDefaultResource(IDR_SETTINGS_VULCANIZED_HTML);
#else
// Add all settings resources.
for (size_t i = 0; i < kSettingsResourcesSize; ++i) {
html_source->AddResourcePath(kSettingsResources[i].name,
kSettingsResources[i].value);
}
html_source->SetDefaultResource(IDR_SETTINGS_SETTINGS_HTML);
webui::SetupWebUIDataSource(
html_source, base::make_span(kSettingsResources, kSettingsResourcesSize),
kGeneratedPath, IDR_SETTINGS_SETTINGS_HTML);
#endif
AddSharedLocalizedStrings(html_source, profile, web_ui->GetWebContents());
......
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