new_contents: # Copyright (c) 2013 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.
  
  """Top-level presubmit script for Blink.
  
  See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts
  for more details about the presubmit API built into gcl.
  """
  
  
  _EXCLUDED_PATHS = ()
  
  
  def _CheckForVersionControlConflictsInFile(input_api, f):
    pattern = input_api.re.compile('^(?:<<<<<<<|>>>>>>>) |^=======$')
    errors = []
    for line_num, line in f.ChangedContents():
      if pattern.match(line):
        errors.append('    %s:%d %s' % (f.LocalPath(), line_num, line))
    return errors
  
  
  def _CheckForVersionControlConflicts(input_api, output_api):
    """Usually this is not intentional and will cause a compile failure."""
    errors = []
    for f in input_api.AffectedFiles():
      errors.extend(_CheckForVersionControlConflictsInFile(input_api, f))
  
    results = []
    if errors:
      results.append(output_api.PresubmitError(
        'Version control conflict markers found, please resolve.', errors))
    return results
  
  
  def _CommonChecks(input_api, output_api):
    """Checks common to both upload and commit."""
    results = []
    results.extend(input_api.canned_checks.PanProjectChecks(
        input_api, output_api, excluded_paths=_EXCLUDED_PATHS))
    results.extend(_CheckForVersionControlConflicts(input_api, output_api))
    results.extend(_CheckPatchFiles(input_api, output_api))
    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 _CheckPatchFiles(input_api, output_api):
    problems = [f.LocalPath() for f in input_api.AffectedFiles()
        if f.LocalPath().endswith(('.orig', '.rej'))]
    if problems:
      return [output_api.PresubmitError(
          "Don't commit .rej and .orig files.", problems)]
    else:
      return []
  
  
  def CheckChangeOnUpload(input_api, output_api):
    results = []
    results.extend(_CommonChecks(input_api, output_api))
    return results
  
  
  def CheckChangeOnCommit(input_api, output_api):
    results = []
    results.extend(_CommonChecks(input_api, output_api))
    results.extend(input_api.canned_checks.CheckChangeHasDescription(
        input_api, output_api))
    results.extend(_CheckSubversionConfig(input_api, output_api))
    return results
  
subject: Add some basic presubmit checks