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 @@
import("//third_party/closure_compiler/compile_js.gni")
js_type_check("closure_compile") {
uses_js_modules = true
deps = [
":local_state",
]
......
......@@ -5,6 +5,7 @@
import("//third_party/closure_compiler/compile_js.gni")
js_type_check("closure_compile") {
uses_js_modules = true
deps = [
":media_router_internals",
]
......
......@@ -5,6 +5,7 @@
import("//third_party/closure_compiler/compile_js.gni")
js_type_check("closure_compile") {
uses_js_modules = true
deps = [
":offline_internals",
":offline_internals_browser_proxy",
......
......@@ -5,6 +5,7 @@
import("//third_party/closure_compiler/compile_js.gni")
js_type_check("closure_compile") {
uses_js_modules = true
deps = [
":reset_password",
]
......
......@@ -6,6 +6,7 @@ import("//third_party/closure_compiler/compile_js.gni")
import("//tools/polymer/polymer.gni")
js_type_check("closure_compile") {
uses_js_modules = true
deps = [
":alert_indicator",
":alert_indicators",
......
......@@ -5,6 +5,7 @@
import("//third_party/closure_compiler/compile_js.gni")
js_type_check("closure_compile") {
uses_js_modules = true
deps = [
":about_webapks",
]
......
......@@ -39,7 +39,9 @@ default_closure_args = strict_error_checking_closure_args + [
"polymer_pass",
"jscomp_off=duplicate",
]
js_modules_args = [
"js_module_root=../../ui/webui/resources/",
"js_module_root=gen/ui/webui/resources/",
......@@ -47,22 +49,23 @@ default_closure_args = strict_error_checking_closure_args + [
# gen/ui/webui/resources are js_module_roots.
"module_resolution=BROWSER_WITH_TRANSFORMED_PREFIXES",
"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=\"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/\"",
# Turn off, primarily because cr.define() should not be used in any
# Polymer3/JS module code, but also because of b/133333578.
"chrome_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.
"polymer_version=2",
]
]
default_disabled_closure_args = [ "jscomp_off=duplicate" ]
......@@ -161,10 +161,11 @@ template("js_binary") {
"deps",
"externs_list",
"extra_deps",
"outputs",
"is_polymer3",
"outputs",
"sources",
"testonly",
"uses_js_modules",
])
args = [
"--compiler",
......@@ -224,6 +225,8 @@ template("js_binary") {
}
if (is_polymer3) {
closure_flags += polymer3_args
} else if (defined(uses_js_modules) && uses_js_modules) {
closure_flags += js_modules_args
}
args += [ "--flags" ] + closure_flags
......@@ -270,6 +273,7 @@ template("js_type_check") {
"deps",
"is_polymer3",
"testonly",
"uses_js_modules",
])
}
} else {
......
......@@ -189,6 +189,7 @@ group("polymer3_elements") {
}
js_type_check("cr_elements_module_resources") {
uses_js_modules = true
deps = [
":cr_container_shadow_behavior.m",
]
......
......@@ -13,6 +13,7 @@ js_type_check("closure_compile") {
}
js_type_check("closure_compile_modules") {
uses_js_modules = true
deps = [
":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