old_contents: #!/usr/bin/env python
  
  # Copyright 2014 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.
  
  '''Uses the closure compiler to check syntax and semantics of a js module
  with dependencies.'''
  
  import os
  import re
  import subprocess
  import sys
  
  _SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
  _CHROME_SOURCE_DIR = os.path.normpath(
      os.path.join(
          _SCRIPT_DIR, *[os.path.pardir] * 6))
  
  # Compiler path.
  _CLOSURE_COMPILER_JAR = os.path.join(
      _CHROME_SOURCE_DIR, 'third_party', 'WebKit', 'Source', 'devtools',
      'scripts', 'closure', 'compiler.jar')
  
  # List of compilation errors to enable with the --jscomp_errors flag.
  _JSCOMP_ERRORS = [ 'accessControls', 'checkTypes', 'checkVars', 'invalidCasts',
                     'missingProperties', 'undefinedNames', 'undefinedVars',
                     'visibility' ]
  
  _java_executable = 'java'
  
  
  def _Error(msg):
    print >>sys.stderr, msg
    sys.exit(1)
  
  
  def _ExecuteCommand(args, ignore_exit_status=False):
    try:
      return subprocess.check_output(args, stderr=subprocess.STDOUT)
    except subprocess.CalledProcessError as e:
      if ignore_exit_status and e.returncode > 0:
        return e.output
      _Error('%s\nCommand \'%s\' returned non-zero exit status %d' %
             (e.output, ' '.join(e.cmd), e.returncode))
    except (OSError, IOError) as e:
      _Error('Error executing %s: %s' % (_java_executable, str(e)))
  
  
  def _CheckJava():
    global _java_executable
    java_home = os.environ.get('JAVAHOME')
    if java_home is not None:
      _java_executable = os.path.join(java_home, 'bin', 'java')
    output = _ExecuteCommand([_java_executable, '-version'])
    match = re.search(r'version "(?:\d+)\.(\d+)', output)
    if match is None or int(match.group(1)) < 7:
      _error('Java 7 or later is required: \n%s' % output)
  
  _CheckJava()
  
  
  def RunCompiler(js_files, externs=[]):
    args = [_java_executable, '-jar', _CLOSURE_COMPILER_JAR]
    args.extend(['--compilation_level', 'SIMPLE_OPTIMIZATIONS'])
    args.extend(['--jscomp_error=%s' % error for error in _JSCOMP_ERRORS])
    args.extend(['--externs=%s' % extern for extern in externs])
    args.extend(['--js=%s' % js for js in js_files])
    args.extend(['--js_output_file', '/dev/null'])
    output = _ExecuteCommand(args, ignore_exit_status=True)
    success = len(output) == 0
    return success, output
  
new_contents: #!/usr/bin/env python
  
  # Copyright 2014 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.
  
  '''Uses the closure compiler to check syntax and semantics of a js module
  with dependencies.'''
  
  import os
  import re
  import subprocess
  import sys
  
  _SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
  _CHROME_SOURCE_DIR = os.path.normpath(
      os.path.join(
          _SCRIPT_DIR, *[os.path.pardir] * 6))
  
  # Compiler path.
  _CLOSURE_COMPILER_JAR = os.path.join(
      _CHROME_SOURCE_DIR, 'third_party', 'WebKit', 'Source', 'devtools',
      'scripts', 'closure', 'compiler.jar')
  
  # List of compilation errors to enable with the --jscomp_errors flag.
  _JSCOMP_ERRORS = [ 'accessControls', 'checkTypes', 'checkVars', 'invalidCasts',
                     'missingProperties', 'undefinedNames', 'undefinedVars',
                     'visibility' ]
  
  _java_executable = 'java'
  
  
  def _Error(msg):
    print >>sys.stderr, msg
    sys.exit(1)
  
  
  def _ExecuteCommand(args, ignore_exit_status=False):
    try:
      return subprocess.check_output(args, stderr=subprocess.STDOUT)
    except subprocess.CalledProcessError as e:
      if ignore_exit_status and e.returncode > 0:
        return e.output
      _Error('%s\nCommand \'%s\' returned non-zero exit status %d' %
             (e.output, ' '.join(e.cmd), e.returncode))
    except (OSError, IOError) as e:
      _Error('Error executing %s: %s' % (_java_executable, str(e)))
  
  
  def _CheckJava():
    global _java_executable
    java_home = os.environ.get('JAVAHOME')
    if java_home is not None:
      _java_executable = os.path.join(java_home, 'bin', 'java')
    output = _ExecuteCommand([_java_executable, '-version'])
    match = re.search(r'version "(?:\d+)\.(\d+)', output)
    if match is None or int(match.group(1)) < 7:
      _Error('Java 7 or later is required: \n%s' % output)
  
  _CheckJava()
  
  
  def RunCompiler(js_files, externs=[]):
    args = [_java_executable, '-jar', _CLOSURE_COMPILER_JAR]
    args.extend(['--compilation_level', 'SIMPLE_OPTIMIZATIONS'])
    args.extend(['--jscomp_error=%s' % error for error in _JSCOMP_ERRORS])
    args.extend(['--externs=%s' % extern for extern in externs])
    args.extend(['--js=%s' % js for js in js_files])
    args.extend(['--js_output_file', '/dev/null'])
    output = _ExecuteCommand(args, ignore_exit_status=True)
    success = len(output) == 0
    return success, output
  
subject: Fix a typo in the ChromeVox jscompilerwrapper.py.