| Index: content/browser/renderer_host/media/video_capture_controller.h
 | 
| diff --git a/content/browser/renderer_host/media/video_capture_controller.h b/content/browser/renderer_host/media/video_capture_controller.h
 | 
| index a75de3c22c602fa74f0b4a4ae55916fc90392eb2..e1224f2b276eeb51efd63a44db229fa47ce7afbb 100644
 | 
| --- a/content/browser/renderer_host/media/video_capture_controller.h
 | 
| +++ b/content/browser/renderer_host/media/video_capture_controller.h
 | 
| @@ -23,6 +23,8 @@
 | 
|  
 | 
|  namespace content {
 | 
|  
 | 
| +class VideoCaptureDeviceLaunchObserver;
 | 
| +
 | 
|  // Implementation of media::VideoFrameReceiver that distributes received frames
 | 
|  // to potentially multiple connected clients.
 | 
|  // A call to CreateAndStartDeviceAsync() asynchronously brings up the device. If
 | 
| @@ -31,28 +33,21 @@ namespace content {
 | 
|  // Instances must be RefCountedThreadSafe, because an owner
 | 
|  // (VideoCaptureManager) wants to be able to release its reference during an
 | 
|  // (asynchronously executing) run of CreateAndStartDeviceAsync(). To this end,
 | 
| -// the owner passes in the shared ownership as part of |context_reference| into
 | 
| +// the owner passes in the shared ownership as part of |done_cb| into
 | 
|  // CreateAndStartDeviceAsync().
 | 
|  class CONTENT_EXPORT VideoCaptureController
 | 
|      : public media::VideoFrameReceiver,
 | 
| +      public VideoCaptureDeviceLauncher::Callbacks,
 | 
|        public base::RefCountedThreadSafe<VideoCaptureController> {
 | 
|   public:
 | 
|    VideoCaptureController(
 | 
|        const std::string& device_id,
 | 
|        MediaStreamType stream_type,
 | 
|        const media::VideoCaptureParams& params,
 | 
| -      std::unique_ptr<BuildableVideoCaptureDevice> buildable_device);
 | 
| +      std::unique_ptr<VideoCaptureDeviceLauncher> device_launcher);
 | 
|  
 | 
|    base::WeakPtr<VideoCaptureController> GetWeakPtrForIOThread();
 | 
|  
 | 
| -  // Factory code creating instances of VideoCaptureController may optionally
 | 
| -  // set a VideoFrameConsumerFeedbackObserver. Setting the observer is done in
 | 
| -  // this method separate from the constructor to allow clients to create and
 | 
| -  // use instances before they can provide the observer. (This is the case with
 | 
| -  // VideoCaptureManager).
 | 
| -  void SetConsumerFeedbackObserver(
 | 
| -      std::unique_ptr<media::VideoFrameConsumerFeedbackObserver> observer);
 | 
| -
 | 
|    // Start video capturing and try to use the resolution specified in |params|.
 | 
|    // Buffers will be shared to the client as necessary. The client will continue
 | 
|    // to receive frames from the device until RemoveClient() is called.
 | 
| @@ -119,10 +114,15 @@ class CONTENT_EXPORT VideoCaptureController
 | 
|    void OnStarted() override;
 | 
|    void OnStartedUsingGpuDecode() override;
 | 
|  
 | 
| -  void CreateAndStartDeviceAsync(
 | 
| -      const media::VideoCaptureParams& params,
 | 
| -      BuildableVideoCaptureDevice::Callbacks* callbacks,
 | 
| -      base::OnceClosure done_cb);
 | 
| +  // Implementation of VideoCaptureDeviceLauncher::Callbacks interface:
 | 
| +  void OnDeviceLaunched(
 | 
| +      std::unique_ptr<LaunchedVideoCaptureDevice> device) override;
 | 
| +  void OnDeviceLaunchFailed() override;
 | 
| +  void OnDeviceLaunchAborted() override;
 | 
| +
 | 
| +  void CreateAndStartDeviceAsync(const media::VideoCaptureParams& params,
 | 
| +                                 VideoCaptureDeviceLaunchObserver* callbacks,
 | 
| +                                 base::OnceClosure done_cb);
 | 
|    void ReleaseDeviceAsync(base::OnceClosure done_cb);
 | 
|    bool IsDeviceAlive() const;
 | 
|    void GetPhotoCapabilities(
 | 
| @@ -222,10 +222,9 @@ class CONTENT_EXPORT VideoCaptureController
 | 
|    const std::string device_id_;
 | 
|    const MediaStreamType stream_type_;
 | 
|    const media::VideoCaptureParams parameters_;
 | 
| -  std::unique_ptr<BuildableVideoCaptureDevice> buildable_device_;
 | 
| -
 | 
| -  std::unique_ptr<media::VideoFrameConsumerFeedbackObserver>
 | 
| -      consumer_feedback_observer_;
 | 
| +  std::unique_ptr<VideoCaptureDeviceLauncher> device_launcher_;
 | 
| +  std::unique_ptr<LaunchedVideoCaptureDevice> launched_device_;
 | 
| +  VideoCaptureDeviceLaunchObserver* device_launch_observer_;
 | 
|  
 | 
|    std::vector<BufferContext> buffer_contexts_;
 | 
|  
 | 
| 
 |