Skip to content

Commit

Permalink
Remove JavaScript const/let/lambda presubmit check for iOS9.
Browse files Browse the repository at this point in the history
iOS9 is not supported by Chrome iOS and iGSA anymore, the presubmit check
for risky ES6 grammar(const/let/lambda) can be removed now.

Change-Id: I5a35d54097dbd215393aaba78868107befdc93b6
Reviewed-on: https://chromium-review.googlesource.com/c/1329249
Reviewed-by: Dirk Pranke <dpranke@chromium.org>
Reviewed-by: Eugene But <eugenebut@chromium.org>
Commit-Queue: Yi Su <mrsuyi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#606867}
  • Loading branch information
Yi Su authored and Commit Bot committed Nov 9, 2018
1 parent 77b7b35 commit a81bed5
Show file tree
Hide file tree
Showing 2 changed files with 0 additions and 113 deletions.
65 changes: 0 additions & 65 deletions PRESUBMIT.py
Original file line number Diff line number Diff line change
Expand Up @@ -2717,70 +2717,6 @@ def _CheckNoDeprecatedJs(input_api, output_api):
return results


def _CheckForRiskyJsArrowFunction(line_number, line):
if ' => ' in line:
return "line %d, is using an => (arrow) function\n %s\n" % (
line_number, line)
return ''


def _CheckForRiskyJsConstLet(input_api, line_number, line):
if input_api.re.match('^\s*(const|let)\s', line):
return "line %d, is using const/let keyword\n %s\n" % (
line_number, line)
return ''


def _CheckForRiskyJsFeatures(input_api, output_api):
maybe_ios_js = [r"^(ios|components|ui\/webui\/resources)\/.+\.js$"]
# 'ui/webui/resources/cr_components are not allowed on ios'
not_ios_filter = (r".*ui\/webui\/resources\/cr_components.*", )
file_filter = lambda f: input_api.FilterSourceFile(f, white_list=maybe_ios_js,
black_list=not_ios_filter)
results = []
for f in input_api.AffectedFiles(file_filter=file_filter):
arrow_error_lines = []
const_let_error_lines = []
for lnum, line in f.ChangedContents():
arrow_error_lines += filter(None, [
_CheckForRiskyJsArrowFunction(lnum, line),
])

const_let_error_lines += filter(None, [
_CheckForRiskyJsConstLet(input_api, lnum, line),
])

if arrow_error_lines:
arrow_error_lines = map(
lambda e: "%s:%s" % (f.LocalPath(), e), arrow_error_lines)
results.append(
output_api.PresubmitPromptWarning('\n'.join(arrow_error_lines + [
"""
Use of => (arrow) operator detected in:
%s
Please ensure your code does not run on iOS9 (=> (arrow) does not work there).
https://chromium.googlesource.com/chromium/src/+/master/styleguide/web/es6.md#Arrow-Functions
""" % f.LocalPath()
])))

if const_let_error_lines:
const_let_error_lines = map(
lambda e: "%s:%s" % (f.LocalPath(), e), const_let_error_lines)
results.append(
output_api.PresubmitPromptWarning('\n'.join(const_let_error_lines + [
"""
Use of const/let keywords detected in:
%s
Please ensure your code does not run on iOS9 because const/let is not fully
supported.
https://chromium.googlesource.com/chromium/src/+/master/styleguide/web/es6.md#let-Block_Scoped-Variables
https://chromium.googlesource.com/chromium/src/+/master/styleguide/web/es6.md#const-Block_Scoped-Constants
""" % f.LocalPath()
])))

return results


def _CheckForRelativeIncludes(input_api, output_api):
# Need to set the sys.path so PRESUBMIT_test.py runs properly
import sys
Expand Down Expand Up @@ -3119,7 +3055,6 @@ def _CommonChecks(input_api, output_api):
results.extend(_CheckJavaStyle(input_api, output_api))
results.extend(_CheckIpcOwners(input_api, output_api))
results.extend(_CheckUselessForwardDeclarations(input_api, output_api))
results.extend(_CheckForRiskyJsFeatures(input_api, output_api))
results.extend(_CheckForRelativeIncludes(input_api, output_api))
results.extend(_CheckWATCHLISTS(input_api, output_api))
results.extend(input_api.RunTests(
Expand Down
48 changes: 0 additions & 48 deletions PRESUBMIT_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -1391,54 +1391,6 @@ def testBlinkHeaders(self):
self.assertEqual(4, len(warnings))


class RiskyJsTest(unittest.TestCase):
def testArrowWarnInIos9Code(self):
mock_input_api = MockInputApi()
mock_output_api = MockOutputApi()

mock_input_api.files = [
MockAffectedFile('components/blah.js', ["shouldn't use => here"]),
]
warnings = PRESUBMIT._CheckForRiskyJsFeatures(
mock_input_api, mock_output_api)
self.assertEqual(1, len(warnings))

mock_input_api.files = [
MockAffectedFile('ios/blee.js', ['might => break folks']),
]
warnings = PRESUBMIT._CheckForRiskyJsFeatures(
mock_input_api, mock_output_api)
self.assertEqual(1, len(warnings))

mock_input_api.files = [
MockAffectedFile('ui/webui/resources/blarg.js', ['on => iOS9']),
]
warnings = PRESUBMIT._CheckForRiskyJsFeatures(
mock_input_api, mock_output_api)
self.assertEqual(1, len(warnings))

def testArrowsAllowedInChromeCode(self):
mock_input_api = MockInputApi()
mock_input_api.files = [
MockAffectedFile('chrome/browser/resources/blah.js', 'arrow => OK here'),
]
warnings = PRESUBMIT._CheckForRiskyJsFeatures(
mock_input_api, MockOutputApi())
self.assertEqual(0, len(warnings))

def testConstLetWarningIos9Code(self):
mock_input_api = MockInputApi()
mock_output_api = MockOutputApi()

mock_input_api.files = [
MockAffectedFile('components/blah.js', [" const foo = 'bar';"]),
MockAffectedFile('ui/webui/resources/blah.js', [" let foo = 3;"]),
]
warnings = PRESUBMIT._CheckForRiskyJsFeatures(
mock_input_api, mock_output_api)
self.assertEqual(2, len(warnings))


class RelativeIncludesTest(unittest.TestCase):
def testThirdPartyNotWebKitIgnored(self):
mock_input_api = MockInputApi()
Expand Down

0 comments on commit a81bed5

Please sign in to comment.