| Index: build/java.gypi
 | 
| diff --git a/build/java.gypi b/build/java.gypi
 | 
| index 17320a4f802fe91078679800bbbe8a180947a818..fd9a1bc48202701fa75a81fa2461ed3f901c194e 100644
 | 
| --- a/build/java.gypi
 | 
| +++ b/build/java.gypi
 | 
| @@ -47,17 +47,22 @@
 | 
|      '<(DEPTH)/build/build_output_dirs_android.gyp:build_output_dirs'
 | 
|    ],
 | 
|    'variables': {
 | 
| -    'input_jars_paths': [],
 | 
| +    'android_jar': '<(android_sdk)/android.jar',
 | 
| +    'input_jars_paths': [ '<(android_jar)' ],
 | 
|      'additional_src_dirs': [],
 | 
|      'javac_includes': [],
 | 
|      'jar_name': '<(_target_name).jar',
 | 
|      'jar_path': '<(PRODUCT_DIR)/lib.java/<(jar_name)',
 | 
| +    'excluded_classes': [ '*/R.class', '*/R##*.class' ],
 | 
|      'additional_input_paths': ['>@(additional_R_files)'],
 | 
|      'generated_src_dirs': ['>@(generated_R_dirs)'],
 | 
|      'generated_R_dirs': [],
 | 
|      'additional_R_files': [],
 | 
|      'has_java_resources%': 0,
 | 
|      'java_strings_grd%': '',
 | 
| +    'intermediate_dir': '<(SHARED_INTERMEDIATE_DIR)/<(_target_name)',
 | 
| +    'classes_dir': '<(intermediate_dir)/classes',
 | 
| +    'compile_stamp': '<(intermediate_dir)/compile.stamp',
 | 
|    },
 | 
|    # This all_dependent_settings is used for java targets only. This will add the
 | 
|    # jar path to the classpath of dependent java targets.
 | 
| @@ -70,8 +75,8 @@
 | 
|      ['has_java_resources == 1', {
 | 
|        'variables': {
 | 
|          'res_dir': '<(java_in_dir)/res',
 | 
| -        'out_res_dir': '<(SHARED_INTERMEDIATE_DIR)/<(_target_name)/res',
 | 
| -        'R_dir': '<(SHARED_INTERMEDIATE_DIR)/<(_target_name)/java_R',
 | 
| +        'out_res_dir': '<(intermediate_dir)/res',
 | 
| +        'R_dir': '<(intermediate_dir)/java_R',
 | 
|          'R_file': '<(R_dir)/<(R_package_relpath)/R.java',
 | 
|          'R_text_file': '<(R_dir)/R.txt',
 | 
|          'generated_src_dirs': ['<(R_dir)'],
 | 
| @@ -150,43 +155,56 @@
 | 
|    ],
 | 
|    'actions': [
 | 
|      {
 | 
| -      'action_name': 'ant_<(_target_name)',
 | 
| -      'message': 'Building <(_target_name) java sources.',
 | 
| +      'action_name': 'javac_<(_target_name)',
 | 
| +      'message': 'Compiling <(_target_name) java sources',
 | 
| +      'variables': {
 | 
| +        'all_src_dirs': [
 | 
| +          '>@(java_in_dir)/src',
 | 
| +          '>@(additional_src_dirs)',
 | 
| +          '>@(generated_src_dirs)',
 | 
| +        ],
 | 
| +      },
 | 
|        'inputs': [
 | 
| -        'android/ant/common.xml',
 | 
| -        'android/ant/chromium-jars.xml',
 | 
| +        '<(DEPTH)/build/android/pylib/build_utils.py',
 | 
| +        '<(DEPTH)/build/android/javac.py',
 | 
|          '>!@(find >(java_in_dir) >(additional_src_dirs) -name "*.java")',
 | 
|          '>@(input_jars_paths)',
 | 
|          '>@(additional_input_paths)',
 | 
|        ],
 | 
|        'outputs': [
 | 
| -        '<(jar_path)',
 | 
| +        '<(compile_stamp)',
 | 
|        ],
 | 
|        'action': [
 | 
| -        'ant', '-quiet',
 | 
| -        '-DCONFIGURATION_NAME=<(CONFIGURATION_NAME)',
 | 
| -        '-DANDROID_SDK=<(android_sdk)',
 | 
| -        '-DANDROID_SDK_ROOT=<(android_sdk_root)',
 | 
| -        '-DANDROID_SDK_TOOLS=<(android_sdk_tools)',
 | 
| -        '-DANDROID_SDK_VERSION=<(android_sdk_version)',
 | 
| -        '-DANDROID_GDBSERVER=<(android_gdbserver)',
 | 
| -        '-DPRODUCT_DIR=<(ant_build_out)',
 | 
| -
 | 
| -        '-DADDITIONAL_SRC_DIRS=>(additional_src_dirs)',
 | 
| -        '-DGENERATED_SRC_DIRS=>(generated_src_dirs)',
 | 
| -        '-DINPUT_JARS_PATHS=>(input_jars_paths)',
 | 
| -        '-DJAR_NAME=<(jar_name)',
 | 
| -        '-DOUT_DIR=<(ant_build_out)/<(_target_name)',
 | 
| -        '-DJAVAC_INCLUDES=>(javac_includes)',
 | 
| +        'python', '<(DEPTH)/build/android/javac.py',
 | 
| +        '--output-dir=<(classes_dir)',
 | 
| +        '--classpath=>(input_jars_paths)',
 | 
| +        '--src-dirs=>(all_src_dirs)',
 | 
| +        '--javac-includes=<(javac_includes)',
 | 
| +        '--stamp=<(compile_stamp)',
 | 
|  
 | 
| -        # Add list of inputs to the command line, so if inputs change
 | 
| -        # (e.g. if a Java file is removed), the command will be re-run.
 | 
| -        # TODO(newt): remove this once crbug.com/177552 is fixed in ninja.
 | 
| -        '-DTHIS_IS_IGNORED=>(_inputs)',
 | 
| +        # TODO(newt): remove this once http://crbug.com/177552 is fixed in ninja.
 | 
| +        '--ignore=>!(echo >(_inputs) | md5sum)',
 | 
| +      ]
 | 
| +    },
 | 
| +    {
 | 
| +      'action_name': 'jar_<(_target_name)',
 | 
| +      'message': 'Creating <(_target_name) jar',
 | 
| +      'inputs': [
 | 
| +        '<(DEPTH)/build/android/pylib/build_utils.py',
 | 
| +        '<(DEPTH)/build/android/jar.py',
 | 
| +        '<(compile_stamp)',
 | 
| +      ],
 | 
| +      'outputs': [
 | 
| +        '<(jar_path)',
 | 
| +      ],
 | 
| +      'action': [
 | 
| +        'python', '<(DEPTH)/build/android/jar.py',
 | 
| +        '--classes-dir=<(classes_dir)',
 | 
| +        '--jar-path=<(jar_path)',
 | 
| +        '--excluded-classes=<(excluded_classes)',
 | 
|  
 | 
| -        '-Dbasedir=<(java_in_dir)',
 | 
| -        '-buildfile',
 | 
| -        '<(DEPTH)/build/android/ant/chromium-jars.xml'
 | 
| +        # TODO(newt): remove this once http://crbug.com/177552 is fixed in ninja.
 | 
| +        '--ignore=>!(echo >(_inputs) | md5sum)',
 | 
|        ]
 | 
|      },
 | 
|    ],
 | 
| 
 |