Commit 738805fe authored by dpapad's avatar dpapad Committed by Commit Bot

Settings: Inform polymer_modulizer() of already migrated files.

When an HTML import is marked as "migrated" polymer_modulizer() will
produce a path ending with ".js" instead of ".m.js". This allows mixing
auto-generated and checked-in Polymer3 code while finishing Settings
Polymer3 post-launch cleanups.

Bug: 1069258
Change-Id: Ia7bec750e93da0e97b455ea3b2bb304ddd51c3cf
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2144614
Commit-Queue: dpapad <dpapad@chromium.org>
Reviewed-by: default avatarRebekah Potter <rbpotter@chromium.org>
Auto-Submit: dpapad <dpapad@chromium.org>
Cr-Commit-Position: refs/heads/master@{#758124}
parent f9e32ee8
...@@ -67,5 +67,9 @@ template("polymer_modulizer") { ...@@ -67,5 +67,9 @@ template("polymer_modulizer") {
if (defined(invoker.ignore_imports)) { if (defined(invoker.ignore_imports)) {
args += [ "--ignore_imports" ] + invoker.ignore_imports args += [ "--ignore_imports" ] + invoker.ignore_imports
} }
if (defined(invoker.migrated_imports)) {
args += [ "--migrated_imports" ] + invoker.migrated_imports
}
} }
} }
...@@ -76,6 +76,8 @@ _auto_imports = {} ...@@ -76,6 +76,8 @@ _auto_imports = {}
# ignore when converting HTML imports to JS modules. # ignore when converting HTML imports to JS modules.
_ignore_imports = [] _ignore_imports = []
_migrated_imports = []
_chrome_redirects = { _chrome_redirects = {
'chrome://resources/polymer/v1_0/': POLYMER_V1_DIR, 'chrome://resources/polymer/v1_0/': POLYMER_V1_DIR,
'chrome://resources/html/': 'ui/webui/resources/html/', 'chrome://resources/html/': 'ui/webui/resources/html/',
...@@ -139,7 +141,9 @@ class Dependency: ...@@ -139,7 +141,9 @@ class Dependency:
.replace(r'ui/webui/resources/html/', 'ui/webui/resources/js/') .replace(r'ui/webui/resources/html/', 'ui/webui/resources/js/')
.replace(r'.html', '.m.js')) .replace(r'.html', '.m.js'))
return self.html_path_normalized.replace(r'.html', '.m.js') extension = (
'.js' if self.html_path_normalized in _migrated_imports else '.m.js')
return self.html_path_normalized.replace(r'.html', extension)
def _to_js(self): def _to_js(self):
js_path = self.js_path_normalized js_path = self.js_path_normalized
...@@ -481,6 +485,15 @@ document.head.appendChild(template.content); ...@@ -481,6 +485,15 @@ document.head.appendChild(template.content);
out_filename = os.path.basename(js_file) out_filename = os.path.basename(js_file)
return js_template, out_filename return js_template, out_filename
def _resetGlobals():
global _namespace_rewrites
_namespace_rewrites = {}
global _auto_imports
_auto_imports = {}
global _ignore_imports
_ignore_imports = []
global _migrated_imports
_migrated_imports = []
def main(argv): def main(argv):
parser = argparse.ArgumentParser() parser = argparse.ArgumentParser()
...@@ -491,6 +504,7 @@ def main(argv): ...@@ -491,6 +504,7 @@ def main(argv):
parser.add_argument('--namespace_rewrites', required=False, nargs="*") parser.add_argument('--namespace_rewrites', required=False, nargs="*")
parser.add_argument('--ignore_imports', required=False, nargs="*") parser.add_argument('--ignore_imports', required=False, nargs="*")
parser.add_argument('--auto_imports', required=False, nargs="*") parser.add_argument('--auto_imports', required=False, nargs="*")
parser.add_argument('--migrated_imports', required=False, nargs="*")
parser.add_argument( parser.add_argument(
'--html_type', choices=['dom-module', 'style-module', 'custom-style', '--html_type', choices=['dom-module', 'style-module', 'custom-style',
'iron-iconset', 'v3-ready'], 'iron-iconset', 'v3-ready'],
...@@ -505,15 +519,23 @@ def main(argv): ...@@ -505,15 +519,23 @@ def main(argv):
# Extract automatic imports from arguments. # Extract automatic imports from arguments.
if args.auto_imports: if args.auto_imports:
global _auto_imports
for entry in args.auto_imports: for entry in args.auto_imports:
path, imports = entry.split('|') path, imports = entry.split('|')
_auto_imports[path] = imports.split(',') _auto_imports[path] = imports.split(',')
# Extract ignored imports from arguments. # Extract ignored imports from arguments.
if args.ignore_imports: if args.ignore_imports:
assert args.html_type != 'v3-ready'
global _ignore_imports global _ignore_imports
_ignore_imports = args.ignore_imports _ignore_imports = args.ignore_imports
# Extract migrated imports from arguments.
if args.migrated_imports:
assert args.html_type != 'v3-ready'
global _migrated_imports
_migrated_imports = args.migrated_imports
in_folder = os.path.normpath(os.path.join(_CWD, args.in_folder)) in_folder = os.path.normpath(os.path.join(_CWD, args.in_folder))
out_folder = os.path.normpath(os.path.join(_CWD, args.out_folder)) out_folder = os.path.normpath(os.path.join(_CWD, args.out_folder))
...@@ -538,6 +560,10 @@ def main(argv): ...@@ -538,6 +560,10 @@ def main(argv):
with io.open(os.path.join(out_folder, result[1]), mode='wb') as f: with io.open(os.path.join(out_folder, result[1]), mode='wb') as f:
for l in result[0]: for l in result[0]:
f.write(l.encode('utf-8')) f.write(l.encode('utf-8'))
# Reset global variables so that main() can be invoked multiple times during
# testing without leaking state from one test to the next.
_resetGlobals()
return return
......
...@@ -16,6 +16,7 @@ _HERE_DIR = os.path.dirname(__file__) ...@@ -16,6 +16,7 @@ _HERE_DIR = os.path.dirname(__file__)
class PolymerModulizerTest(unittest.TestCase): class PolymerModulizerTest(unittest.TestCase):
def setUp(self): def setUp(self):
self._out_folder = None self._out_folder = None
self._additional_flags = []
def tearDown(self): def tearDown(self):
if self._out_folder: if self._out_folder:
...@@ -37,12 +38,10 @@ class PolymerModulizerTest(unittest.TestCase): ...@@ -37,12 +38,10 @@ class PolymerModulizerTest(unittest.TestCase):
'--html_type', html_type, '--html_type', html_type,
'--namespace_rewrites', '--namespace_rewrites',
'Polymer.PaperRippleBehavior|PaperRippleBehavior', 'Polymer.PaperRippleBehavior|PaperRippleBehavior',
'--ignore_imports',
'ui/webui/resources/html/ignore_me.html',
'--auto_imports', '--auto_imports',
'ui/webui/resources/html/polymer.html|Polymer,html', 'ui/webui/resources/html/polymer.html|Polymer,html',
'third_party/polymer/v1_0/components-chromium/paper-behaviors/paper-ripple-behavior.html|PaperRippleBehavior', 'third_party/polymer/v1_0/components-chromium/paper-behaviors/paper-ripple-behavior.html|PaperRippleBehavior',
]) ] + self._additional_flags)
actual_js = self._read_out_file(js_out_file) actual_js = self._read_out_file(js_out_file)
expected_js = open(os.path.join( expected_js = open(os.path.join(
...@@ -83,6 +82,27 @@ class PolymerModulizerTest(unittest.TestCase): ...@@ -83,6 +82,27 @@ class PolymerModulizerTest(unittest.TestCase):
'dom_module_with_ignore.m.js', 'dom_module_with_ignore.m.js',
'dom_module_with_ignore_expected.js') 'dom_module_with_ignore_expected.js')
# Test case where some HTML imports should be ignored.
def testDomModuleWithIgnoreImports(self):
self._additional_flags = [
'--ignore_imports',
'ui/webui/resources/html/ignore_me.html',
]
self._run_test('dom-module', 'dom_module.html', 'dom_module.js',
'dom_module.m.js',
'dom_module_with_ignore_imports_expected.js')
# Test case where some HTML imports have already been fully migrated to
# Polymer3.
def testDomModuleWithMigratedImports(self):
self._additional_flags = [
'--migrated_imports',
'tools/polymer/tests/foo.html',
]
self._run_test('dom-module', 'dom_module.html', 'dom_module.js',
'dom_module.m.js',
'dom_module_with_migrated_imports_expected.js')
# Test case where HTML is extracted from a Polymer2 <dom-module> that also # Test case where HTML is extracted from a Polymer2 <dom-module> that also
# uses <if expr> for imports. # uses <if expr> for imports.
def testDomModuleWithConditionalImport(self): def testDomModuleWithConditionalImport(self):
......
import {Polymer, html} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.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 {PaperRippleBehavior} from 'chrome://resources/polymer/v3_0/paper-behaviors/paper-ripple-behavior.js';
// import 'chrome://resources/js/ignore_me.m.js'; import 'chrome://resources/js/ignore_me.m.js';
import '../shared_vars_css.m.js'; import '../shared_vars_css.m.js';
import './foo.m.js'; import './foo.m.js';
......
import {Polymer, html} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.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 {PaperRippleBehavior} from 'chrome://resources/polymer/v3_0/paper-behaviors/paper-ripple-behavior.js';
// import 'chrome://resources/js/ignore_me.m.js'; import 'chrome://resources/js/ignore_me.m.js';
import '../shared_vars_css.m.js'; import '../shared_vars_css.m.js';
import './foo.m.js'; import './foo.m.js';
......
import {Polymer, html} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.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 {PaperRippleBehavior} from 'chrome://resources/polymer/v3_0/paper-behaviors/paper-ripple-behavior.js';
// import 'chrome://resources/js/ignore_me.m.js'; import 'chrome://resources/js/ignore_me.m.js';
import '../shared_vars_css.m.js'; import '../shared_vars_css.m.js';
import './foo.m.js'; import './foo.m.js';
......
import {Polymer, html} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.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 {PaperRippleBehavior} from 'chrome://resources/polymer/v3_0/paper-behaviors/paper-ripple-behavior.js';
// import 'chrome://resources/js/ignore_me.m.js'; import 'chrome://resources/js/ignore_me.m.js';
import '../shared_vars_css.m.js'; import '../shared_vars_css.m.js';
import './foo.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';
Polymer({
_template: html`<!--_html_template_start_-->
<style>
div {
font-size: 2rem;
}
</style>
<div>Hello world</div>
<!--_html_template_end_-->`,
is: 'cr-test-foo',
behaviors: [PaperRippleBehavior],
});
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.js';
Polymer({
_template: html`<!--_html_template_start_-->
<style>
div {
font-size: 2rem;
}
</style>
<div>Hello world</div>
<!--_html_template_end_-->`,
is: 'cr-test-foo',
behaviors: [PaperRippleBehavior],
});
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