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

WebUI: Provide a way to opt-out of --chrome_pass in js_type_check()

The --chrome_pass Closure compiler flag is only needed for code that relies on
cr.js (cr.define(), cr.exportPath() and friends). For JS code that has migrated
to JS modules --chrome_pass is not necessary.

Explicitly removing --chrome_pass not only makes type-checking faster, but
also ensures that eventually we don't depend on this pass at all.

Note that using |is_polymer3| also opts out a js_type_check() target from
--chrome_pass, but without the new |uses_js_modules| there is no easy way
for non-Polymer code to opt-out.

Note: With this change any JS code that uses JS modules must specify either
|uses_js_modules| or |is_polymer3| attributes.

Bug: 1028829
Change-Id: I4e019770e36ac460402123c5413be6c95e32fef2
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1938248Reviewed-by: default avatarRebekah Potter <rbpotter@chromium.org>
Commit-Queue: Demetrios Papadopoulos <dpapad@chromium.org>
Cr-Commit-Position: refs/heads/master@{#720597}
parent 3f844229
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
import("//third_party/closure_compiler/compile_js.gni") import("//third_party/closure_compiler/compile_js.gni")
js_type_check("closure_compile") { js_type_check("closure_compile") {
uses_js_modules = true
deps = [ deps = [
":local_state", ":local_state",
] ]
......
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
import("//third_party/closure_compiler/compile_js.gni") import("//third_party/closure_compiler/compile_js.gni")
js_type_check("closure_compile") { js_type_check("closure_compile") {
uses_js_modules = true
deps = [ deps = [
":media_router_internals", ":media_router_internals",
] ]
......
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
import("//third_party/closure_compiler/compile_js.gni") import("//third_party/closure_compiler/compile_js.gni")
js_type_check("closure_compile") { js_type_check("closure_compile") {
uses_js_modules = true
deps = [ deps = [
":offline_internals", ":offline_internals",
":offline_internals_browser_proxy", ":offline_internals_browser_proxy",
......
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
import("//third_party/closure_compiler/compile_js.gni") import("//third_party/closure_compiler/compile_js.gni")
js_type_check("closure_compile") { js_type_check("closure_compile") {
uses_js_modules = true
deps = [ deps = [
":reset_password", ":reset_password",
] ]
......
...@@ -6,6 +6,7 @@ import("//third_party/closure_compiler/compile_js.gni") ...@@ -6,6 +6,7 @@ import("//third_party/closure_compiler/compile_js.gni")
import("//tools/polymer/polymer.gni") import("//tools/polymer/polymer.gni")
js_type_check("closure_compile") { js_type_check("closure_compile") {
uses_js_modules = true
deps = [ deps = [
":alert_indicator", ":alert_indicator",
":alert_indicators", ":alert_indicators",
......
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
import("//third_party/closure_compiler/compile_js.gni") import("//third_party/closure_compiler/compile_js.gni")
js_type_check("closure_compile") { js_type_check("closure_compile") {
uses_js_modules = true
deps = [ deps = [
":about_webapks", ":about_webapks",
] ]
......
...@@ -26,20 +26,22 @@ strict_error_checking_closure_args = [ ...@@ -26,20 +26,22 @@ strict_error_checking_closure_args = [
# Additional closure args for performing full checks. # Additional closure args for performing full checks.
default_closure_args = strict_error_checking_closure_args + [ default_closure_args = strict_error_checking_closure_args + [
"compilation_level=SIMPLE_OPTIMIZATIONS", "compilation_level=SIMPLE_OPTIMIZATIONS",
"extra_annotation_name=attribute", "extra_annotation_name=attribute",
"extra_annotation_name=demo", "extra_annotation_name=demo",
"extra_annotation_name=element", "extra_annotation_name=element",
"language_in=ECMASCRIPT_2017", "language_in=ECMASCRIPT_2017",
"language_out=ECMASCRIPT5_STRICT", "language_out=ECMASCRIPT5_STRICT",
"chrome_pass", "chrome_pass",
"polymer_pass", "polymer_pass",
"jscomp_off=duplicate", "jscomp_off=duplicate",
]
js_modules_args = [
"js_module_root=../../ui/webui/resources/", "js_module_root=../../ui/webui/resources/",
"js_module_root=gen/ui/webui/resources/", "js_module_root=gen/ui/webui/resources/",
...@@ -47,22 +49,23 @@ default_closure_args = strict_error_checking_closure_args + [ ...@@ -47,22 +49,23 @@ default_closure_args = strict_error_checking_closure_args + [
# gen/ui/webui/resources are js_module_roots. # gen/ui/webui/resources are js_module_roots.
"module_resolution=BROWSER_WITH_TRANSFORMED_PREFIXES", "module_resolution=BROWSER_WITH_TRANSFORMED_PREFIXES",
"browser_resolver_prefix_replacements=\"chrome://resources/=./\"", "browser_resolver_prefix_replacements=\"chrome://resources/=./\"",
# Turn off primarily because cr.define() should not be used in any JS Modules
# based code, and secondarily because of b/133333578.
"chrome_pass=false",
] ]
polymer3_args = [ polymer3_args = js_modules_args + [
"browser_resolver_prefix_replacements=\"../polymer/polymer_bundled.min.js=../polymer/polymer_bundled.js\"", "browser_resolver_prefix_replacements=\"../polymer/polymer_bundled.min.js=../polymer/polymer_bundled.js\"",
"browser_resolver_prefix_replacements=\"chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js=../../third_party/polymer/v3_0/components-chromium/polymer/polymer_bundled.js\"", "browser_resolver_prefix_replacements=\"chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js=../../third_party/polymer/v3_0/components-chromium/polymer/polymer_bundled.js\"",
"browser_resolver_prefix_replacements=\"chrome://resources/polymer/v3_0/=../../third_party/polymer/v3_0/components-chromium/\"", "browser_resolver_prefix_replacements=\"chrome://resources/polymer/v3_0/=../../third_party/polymer/v3_0/components-chromium/\"",
# Turn off, primarily because cr.define() should not be used in any "hide_warnings_for=externs.zip",
# Polymer3/JS module code, but also because of b/133333578. "hide_warnings_for=../../third_party/polymer/v3_0/components-chromium/",
"chrome_pass=false", "polymer_pass=false",
"hide_warnings_for=externs.zip",
"hide_warnings_for=../../third_party/polymer/v3_0/components-chromium/",
"polymer_pass=false",
# Note: "2" is counter-intuitively the correct value to use for Polymer 3. # Note: "2" is counter-intuitively the correct value to use for Polymer 3.
"polymer_version=2", "polymer_version=2",
] ]
default_disabled_closure_args = [ "jscomp_off=duplicate" ] default_disabled_closure_args = [ "jscomp_off=duplicate" ]
...@@ -161,10 +161,11 @@ template("js_binary") { ...@@ -161,10 +161,11 @@ template("js_binary") {
"deps", "deps",
"externs_list", "externs_list",
"extra_deps", "extra_deps",
"outputs",
"is_polymer3", "is_polymer3",
"outputs",
"sources", "sources",
"testonly", "testonly",
"uses_js_modules",
]) ])
args = [ args = [
"--compiler", "--compiler",
...@@ -224,6 +225,8 @@ template("js_binary") { ...@@ -224,6 +225,8 @@ template("js_binary") {
} }
if (is_polymer3) { if (is_polymer3) {
closure_flags += polymer3_args closure_flags += polymer3_args
} else if (defined(uses_js_modules) && uses_js_modules) {
closure_flags += js_modules_args
} }
args += [ "--flags" ] + closure_flags args += [ "--flags" ] + closure_flags
...@@ -270,6 +273,7 @@ template("js_type_check") { ...@@ -270,6 +273,7 @@ template("js_type_check") {
"deps", "deps",
"is_polymer3", "is_polymer3",
"testonly", "testonly",
"uses_js_modules",
]) ])
} }
} else { } else {
......
...@@ -189,6 +189,7 @@ group("polymer3_elements") { ...@@ -189,6 +189,7 @@ group("polymer3_elements") {
} }
js_type_check("cr_elements_module_resources") { js_type_check("cr_elements_module_resources") {
uses_js_modules = true
deps = [ deps = [
":cr_container_shadow_behavior.m", ":cr_container_shadow_behavior.m",
] ]
......
...@@ -13,6 +13,7 @@ js_type_check("closure_compile") { ...@@ -13,6 +13,7 @@ js_type_check("closure_compile") {
} }
js_type_check("closure_compile_modules") { js_type_check("closure_compile_modules") {
uses_js_modules = true
deps = [ deps = [
":event_target.m", ":event_target.m",
] ]
......
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