diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2019-02-13 15:05:36 +0100 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2019-02-14 10:33:47 +0000 |
commit | e684a3455bcc29a6e3e66a004e352dea4e1141e7 (patch) | |
tree | d55b4003bde34d7d05f558f02cfd82b2a66a7aac /chromium/PRESUBMIT.py | |
parent | 2b94bfe47ccb6c08047959d1c26e392919550e86 (diff) | |
download | qtwebengine-chromium-e684a3455bcc29a6e3e66a004e352dea4e1141e7.tar.gz |
BASELINE: Update Chromium to 72.0.3626.110 and Ninja to 1.9.0
Change-Id: Ic57220b00ecc929a893c91f5cc552f5d3e99e922
Reviewed-by: Michael BrĂ¼ning <michael.bruning@qt.io>
Diffstat (limited to 'chromium/PRESUBMIT.py')
-rw-r--r-- | chromium/PRESUBMIT.py | 147 |
1 files changed, 71 insertions, 76 deletions
diff --git a/chromium/PRESUBMIT.py b/chromium/PRESUBMIT.py index 2391c99652e..c3db09847f8 100644 --- a/chromium/PRESUBMIT.py +++ b/chromium/PRESUBMIT.py @@ -616,8 +616,8 @@ _KNOWN_INVALID_JSON_FILE_PATTERNS = [ r'test[\\/]data[\\/]', r'^components[\\/]policy[\\/]resources[\\/]policy_templates\.json$', r'^third_party[\\/]protobuf[\\/]', - r'^third_party[\\/]WebKit[\\/]LayoutTests[\\/]external[\\/]wpt[\\/]', r'^third_party[\\/]blink[\\/]renderer[\\/]devtools[\\/]protocol\.json$', + r'^third_party[\\/]blink[\\/]web_tests[\\/]external[\\/]wpt[\\/]', ] @@ -629,6 +629,7 @@ _VALID_OS_MACROS = ( 'OS_BSD', 'OS_CAT', # For testing. 'OS_CHROMEOS', + 'OS_CYGWIN', # third_party code. 'OS_FREEBSD', 'OS_FUCHSIA', 'OS_IOS', @@ -666,12 +667,13 @@ _ANDROID_SPECIFIC_PYDEPS_FILES = [ 'build/android/gyp/create_test_runner_script.pydeps', 'build/android/gyp/create_tool_wrapper.pydeps', 'build/android/gyp/desugar.pydeps', + 'build/android/gyp/dexsplitter.pydeps', 'build/android/gyp/dex.pydeps', 'build/android/gyp/dist_aar.pydeps', 'build/android/gyp/emma_instr.pydeps', 'build/android/gyp/filter_zip.pydeps', 'build/android/gyp/gcc_preprocess.pydeps', - 'build/android/gyp/generate_proguarded_module_jar.pydeps', + 'build/android/gyp/generate_linker_version_script.pydeps', 'build/android/gyp/ijar.pydeps', 'build/android/gyp/java_cpp_enum.pydeps', 'build/android/gyp/javac.pydeps', @@ -690,8 +692,8 @@ _ANDROID_SPECIFIC_PYDEPS_FILES = [ 'build/android/test_runner.pydeps', 'build/android/test_wrapper/logdog_wrapper.pydeps', 'build/protoc_java.pydeps', - 'build/secondary/third_party/android_platform/' - 'development/scripts/stack.pydeps', + ('build/secondary/third_party/android_platform/' + 'development/scripts/stack.pydeps'), 'net/tools/testserver/testserver.pydeps', ] @@ -715,7 +717,7 @@ _KNOWN_ROBOTS = set( ) | set('%s@appspot.gserviceaccount.com' % s for s in ('findit-for-me',) ) | set('%s@developer.gserviceaccount.com' % s for s in ('3su6n15k.default',) ) | set('%s@chops-service-accounts.iam.gserviceaccount.com' % s - for s in ('v8-ci-autoroll-builder',) + for s in ('v8-ci-autoroll-builder', 'wpt-autoroller',) ) | set('%s@skia-public.iam.gserviceaccount.com' % s for s in ('chromium-autoroll',) ) | set('%s@skia-corp.google.com.iam.gserviceaccount.com' % s @@ -1659,6 +1661,7 @@ def _CheckSpamLogging(input_api, output_api): r"^ui[\\/]base[\\/]resource[\\/]data_pack.cc$", r"^ui[\\/]aura[\\/]bench[\\/]bench_main\.cc$", r"^ui[\\/]ozone[\\/]platform[\\/]cast[\\/]", + r"^webrunner[\\/]browser[\\/]frame_impl.cc$", r"^storage[\\/]browser[\\/]fileapi[\\/]" + r"dump_file_system.cc$", r"^headless[\\/]app[\\/]headless_shell\.cc$")) @@ -2716,70 +2719,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 @@ -2843,19 +2782,29 @@ def _CheckWatchlistDefinitionsEntrySyntax(key, value, ast): return None -def _CheckWatchlistsEntrySyntax(key, value, ast): +def _CheckWatchlistsEntrySyntax(key, value, ast, email_regex): if not isinstance(key, ast.Str): return 'Key at line %d must be a string literal' % key.lineno if not isinstance(value, ast.List): return 'Value at line %d must be a list' % value.lineno + for element in value.elts: + if not isinstance(element, ast.Str): + return 'Watchlist elements on line %d is not a string' % key.lineno + if not email_regex.match(element.s): + return ('Watchlist element on line %d doesn\'t look like a valid ' + + 'email: %s') % (key.lineno, element.s) return None -def _CheckWATCHLISTSEntries(wd_dict, w_dict, ast): +def _CheckWATCHLISTSEntries(wd_dict, w_dict, input_api): mismatch_template = ( 'Mismatch between WATCHLIST_DEFINITIONS entry (%s) and WATCHLISTS ' 'entry (%s)') + email_regex = input_api.re.compile( + r"^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]+$") + + ast = input_api.ast i = 0 last_key = '' while True: @@ -2875,7 +2824,8 @@ def _CheckWATCHLISTSEntries(wd_dict, w_dict, ast): if result is not None: return 'Bad entry in WATCHLIST_DEFINITIONS dict: %s' % result - result = _CheckWatchlistsEntrySyntax(w_key, w_dict.values[i], ast) + result = _CheckWatchlistsEntrySyntax( + w_key, w_dict.values[i], ast, email_regex) if result is not None: return 'Bad entry in WATCHLISTS dict: %s' % result @@ -2893,7 +2843,8 @@ def _CheckWATCHLISTSEntries(wd_dict, w_dict, ast): i = i + 1 -def _CheckWATCHLISTSSyntax(expression, ast): +def _CheckWATCHLISTSSyntax(expression, input_api): + ast = input_api.ast if not isinstance(expression, ast.Expression): return 'WATCHLISTS file must contain a valid expression' dictionary = expression.body @@ -2919,7 +2870,7 @@ def _CheckWATCHLISTSSyntax(expression, ast): 'The second entry of the dict in WATCHLISTS file must be ' 'WATCHLISTS dict') - return _CheckWATCHLISTSEntries(first_value, second_value, ast) + return _CheckWATCHLISTSEntries(first_value, second_value, input_api) def _CheckWATCHLISTS(input_api, output_api): @@ -2943,7 +2894,7 @@ def _CheckWATCHLISTS(input_api, output_api): return [output_api.PresubmitError( 'Cannot parse WATCHLISTS file', long_text=repr(e))] - result = _CheckWATCHLISTSSyntax(expression, input_api.ast) + result = _CheckWATCHLISTSSyntax(expression, input_api) if result is not None: return [output_api.PresubmitError(result)] break @@ -2991,6 +2942,50 @@ def _CheckNewHeaderWithoutGnChange(input_api, output_api): return [] +def _CheckCorrectProductNameInMessages(input_api, output_api): + """Check that Chromium-branded strings don't include "Chrome" or vice versa. + + This assumes we won't intentionally reference one product from the other + product. + """ + all_problems = [] + test_cases = [{ + "filename_postfix": "google_chrome_strings.grd", + "correct_name": "Chrome", + "incorrect_name": "Chromium", + }, { + "filename_postfix": "chromium_strings.grd", + "correct_name": "Chromium", + "incorrect_name": "Chrome", + }] + + for test_case in test_cases: + problems = [] + filename_filter = lambda x: x.LocalPath().endswith( + test_case["filename_postfix"]) + + # Check each new line. Can yield false positives in multiline comments, but + # easier than trying to parse the XML because messages can have nested + # children, and associating message elements with affected lines is hard. + for f in input_api.AffectedSourceFiles(filename_filter): + for line_num, line in f.ChangedContents(): + if "<message" in line or "<!--" in line or "-->" in line: + continue + if test_case["incorrect_name"] in line: + problems.append( + "Incorrect product name in %s:%d" % (f.LocalPath(), line_num)) + + if problems: + message = ( + "Strings in %s-branded string files should reference \"%s\", not \"%s\"" + % (test_case["correct_name"], test_case["correct_name"], + test_case["incorrect_name"])) + all_problems.append( + output_api.PresubmitPromptWarning(message, items=problems)) + + return all_problems + + def _AndroidSpecificOnUploadChecks(input_api, output_api): """Groups checks that target android code.""" results = [] @@ -3062,12 +3057,12 @@ 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( input_api.canned_checks.CheckVPythonSpec(input_api, output_api))) results.extend(_CheckTranslationScreenshots(input_api, output_api)) + results.extend(_CheckCorrectProductNameInMessages(input_api, output_api)) for f in input_api.AffectedFiles(): path, name = input_api.os_path.split(f.LocalPath()) |