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

Unified Diff: chrome/browser/media/media_capture_devices_dispatcher.h

Issue 13989003: Replace MediaStreamUIController with MediaStreamUIProxy. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 8 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/media/media_capture_devices_dispatcher.h
diff --git a/chrome/browser/media/media_capture_devices_dispatcher.h b/chrome/browser/media/media_capture_devices_dispatcher.h
index 3c97263883239aa3c60453ed35003bcdb8a9b870..b7f411a07c592be302212ccf3e1da40c6d2bd4f4 100644
--- a/chrome/browser/media/media_capture_devices_dispatcher.h
+++ b/chrome/browser/media/media_capture_devices_dispatcher.h
@@ -5,11 +5,15 @@
#ifndef CHROME_BROWSER_MEDIA_MEDIA_CAPTURE_DEVICES_DISPATCHER_H_
#define CHROME_BROWSER_MEDIA_MEDIA_CAPTURE_DEVICES_DISPATCHER_H_
+#include <queue>
+
#include "base/callback.h"
#include "base/memory/scoped_ptr.h"
#include "base/memory/singleton.h"
#include "base/observer_list.h"
#include "content/public/browser/media_observer.h"
+#include "content/public/browser/notification_observer.h"
+#include "content/public/browser/notification_registrar.h"
#include "content/public/browser/web_contents_delegate.h"
#include "content/public/common/media_stream_request.h"
@@ -24,7 +28,8 @@ class Profile;
// This singleton is used to receive updates about media events from the content
// layer.
-class MediaCaptureDevicesDispatcher : public content::MediaObserver {
+class MediaCaptureDevicesDispatcher : public content::MediaObserver,
+ public content::NotificationObserver {
public:
class Observer {
public:
@@ -111,9 +116,24 @@ class MediaCaptureDevicesDispatcher : public content::MediaObserver {
private:
friend struct DefaultSingletonTraits<MediaCaptureDevicesDispatcher>;
+ struct PendingAccessRequest {
+ PendingAccessRequest(content::MediaStreamRequest request,
+ content::MediaResponseCallback callback);
+ ~PendingAccessRequest();
+
+ content::MediaStreamRequest request;
+ content::MediaResponseCallback callback;
+ };
+ typedef std::queue<PendingAccessRequest> RequestsQueue;
+
MediaCaptureDevicesDispatcher();
virtual ~MediaCaptureDevicesDispatcher();
+ // content::NotificationObserver implementation.
+ virtual void Observe(int type,
+ const content::NotificationSource& source,
+ const content::NotificationDetails& details) OVERRIDE;
+
// Helpers for ProcessMediaAccessRequest().
void ProcessScreenCaptureAccessRequest(
content::WebContents* web_contents,
@@ -124,6 +144,15 @@ class MediaCaptureDevicesDispatcher : public content::MediaObserver {
const content::MediaStreamRequest& request,
const content::MediaResponseCallback& callback,
const extensions::Extension* extension);
+ void ProcessRegularMediaAccessRequest(
+ content::WebContents* web_contents,
+ const content::MediaStreamRequest& request,
+ const content::MediaResponseCallback& callback);
+ void ProcessQueuedAccessRequest(content::WebContents* web_contents,
+ PendingAccessRequest& request);
+ void OnAccessRequestResponse(content::WebContents* web_contents,
+ const content::MediaStreamDevices& devices,
+ scoped_ptr<content::MediaStreamUI> ui);
// Called by the MediaObserver() functions, executed on UI thread.
void UpdateAudioDevicesOnUIThread(const content::MediaStreamDevices& devices);
@@ -147,9 +176,15 @@ class MediaCaptureDevicesDispatcher : public content::MediaObserver {
// Only accessed on UI thread.
bool devices_enumerated_;
+ std::map<content::WebContents*, RequestsQueue> pending_requests_;
+
scoped_refptr<MediaStreamCaptureIndicator> media_stream_capture_indicator_;
scoped_refptr<AudioStreamIndicator> audio_stream_indicator_;
+
+ content::NotificationRegistrar notifications_registrar_;
+
+ DISALLOW_COPY_AND_ASSIGN(MediaCaptureDevicesDispatcher);
};
#endif // CHROME_BROWSER_MEDIA_MEDIA_CAPTURE_DEVICES_DISPATCHER_H_

Powered by Google App Engine
This is Rietveld 408576698