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
3 // found in the LICENSE file.
5 #ifndef CONTENT_BROWSER_RENDERER_HOST_MEDIA_DEVICE_REQUEST_MESSAGE_FILTER_H_
6 #define CONTENT_BROWSER_RENDERER_HOST_MEDIA_DEVICE_REQUEST_MESSAGE_FILTER_H_
11 #include "base/synchronization/lock.h"
12 #include "content/browser/renderer_host/media/media_stream_requester.h"
13 #include "content/common/content_export.h"
14 #include "content/public/browser/browser_message_filter.h"
18 class MediaStreamManager;
19 class ResourceContext;
21 // DeviceRequestMessageFilter used to delegate requests from the
23 class CONTENT_EXPORT DeviceRequestMessageFilter : public BrowserMessageFilter,
24 public MediaStreamRequester {
26 DeviceRequestMessageFilter(ResourceContext* resource_context,
27 MediaStreamManager* media_stream_manager);
29 // MediaStreamRequester implementation.
30 // TODO(vrk): Replace MediaStreamRequester interface with a single callback so
31 // we don't have to override all these callbacks we don't care about.
33 virtual void StreamGenerated(
34 const std::string& label, const StreamDeviceInfoArray& audio_devices,
35 const StreamDeviceInfoArray& video_devices) OVERRIDE;
36 virtual void StreamGenerationFailed(const std::string& label) OVERRIDE;
37 virtual void StopGeneratedStream(int render_view_id,
38 const std::string& label) OVERRIDE;
39 virtual void DeviceOpened(const std::string& label,
40 const StreamDeviceInfo& video_device) OVERRIDE;
41 // DevicesEnumerated() is the only callback we're interested in.
42 virtual void DevicesEnumerated(const std::string& label,
43 const StreamDeviceInfoArray& devices) OVERRIDE;
45 // BrowserMessageFilter implementation.
46 virtual bool OnMessageReceived(const IPC::Message& message,
47 bool* message_was_ok) OVERRIDE;
48 virtual void OnChannelClosing() OVERRIDE;
51 virtual ~DeviceRequestMessageFilter();
54 void OnGetSources(int request_id, const GURL& security_origin);
55 void HmacDeviceIds(const GURL& origin,
56 const StreamDeviceInfoArray& raw_devices,
57 StreamDeviceInfoArray* devices_with_guids);
59 // Owned by ProfileIOData which is guaranteed to outlive DRMF.
60 ResourceContext* resource_context_;
61 MediaStreamManager* media_stream_manager_;
64 typedef std::vector<DeviceRequest> DeviceRequestList;
65 // List of all requests.
66 DeviceRequestList requests_;
68 DISALLOW_COPY_AND_ASSIGN(DeviceRequestMessageFilter);
71 } // namespace content
73 #endif // CONTENT_BROWSER_RENDERER_HOST_MEDIA_DEVICE_REQUEST_MESSAGE_FILTER_H_