123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- # Copyright 2022 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
- """Presubmit tests for //android_webview/
- Gates against using Context#bindService API before upload.
- """
- USE_PYTHON3 = True
- def CheckChangeOnCommit(input_api, output_api):
- results = []
- results.extend(_CheckNo_Context_bindService_Added(input_api, output_api))
- return results
- def CheckChangeOnUpload(input_api, output_api):
- results = []
- results.extend(_CheckNo_Context_bindService_Added(input_api, output_api))
- return results
- def _CheckNo_Context_bindService_Added(input_api, output_api):
- """Checks that new no files under //android_webview directly use the
- Context#bindService. This is because Android platform disallows calling
- Context#bindService() from within a BroadcastReceiver context.
- """
- errors = []
- run_with_pattern_part_api = input_api.re.compile(
- r'.*\.bindService\(.*')
- def _FilterFile(affected_file):
- skipFiles = (input_api.DEFAULT_FILES_TO_SKIP +
- (r'.*android_webview[/\\]common[/\\]services[/\\]ServiceHelper\.java',
- r'.*android_webview[/\\]js_sandbox[/\\].*',))
- return input_api.FilterSourceFile(
- affected_file,
- files_to_skip=skipFiles,
- files_to_check=[r'.+\.java$'])
- for f in input_api.AffectedSourceFiles(_FilterFile):
- for line_num, line in f.ChangedContents():
- match = run_with_pattern_part_api.search(line)
- if match:
- if "ServiceHelper.bindService" not in line:
- errors.append("%s:%d:%s" % (f.LocalPath(), line_num, line))
- results = []
- if errors:
- results.append(output_api.PresubmitPromptWarning("""
- New code in //android_webview should not use \
- android.content.Context#bindService. Instead use \
- android_webview.common.services.ServiceHelper#bindService.
- """, errors))
- return results
|