| Index: content/renderer/pepper/pepper_media_device_manager.cc
|
| diff --git a/content/renderer/pepper/pepper_media_device_manager.cc b/content/renderer/pepper/pepper_media_device_manager.cc
|
| index b36df317788802e2ef9c2da7099033b9c91916cb..3c5abdc80930d5aad04118783d1a0679b6c9491f 100644
|
| --- a/content/renderer/pepper/pepper_media_device_manager.cc
|
| +++ b/content/renderer/pepper/pepper_media_device_manager.cc
|
| @@ -6,7 +6,7 @@
|
|
|
| #include "base/logging.h"
|
| #include "content/renderer/media/media_stream_dispatcher.h"
|
| -#include "content/renderer/render_view_impl.h"
|
| +#include "content/renderer/render_frame_impl.h"
|
| #include "ppapi/shared_impl/ppb_device_ref_shared.h"
|
|
|
| namespace content {
|
| @@ -23,18 +23,18 @@ ppapi::DeviceRefData FromStreamDeviceInfo(const StreamDeviceInfo& info) {
|
|
|
| } // namespace
|
|
|
| -PepperMediaDeviceManager* PepperMediaDeviceManager::GetForRenderView(
|
| - RenderView* render_view) {
|
| +PepperMediaDeviceManager* PepperMediaDeviceManager::GetForRenderFrame(
|
| + RenderFrame* render_frame) {
|
| PepperMediaDeviceManager* handler =
|
| - PepperMediaDeviceManager::Get(render_view);
|
| + PepperMediaDeviceManager::Get(render_frame);
|
| if (!handler)
|
| - handler = new PepperMediaDeviceManager(render_view);
|
| + handler = new PepperMediaDeviceManager(render_frame);
|
| return handler;
|
| }
|
|
|
| -PepperMediaDeviceManager::PepperMediaDeviceManager(RenderView* render_view)
|
| - : RenderViewObserver(render_view),
|
| - RenderViewObserverTracker<PepperMediaDeviceManager>(render_view),
|
| +PepperMediaDeviceManager::PepperMediaDeviceManager(RenderFrame* render_frame)
|
| + : RenderFrameObserver(render_frame),
|
| + RenderFrameObserverTracker<PepperMediaDeviceManager>(render_frame),
|
| next_id_(1) {}
|
|
|
| PepperMediaDeviceManager::~PepperMediaDeviceManager() {
|
| @@ -50,7 +50,7 @@ int PepperMediaDeviceManager::EnumerateDevices(
|
| int request_id = next_id_++;
|
|
|
| #if defined(ENABLE_WEBRTC)
|
| - GetRenderViewImpl()->media_stream_dispatcher()->EnumerateDevices(
|
| + GetMediaStreamDispatcher()->EnumerateDevices(
|
| request_id,
|
| AsWeakPtr(),
|
| PepperMediaDeviceManager::FromPepperDeviceType(type),
|
| @@ -76,10 +76,20 @@ void PepperMediaDeviceManager::StopEnumerateDevices(int request_id) {
|
| // of EnumerateDevices.
|
| base::MessageLoop::current()->PostTask(
|
| FROM_HERE,
|
| - base::Bind(&MediaStreamDispatcher::StopEnumerateDevices,
|
| - GetRenderViewImpl()->media_stream_dispatcher()->AsWeakPtr(),
|
| - request_id,
|
| - AsWeakPtr()));
|
| + base::Bind(&PepperMediaDeviceManager::StopEnumerateDevicesDelayed,
|
| + AsWeakPtr(),
|
| + request_id));
|
| +#endif
|
| +}
|
| +
|
| +void PepperMediaDeviceManager::StopEnumerateDevicesDelayed(int request_id) {
|
| +#if defined(ENABLE_WEBRTC)
|
| + // This method is being invoked by the message loop at some unknown
|
| + // point-in-time after StopEnumerateDevices(). Therefore, check that
|
| + // render_frame() is not NULL, in order to guarantee
|
| + // GetMediaStreamDispatcher() won't return NULL.
|
| + if (render_frame())
|
| + GetMediaStreamDispatcher()->StopEnumerateDevices(request_id, AsWeakPtr());
|
| #endif
|
| }
|
|
|
| @@ -91,7 +101,7 @@ int PepperMediaDeviceManager::OpenDevice(PP_DeviceType_Dev type,
|
| int request_id = next_id_++;
|
|
|
| #if defined(ENABLE_WEBRTC)
|
| - GetRenderViewImpl()->media_stream_dispatcher()->OpenDevice(
|
| + GetMediaStreamDispatcher()->OpenDevice(
|
| request_id,
|
| AsWeakPtr(),
|
| device_id,
|
| @@ -112,14 +122,13 @@ void PepperMediaDeviceManager::CancelOpenDevice(int request_id) {
|
| open_callbacks_.erase(request_id);
|
|
|
| #if defined(ENABLE_WEBRTC)
|
| - GetRenderViewImpl()->media_stream_dispatcher()->CancelOpenDevice(request_id,
|
| - AsWeakPtr());
|
| + GetMediaStreamDispatcher()->CancelOpenDevice(request_id, AsWeakPtr());
|
| #endif
|
| }
|
|
|
| void PepperMediaDeviceManager::CloseDevice(const std::string& label) {
|
| #if defined(ENABLE_WEBRTC)
|
| - GetRenderViewImpl()->media_stream_dispatcher()->CloseDevice(label);
|
| + GetMediaStreamDispatcher()->CloseDevice(label);
|
| #endif
|
| }
|
|
|
| @@ -128,11 +137,9 @@ int PepperMediaDeviceManager::GetSessionID(PP_DeviceType_Dev type,
|
| #if defined(ENABLE_WEBRTC)
|
| switch (type) {
|
| case PP_DEVICETYPE_DEV_AUDIOCAPTURE:
|
| - return GetRenderViewImpl()->media_stream_dispatcher()->audio_session_id(
|
| - label, 0);
|
| + return GetMediaStreamDispatcher()->audio_session_id(label, 0);
|
| case PP_DEVICETYPE_DEV_VIDEOCAPTURE:
|
| - return GetRenderViewImpl()->media_stream_dispatcher()->video_session_id(
|
| - label, 0);
|
| + return GetMediaStreamDispatcher()->video_session_id(label, 0);
|
| default:
|
| NOTREACHED();
|
| return 0;
|
| @@ -236,8 +243,13 @@ void PepperMediaDeviceManager::NotifyDeviceOpened(int request_id,
|
| callback.Run(request_id, succeeded, label);
|
| }
|
|
|
| -RenderViewImpl* PepperMediaDeviceManager::GetRenderViewImpl() {
|
| - return static_cast<RenderViewImpl*>(render_view());
|
| +MediaStreamDispatcher* PepperMediaDeviceManager::GetMediaStreamDispatcher()
|
| + const {
|
| + DCHECK(render_frame());
|
| + MediaStreamDispatcher* const dispatcher =
|
| + static_cast<RenderFrameImpl*>(render_frame())->GetMediaStreamDispatcher();
|
| + DCHECK(dispatcher);
|
| + return dispatcher;
|
| }
|
|
|
| } // namespace content
|
|
|