Reland of "DevTools: Added GRD/GRDP files for all localizable strings in the DevTools."

This is a reland of https://chromium-review.googlesource.com/c/chromium/src/+/1613921/, which was reverted (Bug=966547) because
third_party/blink/renderer/devtools/front_end/langpacks/devtools_ui_strings.grd was being picked up by Google's internal localization pipeline.

Bug=941561

Change-Id: I9a97e16e367716189d34944b76605c9321d47092
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1627921
Reviewed-by: Joel Einbinder <einbinder@chromium.org>
Reviewed-by: Nico Weber <thakis@chromium.org>
Reviewed-by: Alexei Filippov <alph@chromium.org>
Commit-Queue: Lorne Mitchell <lomitch@microsoft.com>
Cr-Original-Commit-Position: refs/heads/master@{#664013}
Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src
Cr-Mirrored-Commit: 613ca444d07326b6f087c083af79a636a858a7d9
diff --git a/PRESUBMIT.py b/PRESUBMIT.py
index 68de82a..f19b266 100644
--- a/PRESUBMIT.py
+++ b/PRESUBMIT.py
@@ -94,16 +94,33 @@
     ]
 
 
-def _CheckDevtoolsLocalization(input_api, output_api):  # pylint: disable=invalid-name
+def _CheckDevtoolsWithNodeScript(input_api, output_api, script_path, script_arguments=None):  # pylint: disable=invalid-name
     affected_front_end_files = _getAffectedFrontEndFiles(input_api)
     if len(affected_front_end_files) == 0:
         return []
     else:
-        affected_front_end_files = [
-            input_api.os_path.join(input_api.PresubmitLocalPath(), file_path) for file_path in affected_front_end_files
-        ]
-        script_path = input_api.os_path.join(input_api.PresubmitLocalPath(), "scripts", "check_localizability.js")
-        return _checkWithNodeScript(input_api, output_api, script_path, affected_front_end_files)
+        if script_arguments is None:
+            script_arguments = []
+        return _checkWithNodeScript(input_api, output_api, script_path, script_arguments)
+
+
+def _CheckDevtoolsLocalizableResources(input_api, output_api):  # pylint: disable=invalid-name
+    affected_front_end_files = _getAffectedFrontEndFiles(input_api)
+    if len(affected_front_end_files) == 0:
+        return []
+    script_path = input_api.os_path.join(input_api.PresubmitLocalPath(), "scripts", "check_localizable_resources.js")
+    args = ['--autofix']
+    return _CheckDevtoolsWithNodeScript(input_api, output_api, script_path, args)
+
+
+def _CheckDevtoolsLocalization(input_api, output_api):  # pylint: disable=invalid-name
+    affected_front_end_files = [
+        input_api.os_path.join(input_api.PresubmitLocalPath(), file_path) for file_path in _getAffectedFrontEndFiles(input_api)
+    ]
+    if len(affected_front_end_files) == 0:
+        return []
+    script_path = input_api.os_path.join(input_api.PresubmitLocalPath(), "scripts", "check_localizability.js")
+    return _checkWithNodeScript(input_api, output_api, script_path, affected_front_end_files)
 
 
 def _CheckDevtoolsStyle(input_api, output_api):
@@ -123,9 +140,9 @@
 
 def _CompileDevtoolsFrontend(input_api, output_api):
     compile_path = input_api.os_path.join(input_api.PresubmitLocalPath(), "scripts", "compile_frontend.py")
-    out, _ = input_api.subprocess.Popen(
-        [input_api.python_executable, compile_path], stdout=input_api.subprocess.PIPE,
-        stderr=input_api.subprocess.STDOUT).communicate()
+    out, _ = input_api.subprocess.Popen([input_api.python_executable, compile_path],
+                                        stdout=input_api.subprocess.PIPE,
+                                        stderr=input_api.subprocess.STDOUT).communicate()
     if "ERROR" in out or "WARNING" in out:
         return [output_api.PresubmitError(out)]
     if "NOTE" in out:
@@ -202,6 +219,7 @@
     results = []
     results.extend(_CheckBuildGN(input_api, output_api))
     results.extend(_CheckFormat(input_api, output_api))
+    results.extend(_CheckDevtoolsLocalizableResources(input_api, output_api))
     results.extend(_CheckDevtoolsLocalization(input_api, output_api))
     results.extend(_CheckDevtoolsStyle(input_api, output_api))
     results.extend(_CompileDevtoolsFrontend(input_api, output_api))
@@ -237,7 +255,7 @@
     return [input_api.os_path.relpath(file_name, devtools_root) for file_name in affected_js_files]
 
 
-def _checkWithNodeScript(input_api, output_api, script_path, files=None):  # pylint: disable=invalid-name
+def _checkWithNodeScript(input_api, output_api, script_path, script_arguments=None):  # pylint: disable=invalid-name
     original_sys_path = sys.path
     try:
         sys.path = sys.path + [input_api.os_path.join(input_api.PresubmitLocalPath(), "scripts")]
@@ -247,11 +265,11 @@
 
     node_path = local_node.node_path()
 
-    if files is None:
-        files = []
+    if script_arguments is None:
+        script_arguments = []
 
     process = input_api.subprocess.Popen(
-        [node_path, script_path] + files, stdout=input_api.subprocess.PIPE, stderr=input_api.subprocess.STDOUT)
+        [node_path, script_path] + script_arguments, stdout=input_api.subprocess.PIPE, stderr=input_api.subprocess.STDOUT)
     out, _ = process.communicate()
 
     if process.returncode != 0: