Chromium Code Reviews| Index: content/renderer/pepper/pepper_platform_video_capture.cc |
| diff --git a/content/renderer/pepper/pepper_platform_video_capture.cc b/content/renderer/pepper/pepper_platform_video_capture.cc |
| index 74eea87f684740016e9e13a3c9924dcc33446b01..786ca6ac47019c71b6dd126d4180990431508ac9 100644 |
| --- a/content/renderer/pepper/pepper_platform_video_capture.cc |
| +++ b/content/renderer/pepper/pepper_platform_video_capture.cc |
| @@ -10,19 +10,19 @@ |
| #include "content/renderer/media/video_capture_impl_manager.h" |
| #include "content/renderer/pepper/pepper_media_device_manager.h" |
| #include "content/renderer/pepper/pepper_video_capture_host.h" |
| +#include "content/renderer/render_frame_impl.h" |
| #include "content/renderer/render_thread_impl.h" |
| -#include "content/renderer/render_view_impl.h" |
| #include "media/base/bind_to_current_loop.h" |
| #include "url/gurl.h" |
| namespace content { |
| PepperPlatformVideoCapture::PepperPlatformVideoCapture( |
| - const base::WeakPtr<RenderViewImpl>& render_view, |
| + int render_frame_id, |
| const std::string& device_id, |
| const GURL& document_url, |
| PepperVideoCaptureHost* handler) |
| - : render_view_(render_view), |
| + : render_frame_id_(render_frame_id), |
| device_id_(device_id), |
| session_id_(0), |
| handler_(handler), |
| @@ -31,8 +31,9 @@ PepperPlatformVideoCapture::PepperPlatformVideoCapture( |
| weak_factory_(this) { |
| // We need to open the device and obtain the label and session ID before |
| // initializing. |
| - if (render_view_.get()) { |
| - pending_open_device_id_ = GetMediaDeviceManager()->OpenDevice( |
| + PepperMediaDeviceManager* const device_manager = GetMediaDeviceManager(); |
| + if (device_manager) { |
| + pending_open_device_id_ = device_manager->OpenDevice( |
| PP_DEVICETYPE_DEV_VIDEOCAPTURE, |
| device_id, |
| document_url, |
| @@ -75,16 +76,18 @@ void PepperPlatformVideoCapture::DetachEventHandler() { |
| release_device_cb_.Run(); |
| release_device_cb_.Reset(); |
| } |
| - if (render_view_.get()) { |
| - if (!label_.empty()) { |
| - GetMediaDeviceManager()->CloseDevice(label_); |
| - label_.clear(); |
| - } |
| - if (pending_open_device_) { |
| - GetMediaDeviceManager()->CancelOpenDevice(pending_open_device_id_); |
| - pending_open_device_ = false; |
| - pending_open_device_id_ = -1; |
| - } |
| + if (!label_.empty()) { |
| + PepperMediaDeviceManager* const device_manager = GetMediaDeviceManager(); |
| + if (device_manager) |
| + device_manager->CloseDevice(label_); |
| + label_.clear(); |
| + } |
| + if (pending_open_device_) { |
| + PepperMediaDeviceManager* const device_manager = GetMediaDeviceManager(); |
| + if (device_manager) |
| + device_manager->CancelOpenDevice(pending_open_device_id_); |
| + pending_open_device_ = false; |
| + pending_open_device_id_ = -1; |
| } |
| } |
| @@ -101,10 +104,11 @@ void PepperPlatformVideoCapture::OnDeviceOpened(int request_id, |
| pending_open_device_ = false; |
| pending_open_device_id_ = -1; |
| - succeeded = succeeded && render_view_.get(); |
| + PepperMediaDeviceManager* const device_manager = GetMediaDeviceManager(); |
| + succeeded &= !!device_manager; |
|
yzshen1
2014/07/14 17:19:55
nit: it seems more natural to use logical AND inst
yzshen1
2014/07/14 21:15:32
It seems you haven't replied to this comment.
ncarter (slow)
2014/07/14 21:24:11
it's a matter of style, but I agree with yzshen. I
miu
2014/07/15 00:09:14
Done. No disagreement here, I just missed the com
|
| if (succeeded) { |
| label_ = label; |
| - session_id_ = GetMediaDeviceManager()->GetSessionID( |
| + session_id_ = device_manager->GetSessionID( |
| PP_DEVICETYPE_DEV_VIDEOCAPTURE, label); |
| VideoCaptureImplManager* manager = |
| RenderThreadImpl::current()->video_capture_impl_manager(); |
| @@ -145,7 +149,10 @@ void PepperPlatformVideoCapture::OnFrameReady( |
| } |
| PepperMediaDeviceManager* PepperPlatformVideoCapture::GetMediaDeviceManager() { |
| - return PepperMediaDeviceManager::GetForRenderView(render_view_.get()); |
| + RenderFrameImpl* const render_frame = |
| + RenderFrameImpl::FromRoutingID(render_frame_id_); |
| + return render_frame ? |
| + PepperMediaDeviceManager::GetForRenderFrame(render_frame) : NULL; |
| } |
| } // namespace content |