Remove a bunch of cruft from PRESUBMIT.py.

(I had to duplicate some changes from
https://codereview.chromium.org/1067023003/, which hasn't landed yet.)

R=jamesr@chromium.org
BUG=

Review URL: https://codereview.chromium.org/1070393002
diff --git a/PRESUBMIT.py b/PRESUBMIT.py
index 00995e8..0e7adb7 100644
--- a/PRESUBMIT.py
+++ b/PRESUBMIT.py
@@ -10,29 +10,20 @@
 
 
 _EXCLUDED_PATHS = (
-    r"^breakpad[\\\/].*",
-    r"^native_client_sdk[\\\/]src[\\\/]build_tools[\\\/]make_rules.py",
-    r"^native_client_sdk[\\\/]src[\\\/]build_tools[\\\/]make_simple.py",
-    r"^native_client_sdk[\\\/]src[\\\/]tools[\\\/].*.mk",
-    r"^net[\\\/]tools[\\\/]spdyshark[\\\/].*",
-    r"^skia[\\\/].*",
-    r"^v8[\\\/].*",
+    r"^native_client_sdk/src/build_tools/make_rules.py",
+    r"^native_client_sdk/src/build_tools/make_simple.py",
+    r"^native_client_sdk/src/tools/.*.mk",
+    r"^skia/.*",
+    r"^v8/.*",
     r".*MakeFile$",
     r".+_autogen\.h$",
-    r".+[\\\/]pnacl_shim\.c$",
-    r"^gpu[\\\/]config[\\\/].*_list_json\.cc$",
-    r"^tools[\\\/]android_stack_parser[\\\/].*"
-)
-
-# 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[\\\/]tools[\\\/]plugin[\\\/].*",
+    r".+/pnacl_shim\.c$",
+    r"^gpu/config/.*_list_json\.cc$",
+    r"^tools/android_stack_parser/.*"
 )
 
 _SKY_PATHS = (
-    r"^sky[\\\/].*",
+    r"^sky/.*",
 )
 
 # Fragment of a regular expression that matches C++ and Objective-C++
@@ -42,20 +33,16 @@
 # 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'.+_(app|browser|perf|pixel|unit)?test(_[a-z]+)?%s' %
         _IMPLEMENTATION_EXTENSIONS,
     r'.+profile_sync_service_harness%s' % _IMPLEMENTATION_EXTENSIONS,
-    r'.*[\\\/](test|tool(s)?)[\\\/].*',
-    # content_shell is used for running layout tests.
-    r'content[\\\/]shell[\\\/].*',
-    # At request of folks maintaining this folder.
-    r'chrome[\\\/]browser[\\\/]automation[\\\/].*',
+    r'.*/(test|tool(s)?)/.*',
     # 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 = (
@@ -70,82 +57,6 @@
     'marja@chromium.org if this is not the case.')
 
 
-_BANNED_OBJC_FUNCTIONS = (
-    (
-      'addTrackingRect:',
-      (
-       'The use of -[NSView addTrackingRect:owner:userData:assumeInside:] is'
-       'prohibited. Please use CrTrackingArea instead.',
-       'http://dev.chromium.org/developers/coding-style/cocoa-dos-and-donts',
-      ),
-      False,
-    ),
-    (
-      r'/NSTrackingArea\W',
-      (
-       'The use of NSTrackingAreas is prohibited. Please use CrTrackingArea',
-       'instead.',
-       'http://dev.chromium.org/developers/coding-style/cocoa-dos-and-donts',
-      ),
-      False,
-    ),
-    (
-      'convertPointFromBase:',
-      (
-       'The use of -[NSView convertPointFromBase:] is almost certainly wrong.',
-       'Please use |convertPoint:(point) fromView:nil| instead.',
-       'http://dev.chromium.org/developers/coding-style/cocoa-dos-and-donts',
-      ),
-      True,
-    ),
-    (
-      'convertPointToBase:',
-      (
-       'The use of -[NSView convertPointToBase:] is almost certainly wrong.',
-       'Please use |convertPoint:(point) toView:nil| instead.',
-       'http://dev.chromium.org/developers/coding-style/cocoa-dos-and-donts',
-      ),
-      True,
-    ),
-    (
-      'convertRectFromBase:',
-      (
-       'The use of -[NSView convertRectFromBase:] is almost certainly wrong.',
-       'Please use |convertRect:(point) fromView:nil| instead.',
-       'http://dev.chromium.org/developers/coding-style/cocoa-dos-and-donts',
-      ),
-      True,
-    ),
-    (
-      'convertRectToBase:',
-      (
-       'The use of -[NSView convertRectToBase:] is almost certainly wrong.',
-       'Please use |convertRect:(point) toView:nil| instead.',
-       'http://dev.chromium.org/developers/coding-style/cocoa-dos-and-donts',
-      ),
-      True,
-    ),
-    (
-      'convertSizeFromBase:',
-      (
-       'The use of -[NSView convertSizeFromBase:] is almost certainly wrong.',
-       'Please use |convertSize:(point) fromView:nil| instead.',
-       'http://dev.chromium.org/developers/coding-style/cocoa-dos-and-donts',
-      ),
-      True,
-    ),
-    (
-      'convertSizeToBase:',
-      (
-       'The use of -[NSView convertSizeToBase:] is almost certainly wrong.',
-       'Please use |convertSize:(point) toView:nil| instead.',
-       'http://dev.chromium.org/developers/coding-style/cocoa-dos-and-donts',
-      ),
-      True,
-    ),
-)
-
-
 _BANNED_CPP_FUNCTIONS = (
     # Make sure that gtest's FRIEND_TEST() macro is not used; the
     # FRIEND_TEST_ALL_PREFIXES() macro from base/gtest_prod_util.h should be
@@ -167,15 +78,8 @@
       ),
       True,
       (
-        r"^base[\\\/]process[\\\/]process_metrics_linux\.cc$",
-        r"^chrome[\\\/]browser[\\\/]chromeos[\\\/]boot_times_loader\.cc$",
-        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[\\\/]edk[\\\/]embedder[\\\/]" +
-            r"simple_platform_shared_buffer_posix\.cc$",
-        r"^net[\\\/]disk_cache[\\\/]cache_util\.cc$",
-        r"^net[\\\/]url_request[\\\/]test_url_fetcher_factory\.cc$",
+        r"^base/process/process_metrics_linux\.cc$",
+        r"^mojo/edk/embedder/simple_platform_shared_buffer_posix\.cc$",
       ),
     ),
     (
@@ -235,8 +139,7 @@
       True,
       (
         # Files that #define IGNORE_EINTR.
-        r'^base[\\\/]posix[\\\/]eintr_wrapper\.h$',
-        r'^ppapi[\\\/]tests[\\\/]test_broker\.cc$',
+        r'^base/posix/eintr_wrapper\.h$',
       ),
     ),
     (
@@ -246,16 +149,10 @@
         'gin::Wrappable instead. See http://crbug.com/334679',
       ),
       True,
-      (
-        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.
@@ -417,25 +314,6 @@
   warnings = []
   errors = []
 
-  file_filter = lambda f: f.LocalPath().endswith(('.mm', '.m', '.h'))
-  for f in input_api.AffectedFiles(file_filter=file_filter):
-    for line_num, line in f.ChangedContents():
-      for func_name, message, error in _BANNED_OBJC_FUNCTIONS:
-        matched = False
-        if func_name[0:1] == '/':
-          regex = func_name[1:]
-          if input_api.re.search(regex, line):
-            matched = True
-        elif func_name in line:
-            matched = True
-        if matched:
-          problems = warnings;
-          if error:
-            problems = errors;
-          problems.append('    %s:%d:' % (f.LocalPath(), line_num))
-          for message_line in message:
-            problems.append('      %s' % message_line)
-
   file_filter = lambda f: f.LocalPath().endswith(('.cc', '.mm', '.h'))
   for f in input_api.AffectedFiles(file_filter=file_filter):
     for line_num, line in f.ChangedContents():
@@ -734,7 +612,7 @@
     """
     return input_api.FilterSourceFile(
       affected_file,
-      white_list=(r'^(android_webview|base|content|net)[\\\/].*', ),
+      white_list=(r'^base/.*', ),
       black_list=(_EXCLUDED_PATHS +
                   _TEST_CODE_EXCLUDED_PATHS +
                   input_api.DEFAULT_BLACK_LIST))
@@ -776,120 +654,16 @@
   return results
 
 
-def _FilesToCheckForIncomingDeps(re, changed_lines):
-  """Helper method for _CheckAddedDepsHaveTargetApprovals. Returns
-  a set of DEPS entries that we should look up.
-
-  For a directory (rather than a specific filename) we fake a path to
-  a specific filename by adding /DEPS. This is chosen as a file that
-  will seldom or never be subject to per-file include_rules.
-  """
-  # We ignore deps entries on auto-generated directories.
-  AUTO_GENERATED_DIRS = ['grit', 'jni']
-
-  # This pattern grabs the path without basename in the first
-  # parentheses, and the basename (if present) in the second. It
-  # relies on the simple heuristic that if there is a basename it will
-  # be a header file ending in ".h".
-  pattern = re.compile(
-      r"""['"]\+([^'"]+?)(/[a-zA-Z0-9_]+\.h)?['"].*""")
-  results = set()
-  for changed_line in changed_lines:
-    m = pattern.match(changed_line)
-    if m:
-      path = m.group(1)
-      if path.split('/')[0] not in AUTO_GENERATED_DIRS:
-        if m.group(2):
-          results.add('%s%s' % (path, m.group(2)))
-        else:
-          results.add('%s/DEPS' % path)
-  return results
-
-
-def _CheckAddedDepsHaveTargetApprovals(input_api, output_api):
-  """When a dependency prefixed with + is added to a DEPS file, we
-  want to make sure that the change is reviewed by an OWNER of the
-  target file or directory, to avoid layering violations from being
-  introduced. This check verifies that this happens.
-  """
-  changed_lines = set()
-  for f in input_api.AffectedFiles():
-    filename = input_api.os_path.basename(f.LocalPath())
-    if filename == 'DEPS':
-      changed_lines |= set(line.strip()
-                           for line_num, line
-                           in f.ChangedContents())
-  if not changed_lines:
-    return []
-
-  virtual_depended_on_files = _FilesToCheckForIncomingDeps(input_api.re,
-                                                           changed_lines)
-  if not virtual_depended_on_files:
-    return []
-
-  if input_api.is_committing:
-    if input_api.tbr:
-      return [output_api.PresubmitNotifyResult(
-          '--tbr was specified, skipping OWNERS check for DEPS additions')]
-    if not input_api.change.issue:
-      return [output_api.PresubmitError(
-          "DEPS approval by OWNERS check failed: this change has "
-          "no Rietveld issue number, so we can't check it for approvals.")]
-    output = output_api.PresubmitError
-  else:
-    output = output_api.PresubmitNotifyResult
-
-  owners_db = input_api.owners_db
-  owner_email, reviewers = input_api.canned_checks._RietveldOwnerAndReviewers(
-      input_api,
-      owners_db.email_regexp,
-      approval_needed=input_api.is_committing)
-
-  owner_email = owner_email or input_api.change.author_email
-
-  reviewers_plus_owner = set(reviewers)
-  if owner_email:
-    reviewers_plus_owner.add(owner_email)
-  missing_files = owners_db.files_not_covered_by(virtual_depended_on_files,
-                                                 reviewers_plus_owner)
-
-  # We strip the /DEPS part that was added by
-  # _FilesToCheckForIncomingDeps to fake a path to a file in a
-  # directory.
-  def StripDeps(path):
-    start_deps = path.rfind('/DEPS')
-    if start_deps != -1:
-      return path[:start_deps]
-    else:
-      return path
-  unapproved_dependencies = ["'+%s'," % StripDeps(path)
-                             for path in missing_files]
-
-  if unapproved_dependencies:
-    output_list = [
-      output('Missing LGTM from OWNERS of dependencies added to DEPS:\n    %s' %
-             '\n    '.join(sorted(unapproved_dependencies)))]
-    if not input_api.is_committing:
-      suggested_owners = owners_db.reviewers_for(missing_files, owner_email)
-      output_list.append(output(
-          'Suggested missing target path OWNERS:\n    %s' %
-          '\n    '.join(suggested_owners or [])))
-    return output_list
-
-  return []
-
-
 def _CheckSpamLogging(input_api, output_api):
   file_inclusion_pattern = r'.+%s' % _IMPLEMENTATION_EXTENSIONS
   black_list = (_EXCLUDED_PATHS +
                 _TEST_CODE_EXCLUDED_PATHS +
                 input_api.DEFAULT_BLACK_LIST +
-                (r"^base[\\\/]logging\.h$",
-                 r"^base[\\\/]logging\.cc$",
-                 r"^shell[\\\/]native_application_loader\.cc$",
-                 r"^sandbox[\\\/]linux[\\\/].*",
-                 r"^tools[\\\/]",
-                 r"^ui[\\\/]aura[\\\/]bench[\\\/]bench_main\.cc$",))
+                (r"^base/logging\.h$",
+                 r"^base/logging\.cc$",
+                 r"^shell/native_application_loader\.cc$",
+                 r"^sandbox/linux/.*",
+                 r"^tools/",))
   source_file_filter = lambda x: input_api.FilterSourceFile(
       x, white_list=(file_inclusion_pattern,), black_list=black_list)
 
@@ -1025,20 +799,9 @@
   return []
 
 
-def _GetJSONParseError(input_api, filename, eat_comments=True):
+def _GetJSONParseError(input_api, filename):
   try:
     contents = input_api.ReadFile(filename)
-    if eat_comments:
-      json_comment_eater = input_api.os_path.join(
-          input_api.PresubmitLocalPath(),
-          'tools', 'json_comment_eater', 'json_comment_eater.py')
-      process = input_api.subprocess.Popen(
-          [input_api.python_executable, json_comment_eater],
-          stdin=input_api.subprocess.PIPE,
-          stdout=input_api.subprocess.PIPE,
-          universal_newlines=True)
-      (contents, _) = process.communicate(input=contents)
-
     input_api.json.loads(contents)
   except ValueError as e:
     return e
@@ -1052,12 +815,11 @@
   }
   # These paths contain test data and other known invalid JSON files.
   excluded_patterns = [
-    r'test[\\\/]data[\\\/]',
-    r'^components[\\\/]policy[\\\/]resources[\\\/]policy_templates\.json$',
+    r'test/data/',
   ]
   # Most JSON files are preprocessed and support comments, but these do not.
   json_no_comments_patterns = [
-    r'^testing[\\\/]',
+    r'^testing/',
   ]
 
   def get_action(affected_file):
@@ -1084,13 +846,7 @@
   for affected_file in input_api.AffectedFiles(
       file_filter=FilterFile, include_deletes=False):
     action = get_action(affected_file)
-    kwargs = {}
-    if (action == _GetJSONParseError and
-        MatchesFile(json_no_comments_patterns, affected_file.LocalPath())):
-      kwargs['eat_comments'] = False
-    parse_error = action(input_api,
-                         affected_file.AbsoluteLocalPath(),
-                         **kwargs)
+    parse_error = action(input_api, affected_file.AbsoluteLocalPath())
     if parse_error:
       results.append(output_api.PresubmitError('%s could not be parsed: %s' %
           (affected_file.LocalPath(), parse_error)))
@@ -1182,8 +938,7 @@
   """Checks common to both upload and commit."""
   results = []
   results.extend(input_api.canned_checks.PanProjectChecks(
-      input_api, output_api,
-      excluded_paths=_EXCLUDED_PATHS + _TESTRUNNER_PATHS + _SKY_PATHS))
+      input_api, output_api, excluded_paths=_EXCLUDED_PATHS + _SKY_PATHS))
   results.extend(_CheckAuthorizedAuthor(input_api, output_api))
   results.extend(
       _CheckNoProductionCodeUsingTestOnlyFunctions(input_api, output_api))
@@ -1205,7 +960,6 @@
   results.extend(_CheckForInvalidIfDefinedMacros(input_api, output_api))
   # TODO(danakj): Remove this when base/move.h is removed.
   results.extend(_CheckForUsingSideEffectsOfPass(input_api, output_api))
-  results.extend(_CheckAddedDepsHaveTargetApprovals(input_api, output_api))
   results.extend(
       input_api.canned_checks.CheckChangeHasNoTabs(
           input_api,
@@ -1217,7 +971,6 @@
   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))
   results.extend(_CheckForOverrideAndFinalRules(input_api, output_api))
   results.extend(_CheckForMojoURL(input_api, output_api))
 
@@ -1380,31 +1133,6 @@
   return errors
 
 
-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 _CheckForMojoURL(input_api, output_api):
   """Check that mojo url do not use mojo://."""
   errors = []
@@ -1476,7 +1204,7 @@
   import re
   files = change.LocalPaths()
 
-  if not files or all(re.search(r'[\\\/]OWNERS$', f) for f in files):
+  if not files:
     return {}
 
   builders = [