Revert "Add support for launching webcam software for use in recipes"

This reverts commit cd469a4ce5315fee62bb77b5e781a18a99da506d.

Reason for revert: ImportError: No module named psutil

Original change's description:
> Add support for launching webcam software for use in recipes
> 
> * Copy ensure_webcam_is_running.py from recipes repo
> * Turn it into a wrapper that can launch another script
>   (fix_python_path is copied from test_env.py as _ForcePythonInterpreter)
> * Support it in mb.py
> * Add it to video_capture_unittests
> 
> No-Try: True
> Bug: chromium:755660
> Change-Id: I376724a77e443620724add7818592e9368d02079
> Reviewed-on: https://webrtc-review.googlesource.com/77320
> Commit-Queue: Oleh Prypin <oprypin@webrtc.org>
> Reviewed-by: Patrik Höglund <phoglund@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#23275}

TBR=phoglund@webrtc.org,oprypin@webrtc.org

Change-Id: I611e49e1c8d8668fe405e462ec4b83e364c3d6e7
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: chromium:755660
Reviewed-on: https://webrtc-review.googlesource.com/77440
Reviewed-by: Oleh Prypin <oprypin@webrtc.org>
Commit-Queue: Oleh Prypin <oprypin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23278}
diff --git a/tools_webrtc/ensure_webcam_is_running.py b/tools_webrtc/ensure_webcam_is_running.py
deleted file mode 100755
index 952ebd6..0000000
--- a/tools_webrtc/ensure_webcam_is_running.py
+++ /dev/null
@@ -1,123 +0,0 @@
-#!/usr/bin/env python
-# Copyright (c) 2014 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.
-
-"""Checks if a virtual webcam is running and starts it if not.
-
-Returns a non-zero return code if the webcam could not be started.
-
-Prerequisites:
-* The Python interpreter must have the psutil package installed.
-* Windows: a scheduled task named 'ManyCam' must exist and be configured to
-  launch ManyCam preconfigured to auto-play the test clip.
-* Mac: ManyCam must be installed in the default location and be preconfigured
-  to auto-play the test clip.
-* Linux: The v4l2loopback kernel module must be compiled and loaded to the
-  kernel already and the v4l2_file_player application must be compiled and put
-  in the location specified below.
-
-NOTICE: When running this script as a buildbot step, make sure to set
-usePTY=False for the build step when adding it, or the subprocess will die as
-soon the step has executed.
-
-If any command line arguments are passed to the script, it is executed as a
-command in a subprocess.
-"""
-
-import os
-# psutil is not installed on non-Linux machines by default.
-import psutil  # pylint: disable=F0401
-import subprocess
-import sys
-import time
-
-
-WEBCAM_WIN = ('schtasks', '/run', '/tn', 'ManyCam')
-WEBCAM_MAC = ('open', '/Applications/ManyCam/ManyCam.app')
-E = os.path.expandvars
-WEBCAM_LINUX = (
-    E('$HOME/fake-webcam-driver/linux/v4l2_file_player/v4l2_file_player'),
-    E('$HOME/webrtc_video_quality/reference_video.yuv'),
-    '640', '480', '/dev/video0',
-)
-
-
-def IsWebCamRunning():
-  if sys.platform == 'win32':
-    process_name = 'ManyCam.exe'
-  elif sys.platform.startswith('darwin'):
-    process_name = 'ManyCam'
-  elif sys.platform.startswith('linux'):
-    process_name = 'v4l2_file_player'
-  else:
-    raise Exception('Unsupported platform: %s' % sys.platform)
-  for p in psutil.process_iter():
-    try:
-      if process_name == p.name:
-        print 'Found a running virtual webcam (%s with PID %s)' % (p.name,
-                                                                   p.pid)
-        return True
-    except psutil.AccessDenied:
-      pass  # This is normal if we query sys processes, etc.
-  return False
-
-
-def StartWebCam():
-  try:
-    if sys.platform == 'win32':
-      subprocess.check_call(WEBCAM_WIN)
-      print 'Successfully launched virtual webcam.'
-    elif sys.platform.startswith('darwin'):
-      subprocess.check_call(WEBCAM_MAC)
-      print 'Successfully launched virtual webcam.'
-    elif sys.platform.startswith('linux'):
-
-      # Must redirect stdout/stderr/stdin to avoid having the subprocess
-      # being killed when the parent shell dies (happens on the bots).
-      process = subprocess.Popen(WEBCAM_LINUX, stdout=subprocess.PIPE,
-                                 stderr=subprocess.PIPE,
-                                 stdin=subprocess.PIPE)
-      # If the v4l2loopback module is not loaded or incorrectly configured,
-      # the process will still launch but will die immediately.
-      # Wait for a second and then check for aliveness to catch such errors.
-      time.sleep(1)
-      if process.poll() is None:
-        print 'Successfully launched virtual webcam with PID %s' % process.pid
-      else:
-        print 'Failed to launch virtual webcam.'
-        return False
-
-  except Exception as e:
-    print 'Failed to launch virtual webcam: %s' % e
-    return False
-
-  return True
-
-
-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
-
-
-def Main(argv):
-  if IsWebCamRunning():
-    return 0
-  if not StartWebCam():
-    return 1
-
-  if argv:
-    return subprocess.call(_ForcePythonInterpreter(argv))
-
-
-if __name__ == '__main__':
-  sys.exit(Main(sys.argv[1:]))
diff --git a/tools_webrtc/mb/gn_isolate_map.pyl b/tools_webrtc/mb/gn_isolate_map.pyl
index 848a9b3..ef18910 100644
--- a/tools_webrtc/mb/gn_isolate_map.pyl
+++ b/tools_webrtc/mb/gn_isolate_map.pyl
@@ -121,7 +121,6 @@
   "video_capture_tests": {
     "label": "//modules/video_capture:video_capture_tests",
     "type": "console_test_launcher",
-    "use_webcam": True,
   },
   "video_engine_tests": {
     "label": "//:video_engine_tests",
diff --git a/tools_webrtc/mb/mb.py b/tools_webrtc/mb/mb.py
index e888367..0291066 100755
--- a/tools_webrtc/mb/mb.py
+++ b/tools_webrtc/mb/mb.py
@@ -844,20 +844,18 @@
     else:
       extra_files = ['../../testing/test_env.py']
 
-      if isolate_map[target].get('use_webcam', False):
-        cmdline.append('../../tools_webrtc/ensure_webcam_is_running.py')
-        extra_files.append('../../tools_webrtc/ensure_webcam_is_running.py')
-
       # This needs to mirror the settings in //build/config/ui.gni:
       # use_x11 = is_linux && !use_ozone.
       use_x11 = is_linux and not 'use_ozone=true' in vals['gn_args']
 
       xvfb = use_x11 and test_type == 'windowed_test_launcher'
       if xvfb:
-        cmdline.append('../../testing/xvfb.py')
-        extra_files.append('../../testing/xvfb.py')
-      else:
-        cmdline.append('../../testing/test_env.py')
+        extra_files += [
+            '../../testing/xvfb.py',
+        ]
+
+      cmdline = (['../../testing/xvfb.py'] if xvfb else
+                 ['../../testing/test_env.py'])
 
       # Memcheck is only supported for linux. Ignore in other platforms.
       if is_linux and 'rtc_use_memcheck=true' in vals['gn_args']:
diff --git a/tools_webrtc/mb/mb_unittest.py b/tools_webrtc/mb/mb_unittest.py
index 379a56d..6dea9b8 100755
--- a/tools_webrtc/mb/mb_unittest.py
+++ b/tools_webrtc/mb/mb_unittest.py
@@ -711,57 +711,6 @@
         '--tsan=0',
     ])
 
-  def test_isolate_test_launcher_with_webcam(self):
-    test_files = {
-      '/tmp/swarming_targets': 'base_unittests\n',
-      '/fake_src/testing/buildbot/gn_isolate_map.pyl': (
-          "{'base_unittests': {"
-          "  'label': '//base:base_unittests',"
-          "  'type': 'console_test_launcher',"
-          "  'use_webcam': True,"
-          "}}\n"
-      ),
-      '/fake_src/out/Default/base_unittests.runtime_deps': (
-          "base_unittests\n"
-          "some_resource_file\n"
-      ),
-    }
-    mbw = self.check(['gen', '-c', 'debug_goma', '//out/Default',
-                      '--swarming-targets-file', '/tmp/swarming_targets',
-                      '--isolate-map-file',
-                      '/fake_src/testing/buildbot/gn_isolate_map.pyl'],
-                     files=test_files, ret=0)
-
-    isolate_file = mbw.files['/fake_src/out/Default/base_unittests.isolate']
-    isolate_file_contents = ast.literal_eval(isolate_file)
-    files = isolate_file_contents['variables']['files']
-    command = isolate_file_contents['variables']['command']
-
-    self.assertEqual(files, [
-        '../../testing/test_env.py',
-        '../../third_party/gtest-parallel/gtest-parallel',
-        '../../third_party/gtest-parallel/gtest_parallel.py',
-        '../../tools_webrtc/ensure_webcam_is_running.py',
-        '../../tools_webrtc/gtest-parallel-wrapper.py',
-        'base_unittests',
-        'some_resource_file',
-    ])
-    self.assertEqual(command, [
-        '../../tools_webrtc/ensure_webcam_is_running.py',
-        '../../testing/test_env.py',
-        '../../tools_webrtc/gtest-parallel-wrapper.py',
-        '--output_dir=${ISOLATED_OUTDIR}/test_logs',
-        '--gtest_color=no',
-        '--timeout=900',
-        '--retry_failed=3',
-        './base_unittests',
-        '--',
-        '--asan=0',
-        '--lsan=0',
-        '--msan=0',
-        '--tsan=0',
-    ])
-
   def test_isolate(self):
     files = {
       '/fake_src/out/Default/toolchain.ninja': "",