Commit 1e6a87f5 authored by dpapad's avatar dpapad Committed by Commit Bot

WebUI: Replace vulcanize with polymer-bundler.

Summary of changes needed for the migration:
 - Excluded URLs behavior is different than Vulcanize, need to explicitly list
   all URLs to be excluded (unlike Vulcanize, transitive deps of an excluded
   URL are not implicitly excluded).
 - Excluded URLs need to match exactly, unlike Vulcanize where foo.html would
   match chrome://some-path/foo.html.
 - Input HTML files need to have
   <html><head>...</head><body>...</body></html> tags.
 - A single invocation of poylmer-bundler produces both "basic" and
   "lazy" modules (achieved by using the --shell flag), unlike Vulcanize
   which required two separate invocations.
 - Using new --manifest-out instead of previous --out-request-list flag to
   generate depfiles for Ninja.
 - Using --rewrite-urls-in-templates to preserve previous rewriting behavior.
 - polymer-bundler does not blow up when it can't find a file (unlike Vulcanize,
   so check output manifest for any reported "missing" dependencies).
 - Removed some Windows specific hacks that don't seem necessary anymore.

BUG=731881
CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:closure_compilation

Review-Url: https://codereview.chromium.org/2936333002
Cr-Commit-Position: refs/heads/master@{#488821}
parent af391815
......@@ -4,11 +4,11 @@ vulcanized_unbuilt = "vulcanized.unbuilt.html"
vulcanize("vulcanize") {
host = "bookmarks"
html_in_file = "bookmarks.html"
html_out_file = vulcanized_unbuilt
html_in_files = [ "bookmarks.html" ]
html_out_files = [ vulcanized_unbuilt ]
input = rebase_path(".", root_build_dir)
js_out_file = "crisper.js"
js_out_files = [ "crisper.js" ]
deps = []
}
......
......@@ -18,7 +18,7 @@
<body>
<bookmarks-app></bookmarks-app>
<link rel="import" href="chrome://resources/html/load_time_data.html">
<script src="chrome://resources/js/load_time_data.js"></script>
<script src="chrome://bookmarks/strings.js"></script>
<link rel="import" href="chrome://bookmarks/app.html">
</body>
......
......@@ -5,11 +5,11 @@ vulcanized_unbuilt = "vulcanized.unbuilt.html"
vulcanize("vulcanize") {
deps = []
host = "downloads"
html_in_file = "downloads.html"
html_out_file = vulcanized_unbuilt
html_in_files = [ "downloads.html" ]
html_out_files = [ vulcanized_unbuilt ]
input = rebase_path(".", root_build_dir)
insert_in_head = "<base href=chrome://downloads>"
js_out_file = "crisper.js"
js_out_files = [ "crisper.js" ]
}
polymer_css_build("build") {
......
......@@ -5,31 +5,24 @@ lazy_load_unbuilt = "lazy_load.vulcanized.unbuilt.html"
vulcanize("vulcanize_app") {
host = "history"
html_in_file = "app.html"
html_out_file = app_unbuilt
html_in_files = [
"app.html",
"lazy_load.html",
]
html_out_files = [
app_unbuilt,
lazy_load_unbuilt,
]
input = rebase_path(".", root_build_dir)
js_out_file = "app.crisper.js"
excludes = [
"chrome://resources/html/util.html",
"chrome://history/constants.html",
js_out_files = [
"app.crisper.js",
"lazy_load.crisper.js",
]
deps = []
}
vulcanize("vulcanize_lazy_load") {
host = "history"
html_in_file = "lazy_load.html"
html_out_file = lazy_load_unbuilt
input = rebase_path(".", root_build_dir)
js_out_file = "lazy_load.crisper.js"
excludes = [
"chrome://resources/html/util.html",
"chrome://history/constants.html",
"chrome://history/app.html",
]
deps = []
......@@ -46,6 +39,5 @@ polymer_css_build("build") {
]
deps = [
":vulcanize_app",
":vulcanize_lazy_load",
]
}
<link rel="import" href="chrome://history/synced_device_manager.html">
<link rel="import" href="chrome://resources/cr_elements/cr_action_menu/cr_action_menu.html">
<link rel="import" href="chrome://resources/cr_elements/cr_dialog/cr_dialog.html">
<link rel="import" href="chrome://resources/cr_elements/cr_drawer/cr_drawer.html">
<link rel="import" href="chrome://resources/cr_elements/cr_toolbar/cr_toolbar_selection_overlay.html">
<link rel="import" href="chrome://resources/polymer/v1_0/paper-button/paper-button.html">
<link rel="import" href="chrome://resources/polymer/v1_0/paper-icon-button/paper-icon-button-light.html">
<html>
<head></head>
<body>
<link rel="import" href="chrome://history/synced_device_manager.html">
<link rel="import" href="chrome://resources/cr_elements/cr_action_menu/cr_action_menu.html">
<link rel="import" href="chrome://resources/cr_elements/cr_dialog/cr_dialog.html">
<link rel="import" href="chrome://resources/cr_elements/cr_drawer/cr_drawer.html">
<link rel="import" href="chrome://resources/cr_elements/cr_toolbar/cr_toolbar_selection_overlay.html">
<link rel="import" href="chrome://resources/polymer/v1_0/paper-button/paper-button.html">
<link rel="import" href="chrome://resources/polymer/v1_0/paper-icon-button/paper-icon-button-light.html">
</body>
</html>
......@@ -9,26 +9,20 @@ unpak_folder = "settings_resources.unpak"
vulcanize("vulcanize_app") {
host = "md-settings"
html_in_file = "settings.html"
html_out_file = app_unbuilt
insert_in_head = "<base href=\"chrome://\$i18n{hostname}\">"
input = rebase_path("$target_gen_dir/$unpak_folder", root_build_dir)
js_out_file = "crisper.js"
deps = [
":unpak",
html_in_files = [
"settings.html",
"lazy_load.html",
]
html_out_files = [
app_unbuilt,
lazy_load_unbuilt,
]
}
vulcanize("vulcanize_lazy_load") {
host = "md-settings"
html_in_file = "lazy_load.html"
html_out_file = lazy_load_unbuilt
insert_in_head = "<base href=\"chrome://\$i18n{hostname}\">"
input = rebase_path("$target_gen_dir/$unpak_folder", root_build_dir)
js_out_file = "lazy_load.crisper.js"
excludes = [ "/settings.html" ]
js_out_files = [
"crisper.js",
"lazy_load.crisper.js",
]
deps = [
":unpak",
......@@ -55,7 +49,6 @@ polymer_css_build("build") {
]
deps = [
":vulcanize_app",
":vulcanize_lazy_load",
]
}
......
<script src="chrome://resources/js/load_time_data.js"></script>
<script src="/strings.js"></script>
<script src="strings.js"></script>
<link rel="import" href="a11y_page/a11y_page.html">
<link rel="import" href="downloads_page/downloads_page.html">
<link rel="import" href="languages_page/languages_page.html">
<link rel="import" href="passwords_and_forms_page/passwords_and_forms_page.html">
<link rel="import" href="printing_page/printing_page.html">
<link rel="import" href="privacy_page/privacy_page.html">
<link rel="import" href="reset_page/reset_page.html">
<html>
<head></head>
<body>
<link rel="import" href="a11y_page/a11y_page.html">
<link rel="import" href="downloads_page/downloads_page.html">
<link rel="import" href="languages_page/languages_page.html">
<link rel="import" href="passwords_and_forms_page/passwords_and_forms_page.html">
<link rel="import" href="printing_page/printing_page.html">
<link rel="import" href="privacy_page/privacy_page.html">
<link rel="import" href="reset_page/reset_page.html">
<if expr="chromeos">
<link rel="import" href="date_time_page/date_time_page.html">
</if>
<if expr="chromeos">
<link rel="import" href="date_time_page/date_time_page.html">
</if>
<if expr="not chromeos">
<link rel="import" href="system_page/system_page.html">
</if>
<if expr="not chromeos">
<link rel="import" href="system_page/system_page.html">
</if>
</body>
</html>
......@@ -34,12 +34,16 @@ template("vulcanize") {
]
# This depfile is generated by vulcanize_gn.py
depfile = "${target_gen_dir}/${invoker.html_out_file}.d"
depfile = "${target_gen_dir}/${target_name}.d"
outputs = []
foreach(_out, invoker.html_out_files) {
outputs += [ "$target_gen_dir/$_out" ]
}
foreach(_out, invoker.js_out_files) {
outputs += [ "$target_gen_dir/$_out" ]
}
outputs = [
"$target_gen_dir/${invoker.html_out_file}",
"$target_gen_dir/${invoker.js_out_file}",
]
deps = invoker.deps
# Note that we have to manually pass the sources to our script if the
......@@ -47,12 +51,6 @@ template("vulcanize") {
args = [
"--host",
invoker.host,
"--html_in_file",
invoker.html_in_file,
"--html_out_file",
invoker.html_out_file,
"--js_out_file",
invoker.js_out_file,
"--input",
invoker.input,
"--out_folder",
......@@ -61,6 +59,10 @@ template("vulcanize") {
rebase_path(depfile, root_build_dir),
]
args += [ "--html_in_files" ] + invoker.html_in_files
args += [ "--html_out_files" ] + invoker.html_out_files
args += [ "--js_out_files" ] + invoker.js_out_files
if (defined(invoker.excludes)) {
args += [ "--exclude" ] + invoker.excludes
}
......
This diff is collapsed.
......@@ -158,7 +158,8 @@ PolymerTest.loadScript = function(src) {
*/
PolymerTest.clearBody = function() {
// Save the div where vulcanize inlines content before clearing the page.
var vulcanizeDiv = document.querySelector('body > div[hidden][by-vulcanize]');
var vulcanizeDiv = document.querySelector(
'body > div[hidden][by-polymer-bundler]');
document.body.innerHTML = '';
if (vulcanizeDiv)
document.body.appendChild(vulcanizeDiv);
......
......@@ -27,7 +27,7 @@ continue (i.e. script execution may be paused).
```
To reduce this latency, Chrome uses a tool created by the Polymer project named
[vulcanize](https://github.com/Polymer/polymer-bundler/tree/1.x). It processes
[polymer-bundler](https://github.com/Polymer/polymer-bundler). It processes
a page starting from a URL entry point and inlines resources the first time
they're encountered. This greatly decreases latency due to HTML imports.
......
......@@ -14,4 +14,4 @@ Use update_node_binaries to update Node binaries and update_npm_deps to
update NPM dependencies.
Local Modifications:
See patch_vulcanize.diff
See chromium_polymer_bundler.patch
diff --git a/lib/constants.js b/lib/constants.js
index 6e1a557..23d7f7c 100644
--- a/lib/constants.js
+++ b/lib/constants.js
@@ -18,7 +18,7 @@ exports.default = {
ABS_URL: /(^\/)|(^#)|(^[\w-\d]*:)/,
URL: /url\([^)]*\)/g,
URL_ATTR: ['href', 'src', 'action', 'style', 'assetpath'],
- URL_TEMPLATE: '{{.*}}|\\[\\[.*\\]\\]',
+ URL_TEMPLATE: '{{.*}}|\\[\\[.*\\]\\]|\\$i18n[^{]*{[^}]*}',
OLD_POLYMER: 'This version of polymer-bundler is not compatible with Polymer < 0.8. Please use vulcanize 0.7.x.'
};
//# sourceMappingURL=constants.js.map
diff --git a/lib/constants.js b/lib/constants.js
index 21e1380..b6a353a 100644
--- a/lib/constants.js
+++ b/lib/constants.js
@@ -13,6 +13,6 @@ module.exports = {
ABS_URL: /(^\/)|(^#)|(^[\w-\d]*:)/,
URL: /url\([^)]*\)/g,
URL_ATTR: ['href', 'src', 'action', 'style', 'assetpath'],
- URL_TEMPLATE: '{{.*}}|\\[\\[.*\\]\\]',
+ URL_TEMPLATE: '{{.*}}|\\[\\[.*\\]\\]|\\$i18n[^{]*{[^}]*}',
OLD_POLYMER: 'This version of vulcanize is not compatible with Polymer < 0.8. Please use vulcanize 0.7.x.'
};
......@@ -13,8 +13,9 @@ def _path_in_node_modules(*args):
return os_path.join(NODE_MODULES, *args)
def PathToVulcanize():
return _path_in_node_modules('vulcanize', 'bin', 'vulcanize')
def PathToBundler():
return _path_in_node_modules(
'polymer-bundler', 'lib', 'bin', 'polymer-bundler')
def PathToCrisper():
......
6dbd64a4fc98b0f3b72625c1585d95f9e9b6d71a
050c85d20f7cedd7f5c39533c1ba89dcdfa56a08
......@@ -5,8 +5,8 @@
"dependencies": {
"crisper": "2.0.2",
"eslint": "3.19.0",
"polymer-bundler": "3.0.1",
"polymer-css-build": "0.1.2",
"uglify-es": "3.0.15",
"vulcanize": "1.15.4"
"uglify-es": "3.0.15"
}
}
......@@ -18,8 +18,8 @@ rm -rf node_modules
npm install --no-bin-links --only=prod
# Apply local patch to vulcanize.
patch -d node_modules/vulcanize/ -p1 < chromium_vulcanize.patch
# Apply local patch to polymer-bundler.
patch -d node_modules/polymer-bundler/ -p1 < chromium_polymer_bundler.patch
rsync -c --delete -r -q --exclude-from="npm_exclude.txt" \
--prune-empty-dirs "node_modules/" "node_modules_filtered/"
......
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