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

Side by Side Diff: chrome/browser/media/media_stream_devices_controller.cc

Issue 678023002: TabSpecificContentSettings no longer knows about MediaStreamDeviceController (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix Win complilation error C4800 Created 6 years, 1 month 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
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 #include "chrome/browser/media/media_stream_devices_controller.h" 5 #include "chrome/browser/media/media_stream_devices_controller.h"
6 6
7 #include "base/metrics/histogram.h" 7 #include "base/metrics/histogram.h"
8 #include "base/prefs/scoped_user_pref_update.h" 8 #include "base/prefs/scoped_user_pref_update.h"
9 #include "base/strings/utf_string_conversions.h" 9 #include "base/strings/utf_string_conversions.h"
10 #include "base/values.h" 10 #include "base/values.h"
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
77 } 77 }
78 78
79 enum DevicePermissionActions { 79 enum DevicePermissionActions {
80 kAllowHttps = 0, 80 kAllowHttps = 0,
81 kAllowHttp, 81 kAllowHttp,
82 kDeny, 82 kDeny,
83 kCancel, 83 kCancel,
84 kPermissionActionsMax // Must always be last! 84 kPermissionActionsMax // Must always be last!
85 }; 85 };
86 86
87 // This is a wrapper around the call to
88 // TabSpecificContentSettings::OnMediaStreamPermissionSet, precomputing the
89 // information from |request_permissions| to a form which is understood by
90 // TabSpecificContentSettings.
91 void OnMediaStreamPermissionSet(
92 TabSpecificContentSettings* content_settings,
93 content::WebContents* web_contents,
94 const GURL& request_origin,
95 const MediaStreamDevicesController::MediaStreamTypeSettingsMap&
96 request_permissions) {
97 TabSpecificContentSettings::MicrophoneCameraState microphone_camera_state =
98 TabSpecificContentSettings::MICROPHONE_CAMERA_NOT_ACCESSED;
99 std::string selected_audio_device;
100 std::string selected_video_device;
101 std::string requested_audio_device;
102 std::string requested_video_device;
103
104 PrefService* prefs = Profile::FromBrowserContext(
105 web_contents->GetBrowserContext())->GetPrefs();
no longer working on chromium 2014/10/29 10:09:42 indentation.
vabr (Chromium) 2014/10/29 10:30:21 I believe this is indented correctly. See "Argumen
no longer working on chromium 2014/10/30 09:59:19 In some cases git cl format is not inline with the
vabr (Chromium) 2014/10/30 10:28:39 My point here was that this particular formatting
106 MediaStreamDevicesController::MediaStreamTypeSettingsMap::const_iterator it =
Bernhard Bauer 2014/10/29 09:35:17 This seems like a good place for auto :)
vabr (Chromium) 2014/10/29 10:30:21 Auto-awesome! :) Done.
107 request_permissions.find(content::MEDIA_DEVICE_AUDIO_CAPTURE);
108 if (it != request_permissions.end()) {
109 requested_audio_device = it->second.requested_device_id;
110 selected_audio_device =
no longer working on chromium 2014/10/29 10:09:42 I think the correct format should be selected_aud
vabr (Chromium) 2014/10/29 10:30:21 I'm yielding, because of consistency with the rest
111 requested_audio_device.empty()
112 ? prefs->GetString(prefs::kDefaultAudioCaptureDevice)
113 : requested_audio_device;
114 DCHECK_NE(MediaStreamDevicesController::MEDIA_NONE, it->second.permission);
115 bool mic_allowed =
116 it->second.permission == MediaStreamDevicesController::MEDIA_ALLOWED;
117 microphone_camera_state |=
118 TabSpecificContentSettings::MICROPHONE_ACCESSED |
119 (mic_allowed ? 0 : TabSpecificContentSettings::MICROPHONE_BLOCKED);
120 }
121
122 it = request_permissions.find(content::MEDIA_DEVICE_VIDEO_CAPTURE);
123 if (it != request_permissions.end()) {
124 requested_video_device = it->second.requested_device_id;
125 selected_video_device =
no longer working on chromium 2014/10/29 10:09:42 ditto
vabr (Chromium) 2014/10/29 10:30:21 Done.
126 requested_video_device.empty()
127 ? prefs->GetString(prefs::kDefaultVideoCaptureDevice)
128 : requested_video_device;
129 DCHECK_NE(MediaStreamDevicesController::MEDIA_NONE, it->second.permission);
130 bool cam_allowed =
131 it->second.permission == MediaStreamDevicesController::MEDIA_ALLOWED;
132 microphone_camera_state |=
133 TabSpecificContentSettings::CAMERA_ACCESSED |
134 (cam_allowed ? 0 : TabSpecificContentSettings::CAMERA_BLOCKED);
135 }
136
137 content_settings->OnMediaStreamPermissionSet(request_origin,
138 microphone_camera_state,
139 selected_audio_device,
140 selected_video_device,
141 requested_audio_device,
142 requested_video_device);
143 }
144
87 } // namespace 145 } // namespace
88 146
89 MediaStreamDevicesController::MediaStreamTypeSettings::MediaStreamTypeSettings( 147 MediaStreamDevicesController::MediaStreamTypeSettings::MediaStreamTypeSettings(
90 Permission permission, const std::string& requested_device_id): 148 Permission permission, const std::string& requested_device_id):
91 permission(permission), requested_device_id(requested_device_id) {} 149 permission(permission), requested_device_id(requested_device_id) {}
92 150
93 MediaStreamDevicesController::MediaStreamTypeSettings:: 151 MediaStreamDevicesController::MediaStreamTypeSettings::
94 MediaStreamTypeSettings(): permission(MEDIA_NONE) {} 152 MediaStreamTypeSettings(): permission(MEDIA_NONE) {}
95 153
96 MediaStreamDevicesController::MediaStreamTypeSettings:: 154 MediaStreamDevicesController::MediaStreamTypeSettings::
(...skipping 475 matching lines...) Expand 10 before | Expand all | Expand 10 after
572 CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA, 630 CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA,
573 std::string(), 631 std::string(),
574 content_setting); 632 content_setting);
575 } 633 }
576 } 634 }
577 635
578 void MediaStreamDevicesController::NotifyUIRequestAccepted() const { 636 void MediaStreamDevicesController::NotifyUIRequestAccepted() const {
579 if (!content_settings_) 637 if (!content_settings_)
580 return; 638 return;
581 639
582 content_settings_->OnMediaStreamPermissionSet(request_.security_origin, 640 OnMediaStreamPermissionSet(content_settings_,
583 request_permissions_); 641 web_contents_,
642 request_.security_origin,
643 request_permissions_);
584 } 644 }
585 645
586 void MediaStreamDevicesController::NotifyUIRequestDenied() { 646 void MediaStreamDevicesController::NotifyUIRequestDenied() {
587 if (!content_settings_) 647 if (!content_settings_)
588 return; 648 return;
589 649
590 if (IsDeviceAudioCaptureRequestedAndAllowed()) { 650 if (IsDeviceAudioCaptureRequestedAndAllowed()) {
591 request_permissions_[content::MEDIA_DEVICE_AUDIO_CAPTURE].permission = 651 request_permissions_[content::MEDIA_DEVICE_AUDIO_CAPTURE].permission =
592 MEDIA_BLOCKED_BY_USER; 652 MEDIA_BLOCKED_BY_USER;
593 } 653 }
594 if (IsDeviceVideoCaptureRequestedAndAllowed()) { 654 if (IsDeviceVideoCaptureRequestedAndAllowed()) {
595 request_permissions_[content::MEDIA_DEVICE_VIDEO_CAPTURE].permission = 655 request_permissions_[content::MEDIA_DEVICE_VIDEO_CAPTURE].permission =
596 MEDIA_BLOCKED_BY_USER; 656 MEDIA_BLOCKED_BY_USER;
597 } 657 }
598 658
599 content_settings_->OnMediaStreamPermissionSet(request_.security_origin, 659 OnMediaStreamPermissionSet(content_settings_,
600 request_permissions_); 660 web_contents_,
661 request_.security_origin,
662 request_permissions_);
601 } 663 }
602 664
603 bool MediaStreamDevicesController::IsDeviceAudioCaptureRequestedAndAllowed() 665 bool MediaStreamDevicesController::IsDeviceAudioCaptureRequestedAndAllowed()
604 const { 666 const {
605 MediaStreamTypeSettingsMap::const_iterator it = 667 MediaStreamTypeSettingsMap::const_iterator it =
606 request_permissions_.find(content::MEDIA_DEVICE_AUDIO_CAPTURE); 668 request_permissions_.find(content::MEDIA_DEVICE_AUDIO_CAPTURE);
607 return (it != request_permissions_.end() && IsCaptureDeviceRequestAllowed() && 669 return (it != request_permissions_.end() && IsCaptureDeviceRequestAllowed() &&
608 it->second.permission == MEDIA_ALLOWED); 670 it->second.permission == MEDIA_ALLOWED);
609 } 671 }
610 672
611 bool MediaStreamDevicesController::IsDeviceVideoCaptureRequestedAndAllowed() 673 bool MediaStreamDevicesController::IsDeviceVideoCaptureRequestedAndAllowed()
612 const { 674 const {
613 MediaStreamTypeSettingsMap::const_iterator it = 675 MediaStreamTypeSettingsMap::const_iterator it =
614 request_permissions_.find(content::MEDIA_DEVICE_VIDEO_CAPTURE); 676 request_permissions_.find(content::MEDIA_DEVICE_VIDEO_CAPTURE);
615 return (it != request_permissions_.end() && IsCaptureDeviceRequestAllowed() && 677 return (it != request_permissions_.end() && IsCaptureDeviceRequestAllowed() &&
616 it->second.permission == MEDIA_ALLOWED); 678 it->second.permission == MEDIA_ALLOWED);
617 } 679 }
618 680
619 bool MediaStreamDevicesController::IsCaptureDeviceRequestAllowed() const { 681 bool MediaStreamDevicesController::IsCaptureDeviceRequestAllowed() const {
620 #if defined(OS_ANDROID) 682 #if defined(OS_ANDROID)
621 // Don't approve device requests if the tab was hidden. 683 // Don't approve device requests if the tab was hidden.
622 // TODO(qinmin): Add a test for this. http://crbug.com/396869. 684 // TODO(qinmin): Add a test for this. http://crbug.com/396869.
623 return web_contents_->GetRenderWidgetHostView()->IsShowing(); 685 return web_contents_->GetRenderWidgetHostView()->IsShowing();
624 #endif 686 #endif
625 return true; 687 return true;
626 } 688 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698