Reland "Add wrapper to normalize flags."

This is a reland of 642a49d1eb20b8c5744e745de79ddb585e0f7472

The change has the same effect but is now implemented through mb, rather than specifying a 'script', so that Android's special handling is not skipped.

Original change's description:
> Add wrapper to normalize flags.
>
> Bug: None
> Change-Id: I9d43602cc66198a29dbc0e7586d948ee76c5ec84
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/145204
> Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
> Reviewed-by: Oleh Prypin <oprypin@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#28532}

Bug: webrtc:10616
Change-Id: I60ebd4891dbe8de18c653f8af88181ea966307de
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/145409
Commit-Queue: Oleh Prypin <oprypin@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28572}
diff --git a/tools_webrtc/flags_compatibility.py b/tools_webrtc/flags_compatibility.py
new file mode 100644
index 0000000..9a3e5a1
--- /dev/null
+++ b/tools_webrtc/flags_compatibility.py
@@ -0,0 +1,48 @@
+#!/usr/bin/env python
+
+# Copyright (c) 2019 The WebRTC project authors. All Rights Reserved.
+#
+# Use of this source code is governed by a BSD-style license
+# that can be found in the LICENSE file in the root of the source
+# tree. An additional intellectual property rights grant can be found
+# in the file PATENTS.  All contributing project authors may
+# be found in the AUTHORS file in the root of the source tree.
+
+import argparse
+import logging
+import subprocess
+import sys
+
+
+def main():
+  parser = argparse.ArgumentParser()
+  parser.add_argument('--isolated-script-test-output')
+  parser.add_argument('--isolated-script-test-perf-output')
+  args, unrecognized_args = parser.parse_known_args()
+
+  test_command = _ForcePythonInterpreter(unrecognized_args)
+  if args.isolated_script_test_output:
+    test_command += ['--isolated_script_test_output',
+                     args.isolated_script_test_output]
+  if args.isolated_script_test_perf_output:
+    test_command += ['--isolated_script_test_perf_output',
+                     args.isolated_script_test_perf_output]
+  logging.info('Running %r', test_command)
+
+  return subprocess.call(test_command)
+
+
+def _ForcePythonInterpreter(cmd):
+  """Returns the fixed command line to call the right python executable."""
+  out = cmd[:]
+  if out[0] == 'python':
+    out[0] = sys.executable
+  elif out[0].endswith('.py'):
+    out.insert(0, sys.executable)
+  return out
+
+
+if __name__ == '__main__':
+  # pylint: disable=W0101
+  logging.basicConfig(level=logging.INFO)
+  sys.exit(main())
diff --git a/tools_webrtc/mb/gn_isolate_map.pyl b/tools_webrtc/mb/gn_isolate_map.pyl
index 43bdc17..e38c3b8 100644
--- a/tools_webrtc/mb/gn_isolate_map.pyl
+++ b/tools_webrtc/mb/gn_isolate_map.pyl
@@ -126,7 +126,6 @@
   },
   "webrtc_perf_tests": {
     "label": "//:webrtc_perf_tests",
-    "timeout": 3600,  # 1 hour
     "type": "raw",
   },
 }
diff --git a/tools_webrtc/mb/mb.py b/tools_webrtc/mb/mb.py
index 43b9cb4..9628a67 100755
--- a/tools_webrtc/mb/mb.py
+++ b/tools_webrtc/mb/mb.py
@@ -822,15 +822,19 @@
       '../../testing/test_env.py',
     ]
 
+    if test_type == 'raw':
+      cmdline.append('../../tools_webrtc/flags_compatibility.py')
+      extra_files.append('../../tools_webrtc/flags_compatibility.py')
+
     must_retry = False
     if test_type == 'script':
-      cmdline = ['../../' + self.ToSrcRelPath(isolate_map[target]['script'])]
+      cmdline += ['../../' + self.ToSrcRelPath(isolate_map[target]['script'])]
     elif is_android:
-      cmdline = ['../../build/android/test_wrapper/logdog_wrapper.py',
-                 '--target', target,
-                 '--logdog-bin-cmd', '../../bin/logdog_butler',
-                 '--logcat-output-file', '${ISOLATED_OUTDIR}/logcats',
-                 '--store-tombstones']
+      cmdline += ['../../build/android/test_wrapper/logdog_wrapper.py',
+                  '--target', target,
+                  '--logdog-bin-cmd', '../../bin/logdog_butler',
+                  '--logcat-output-file', '${ISOLATED_OUTDIR}/logcats',
+                  '--store-tombstones']
     else:
       if isolate_map[target].get('use_webcam', False):
         cmdline.append('../../tools_webrtc/ensure_webcam_is_running.py')
diff --git a/tools_webrtc/mb/mb_unittest.py b/tools_webrtc/mb/mb_unittest.py
index c178000..3ae3869 100755
--- a/tools_webrtc/mb/mb_unittest.py
+++ b/tools_webrtc/mb/mb_unittest.py
@@ -453,9 +453,11 @@
     self.assertEqual(files, [
         '../../.vpython',
         '../../testing/test_env.py',
+        '../../tools_webrtc/flags_compatibility.py',
         'base_unittests',
     ])
     self.assertEqual(command, [
+        '../../tools_webrtc/flags_compatibility.py',
         '../../testing/test_env.py',
         './base_unittests',
         '--asan=0',