| Index: tools/android/findbugs_plugin/test/run_findbugs_plugin_tests.py | 
| diff --git a/tools/android/findbugs_plugin/test/run_findbugs_plugin_tests.py b/tools/android/findbugs_plugin/test/run_findbugs_plugin_tests.py | 
| index a570cdb6045446a32e6836247dc231d27cb22d6b..e36fe8e55c1e0a50e4349c413f8222dfe51edab7 100755 | 
| --- a/tools/android/findbugs_plugin/test/run_findbugs_plugin_tests.py | 
| +++ b/tools/android/findbugs_plugin/test/run_findbugs_plugin_tests.py | 
| @@ -14,7 +14,7 @@ | 
| # remove the expected result of exsting tests. | 
|  | 
|  | 
| -import optparse | 
| +import argparse | 
| import os | 
| import sys | 
|  | 
| @@ -26,28 +26,79 @@ from pylib import constants | 
| from pylib.utils import findbugs | 
|  | 
|  | 
| +_EXPECTED_WARNINGS = set([ | 
| +    findbugs.FindBugsWarning( | 
| +        bug_type='CHROMIUM_SYNCHRONIZED_THIS', | 
| +        start_line=15, | 
| +        end_line=15, | 
| +        file_name='SimpleSynchronizedThis.java', | 
| +        message=( | 
| +            "Shouldn't use synchronized(this)", | 
| +            'In class org.chromium.tools.findbugs.plugin.' | 
| +                + 'SimpleSynchronizedThis', | 
| +            'In method org.chromium.tools.findbugs.plugin.' | 
| +                + 'SimpleSynchronizedThis.synchronizedThis()', | 
| +            'At SimpleSynchronizedThis.java:[line 15]', | 
| +        )), | 
| +    findbugs.FindBugsWarning( | 
| +        bug_type='CHROMIUM_SYNCHRONIZED_METHOD', | 
| +        start_line=14, | 
| +        end_line=14, | 
| +        file_name='SimpleSynchronizedStaticMethod.java', | 
| +        message=( | 
| +            "Shouldn't use synchronized method", | 
| +            'In class org.chromium.tools.findbugs.plugin.' | 
| +                + 'SimpleSynchronizedStaticMethod', | 
| +            'In method org.chromium.tools.findbugs.plugin.' | 
| +                + 'SimpleSynchronizedStaticMethod.synchronizedStaticMethod()', | 
| +            'At SimpleSynchronizedStaticMethod.java:[line 14]', | 
| +        )), | 
| +    findbugs.FindBugsWarning( | 
| +        bug_type='CHROMIUM_SYNCHRONIZED_METHOD', | 
| +        start_line=15, | 
| +        end_line=15, | 
| +        file_name='SimpleSynchronizedMethod.java', | 
| +        message=( | 
| +            "Shouldn't use synchronized method", | 
| +            'In class org.chromium.tools.findbugs.plugin.' | 
| +                + 'SimpleSynchronizedMethod', | 
| +            'In method org.chromium.tools.findbugs.plugin.' | 
| +                + 'SimpleSynchronizedMethod.synchronizedMethod()', | 
| +            'At SimpleSynchronizedMethod.java:[line 15]', | 
| +        )), | 
| +]) | 
| + | 
| + | 
| def main(argv): | 
| -  parser = findbugs.GetCommonParser() | 
|  | 
| -  options, _ = parser.parse_args() | 
| +  parser = argparse.ArgumentParser() | 
| +  parser.add_argument( | 
| +      '-l', '--release-build', action='store_true', dest='release', | 
| +      help='Run the release build of the findbugs plugin test.') | 
| +  args = parser.parse_args() | 
| + | 
| +  test_jar_path = os.path.join( | 
| +      constants.GetOutDirectory( | 
| +          'Release' if args.release else 'Debug'), | 
| +      'lib.java', 'findbugs_plugin_test.jar') | 
|  | 
| -  if not options.known_bugs: | 
| -    options.known_bugs = os.path.join(constants.DIR_SOURCE_ROOT, 'tools', | 
| -                                      'android', 'findbugs_plugin', 'test', | 
| -                                      'expected_result.txt') | 
| +  findbugs_command, findbugs_warnings = findbugs.Run( | 
| +      None, 'org.chromium.tools.findbugs.plugin.*', None, None, None, | 
| +      [test_jar_path]) | 
|  | 
| -  if not options.only_analyze: | 
| -    options.only_analyze = 'org.chromium.tools.findbugs.plugin.*' | 
| +  missing_warnings = _EXPECTED_WARNINGS.difference(findbugs_warnings) | 
| +  if missing_warnings: | 
| +    print 'Missing warnings:' | 
| +    for w in missing_warnings: | 
| +      print '%s' % str(w) | 
|  | 
| -  # crbug.com/449101 | 
| -  # Temporary workaround to have the Android Clang Builder (dbg) bot | 
| -  # pass the findbugs_tests step. | 
| -  if not options.exclude: | 
| -    options.exclude = os.path.join(constants.DIR_SOURCE_ROOT, 'build', | 
| -                                   'android', 'findbugs_filter', | 
| -                                   'findbugs_exclude.xml') | 
| +  unexpected_warnings = findbugs_warnings.difference(_EXPECTED_WARNINGS) | 
| +  if unexpected_warnings: | 
| +    print 'Unexpected warnings:' | 
| +    for w in unexpected_warnings: | 
| +      print '%s' % str(w) | 
|  | 
| -  return findbugs.Run(options) | 
| +  return len(unexpected_warnings) + len(missing_warnings) | 
|  | 
| if __name__ == '__main__': | 
| sys.exit(main(sys.argv)) | 
|  |