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" ...@@ -4,11 +4,11 @@ vulcanized_unbuilt = "vulcanized.unbuilt.html"
vulcanize("vulcanize") { vulcanize("vulcanize") {
host = "bookmarks" host = "bookmarks"
html_in_file = "bookmarks.html" html_in_files = [ "bookmarks.html" ]
html_out_file = vulcanized_unbuilt html_out_files = [ vulcanized_unbuilt ]
input = rebase_path(".", root_build_dir) input = rebase_path(".", root_build_dir)
js_out_file = "crisper.js" js_out_files = [ "crisper.js" ]
deps = [] deps = []
} }
......
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
<body> <body>
<bookmarks-app></bookmarks-app> <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> <script src="chrome://bookmarks/strings.js"></script>
<link rel="import" href="chrome://bookmarks/app.html"> <link rel="import" href="chrome://bookmarks/app.html">
</body> </body>
......
...@@ -5,11 +5,11 @@ vulcanized_unbuilt = "vulcanized.unbuilt.html" ...@@ -5,11 +5,11 @@ vulcanized_unbuilt = "vulcanized.unbuilt.html"
vulcanize("vulcanize") { vulcanize("vulcanize") {
deps = [] deps = []
host = "downloads" host = "downloads"
html_in_file = "downloads.html" html_in_files = [ "downloads.html" ]
html_out_file = vulcanized_unbuilt html_out_files = [ vulcanized_unbuilt ]
input = rebase_path(".", root_build_dir) input = rebase_path(".", root_build_dir)
insert_in_head = "<base href=chrome://downloads>" insert_in_head = "<base href=chrome://downloads>"
js_out_file = "crisper.js" js_out_files = [ "crisper.js" ]
} }
polymer_css_build("build") { polymer_css_build("build") {
......
...@@ -5,31 +5,24 @@ lazy_load_unbuilt = "lazy_load.vulcanized.unbuilt.html" ...@@ -5,31 +5,24 @@ lazy_load_unbuilt = "lazy_load.vulcanized.unbuilt.html"
vulcanize("vulcanize_app") { vulcanize("vulcanize_app") {
host = "history" host = "history"
html_in_file = "app.html" html_in_files = [
html_out_file = app_unbuilt "app.html",
"lazy_load.html",
]
html_out_files = [
app_unbuilt,
lazy_load_unbuilt,
]
input = rebase_path(".", root_build_dir) input = rebase_path(".", root_build_dir)
js_out_file = "app.crisper.js" js_out_files = [
"app.crisper.js",
excludes = [ "lazy_load.crisper.js",
"chrome://resources/html/util.html",
"chrome://history/constants.html",
] ]
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 = [ excludes = [
"chrome://resources/html/util.html", "chrome://resources/html/util.html",
"chrome://history/constants.html", "chrome://history/constants.html",
"chrome://history/app.html",
] ]
deps = [] deps = []
...@@ -46,6 +39,5 @@ polymer_css_build("build") { ...@@ -46,6 +39,5 @@ polymer_css_build("build") {
] ]
deps = [ deps = [
":vulcanize_app", ":vulcanize_app",
":vulcanize_lazy_load",
] ]
} }
<link rel="import" href="chrome://history/synced_device_manager.html"> <html>
<link rel="import" href="chrome://resources/cr_elements/cr_action_menu/cr_action_menu.html"> <head></head>
<link rel="import" href="chrome://resources/cr_elements/cr_dialog/cr_dialog.html"> <body>
<link rel="import" href="chrome://resources/cr_elements/cr_drawer/cr_drawer.html"> <link rel="import" href="chrome://history/synced_device_manager.html">
<link rel="import" href="chrome://resources/cr_elements/cr_toolbar/cr_toolbar_selection_overlay.html"> <link rel="import" href="chrome://resources/cr_elements/cr_action_menu/cr_action_menu.html">
<link rel="import" href="chrome://resources/polymer/v1_0/paper-button/paper-button.html"> <link rel="import" href="chrome://resources/cr_elements/cr_dialog/cr_dialog.html">
<link rel="import" href="chrome://resources/polymer/v1_0/paper-icon-button/paper-icon-button-light.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" ...@@ -9,26 +9,20 @@ unpak_folder = "settings_resources.unpak"
vulcanize("vulcanize_app") { vulcanize("vulcanize_app") {
host = "md-settings" host = "md-settings"
html_in_file = "settings.html" html_in_files = [
html_out_file = app_unbuilt "settings.html",
insert_in_head = "<base href=\"chrome://\$i18n{hostname}\">" "lazy_load.html",
input = rebase_path("$target_gen_dir/$unpak_folder", root_build_dir) ]
js_out_file = "crisper.js" html_out_files = [
app_unbuilt,
deps = [ lazy_load_unbuilt,
":unpak",
] ]
}
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}\">" insert_in_head = "<base href=\"chrome://\$i18n{hostname}\">"
input = rebase_path("$target_gen_dir/$unpak_folder", root_build_dir) input = rebase_path("$target_gen_dir/$unpak_folder", root_build_dir)
js_out_file = "lazy_load.crisper.js" js_out_files = [
"crisper.js",
excludes = [ "/settings.html" ] "lazy_load.crisper.js",
]
deps = [ deps = [
":unpak", ":unpak",
...@@ -55,7 +49,6 @@ polymer_css_build("build") { ...@@ -55,7 +49,6 @@ polymer_css_build("build") {
] ]
deps = [ deps = [
":vulcanize_app", ":vulcanize_app",
":vulcanize_lazy_load",
] ]
} }
......
<script src="chrome://resources/js/load_time_data.js"></script> <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"> <html>
<link rel="import" href="downloads_page/downloads_page.html"> <head></head>
<link rel="import" href="languages_page/languages_page.html"> <body>
<link rel="import" href="passwords_and_forms_page/passwords_and_forms_page.html"> <link rel="import" href="a11y_page/a11y_page.html">
<link rel="import" href="printing_page/printing_page.html"> <link rel="import" href="downloads_page/downloads_page.html">
<link rel="import" href="privacy_page/privacy_page.html"> <link rel="import" href="languages_page/languages_page.html">
<link rel="import" href="reset_page/reset_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"> <if expr="chromeos">
<link rel="import" href="date_time_page/date_time_page.html"> <link rel="import" href="date_time_page/date_time_page.html">
</if> </if>
<if expr="not chromeos"> <if expr="not chromeos">
<link rel="import" href="system_page/system_page.html"> <link rel="import" href="system_page/system_page.html">
</if> </if>
</body>
</html>
...@@ -34,12 +34,16 @@ template("vulcanize") { ...@@ -34,12 +34,16 @@ template("vulcanize") {
] ]
# This depfile is generated by vulcanize_gn.py # 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 deps = invoker.deps
# Note that we have to manually pass the sources to our script if the # Note that we have to manually pass the sources to our script if the
...@@ -47,12 +51,6 @@ template("vulcanize") { ...@@ -47,12 +51,6 @@ template("vulcanize") {
args = [ args = [
"--host", "--host",
invoker.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", "--input",
invoker.input, invoker.input,
"--out_folder", "--out_folder",
...@@ -61,6 +59,10 @@ template("vulcanize") { ...@@ -61,6 +59,10 @@ template("vulcanize") {
rebase_path(depfile, root_build_dir), 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)) { if (defined(invoker.excludes)) {
args += [ "--exclude" ] + invoker.excludes args += [ "--exclude" ] + invoker.excludes
} }
......
This diff is collapsed.
...@@ -158,7 +158,8 @@ PolymerTest.loadScript = function(src) { ...@@ -158,7 +158,8 @@ PolymerTest.loadScript = function(src) {
*/ */
PolymerTest.clearBody = function() { PolymerTest.clearBody = function() {
// Save the div where vulcanize inlines content before clearing the page. // 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 = ''; document.body.innerHTML = '';
if (vulcanizeDiv) if (vulcanizeDiv)
document.body.appendChild(vulcanizeDiv); document.body.appendChild(vulcanizeDiv);
......
...@@ -27,7 +27,7 @@ continue (i.e. script execution may be paused). ...@@ -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 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 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. 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 ...@@ -14,4 +14,4 @@ Use update_node_binaries to update Node binaries and update_npm_deps to
update NPM dependencies. update NPM dependencies.
Local Modifications: 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): ...@@ -13,8 +13,9 @@ def _path_in_node_modules(*args):
return os_path.join(NODE_MODULES, *args) return os_path.join(NODE_MODULES, *args)
def PathToVulcanize(): def PathToBundler():
return _path_in_node_modules('vulcanize', 'bin', 'vulcanize') return _path_in_node_modules(
'polymer-bundler', 'lib', 'bin', 'polymer-bundler')
def PathToCrisper(): def PathToCrisper():
......
6dbd64a4fc98b0f3b72625c1585d95f9e9b6d71a 050c85d20f7cedd7f5c39533c1ba89dcdfa56a08
...@@ -5,8 +5,8 @@ ...@@ -5,8 +5,8 @@
"dependencies": { "dependencies": {
"crisper": "2.0.2", "crisper": "2.0.2",
"eslint": "3.19.0", "eslint": "3.19.0",
"polymer-bundler": "3.0.1",
"polymer-css-build": "0.1.2", "polymer-css-build": "0.1.2",
"uglify-es": "3.0.15", "uglify-es": "3.0.15"
"vulcanize": "1.15.4"
} }
} }
...@@ -18,8 +18,8 @@ rm -rf node_modules ...@@ -18,8 +18,8 @@ rm -rf node_modules
npm install --no-bin-links --only=prod npm install --no-bin-links --only=prod
# Apply local patch to vulcanize. # Apply local patch to polymer-bundler.
patch -d node_modules/vulcanize/ -p1 < chromium_vulcanize.patch patch -d node_modules/polymer-bundler/ -p1 < chromium_polymer_bundler.patch
rsync -c --delete -r -q --exclude-from="npm_exclude.txt" \ rsync -c --delete -r -q --exclude-from="npm_exclude.txt" \
--prune-empty-dirs "node_modules/" "node_modules_filtered/" --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