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

Unified Diff: chrome/browser/ui/media_stream_infobar_delegate.cc

Issue 10537099: add "always allow" option to the mediastream infobar and allow user to allow/not allow acces to devi (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: use only content settings, added a device controller, addressed all the comments Created 8 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/media_stream_infobar_delegate.cc
diff --git a/chrome/browser/ui/media_stream_infobar_delegate.cc b/chrome/browser/ui/media_stream_infobar_delegate.cc
index 91e5bead716f14c9b472b4da57aaf1880475b3ab..09a57a43dcf567d9e519fba310f220e2535b579f 100644
--- a/chrome/browser/ui/media_stream_infobar_delegate.cc
+++ b/chrome/browser/ui/media_stream_infobar_delegate.cc
@@ -2,110 +2,58 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+#include "chrome/browser/ui/media_stream_infobar_delegate.h"
+
#include <algorithm>
#include <functional>
#include "base/logging.h"
-#include "chrome/browser/ui/media_stream_infobar_delegate.h"
-#include "content/public/common/media_stream_request.h"
+#include "base/memory/scoped_ptr.h"
+#include "chrome/browser/media/media_stream_devices_controller.h"
#include "googleurl/src/gurl.h"
#include "grit/theme_resources_standard.h"
#include "ui/base/resource/resource_bundle.h"
-namespace {
-
-// A predicate that checks if a StreamDeviceInfo object has the same ID as the
-// device ID specified at construction.
-class DeviceIdEquals {
- public:
- explicit DeviceIdEquals(const std::string& device_id)
- : device_id_(device_id) {
- }
-
- bool operator() (const content::MediaStreamDevice& device) {
- return device.device_id == device_id_;
- }
-
- private:
- std::string device_id_;
-};
-
-} // namespace
-
MediaStreamInfoBarDelegate::MediaStreamInfoBarDelegate(
InfoBarTabHelper* tab_helper,
- const content::MediaStreamRequest* request,
- const content::MediaResponseCallback& callback)
+ MediaStreamDevicesController* controller)
: InfoBarDelegate(tab_helper),
- request_(request),
- callback_(callback) {
- DCHECK(request_);
- has_audio_ = request_->devices.count(
- content::MEDIA_STREAM_DEVICE_TYPE_AUDIO_CAPTURE) != 0;
- has_video_ = request_->devices.count(
- content::MEDIA_STREAM_DEVICE_TYPE_VIDEO_CAPTURE) != 0;
+ controller_(controller) {
+ DCHECK(controller_.get());
+}
+
+MediaStreamInfoBarDelegate::~MediaStreamInfoBarDelegate() {}
+
+bool MediaStreamInfoBarDelegate::has_audio() const {
+ return controller_->has_audio();
}
-MediaStreamInfoBarDelegate::~MediaStreamInfoBarDelegate() {
+bool MediaStreamInfoBarDelegate::has_video() const {
+ return controller_->has_video();
}
content::MediaStreamDevices
MediaStreamInfoBarDelegate::GetAudioDevices() const {
- if (!has_audio_)
- return content::MediaStreamDevices();
- content::MediaStreamDeviceMap::const_iterator it =
- request_->devices.find(content::MEDIA_STREAM_DEVICE_TYPE_AUDIO_CAPTURE);
- DCHECK(it != request_->devices.end());
- return it->second;
+ return controller_->GetAudioDevices();
}
content::MediaStreamDevices
MediaStreamInfoBarDelegate::GetVideoDevices() const {
- if (!has_video_)
- return content::MediaStreamDevices();
- content::MediaStreamDeviceMap::const_iterator it =
- request_->devices.find(content::MEDIA_STREAM_DEVICE_TYPE_VIDEO_CAPTURE);
- DCHECK(it != request_->devices.end());
- return it->second;
+ return controller_->GetVideoDevices();
}
const GURL& MediaStreamInfoBarDelegate::GetSecurityOrigin() const {
- return request_->security_origin;
+ return controller_->GetSecurityOrigin();
}
void MediaStreamInfoBarDelegate::Accept(const std::string& audio_id,
- const std::string& video_id) {
- content::MediaStreamDevices devices;
-
- if (has_audio_) {
- AddDeviceWithId(content::MEDIA_STREAM_DEVICE_TYPE_AUDIO_CAPTURE,
- audio_id, &devices);
- }
- if (has_video_) {
- AddDeviceWithId(content::MEDIA_STREAM_DEVICE_TYPE_VIDEO_CAPTURE,
- video_id, &devices);
- }
-
- callback_.Run(devices);
+ const std::string& video_id,
+ bool always_allow) {
+ controller_->Accept(audio_id, video_id, always_allow);
}
void MediaStreamInfoBarDelegate::Deny() {
- callback_.Run(content::MediaStreamDevices());
-}
-
-void MediaStreamInfoBarDelegate::AddDeviceWithId(
- content::MediaStreamDeviceType type,
- const std::string& id,
- content::MediaStreamDevices* devices) {
- DCHECK(devices);
- content::MediaStreamDeviceMap::const_iterator device_it =
- request_->devices.find(type);
- if (device_it != request_->devices.end()) {
- content::MediaStreamDevices::const_iterator it = std::find_if(
- device_it->second.begin(), device_it->second.end(), DeviceIdEquals(id));
- if (it != device_it->second.end())
- devices->push_back(*it);
- }
+ controller_->Deny();
}
// MediaStreamInfoBarDelegate::CreateInfoBar is implemented in platform-specific
@@ -118,7 +66,7 @@ void MediaStreamInfoBarDelegate::InfoBarDismissed() {
}
gfx::Image* MediaStreamInfoBarDelegate::GetIcon() const {
- return &ResourceBundle::GetSharedInstance().GetNativeImageNamed(has_video_ ?
+ return &ResourceBundle::GetSharedInstance().GetNativeImageNamed(has_video() ?
IDR_INFOBAR_MEDIA_STREAM_CAMERA : IDR_INFOBAR_MEDIA_STREAM_MIC);
}

Powered by Google App Engine
This is Rietveld 408576698