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

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

Issue 7948004: Removing singelton property of MediaStreamManager. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 3 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) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 media capture devices (video supported 5 // MediaStreamManager is used to open media capture devices (video supported
6 // now). Call flow: 6 // 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 MediaStreamDeviceSettings for permission to 9 // 2. MediaStreamManager will ask MediaStreamDeviceSettings for permission to
10 // use devices and for which device to use. 10 // use devices and for which device to use.
11 // 3. MediaStreamDeviceSettings will request list(s) of available devices, the 11 // 3. MediaStreamDeviceSettings will request list(s) of available devices, the
12 // requests will be relayed to the corresponding media device manager and the 12 // requests will be relayed to the corresponding media device manager and the
13 // result will be given to MediaStreamDeviceSettings. 13 // result will be given to MediaStreamDeviceSettings.
14 // 4. MediaStreamDeviceSettings will, by using user settings, pick devices which 14 // 4. MediaStreamDeviceSettings will, by using user settings, pick devices which
15 // devices to use and let MediaStreamManager know the result. 15 // devices to use and let MediaStreamManager know the result.
16 // 5. MediaStreamManager will call the proper media device manager to open the 16 // 5. MediaStreamManager will call the proper media device manager to open the
17 // device and let the MediaStreamRequester know it has been done. 17 // device and let the MediaStreamRequester know it has been done.
18 18
19 #ifndef CONTENT_BROWSER_RENDERER_HOST_MEDIA_MEDIA_STREAM_MANAGER_H_ 19 #ifndef CONTENT_BROWSER_RENDERER_HOST_MEDIA_MEDIA_STREAM_MANAGER_H_
20 #define CONTENT_BROWSER_RENDERER_HOST_MEDIA_MEDIA_STREAM_MANAGER_H_ 20 #define CONTENT_BROWSER_RENDERER_HOST_MEDIA_MEDIA_STREAM_MANAGER_H_
21 21
22 #include <map> 22 #include <map>
23 #include <string> 23 #include <string>
24 #include <vector> 24 #include <vector>
25 25
26 #include "base/lazy_instance.h" 26 #include "base/basictypes.h"
27 #include "base/memory/scoped_ptr.h"
27 #include "content/browser/renderer_host/media/media_stream_provider.h" 28 #include "content/browser/renderer_host/media/media_stream_provider.h"
28 #include "content/browser/renderer_host/media/media_stream_settings_requester.h" 29 #include "content/browser/renderer_host/media/media_stream_settings_requester.h"
29 #include "content/common/media/media_stream_options.h" 30 #include "content/common/media/media_stream_options.h"
30 31
31 namespace media_stream { 32 namespace media_stream {
32 33
33 class MediaStreamDeviceSettings; 34 class MediaStreamDeviceSettings;
34 class MediaStreamRequester; 35 class MediaStreamRequester;
35 class VideoCaptureManager; 36 class VideoCaptureManager;
36 37
37 // MediaStreamManager is used to generate and close new media devices, not to 38 // MediaStreamManager is used to generate and close new media devices, not to
38 // start the media flow. 39 // start the media flow.
39 // The classes requesting new media streams are answered using 40 // The classes requesting new media streams are answered using
40 // MediaStreamManager::Listener. 41 // MediaStreamManager::Listener.
41 class MediaStreamManager 42 class MediaStreamManager
42 : public MediaStreamProviderListener, 43 : public MediaStreamProviderListener,
43 public SettingsRequester { 44 public SettingsRequester {
44 public: 45 public:
45 typedef MediaStreamManager* (AccessorMethod)(); 46 MediaStreamManager();
46 static MediaStreamManager* Get();
47 virtual ~MediaStreamManager(); 47 virtual ~MediaStreamManager();
48 48
49 // Used to access VideoCaptuerManager. 49 // Used to access VideoCaptureManager.
50 VideoCaptureManager* video_capture_manager(); 50 VideoCaptureManager* video_capture_manager();
51 51
52 // GenerateStream opens new media devices according to |components|. The 52 // GenerateStream opens new media devices according to |components|. The
53 // request is identified using |label|, which is pointing to an already 53 // request is identified using |label|, which is pointing to an already
54 // created std::string. 54 // created std::string.
55 void GenerateStream(MediaStreamRequester* requester, int render_process_id, 55 void GenerateStream(MediaStreamRequester* requester, int render_process_id,
56 int render_view_id, const StreamOptions& options, 56 int render_view_id, const StreamOptions& options,
57 const std::string& security_origin, std::string* label); 57 const std::string& security_origin, std::string* label);
58 58
59 // Cancels all non-finished GenerateStream request, i.e. request for which 59 // Cancels all non-finished GenerateStream request, i.e. request for which
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
99 99
100 MediaStreamRequester* requester; 100 MediaStreamRequester* requester;
101 StreamOptions options; 101 StreamOptions options;
102 std::vector<RequestState> state; 102 std::vector<RequestState> state;
103 StreamDeviceInfoArray audio_devices; 103 StreamDeviceInfoArray audio_devices;
104 StreamDeviceInfoArray video_devices; 104 StreamDeviceInfoArray video_devices;
105 }; 105 };
106 106
107 // Helpers. 107 // Helpers.
108 bool RequestDone(const MediaStreamManager::DeviceRequest& request) const; 108 bool RequestDone(const MediaStreamManager::DeviceRequest& request) const;
109 MediaStreamProvider* GetDeviceManager(MediaStreamType stream_type) const; 109 MediaStreamProvider* GetDeviceManager(MediaStreamType stream_type);
110 110
111 // Private constructor to enforce singleton. 111 scoped_ptr<MediaStreamDeviceSettings> device_settings_;
112 friend struct base::DefaultLazyInstanceTraits<MediaStreamManager>; 112 scoped_ptr<VideoCaptureManager> video_capture_manager_;
113 MediaStreamManager();
114
115 VideoCaptureManager* video_capture_manager_;
116 // TODO(mflodman) Add AudioInputManager. 113 // TODO(mflodman) Add AudioInputManager.
117 114
118 // Keeps track of device types currently being enumerated to not enumerate 115 // Keeps track of device types currently being enumerated to not enumerate
119 // when not necessary. 116 // when not necessary.
120 std::vector<bool> enumeration_in_progress_; 117 std::vector<bool> enumeration_in_progress_;
121 118
122 // All non-closed request. 119 // All non-closed request.
123 typedef std::map<std::string, DeviceRequest> DeviceRequests; 120 typedef std::map<std::string, DeviceRequest> DeviceRequests;
124 DeviceRequests requests_; 121 DeviceRequests requests_;
125 122
126 MediaStreamDeviceSettings* device_settings_;
127
128 DISALLOW_COPY_AND_ASSIGN(MediaStreamManager); 123 DISALLOW_COPY_AND_ASSIGN(MediaStreamManager);
129 }; 124 };
130 125
131 } // namespace media_stream 126 } // namespace media_stream
132 127
133 #endif // CONTENT_BROWSER_RENDERER_HOST_MEDIA_MEDIA_STREAM_MANAGER_H_ 128 #endif // CONTENT_BROWSER_RENDERER_HOST_MEDIA_MEDIA_STREAM_MANAGER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698