| Index: media/capture/video/android/java/src/org/chromium/media/VideoCaptureCamera2.java
|
| diff --git a/media/capture/video/android/java/src/org/chromium/media/VideoCaptureCamera2.java b/media/capture/video/android/java/src/org/chromium/media/VideoCaptureCamera2.java
|
| index 3ea39967b8dfd19cd4ac613df57ed49286a9e024..d473493d0fffc483116821d9652c8dc263936599 100644
|
| --- a/media/capture/video/android/java/src/org/chromium/media/VideoCaptureCamera2.java
|
| +++ b/media/capture/video/android/java/src/org/chromium/media/VideoCaptureCamera2.java
|
| @@ -401,8 +401,7 @@ public class VideoCaptureCamera2 extends VideoCapture {
|
| try {
|
| return manager.getCameraIdList().length;
|
| } catch (CameraAccessException | SecurityException ex) {
|
| - // SecurityException is an undocumented exception, but has been seen in
|
| - // http://crbug/605424.
|
| + // SecurityException is undocumented but seen in the wild: https://crbug/605424.
|
| Log.e(TAG, "getNumberOfCameras: getCameraIdList(): ", ex);
|
| return 0;
|
| }
|
| @@ -530,7 +529,18 @@ public class VideoCaptureCamera2 extends VideoCapture {
|
| changeCameraStateAndNotify(CameraState.OPENING);
|
| final CameraManager manager =
|
| (CameraManager) mContext.getSystemService(Context.CAMERA_SERVICE);
|
| - final Handler mainHandler = new Handler(mContext.getMainLooper());
|
| +
|
| + Handler mainHandler = null;
|
| + if (!mTestMode) {
|
| + mainHandler = new Handler(mContext.getMainLooper());
|
| + } else {
|
| + // Usually we deliver frames on |mContext|s thread, but unit tests
|
| + // occupy its Looper; deliver frames on a background thread instead.
|
| + HandlerThread thread = new HandlerThread("CameraPicture");
|
| + thread.start();
|
| + mainHandler = new Handler(thread.getLooper());
|
| + }
|
| +
|
| final CrStateListener stateListener = new CrStateListener();
|
| try {
|
| manager.openCamera(Integer.toString(mId), stateListener, mainHandler);
|
|
|