r"^chrome[\\\/]browser[\\\/]resources[\\\/]pdf[\\\/]index.js"
)
-# TestRunner and NetscapePlugIn library is temporarily excluded from pan-project
-# checks until it's transitioned to chromium coding style.
+# The NetscapePlugIn library is excluded from pan-project as it will soon
+# be deleted together with the rest of the NPAPI and it's not worthwhile to
+# update the coding style until then.
_TESTRUNNER_PATHS = (
- r"^content[\\\/]shell[\\\/]renderer[\\\/]test_runner[\\\/].*",
r"^content[\\\/]shell[\\\/]tools[\\\/]plugin[\\\/].*",
)
# Regular expression that matches code only used for test binaries
# (best effort).
_TEST_CODE_EXCLUDED_PATHS = (
- r'.*[/\\](fake_|test_|mock_).+%s' % _IMPLEMENTATION_EXTENSIONS,
+ r'.*[\\\/](fake_|test_|mock_).+%s' % _IMPLEMENTATION_EXTENSIONS,
r'.+_test_(base|support|util)%s' % _IMPLEMENTATION_EXTENSIONS,
r'.+_(api|browser|kif|perf|pixel|unit|ui)?test(_[a-z]+)?%s' %
_IMPLEMENTATION_EXTENSIONS,
r'.+profile_sync_service_harness%s' % _IMPLEMENTATION_EXTENSIONS,
- r'.*[/\\](test|tool(s)?)[/\\].*',
+ r'.*[\\\/](test|tool(s)?)[\\\/].*',
# content_shell is used for running layout tests.
- r'content[/\\]shell[/\\].*',
+ r'content[\\\/]shell[\\\/].*',
# At request of folks maintaining this folder.
- r'chrome[/\\]browser[/\\]automation[/\\].*',
+ r'chrome[\\\/]browser[\\\/]automation[\\\/].*',
# Non-production example code.
- r'mojo[/\\]examples[/\\].*',
+ r'mojo[\\\/]examples[\\\/].*',
# Launcher for running iOS tests on the simulator.
- r'testing[/\\]iossim[/\\]iossim\.mm$',
+ r'testing[\\\/]iossim[\\\/]iossim\.mm$',
)
_TEST_ONLY_WARNING = (
),
True,
(
+ r"^base[\\\/]process[\\\/]process_metrics_linux\.cc$",
r"^chrome[\\\/]browser[\\\/]chromeos[\\\/]boot_times_loader\.cc$",
- r"^components[\\\/]breakpad[\\\/]app[\\\/]breakpad_mac\.mm$",
+ r"^components[\\\/]crash[\\\/]app[\\\/]breakpad_mac\.mm$",
r"^content[\\\/]shell[\\\/]browser[\\\/]shell_browser_main\.cc$",
r"^content[\\\/]shell[\\\/]browser[\\\/]shell_message_filter\.cc$",
r"^mojo[\\\/]system[\\\/]raw_shared_buffer_posix\.cc$",
),
True,
(
- r'extensions[/\\]renderer[/\\]safe_builtins\.*',
+ r'extensions[\\\/]renderer[\\\/]safe_builtins\.*',
),
),
)
+_IPC_ENUM_TRAITS_DEPRECATED = (
+ 'You are using IPC_ENUM_TRAITS() in your code. It has been deprecated.\n'
+ 'See http://www.chromium.org/Home/chromium-security/education/security-tips-for-ipc')
+
_VALID_OS_MACROS = (
# Please keep sorted.
return []
+def _CheckValidHostsInDEPS(input_api, output_api):
+ """Checks that DEPS file deps are from allowed_hosts."""
+ # Run only if DEPS file has been modified to annoy fewer bystanders.
+ if all(f.LocalPath() != 'DEPS' for f in input_api.AffectedFiles()):
+ return []
+ # Outsource work to gclient verify
+ try:
+ input_api.subprocess.check_output(['gclient', 'verify'])
+ return []
+ except input_api.subprocess.CalledProcessError, error:
+ return [output_api.PresubmitError(
+ 'DEPS file must have only git dependencies.',
+ long_text=error.output)]
+
+
def _CheckNoBannedFunctions(input_api, output_api):
"""Make sure that banned functions are not used."""
warnings = []
r"^cloud_print[\\\/]",
r"^content[\\\/]common[\\\/]gpu[\\\/]client[\\\/]"
r"gl_helper_benchmark\.cc$",
+ r"^courgette[\\\/]courgette_tool\.cc$",
r"^extensions[\\\/]renderer[\\\/]logging_native_handler\.cc$",
r"^native_client_sdk[\\\/]",
r"^remoting[\\\/]base[\\\/]logging\.h$",
r"^remoting[\\\/]host[\\\/].*",
r"^sandbox[\\\/]linux[\\\/].*",
r"^tools[\\\/]",
- r"^ui[\\\/]aura[\\\/]bench[\\\/]bench_main\.cc$",))
+ r"^ui[\\\/]aura[\\\/]bench[\\\/]bench_main\.cc$",
+ r"^webkit[\\\/]browser[\\\/]fileapi[\\\/]" +
+ r"dump_file_system.cc$",))
source_file_filter = lambda x: input_api.FilterSourceFile(
x, white_list=(file_inclusion_pattern,), black_list=black_list)
}
# These paths contain test data and other known invalid JSON files.
excluded_patterns = [
- 'test/data/',
- '^components/policy/resources/policy_templates.json$',
+ r'test[\\\/]data[\\\/]',
+ r'^components[\\\/]policy[\\\/]resources[\\\/]policy_templates\.json$',
]
# Most JSON files are preprocessed and support comments, but these do not.
json_no_comments_patterns = [
- '^testing/',
+ r'^testing[\\\/]',
]
# Only run IDL checker on files in these directories.
idl_included_patterns = [
- '^chrome/common/extensions/api/',
- '^extensions/common/api/',
+ r'^chrome[\\\/]common[\\\/]extensions[\\\/]api[\\\/]',
+ r'^extensions[\\\/]common[\\\/]api[\\\/]',
]
def get_action(affected_file):
results.extend(_CheckUserActionUpdate(input_api, output_api))
results.extend(_CheckNoDeprecatedCSS(input_api, output_api))
results.extend(_CheckParseErrors(input_api, output_api))
+ results.extend(_CheckForIPCRules(input_api, output_api))
if any('PRESUBMIT.py' == f.LocalPath() for f in input_api.AffectedFiles()):
results.extend(input_api.canned_checks.RunUnitTestsInDirectory(
return results
-def _CheckSubversionConfig(input_api, output_api):
- """Verifies the subversion config file is correctly setup.
-
- Checks that autoprops are enabled, returns an error otherwise.
- """
- join = input_api.os_path.join
- if input_api.platform == 'win32':
- appdata = input_api.environ.get('APPDATA', '')
- if not appdata:
- return [output_api.PresubmitError('%APPDATA% is not configured.')]
- path = join(appdata, 'Subversion', 'config')
- else:
- home = input_api.environ.get('HOME', '')
- if not home:
- return [output_api.PresubmitError('$HOME is not configured.')]
- path = join(home, '.subversion', 'config')
-
- error_msg = (
- 'Please look at http://dev.chromium.org/developers/coding-style to\n'
- 'configure your subversion configuration file. This enables automatic\n'
- 'properties to simplify the project maintenance.\n'
- 'Pro-tip: just download and install\n'
- 'http://src.chromium.org/viewvc/chrome/trunk/tools/build/slave/config\n')
-
- try:
- lines = open(path, 'r').read().splitlines()
- # Make sure auto-props is enabled and check for 2 Chromium standard
- # auto-prop.
- if (not '*.cc = svn:eol-style=LF' in lines or
- not '*.pdf = svn:mime-type=application/pdf' in lines or
- not 'enable-auto-props = yes' in lines):
- return [
- output_api.PresubmitNotifyResult(
- 'It looks like you have not configured your subversion config '
- 'file or it is not up-to-date.\n' + error_msg)
- ]
- except (OSError, IOError):
- return [
- output_api.PresubmitNotifyResult(
- 'Can\'t find your subversion config file.\n' + error_msg)
- ]
- return []
-
-
def _CheckAuthorizedAuthor(input_api, output_api):
"""For non-googler/chromites committers, verify the author's email address is
in AUTHORS.
'Possibly invalid OS macro[s] found. Please fix your code\n'
'or add your macro to src/PRESUBMIT.py.', bad_macros)]
+def _CheckForIPCRules(input_api, output_api):
+ """Check for same IPC rules described in
+ http://www.chromium.org/Home/chromium-security/education/security-tips-for-ipc
+ """
+ base_pattern = r'IPC_ENUM_TRAITS\('
+ inclusion_pattern = input_api.re.compile(r'(%s)' % base_pattern)
+ comment_pattern = input_api.re.compile(r'//.*(%s)' % base_pattern)
+
+ problems = []
+ for f in input_api.AffectedSourceFiles(None):
+ local_path = f.LocalPath()
+ if not local_path.endswith('.h'):
+ continue
+ for line_number, line in f.ChangedContents():
+ if inclusion_pattern.search(line) and not comment_pattern.search(line):
+ problems.append(
+ '%s:%d\n %s' % (local_path, line_number, line.strip()))
+
+ if problems:
+ return [output_api.PresubmitPromptWarning(
+ _IPC_ENUM_TRAITS_DEPRECATED, problems)]
+ else:
+ return []
+
def CheckChangeOnUpload(input_api, output_api):
results = []
results.extend(_CommonChecks(input_api, output_api))
+ results.extend(_CheckValidHostsInDEPS(input_api, output_api))
results.extend(_CheckJavaStyle(input_api, output_api))
return results
# TODO(maruel): An option would be to run 'sizes' but not count a failure
# of this step as a try job failure.
'android_aosp': ['compile'],
+ 'android_arm64_dbg_recipe': ['slave_steps'],
+ 'android_chromium_gn_compile_dbg': ['compile'],
'android_chromium_gn_compile_rel': ['compile'],
'android_clang_dbg': ['slave_steps'],
- 'android_dbg': ['slave_steps'],
+ 'android_clang_dbg_recipe': ['slave_steps'],
+ 'android_dbg_tests_recipe': ['slave_steps'],
'cros_x86': ['defaulttests'],
'ios_dbg_simulator': [
'compile',
'ui_unittests',
],
'ios_rel_device': ['compile'],
+ 'ios_rel_device_ninja': ['compile'],
'linux_asan': ['compile'],
'mac_asan': ['compile'],
#TODO(stip): Change the name of this builder to reflect that it's release.
'linux_chromium_chromeos_clang_dbg': ['defaulttests'],
'linux_chromium_chromeos_rel_swarming': ['defaulttests'],
'linux_chromium_compile_dbg': ['defaulttests'],
+ 'linux_chromium_gn_dbg': ['compile'],
'linux_chromium_gn_rel': ['defaulttests'],
'linux_chromium_rel_swarming': ['defaulttests'],
'linux_chromium_clang_dbg': ['defaulttests'],
'win_chromium_compile_dbg': ['defaulttests'],
'win_chromium_dbg': ['defaulttests'],
'win_chromium_rel_swarming': ['defaulttests'],
- 'win_chromium_x64_rel': ['defaulttests'],
+ 'win_chromium_x64_rel_swarming': ['defaulttests'],
'win_gpu': ['defaulttests'],
'win_nacl_sdk_build': ['compile'],
+ 'win8_chromium_rel': ['defaulttests'],
}
if bots:
input_api, output_api))
results.extend(input_api.canned_checks.CheckChangeHasDescription(
input_api, output_api))
- results.extend(_CheckSubversionConfig(input_api, output_api))
return results
def GetPreferredTryMasters(project, change):
files = change.LocalPaths()
- if not files or all(re.search(r'[\\/]OWNERS$', f) for f in files):
+ if not files or all(re.search(r'[\\\/]OWNERS$', f) for f in files):
return {}
- if all(re.search('\.(m|mm)$|(^|[/_])mac[/_.]', f) for f in files):
+ if all(re.search(r'\.(m|mm)$|(^|[\\\/_])mac[\\\/_.]', f) for f in files):
return GetDefaultTryConfigs([
'mac_chromium_compile_dbg',
'mac_chromium_rel_swarming',
return GetDefaultTryConfigs([
'win_chromium_dbg',
'win_chromium_rel_swarming',
+ 'win8_chromium_rel',
])
- if all(re.search('(^|[/_])android[/_.]', f) for f in files):
+ if all(re.search(r'(^|[\\\/_])android[\\\/_.]', f) for f in files):
return GetDefaultTryConfigs([
'android_aosp',
'android_clang_dbg',
- 'android_dbg',
+ 'android_dbg_tests_recipe',
])
- if all(re.search('[/_]ios[/_.]', f) for f in files):
+ if all(re.search(r'[\\\/_]ios[\\\/_.]', f) for f in files):
return GetDefaultTryConfigs(['ios_rel_device', 'ios_dbg_simulator'])
builders = [
+ 'android_arm64_dbg_recipe',
'android_chromium_gn_compile_rel',
+ 'android_chromium_gn_compile_dbg',
'android_clang_dbg',
- 'android_dbg',
+ 'android_clang_dbg_recipe',
+ 'android_dbg_tests_recipe',
'ios_dbg_simulator',
'ios_rel_device',
+ 'ios_rel_device_ninja',
'linux_chromium_chromeos_rel_swarming',
'linux_chromium_clang_dbg',
+ 'linux_chromium_gn_dbg',
'linux_chromium_gn_rel',
'linux_chromium_rel_swarming',
'linux_gpu',
'mac_gpu',
'win_chromium_compile_dbg',
'win_chromium_rel_swarming',
- 'win_chromium_x64_rel',
+ 'win_chromium_x64_rel_swarming',
'win_gpu',
+ 'win8_chromium_rel',
]
# Match things like path/aura/file.cc and path/file_aura.cc.
# Same for chromeos.
- if any(re.search('[/_](aura|chromeos)', f) for f in files):
+ if any(re.search(r'[\\\/_](aura|chromeos)', f) for f in files):
builders.extend([
'linux_chromeos_asan',
'linux_chromium_chromeos_clang_dbg'