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

Side by Side Diff: content/browser/renderer_host/media/media_stream_ui_proxy.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 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/browser/renderer_host/media/media_stream_ui_proxy.h" 5 #include "content/browser/renderer_host/media/media_stream_ui_proxy.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "content/browser/renderer_host/render_view_host_delegate.h" 8 #include "content/browser/frame_host/render_frame_host_delegate.h"
9 #include "content/browser/renderer_host/render_view_host_impl.h" 9 #include "content/browser/frame_host/render_frame_host_impl.h"
10 #include "content/public/browser/browser_thread.h" 10 #include "content/public/browser/browser_thread.h"
11 #include "content/public/common/content_switches.h" 11 #include "content/public/common/content_switches.h"
12 #include "media/video/capture/fake_video_capture_device.h" 12 #include "media/video/capture/fake_video_capture_device.h"
13 13
14 namespace content { 14 namespace content {
15 15
16 class MediaStreamUIProxy::Core { 16 class MediaStreamUIProxy::Core {
17 public: 17 public:
18 explicit Core(const base::WeakPtr<MediaStreamUIProxy>& proxy, 18 explicit Core(const base::WeakPtr<MediaStreamUIProxy>& proxy,
19 RenderViewHostDelegate* test_render_delegate); 19 RenderFrameHostDelegate* test_render_delegate);
20 ~Core(); 20 ~Core();
21 21
22 void RequestAccess(const MediaStreamRequest& request); 22 void RequestAccess(const MediaStreamRequest& request);
23 void OnStarted(gfx::NativeViewId* window_id); 23 void OnStarted(gfx::NativeViewId* window_id);
24 24
25 private: 25 private:
26 void ProcessAccessRequestResponse(const MediaStreamDevices& devices, 26 void ProcessAccessRequestResponse(const MediaStreamDevices& devices,
27 content::MediaStreamRequestResult result, 27 content::MediaStreamRequestResult result,
28 scoped_ptr<MediaStreamUI> stream_ui); 28 scoped_ptr<MediaStreamUI> stream_ui);
29 void ProcessStopRequestFromUI(); 29 void ProcessStopRequestFromUI();
30 30
31 base::WeakPtr<MediaStreamUIProxy> proxy_; 31 base::WeakPtr<MediaStreamUIProxy> proxy_;
32 scoped_ptr<MediaStreamUI> ui_; 32 scoped_ptr<MediaStreamUI> ui_;
33 33
34 RenderViewHostDelegate* const test_render_delegate_; 34 RenderFrameHostDelegate* const test_render_delegate_;
35 35
36 // WeakPtr<> is used to RequestMediaAccessPermission() because there is no way 36 // WeakPtr<> is used to RequestMediaAccessPermission() because there is no way
37 // cancel media requests. 37 // cancel media requests.
38 base::WeakPtrFactory<Core> weak_factory_; 38 base::WeakPtrFactory<Core> weak_factory_;
39 39
40 DISALLOW_COPY_AND_ASSIGN(Core); 40 DISALLOW_COPY_AND_ASSIGN(Core);
41 }; 41 };
42 42
43 MediaStreamUIProxy::Core::Core(const base::WeakPtr<MediaStreamUIProxy>& proxy, 43 MediaStreamUIProxy::Core::Core(const base::WeakPtr<MediaStreamUIProxy>& proxy,
44 RenderViewHostDelegate* test_render_delegate) 44 RenderFrameHostDelegate* test_render_delegate)
45 : proxy_(proxy), 45 : proxy_(proxy),
46 test_render_delegate_(test_render_delegate), 46 test_render_delegate_(test_render_delegate),
47 weak_factory_(this) { 47 weak_factory_(this) {
48 } 48 }
49 49
50 MediaStreamUIProxy::Core::~Core() { 50 MediaStreamUIProxy::Core::~Core() {
51 DCHECK_CURRENTLY_ON(BrowserThread::UI); 51 DCHECK_CURRENTLY_ON(BrowserThread::UI);
52 } 52 }
53 53
54 void MediaStreamUIProxy::Core::RequestAccess( 54 void MediaStreamUIProxy::Core::RequestAccess(
55 const MediaStreamRequest& request) { 55 const MediaStreamRequest& request) {
56 DCHECK_CURRENTLY_ON(BrowserThread::UI); 56 DCHECK_CURRENTLY_ON(BrowserThread::UI);
57 57
58 RenderViewHostDelegate* render_delegate; 58 RenderFrameHostDelegate* render_delegate;
59
60 if (test_render_delegate_) { 59 if (test_render_delegate_) {
61 render_delegate = test_render_delegate_; 60 render_delegate = test_render_delegate_;
62 } else { 61 } else {
63 RenderViewHostImpl* host = RenderViewHostImpl::FromID( 62 RenderFrameHostImpl* const host = RenderFrameHostImpl::FromID(
64 request.render_process_id, request.render_view_id); 63 request.render_process_id, request.render_frame_id);
64 render_delegate = host ? host->delegate() : NULL;
65 }
65 66
66 // Tab may have gone away. 67 // Tab may have gone away, or has no delegate from which to request access.
67 if (!host || !host->GetDelegate()) { 68 if (!render_delegate) {
68 ProcessAccessRequestResponse( 69 ProcessAccessRequestResponse(
69 MediaStreamDevices(), 70 MediaStreamDevices(),
70 MEDIA_DEVICE_INVALID_STATE, 71 MEDIA_DEVICE_INVALID_STATE,
71 scoped_ptr<MediaStreamUI>()); 72 scoped_ptr<MediaStreamUI>());
72 return; 73 return;
73 }
74
75 render_delegate = host->GetDelegate();
76 } 74 }
77 75
78 render_delegate->RequestMediaAccessPermission( 76 render_delegate->RequestMediaAccessPermission(
79 request, base::Bind(&Core::ProcessAccessRequestResponse, 77 request, base::Bind(&Core::ProcessAccessRequestResponse,
80 weak_factory_.GetWeakPtr())); 78 weak_factory_.GetWeakPtr()));
81 } 79 }
82 80
83 void MediaStreamUIProxy::Core::OnStarted(gfx::NativeViewId* window_id) { 81 void MediaStreamUIProxy::Core::OnStarted(gfx::NativeViewId* window_id) {
84 DCHECK_CURRENTLY_ON(BrowserThread::UI); 82 DCHECK_CURRENTLY_ON(BrowserThread::UI);
85 if (ui_) { 83 if (ui_) {
(...skipping 23 matching lines...) Expand all
109 base::Bind(&MediaStreamUIProxy::ProcessStopRequestFromUI, proxy_)); 107 base::Bind(&MediaStreamUIProxy::ProcessStopRequestFromUI, proxy_));
110 } 108 }
111 109
112 // static 110 // static
113 scoped_ptr<MediaStreamUIProxy> MediaStreamUIProxy::Create() { 111 scoped_ptr<MediaStreamUIProxy> MediaStreamUIProxy::Create() {
114 return scoped_ptr<MediaStreamUIProxy>(new MediaStreamUIProxy(NULL)); 112 return scoped_ptr<MediaStreamUIProxy>(new MediaStreamUIProxy(NULL));
115 } 113 }
116 114
117 // static 115 // static
118 scoped_ptr<MediaStreamUIProxy> MediaStreamUIProxy::CreateForTests( 116 scoped_ptr<MediaStreamUIProxy> MediaStreamUIProxy::CreateForTests(
119 RenderViewHostDelegate* render_delegate) { 117 RenderFrameHostDelegate* render_delegate) {
120 return scoped_ptr<MediaStreamUIProxy>( 118 return scoped_ptr<MediaStreamUIProxy>(
121 new MediaStreamUIProxy(render_delegate)); 119 new MediaStreamUIProxy(render_delegate));
122 } 120 }
123 121
124 MediaStreamUIProxy::MediaStreamUIProxy( 122 MediaStreamUIProxy::MediaStreamUIProxy(
125 RenderViewHostDelegate* test_render_delegate) 123 RenderFrameHostDelegate* test_render_delegate)
126 : weak_factory_(this) { 124 : weak_factory_(this) {
127 DCHECK_CURRENTLY_ON(BrowserThread::IO); 125 DCHECK_CURRENTLY_ON(BrowserThread::IO);
128 core_.reset(new Core(weak_factory_.GetWeakPtr(), test_render_delegate)); 126 core_.reset(new Core(weak_factory_.GetWeakPtr(), test_render_delegate));
129 } 127 }
130 128
131 MediaStreamUIProxy::~MediaStreamUIProxy() { 129 MediaStreamUIProxy::~MediaStreamUIProxy() {
132 DCHECK_CURRENTLY_ON(BrowserThread::IO); 130 DCHECK_CURRENTLY_ON(BrowserThread::IO);
133 BrowserThread::DeleteSoon(BrowserThread::UI, FROM_HERE, core_.release()); 131 BrowserThread::DeleteSoon(BrowserThread::UI, FROM_HERE, core_.release());
134 } 132 }
135 133
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
259 devices_to_use.empty() ? 257 devices_to_use.empty() ?
260 MEDIA_DEVICE_NO_HARDWARE : 258 MEDIA_DEVICE_NO_HARDWARE :
261 MEDIA_DEVICE_OK)); 259 MEDIA_DEVICE_OK));
262 } 260 }
263 261
264 void FakeMediaStreamUIProxy::OnStarted( 262 void FakeMediaStreamUIProxy::OnStarted(
265 const base::Closure& stop_callback, 263 const base::Closure& stop_callback,
266 const WindowIdCallback& window_id_callback) {} 264 const WindowIdCallback& window_id_callback) {}
267 265
268 } // namespace content 266 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698