| Index: base/android/jni_generator/jni_generator.py | 
| diff --git a/base/android/jni_generator/jni_generator.py b/base/android/jni_generator/jni_generator.py | 
| index 79a2096a0b365168a8daf1cb21ef09ea1d399737..d57662e44ec454a610ed35747df42e19fc2f09fd 100755 | 
| --- a/base/android/jni_generator/jni_generator.py | 
| +++ b/base/android/jni_generator/jni_generator.py | 
| @@ -957,7 +957,7 @@ def ExtractJarInputFile(jar_file, input_file, out_dir): | 
| return extracted_file_name | 
|  | 
|  | 
| -def GenerateJNIHeader(input_file, output_file, namespace): | 
| +def GenerateJNIHeader(input_file, output_file, namespace, skip_if_same): | 
| try: | 
| if os.path.splitext(input_file)[1] == '.class': | 
| jni_from_javap = JNIFromJavaP.CreateFromClass(input_file, namespace) | 
| @@ -971,6 +971,11 @@ def GenerateJNIHeader(input_file, output_file, namespace): | 
| if output_file: | 
| if not os.path.exists(os.path.dirname(os.path.abspath(output_file))): | 
| os.makedirs(os.path.dirname(os.path.abspath(output_file))) | 
| +    if skip_if_same and os.path.exists(output_file): | 
| +      with file(output_file, 'r') as f: | 
| +        existing_content = f.read() | 
| +        if existing_content == content: | 
| +          return | 
| with file(output_file, 'w') as f: | 
| f.write(content) | 
| else: | 
| @@ -1000,6 +1005,10 @@ See SampleForTests.java for more details. | 
| option_parser.add_option('--output_dir', | 
| help='The output directory. Must be used with ' | 
| '--input') | 
| +  option_parser.add_option('--optimize_generation', type="int", | 
| +                           default=0, help='Whether we should optimize JNI ' | 
| +                           'generation by not regenerating files if they have ' | 
| +                           'not changed.') | 
| options, args = option_parser.parse_args(argv) | 
| if options.jar_file: | 
| input_file = ExtractJarInputFile(options.jar_file, options.input_file, | 
| @@ -1010,7 +1019,8 @@ See SampleForTests.java for more details. | 
| if options.output_dir: | 
| root_name = os.path.splitext(os.path.basename(input_file))[0] | 
| output_file = os.path.join(options.output_dir, root_name) + '_jni.h' | 
| -  GenerateJNIHeader(input_file, output_file, options.namespace) | 
| +  GenerateJNIHeader(input_file, output_file, options.namespace, | 
| +                    options.optimize_generation) | 
|  | 
|  | 
| if __name__ == '__main__': | 
|  |