Add PRESUBMIT check for deprecated JS.
Start with __lookupGetter__, __defineGetter__, and __defineSetter__.
[email protected]
BUG=425829
Review URL: https://codereview.chromium.org/670043002
Cr-Commit-Position: refs/heads/master@{#300641}
diff --git a/PRESUBMIT.py b/PRESUBMIT.py
index eafc8fe3..6ee3db6 100644
--- a/PRESUBMIT.py
+++ b/PRESUBMIT.py
@@ -1239,7 +1239,7 @@
documentation is ignored by the hooks as it
needs to be consumed by WebKit. """
results = []
- file_inclusion_pattern = (r".+\.css$")
+ file_inclusion_pattern = (r".+\.css$",)
black_list = (_EXCLUDED_PATHS +
_TEST_CODE_EXCLUDED_PATHS +
input_api.DEFAULT_BLACK_LIST +
@@ -1251,13 +1251,37 @@
for fpath in input_api.AffectedFiles(file_filter=file_filter):
for line_num, line in fpath.ChangedContents():
for (deprecated_value, value) in _DEPRECATED_CSS:
- if input_api.re.search(deprecated_value, line):
+ if deprecated_value in line:
results.append(output_api.PresubmitError(
"%s:%d: Use of deprecated CSS %s, use %s instead" %
(fpath.LocalPath(), line_num, deprecated_value, value)))
return results
+_DEPRECATED_JS = [
+ ( "__lookupGetter__", "Object.getOwnPropertyDescriptor" ),
+ ( "__defineGetter__", "Object.defineProperty" ),
+ ( "__defineSetter__", "Object.defineProperty" ),
+]
+
+def _CheckNoDeprecatedJS(input_api, output_api):
+ """Make sure that we don't use deprecated JS in Chrome code."""
+ results = []
+ file_inclusion_pattern = (r".+\.js$",) # TODO(dbeam): .html?
+ black_list = (_EXCLUDED_PATHS + _TEST_CODE_EXCLUDED_PATHS +
+ input_api.DEFAULT_BLACK_LIST)
+ file_filter = lambda f: input_api.FilterSourceFile(
+ f, white_list=file_inclusion_pattern, black_list=black_list)
+ for fpath in input_api.AffectedFiles(file_filter=file_filter):
+ for lnum, line in fpath.ChangedContents():
+ for (deprecated, replacement) in _DEPRECATED_JS:
+ if deprecated in line:
+ results.append(output_api.PresubmitError(
+ "%s:%d: Use of deprecated JS %s, use %s instead" %
+ (fpath.LocalPath(), lnum, deprecated, replacement)))
+ return results
+
+
def _CheckForOverrideAndFinalRules(input_api, output_api):
"""Checks for final and override used as per C++11"""
problems = []
@@ -1313,6 +1337,7 @@
results.extend(_CheckCygwinShell(input_api, output_api))
results.extend(_CheckUserActionUpdate(input_api, output_api))
results.extend(_CheckNoDeprecatedCSS(input_api, output_api))
+ results.extend(_CheckNoDeprecatedJS(input_api, output_api))
results.extend(_CheckParseErrors(input_api, output_api))
results.extend(_CheckForIPCRules(input_api, output_api))
results.extend(_CheckForOverrideAndFinalRules(input_api, output_api))