Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(14)

Unified Diff: content/renderer/render_frame_impl.cc

Issue 364123002: [Cross-Site Isolation] Migrate entire MediaStream verticals to be per-RenderFrame. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: It's random enough. + REBASE Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/renderer/render_frame_impl.h ('k') | content/renderer/render_view_impl.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/renderer/render_frame_impl.cc
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
index af2987fda5b30c540abe6ed6ac8ce081e87930e2..8d5b0ac2e249158607c0ea4060208941ba2bce17 100644
--- a/content/renderer/render_frame_impl.cc
+++ b/content/renderer/render_frame_impl.cc
@@ -652,6 +652,13 @@ void RenderFrameImpl::OnImeConfirmComposition(
#endif // ENABLE_PLUGINS
+MediaStreamDispatcher* RenderFrameImpl::GetMediaStreamDispatcher() {
+ if (!web_user_media_client_)
+ InitializeUserMediaClient();
+ return web_user_media_client_ ?
+ web_user_media_client_->media_stream_dispatcher() : NULL;
+}
+
bool RenderFrameImpl::Send(IPC::Message* message) {
if (is_detaching_) {
delete message;
@@ -1569,6 +1576,7 @@ void RenderFrameImpl::frameFocused() {
void RenderFrameImpl::willClose(blink::WebFrame* frame) {
DCHECK(!frame_ || frame_ == frame);
+ FOR_EACH_OBSERVER(RenderFrameObserver, observers_, FrameWillClose());
FOR_EACH_OBSERVER(RenderViewObserver, render_view_->observers(),
FrameWillClose(frame));
}
@@ -2775,10 +2783,8 @@ void RenderFrameImpl::willStartUsingPeerConnectionHandler(
}
blink::WebUserMediaClient* RenderFrameImpl::userMediaClient() {
- // This can happen in tests, in which case it's OK to return NULL.
- if (!InitializeUserMediaClient())
- return NULL;
-
+ if (!web_user_media_client_)
+ InitializeUserMediaClient();
return web_user_media_client_;
}
@@ -3461,32 +3467,21 @@ void RenderFrameImpl::SyncSelectionIfRequired() {
GetRenderWidget()->UpdateSelectionBounds();
}
-bool RenderFrameImpl::InitializeUserMediaClient() {
- if (web_user_media_client_)
- return true;
-
+void RenderFrameImpl::InitializeUserMediaClient() {
if (!RenderThreadImpl::current()) // Will be NULL during unit tests.
- return false;
+ return;
#if defined(OS_ANDROID)
if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kDisableWebRTC))
- return false;
+ return;
#endif
#if defined(ENABLE_WEBRTC)
- if (!render_view_->media_stream_dispatcher_) {
- render_view_->media_stream_dispatcher_ =
- new MediaStreamDispatcher(render_view_.get());
- }
-
- MediaStreamImpl* media_stream_impl = new MediaStreamImpl(
- render_view_.get(),
- render_view_->media_stream_dispatcher_,
- RenderThreadImpl::current()->GetPeerConnectionDependencyFactory());
- web_user_media_client_ = media_stream_impl;
- return true;
-#else
- return false;
+ DCHECK(!web_user_media_client_);
+ web_user_media_client_ = new MediaStreamImpl(
+ this,
+ RenderThreadImpl::current()->GetPeerConnectionDependencyFactory(),
+ make_scoped_ptr(new MediaStreamDispatcher(this)).Pass());
#endif
}
« no previous file with comments | « content/renderer/render_frame_impl.h ('k') | content/renderer/render_view_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698