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

Side by Side 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: TabCaptureRegistry: Keep track of original target RenderFrameHost, for OnRequestUpdate(). 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/renderer/render_frame_impl.h" 5 #include "content/renderer/render_frame_impl.h"
6 6
7 #include <map> 7 #include <map>
8 #include <string> 8 #include <string>
9 9
10 #include "base/auto_reset.h" 10 #include "base/auto_reset.h"
(...skipping 632 matching lines...) Expand 10 before | Expand all | Expand 10 after
643 // Mimics the order of events sent by WebKit. 643 // Mimics the order of events sent by WebKit.
644 // See WebCore::Editor::setComposition() for the corresponding code. 644 // See WebCore::Editor::setComposition() for the corresponding code.
645 render_view_->focused_pepper_plugin()->HandleCompositionEnd(last_text); 645 render_view_->focused_pepper_plugin()->HandleCompositionEnd(last_text);
646 render_view_->focused_pepper_plugin()->HandleTextInput(last_text); 646 render_view_->focused_pepper_plugin()->HandleTextInput(last_text);
647 } 647 }
648 pepper_composition_text_.clear(); 648 pepper_composition_text_.clear();
649 } 649 }
650 650
651 #endif // ENABLE_PLUGINS 651 #endif // ENABLE_PLUGINS
652 652
653 MediaStreamDispatcher* RenderFrameImpl::GetMediaStreamDispatcher() {
654 if (!web_user_media_client_)
655 InitializeUserMediaClient();
656 return web_user_media_client_ ?
657 web_user_media_client_->media_stream_dispatcher() : NULL;
658 }
659
653 bool RenderFrameImpl::Send(IPC::Message* message) { 660 bool RenderFrameImpl::Send(IPC::Message* message) {
654 if (is_detaching_) { 661 if (is_detaching_) {
655 delete message; 662 delete message;
656 return false; 663 return false;
657 } 664 }
658 if (is_swapped_out_ || render_view_->is_swapped_out()) { 665 if (is_swapped_out_ || render_view_->is_swapped_out()) {
659 if (!SwappedOutMessages::CanSendWhileSwappedOut(message)) { 666 if (!SwappedOutMessages::CanSendWhileSwappedOut(message)) {
660 delete message; 667 delete message;
661 return false; 668 return false;
662 } 669 }
(...skipping 888 matching lines...) Expand 10 before | Expand all | Expand 10 after
1551 } 1558 }
1552 } 1559 }
1553 1560
1554 void RenderFrameImpl::frameFocused() { 1561 void RenderFrameImpl::frameFocused() {
1555 Send(new FrameHostMsg_FrameFocused(routing_id_)); 1562 Send(new FrameHostMsg_FrameFocused(routing_id_));
1556 } 1563 }
1557 1564
1558 void RenderFrameImpl::willClose(blink::WebFrame* frame) { 1565 void RenderFrameImpl::willClose(blink::WebFrame* frame) {
1559 DCHECK(!frame_ || frame_ == frame); 1566 DCHECK(!frame_ || frame_ == frame);
1560 1567
1568 FOR_EACH_OBSERVER(RenderFrameObserver, observers_, FrameWillClose());
1561 FOR_EACH_OBSERVER(RenderViewObserver, render_view_->observers(), 1569 FOR_EACH_OBSERVER(RenderViewObserver, render_view_->observers(),
1562 FrameWillClose(frame)); 1570 FrameWillClose(frame));
1563 } 1571 }
1564 1572
1565 void RenderFrameImpl::didChangeName(blink::WebLocalFrame* frame, 1573 void RenderFrameImpl::didChangeName(blink::WebLocalFrame* frame,
1566 const blink::WebString& name) { 1574 const blink::WebString& name) {
1567 DCHECK(!frame_ || frame_ == frame); 1575 DCHECK(!frame_ || frame_ == frame);
1568 if (!render_view_->renderer_preferences_.report_frame_name_changes) 1576 if (!render_view_->renderer_preferences_.report_frame_name_changes)
1569 return; 1577 return;
1570 1578
(...skipping 1186 matching lines...) Expand 10 before | Expand all | Expand 10 after
2757 void RenderFrameImpl::willStartUsingPeerConnectionHandler( 2765 void RenderFrameImpl::willStartUsingPeerConnectionHandler(
2758 blink::WebLocalFrame* frame, 2766 blink::WebLocalFrame* frame,
2759 blink::WebRTCPeerConnectionHandler* handler) { 2767 blink::WebRTCPeerConnectionHandler* handler) {
2760 DCHECK(!frame_ || frame_ == frame); 2768 DCHECK(!frame_ || frame_ == frame);
2761 #if defined(ENABLE_WEBRTC) 2769 #if defined(ENABLE_WEBRTC)
2762 static_cast<RTCPeerConnectionHandler*>(handler)->associateWithFrame(frame); 2770 static_cast<RTCPeerConnectionHandler*>(handler)->associateWithFrame(frame);
2763 #endif 2771 #endif
2764 } 2772 }
2765 2773
2766 blink::WebUserMediaClient* RenderFrameImpl::userMediaClient() { 2774 blink::WebUserMediaClient* RenderFrameImpl::userMediaClient() {
2767 // This can happen in tests, in which case it's OK to return NULL. 2775 if (!web_user_media_client_)
2768 if (!InitializeUserMediaClient()) 2776 InitializeUserMediaClient();
2769 return NULL;
2770
2771 return web_user_media_client_; 2777 return web_user_media_client_;
2772 } 2778 }
2773 2779
2774 blink::WebMIDIClient* RenderFrameImpl::webMIDIClient() { 2780 blink::WebMIDIClient* RenderFrameImpl::webMIDIClient() {
2775 if (!midi_dispatcher_) 2781 if (!midi_dispatcher_)
2776 midi_dispatcher_ = new MidiDispatcher(this); 2782 midi_dispatcher_ = new MidiDispatcher(this);
2777 return midi_dispatcher_; 2783 return midi_dispatcher_;
2778 } 2784 }
2779 2785
2780 bool RenderFrameImpl::willCheckAndDispatchMessageEvent( 2786 bool RenderFrameImpl::willCheckAndDispatchMessageEvent(
(...skipping 662 matching lines...) Expand 10 before | Expand all | Expand 10 after
3443 selection_text_ = text; 3449 selection_text_ = text;
3444 selection_text_offset_ = offset; 3450 selection_text_offset_ = offset;
3445 selection_range_ = range; 3451 selection_range_ = range;
3446 // This IPC is dispatched by RenderWidetHost, so use its routing ID. 3452 // This IPC is dispatched by RenderWidetHost, so use its routing ID.
3447 Send(new ViewHostMsg_SelectionChanged( 3453 Send(new ViewHostMsg_SelectionChanged(
3448 GetRenderWidget()->routing_id(), text, offset, range)); 3454 GetRenderWidget()->routing_id(), text, offset, range));
3449 } 3455 }
3450 GetRenderWidget()->UpdateSelectionBounds(); 3456 GetRenderWidget()->UpdateSelectionBounds();
3451 } 3457 }
3452 3458
3453 bool RenderFrameImpl::InitializeUserMediaClient() { 3459 void RenderFrameImpl::InitializeUserMediaClient() {
3454 if (web_user_media_client_)
3455 return true;
3456
3457 if (!RenderThreadImpl::current()) // Will be NULL during unit tests. 3460 if (!RenderThreadImpl::current()) // Will be NULL during unit tests.
3458 return false; 3461 return;
3459 3462
3460 #if defined(OS_ANDROID) 3463 #if defined(OS_ANDROID)
3461 if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kDisableWebRTC)) 3464 if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kDisableWebRTC))
3462 return false; 3465 return;
3463 #endif 3466 #endif
3464 3467
3465 #if defined(ENABLE_WEBRTC) 3468 #if defined(ENABLE_WEBRTC)
3466 if (!render_view_->media_stream_dispatcher_) { 3469 DCHECK(!web_user_media_client_);
3467 render_view_->media_stream_dispatcher_ = 3470 web_user_media_client_ = new MediaStreamImpl(
3468 new MediaStreamDispatcher(render_view_.get()); 3471 this,
3469 } 3472 RenderThreadImpl::current()->GetPeerConnectionDependencyFactory(),
3470 3473 make_scoped_ptr(new MediaStreamDispatcher(this)).Pass());
3471 MediaStreamImpl* media_stream_impl = new MediaStreamImpl(
3472 render_view_.get(),
3473 render_view_->media_stream_dispatcher_,
3474 RenderThreadImpl::current()->GetPeerConnectionDependencyFactory());
3475 web_user_media_client_ = media_stream_impl;
3476 return true;
3477 #else
3478 return false;
3479 #endif 3474 #endif
3480 } 3475 }
3481 3476
3482 WebMediaPlayer* RenderFrameImpl::CreateWebMediaPlayerForMediaStream( 3477 WebMediaPlayer* RenderFrameImpl::CreateWebMediaPlayerForMediaStream(
3483 const blink::WebURL& url, 3478 const blink::WebURL& url,
3484 WebMediaPlayerClient* client) { 3479 WebMediaPlayerClient* client) {
3485 #if defined(ENABLE_WEBRTC) 3480 #if defined(ENABLE_WEBRTC)
3486 #if defined(OS_ANDROID) && defined(ARCH_CPU_ARMEL) 3481 #if defined(OS_ANDROID) && defined(ARCH_CPU_ARMEL)
3487 bool found_neon = 3482 bool found_neon =
3488 (android_getCpuFeatures() & ANDROID_CPU_ARM_FEATURE_NEON) != 0; 3483 (android_getCpuFeatures() & ANDROID_CPU_ARM_FEATURE_NEON) != 0;
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
3571 3566
3572 #if defined(ENABLE_BROWSER_CDMS) 3567 #if defined(ENABLE_BROWSER_CDMS)
3573 RendererCdmManager* RenderFrameImpl::GetCdmManager() { 3568 RendererCdmManager* RenderFrameImpl::GetCdmManager() {
3574 if (!cdm_manager_) 3569 if (!cdm_manager_)
3575 cdm_manager_ = new RendererCdmManager(this); 3570 cdm_manager_ = new RendererCdmManager(this);
3576 return cdm_manager_; 3571 return cdm_manager_;
3577 } 3572 }
3578 #endif // defined(ENABLE_BROWSER_CDMS) 3573 #endif // defined(ENABLE_BROWSER_CDMS)
3579 3574
3580 } // namespace content 3575 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698