Commit 8e517120 authored by dpapad's avatar dpapad Committed by Commit Bot

WebUI: Allow ignoring some HTML imports in polymer_modulizer.

This will enable migrating an HTML file to Polymer3, even
before all of its dependencies have been migrated.

Bug: 1026426
Change-Id: I455858a1f1866a9cab83556239ec075cac7f9ddc
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2088504Reviewed-by: default avatarRebekah Potter <rbpotter@chromium.org>
Commit-Queue: dpapad <dpapad@chromium.org>
Cr-Commit-Position: refs/heads/master@{#747137}
parent 0186d28b
......@@ -62,5 +62,9 @@ template("polymer_modulizer") {
if (defined(invoker.auto_imports)) {
args += invoker.auto_imports
}
if (defined(invoker.ignore_imports)) {
args += [ "--ignore_imports" ] + invoker.ignore_imports
}
}
}
......@@ -72,6 +72,10 @@ _namespace_rewrites = {}
# ui/webui/resources/html/cr/ui/focus_outline_manager.html is encountered.
_auto_imports = {}
# Populated from command line arguments. Specifies a list of HTML imports to
# ignore when converting HTML imports to JS modules.
_ignore_imports = []
_chrome_redirects = {
'chrome://resources/polymer/v1_0/': POLYMER_V1_DIR,
'chrome://resources/html/': 'ui/webui/resources/html/',
......@@ -188,8 +192,12 @@ def _generate_js_imports(html_file):
imports_end_index = i
# Convert HTML import URL to equivalent JS import URL.
dep = Dependency(html_file, match.group(1)).to_js_import(_auto_imports)
output.append(dep)
dep = Dependency(html_file, match.group(1))
js_import = dep.to_js_import(_auto_imports)
if dep.html_path_normalized in _ignore_imports:
output.append('// ' + js_import)
else:
output.append(js_import)
elif imports_found:
if re.search(r'^\s*</?if', line):
......@@ -469,6 +477,7 @@ def main(argv):
parser.add_argument('--js_file', required=True)
parser.add_argument('--html_file', required=True)
parser.add_argument('--namespace_rewrites', required=False, nargs="*")
parser.add_argument('--ignore_imports', required=False, nargs="*")
parser.add_argument('--auto_imports', required=False, nargs="*")
parser.add_argument(
'--html_type', choices=['dom-module', 'style-module', 'custom-style',
......@@ -488,6 +497,10 @@ def main(argv):
path, imports = entry.split('|')
_auto_imports[path] = imports.split(',')
# Extract ignored imports from arguments.
if args.ignore_imports:
global _ignore_imports
_ignore_imports = args.ignore_imports
in_folder = os.path.normpath(os.path.join(_CWD, args.in_folder))
out_folder = os.path.normpath(os.path.join(_CWD, args.out_folder))
......
......@@ -37,6 +37,8 @@ class PolymerModulizerTest(unittest.TestCase):
'--html_type', html_type,
'--namespace_rewrites',
'Polymer.PaperRippleBehavior|PaperRippleBehavior',
'--ignore_imports',
'ui/webui/resources/html/ignore_me.html',
'--auto_imports',
'ui/webui/resources/html/polymer.html|Polymer,html',
'third_party/polymer/v1_0/components-chromium/paper-behaviors/paper-ripple-behavior.html|PaperRippleBehavior',
......
<link rel="import" href="../../../ui/webui/resources/html/polymer.html">
<link rel="import" href="chrome://resources/polymer/v1_0/paper-behaviors/paper-ripple-behavior.html">
<link rel="import" href="chrome://resources/html/ignore_me.html">
<link rel="import" href="../shared_vars_css.html">
<link rel="import" href="foo.html">
......
import {Polymer, html} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
import {PaperRippleBehavior} from 'chrome://resources/polymer/v3_0/paper-behaviors/paper-ripple-behavior.js';
// import 'chrome://resources/js/ignore_me.m.js';
import '../shared_vars_css.m.js';
import './foo.m.js';
......
import {Polymer, html} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
import {PaperRippleBehavior} from 'chrome://resources/polymer/v3_0/paper-behaviors/paper-ripple-behavior.js';
// import 'chrome://resources/js/ignore_me.m.js';
import '../shared_vars_css.m.js';
import './foo.m.js';
......
import {Polymer, html} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
import {PaperRippleBehavior} from 'chrome://resources/polymer/v3_0/paper-behaviors/paper-ripple-behavior.js';
// import 'chrome://resources/js/ignore_me.m.js';
import '../shared_vars_css.m.js';
import './foo.m.js';
......
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