| OLD | NEW |
| 1 # Copyright 2013 The Chromium Authors. All rights reserved. | 1 # Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
| 3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
| 4 | 4 |
| 5 import logging | 5 import logging |
| 6 import os | 6 import os |
| 7 import signal | |
| 8 import tempfile | 7 import tempfile |
| 9 | 8 |
| 10 from pylib import cmd_helper | 9 from pylib import cmd_helper |
| 10 from pylib import device_signal |
| 11 from pylib.device import device_errors | 11 from pylib.device import device_errors |
| 12 | 12 |
| 13 # TODO(jbudorick) Remove once telemetry gets switched over. | 13 # TODO(jbudorick) Remove once telemetry gets switched over. |
| 14 import pylib.android_commands | 14 import pylib.android_commands |
| 15 import pylib.device.device_utils | 15 import pylib.device.device_utils |
| 16 | 16 |
| 17 | 17 |
| 18 class VideoRecorder(object): | 18 class VideoRecorder(object): |
| 19 """Records a screen capture video from an Android Device (KitKat or newer). | 19 """Records a screen capture video from an Android Device (KitKat or newer). |
| 20 | 20 |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 66 if self._is_started: | 66 if self._is_started: |
| 67 break | 67 break |
| 68 return self._is_started | 68 return self._is_started |
| 69 | 69 |
| 70 def Stop(self): | 70 def Stop(self): |
| 71 """Stop recording video.""" | 71 """Stop recording video.""" |
| 72 os.remove(self._recorder_stdout) | 72 os.remove(self._recorder_stdout) |
| 73 self._is_started = False | 73 self._is_started = False |
| 74 if not self._recorder: | 74 if not self._recorder: |
| 75 return | 75 return |
| 76 try: | 76 if not self._device.KillAll('screenrecord', signum=device_signal.SIGINT, |
| 77 self._device.KillAll('screenrecord', signum=signal.SIGINT) | 77 quiet=True): |
| 78 except device_errors.CommandFailedError: | |
| 79 logging.warning('Nothing to kill: screenrecord was not running') | 78 logging.warning('Nothing to kill: screenrecord was not running') |
| 80 self._recorder.wait() | 79 self._recorder.wait() |
| 81 | 80 |
| 82 def Pull(self, host_file=None): | 81 def Pull(self, host_file=None): |
| 83 """Pull resulting video file from the device. | 82 """Pull resulting video file from the device. |
| 84 | 83 |
| 85 Args: | 84 Args: |
| 86 host_file: Path to the video file to store on the host. | 85 host_file: Path to the video file to store on the host. |
| 87 Returns: | 86 Returns: |
| 88 Output video file name on the host. | 87 Output video file name on the host. |
| 89 """ | 88 """ |
| 90 host_file_name = host_file or ('screen-recording-%s.mp4' % | 89 host_file_name = host_file or ('screen-recording-%s.mp4' % |
| 91 self._device.old_interface.GetTimestamp()) | 90 self._device.old_interface.GetTimestamp()) |
| 92 host_file_name = os.path.abspath(host_file_name) | 91 host_file_name = os.path.abspath(host_file_name) |
| 93 self._device.old_interface.EnsureHostDirectory(host_file_name) | 92 self._device.old_interface.EnsureHostDirectory(host_file_name) |
| 94 self._device.PullFile(self._device_file, host_file_name) | 93 self._device.PullFile(self._device_file, host_file_name) |
| 95 self._device.RunShellCommand('rm -f "%s"' % self._device_file) | 94 self._device.RunShellCommand('rm -f "%s"' % self._device_file) |
| 96 return host_file_name | 95 return host_file_name |
| OLD | NEW |