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

Side by Side Diff: content/browser/renderer_host/media/media_stream_manager.h

Issue 143003031: Allow retrieval of media device ID salt even after ResourceContext has gone away. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Add TODO about proper fix. Created 6 years, 10 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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 // MediaStreamManager is used to open/enumerate media capture devices (video 5 // MediaStreamManager is used to open/enumerate media capture devices (video
6 // supported now). Call flow: 6 // supported now). Call flow:
7 // 1. GenerateStream is called when a render process wants to use a capture 7 // 1. GenerateStream is called when a render process wants to use a capture
8 // device. 8 // device.
9 // 2. MediaStreamManager will ask MediaStreamUIController for permission to 9 // 2. MediaStreamManager will ask MediaStreamUIController for permission to
10 // use devices and for which device to use. 10 // use devices and for which device to use.
(...skipping 18 matching lines...) Expand all
29 29
30 #include "base/basictypes.h" 30 #include "base/basictypes.h"
31 #include "base/memory/ref_counted.h" 31 #include "base/memory/ref_counted.h"
32 #include "base/memory/scoped_ptr.h" 32 #include "base/memory/scoped_ptr.h"
33 #include "base/message_loop/message_loop.h" 33 #include "base/message_loop/message_loop.h"
34 #include "base/system_monitor/system_monitor.h" 34 #include "base/system_monitor/system_monitor.h"
35 #include "content/browser/renderer_host/media/media_stream_provider.h" 35 #include "content/browser/renderer_host/media/media_stream_provider.h"
36 #include "content/common/content_export.h" 36 #include "content/common/content_export.h"
37 #include "content/common/media/media_stream_options.h" 37 #include "content/common/media/media_stream_options.h"
38 #include "content/public/browser/media_request_state.h" 38 #include "content/public/browser/media_request_state.h"
39 #include "content/public/browser/resource_context.h"
39 40
40 namespace media { 41 namespace media {
41 class AudioManager; 42 class AudioManager;
42 } 43 }
43 44
44 namespace content { 45 namespace content {
45 46
46 class AudioInputDeviceManager; 47 class AudioInputDeviceManager;
47 class FakeMediaStreamUIProxy; 48 class FakeMediaStreamUIProxy;
48 class MediaStreamDeviceSettings; 49 class MediaStreamDeviceSettings;
49 class MediaStreamRequester; 50 class MediaStreamRequester;
50 class MediaStreamUIProxy; 51 class MediaStreamUIProxy;
51 class ResourceContext;
52 class VideoCaptureManager; 52 class VideoCaptureManager;
53 53
54 // MediaStreamManager is used to generate and close new media devices, not to 54 // MediaStreamManager is used to generate and close new media devices, not to
55 // start the media flow. The classes requesting new media streams are answered 55 // start the media flow. The classes requesting new media streams are answered
56 // using MediaStreamRequester. 56 // using MediaStreamRequester.
57 class CONTENT_EXPORT MediaStreamManager 57 class CONTENT_EXPORT MediaStreamManager
58 : public MediaStreamProviderListener, 58 : public MediaStreamProviderListener,
59 public base::MessageLoop::DestructionObserver, 59 public base::MessageLoop::DestructionObserver,
60 public base::SystemMonitor::DevicesChangedObserver { 60 public base::SystemMonitor::DevicesChangedObserver {
61 public: 61 public:
(...skipping 25 matching lines...) Expand all
87 const GURL& security_origin, 87 const GURL& security_origin,
88 const MediaRequestResponseCallback& callback); 88 const MediaRequestResponseCallback& callback);
89 89
90 // GenerateStream opens new media devices according to |components|. It 90 // GenerateStream opens new media devices according to |components|. It
91 // creates a new request which is identified by a unique string that's 91 // creates a new request which is identified by a unique string that's
92 // returned to the caller. |render_process_id| and |render_view_id| refer to 92 // returned to the caller. |render_process_id| and |render_view_id| refer to
93 // the view where the infobar will appear to the user. 93 // the view where the infobar will appear to the user.
94 void GenerateStream(MediaStreamRequester* requester, 94 void GenerateStream(MediaStreamRequester* requester,
95 int render_process_id, 95 int render_process_id,
96 int render_view_id, 96 int render_view_id,
97 ResourceContext* rc, 97 const ResourceContext::SaltCallback& sc,
98 int page_request_id, 98 int page_request_id,
99 const StreamOptions& components, 99 const StreamOptions& components,
100 const GURL& security_origin); 100 const GURL& security_origin);
101 101
102 void CancelRequest(int render_process_id, 102 void CancelRequest(int render_process_id,
103 int render_view_id, 103 int render_view_id,
104 int page_request_id); 104 int page_request_id);
105 105
106 // Cancel an open request identified by |label|. 106 // Cancel an open request identified by |label|.
107 virtual void CancelRequest(const std::string& label); 107 virtual void CancelRequest(const std::string& label);
108 108
109 // Cancel all requests for the given |render_process_id|. 109 // Cancel all requests for the given |render_process_id|.
110 void CancelAllRequests(int render_process_id); 110 void CancelAllRequests(int render_process_id);
111 111
112 // Closes the stream device for a certain render view. The stream must have 112 // Closes the stream device for a certain render view. The stream must have
113 // been opened by a call to GenerateStream. 113 // been opened by a call to GenerateStream.
114 void StopStreamDevice(int render_process_id, 114 void StopStreamDevice(int render_process_id,
115 int render_view_id, 115 int render_view_id,
116 const std::string& device_id); 116 const std::string& device_id);
117 117
118 // Gets a list of devices of |type|, which must be MEDIA_DEVICE_AUDIO_CAPTURE 118 // Gets a list of devices of |type|, which must be MEDIA_DEVICE_AUDIO_CAPTURE
119 // or MEDIA_DEVICE_VIDEO_CAPTURE. 119 // or MEDIA_DEVICE_VIDEO_CAPTURE.
120 // The request is identified using the string returned to the caller. 120 // The request is identified using the string returned to the caller.
121 // When the |requester| is NULL, MediaStreamManager will enumerate both audio 121 // When the |requester| is NULL, MediaStreamManager will enumerate both audio
122 // and video devices and also start monitoring device changes, such as 122 // and video devices and also start monitoring device changes, such as
123 // plug/unplug. The new device lists will be delivered via media observer to 123 // plug/unplug. The new device lists will be delivered via media observer to
124 // MediaCaptureDevicesDispatcher. 124 // MediaCaptureDevicesDispatcher.
125 virtual std::string EnumerateDevices(MediaStreamRequester* requester, 125 virtual std::string EnumerateDevices(MediaStreamRequester* requester,
126 int render_process_id, 126 int render_process_id,
127 int render_view_id, 127 int render_view_id,
128 ResourceContext* rc, 128 const ResourceContext::SaltCallback& sc,
129 int page_request_id, 129 int page_request_id,
130 MediaStreamType type, 130 MediaStreamType type,
131 const GURL& security_origin); 131 const GURL& security_origin);
132 132
133 // Open a device identified by |device_id|. |type| must be either 133 // Open a device identified by |device_id|. |type| must be either
134 // MEDIA_DEVICE_AUDIO_CAPTURE or MEDIA_DEVICE_VIDEO_CAPTURE. 134 // MEDIA_DEVICE_AUDIO_CAPTURE or MEDIA_DEVICE_VIDEO_CAPTURE.
135 // The request is identified using string returned to the caller. 135 // The request is identified using string returned to the caller.
136 void OpenDevice(MediaStreamRequester* requester, 136 void OpenDevice(MediaStreamRequester* requester,
137 int render_process_id, 137 int render_process_id,
138 int render_view_id, 138 int render_view_id,
139 ResourceContext* rc, 139 const ResourceContext::SaltCallback& sc,
140 int page_request_id, 140 int page_request_id,
141 const std::string& device_id, 141 const std::string& device_id,
142 MediaStreamType type, 142 MediaStreamType type,
143 const GURL& security_origin); 143 const GURL& security_origin);
144 144
145 // Called by UI to make sure the device monitor is started so that UI receive 145 // Called by UI to make sure the device monitor is started so that UI receive
146 // notifications about device changes. 146 // notifications about device changes.
147 void EnsureDeviceMonitorStarted(); 147 void EnsureDeviceMonitorStarted();
148 148
149 // Implements MediaStreamProviderListener. 149 // Implements MediaStreamProviderListener.
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after
321 // corresponding render processes are in |render_process_ids|, to be used by 321 // corresponding render processes are in |render_process_ids|, to be used by
322 // the webrtcLoggingPrivate API if requested. 322 // the webrtcLoggingPrivate API if requested.
323 void AddLogMessageOnUIThread(const std::set<int>& render_process_ids, 323 void AddLogMessageOnUIThread(const std::set<int>& render_process_ids,
324 const std::string& message); 324 const std::string& message);
325 325
326 // Finds and returns the device id corresponding to the given 326 // Finds and returns the device id corresponding to the given
327 // |source_id|. Returns true if there was a raw device id that matched the 327 // |source_id|. Returns true if there was a raw device id that matched the
328 // given |source_id|, false if nothing matched it. 328 // given |source_id|, false if nothing matched it.
329 bool TranslateSourceIdToDeviceId( 329 bool TranslateSourceIdToDeviceId(
330 MediaStreamType stream_type, 330 MediaStreamType stream_type,
331 ResourceContext* rc, 331 const ResourceContext::SaltCallback& rc,
332 const GURL& security_origin, 332 const GURL& security_origin,
333 const std::string& source_id, 333 const std::string& source_id,
334 std::string* device_id) const; 334 std::string* device_id) const;
335 335
336 // Task runner shared by VideoCaptureManager and AudioInputDeviceManager. 336 // Task runner shared by VideoCaptureManager and AudioInputDeviceManager.
337 // Note: Enumeration tasks may take seconds to complete so must never be run 337 // Note: Enumeration tasks may take seconds to complete so must never be run
338 // on any of the BrowserThreads (UI, IO, etc). See http://crbug.com/256945. 338 // on any of the BrowserThreads (UI, IO, etc). See http://crbug.com/256945.
339 scoped_refptr<base::SingleThreadTaskRunner> device_task_runner_; 339 scoped_refptr<base::SingleThreadTaskRunner> device_task_runner_;
340 340
341 media::AudioManager* const audio_manager_; // not owned 341 media::AudioManager* const audio_manager_; // not owned
(...skipping 21 matching lines...) Expand all
363 363
364 bool use_fake_ui_; 364 bool use_fake_ui_;
365 scoped_ptr<FakeMediaStreamUIProxy> fake_ui_; 365 scoped_ptr<FakeMediaStreamUIProxy> fake_ui_;
366 366
367 DISALLOW_COPY_AND_ASSIGN(MediaStreamManager); 367 DISALLOW_COPY_AND_ASSIGN(MediaStreamManager);
368 }; 368 };
369 369
370 } // namespace content 370 } // namespace content
371 371
372 #endif // CONTENT_BROWSER_RENDERER_HOST_MEDIA_MEDIA_STREAM_MANAGER_H_ 372 #endif // CONTENT_BROWSER_RENDERER_HOST_MEDIA_MEDIA_STREAM_MANAGER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698