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

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

Issue 345713005: Make sure MediaStreamManager handles requests in order. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Added comment. Created 6 years, 6 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.
11 // 3. MediaStreamManager will request the corresponding media device manager(s) 11 // 3. MediaStreamManager will request the corresponding media device manager(s)
12 // to enumerate available devices. The result will be given to 12 // to enumerate available devices. The result will be given to
13 // MediaStreamUIController. 13 // MediaStreamUIController.
14 // 4. MediaStreamUIController will, by posting the request to UI, let the 14 // 4. MediaStreamUIController will, by posting the request to UI, let the
15 // users to select which devices to use and send callback to 15 // users to select which devices to use and send callback to
16 // MediaStreamManager with the result. 16 // MediaStreamManager with the result.
17 // 5. MediaStreamManager will call the proper media device manager to open the 17 // 5. MediaStreamManager will call the proper media device manager to open the
18 // device and let the MediaStreamRequester know it has been done. 18 // device and let the MediaStreamRequester know it has been done.
19 19
20 // If either user or test harness selects --use-fake-device-for-media-stream, 20 // If either user or test harness selects --use-fake-device-for-media-stream,
21 // a fake video device or devices are used instead of real ones. 21 // a fake video device or devices are used instead of real ones.
22 22
23 // When enumeration and open are done in separate operations, 23 // When enumeration and open are done in separate operations,
24 // MediaStreamUIController is not involved as in steps. 24 // MediaStreamUIController is not involved as in steps.
25 25
26 #ifndef CONTENT_BROWSER_RENDERER_HOST_MEDIA_MEDIA_STREAM_MANAGER_H_ 26 #ifndef CONTENT_BROWSER_RENDERER_HOST_MEDIA_MEDIA_STREAM_MANAGER_H_
27 #define CONTENT_BROWSER_RENDERER_HOST_MEDIA_MEDIA_STREAM_MANAGER_H_ 27 #define CONTENT_BROWSER_RENDERER_HOST_MEDIA_MEDIA_STREAM_MANAGER_H_
28 28
29 #include <map> 29 #include <list>
30 #include <set> 30 #include <set>
31 #include <string> 31 #include <string>
32 #include <utility>
32 33
33 #include "base/basictypes.h" 34 #include "base/basictypes.h"
34 #include "base/memory/ref_counted.h" 35 #include "base/memory/ref_counted.h"
35 #include "base/memory/scoped_ptr.h" 36 #include "base/memory/scoped_ptr.h"
36 #include "base/message_loop/message_loop.h" 37 #include "base/message_loop/message_loop.h"
37 #include "base/power_monitor/power_observer.h" 38 #include "base/power_monitor/power_observer.h"
38 #include "base/system_monitor/system_monitor.h" 39 #include "base/system_monitor/system_monitor.h"
39 #include "content/browser/renderer_host/media/media_stream_provider.h" 40 #include "content/browser/renderer_host/media/media_stream_provider.h"
40 #include "content/common/content_export.h" 41 #include "content/common/content_export.h"
41 #include "content/common/media/media_stream_options.h" 42 #include "content/common/media/media_stream_options.h"
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after
221 222
222 // Cache enumerated device list. 223 // Cache enumerated device list.
223 struct EnumerationCache { 224 struct EnumerationCache {
224 EnumerationCache(); 225 EnumerationCache();
225 ~EnumerationCache(); 226 ~EnumerationCache();
226 227
227 bool valid; 228 bool valid;
228 StreamDeviceInfoArray devices; 229 StreamDeviceInfoArray devices;
229 }; 230 };
230 231
231 typedef std::map<std::string, DeviceRequest*> DeviceRequests; 232 // |DeviceRequests| is a list to ensure requests are processed in the order
233 // they arrive. The first member of the pair is the label of the
234 // |DeviceRequest|.
235 typedef std::list<std::pair<std::string, DeviceRequest*> > DeviceRequests;
232 236
233 // Initializes the device managers on IO thread. Auto-starts the device 237 // Initializes the device managers on IO thread. Auto-starts the device
234 // thread and registers this as a listener with the device managers. 238 // thread and registers this as a listener with the device managers.
235 void InitializeDeviceManagersOnIOThread(); 239 void InitializeDeviceManagersOnIOThread();
236 240
237 // Helper for sending up-to-date device lists to media observer when a 241 // Helper for sending up-to-date device lists to media observer when a
238 // capture device is plugged in or unplugged. 242 // capture device is plugged in or unplugged.
239 void NotifyDevicesChanged(MediaStreamType stream_type, 243 void NotifyDevicesChanged(MediaStreamType stream_type,
240 const StreamDeviceInfoArray& devices); 244 const StreamDeviceInfoArray& devices);
241 245
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
389 393
390 bool use_fake_ui_; 394 bool use_fake_ui_;
391 scoped_ptr<FakeMediaStreamUIProxy> fake_ui_; 395 scoped_ptr<FakeMediaStreamUIProxy> fake_ui_;
392 396
393 DISALLOW_COPY_AND_ASSIGN(MediaStreamManager); 397 DISALLOW_COPY_AND_ASSIGN(MediaStreamManager);
394 }; 398 };
395 399
396 } // namespace content 400 } // namespace content
397 401
398 #endif // CONTENT_BROWSER_RENDERER_HOST_MEDIA_MEDIA_STREAM_MANAGER_H_ 402 #endif // CONTENT_BROWSER_RENDERER_HOST_MEDIA_MEDIA_STREAM_MANAGER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698