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

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: Remaining style nits addressed 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();
106 auto it = request_permissions.find(content::MEDIA_DEVICE_AUDIO_CAPTURE);
107 if (it != request_permissions.end()) {
108 requested_audio_device = it->second.requested_device_id;
109 selected_audio_device = requested_audio_device.empty() ?
110 prefs->GetString(prefs::kDefaultAudioCaptureDevice) :
111 requested_audio_device;
112 DCHECK_NE(MediaStreamDevicesController::MEDIA_NONE, it->second.permission);
113 bool mic_allowed =
114 it->second.permission == MediaStreamDevicesController::MEDIA_ALLOWED;
115 microphone_camera_state |=
116 TabSpecificContentSettings::MICROPHONE_ACCESSED |
117 (mic_allowed ? 0 : TabSpecificContentSettings::MICROPHONE_BLOCKED);
118 }
119
120 it = request_permissions.find(content::MEDIA_DEVICE_VIDEO_CAPTURE);
121 if (it != request_permissions.end()) {
122 requested_video_device = it->second.requested_device_id;
123 selected_video_device = requested_video_device.empty() ?
124 prefs->GetString(prefs::kDefaultVideoCaptureDevice) :
125 requested_video_device;
126 DCHECK_NE(MediaStreamDevicesController::MEDIA_NONE, it->second.permission);
127 bool cam_allowed =
128 it->second.permission == MediaStreamDevicesController::MEDIA_ALLOWED;
129 microphone_camera_state |=
130 TabSpecificContentSettings::CAMERA_ACCESSED |
131 (cam_allowed ? 0 : TabSpecificContentSettings::CAMERA_BLOCKED);
132 }
133
134 content_settings->OnMediaStreamPermissionSet(request_origin,
135 microphone_camera_state,
136 selected_audio_device,
137 selected_video_device,
138 requested_audio_device,
139 requested_video_device);
140 }
141
87 } // namespace 142 } // namespace
88 143
89 MediaStreamDevicesController::MediaStreamTypeSettings::MediaStreamTypeSettings( 144 MediaStreamDevicesController::MediaStreamTypeSettings::MediaStreamTypeSettings(
90 Permission permission, const std::string& requested_device_id): 145 Permission permission, const std::string& requested_device_id):
91 permission(permission), requested_device_id(requested_device_id) {} 146 permission(permission), requested_device_id(requested_device_id) {}
92 147
93 MediaStreamDevicesController::MediaStreamTypeSettings:: 148 MediaStreamDevicesController::MediaStreamTypeSettings::
94 MediaStreamTypeSettings(): permission(MEDIA_NONE) {} 149 MediaStreamTypeSettings(): permission(MEDIA_NONE) {}
95 150
96 MediaStreamDevicesController::MediaStreamTypeSettings:: 151 MediaStreamDevicesController::MediaStreamTypeSettings::
(...skipping 475 matching lines...) Expand 10 before | Expand all | Expand 10 after
572 CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA, 627 CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA,
573 std::string(), 628 std::string(),
574 content_setting); 629 content_setting);
575 } 630 }
576 } 631 }
577 632
578 void MediaStreamDevicesController::NotifyUIRequestAccepted() const { 633 void MediaStreamDevicesController::NotifyUIRequestAccepted() const {
579 if (!content_settings_) 634 if (!content_settings_)
580 return; 635 return;
581 636
582 content_settings_->OnMediaStreamPermissionSet(request_.security_origin, 637 OnMediaStreamPermissionSet(content_settings_,
583 request_permissions_); 638 web_contents_,
639 request_.security_origin,
640 request_permissions_);
584 } 641 }
585 642
586 void MediaStreamDevicesController::NotifyUIRequestDenied() { 643 void MediaStreamDevicesController::NotifyUIRequestDenied() {
587 if (!content_settings_) 644 if (!content_settings_)
588 return; 645 return;
589 646
590 if (IsDeviceAudioCaptureRequestedAndAllowed()) { 647 if (IsDeviceAudioCaptureRequestedAndAllowed()) {
591 request_permissions_[content::MEDIA_DEVICE_AUDIO_CAPTURE].permission = 648 request_permissions_[content::MEDIA_DEVICE_AUDIO_CAPTURE].permission =
592 MEDIA_BLOCKED_BY_USER; 649 MEDIA_BLOCKED_BY_USER;
593 } 650 }
594 if (IsDeviceVideoCaptureRequestedAndAllowed()) { 651 if (IsDeviceVideoCaptureRequestedAndAllowed()) {
595 request_permissions_[content::MEDIA_DEVICE_VIDEO_CAPTURE].permission = 652 request_permissions_[content::MEDIA_DEVICE_VIDEO_CAPTURE].permission =
596 MEDIA_BLOCKED_BY_USER; 653 MEDIA_BLOCKED_BY_USER;
597 } 654 }
598 655
599 content_settings_->OnMediaStreamPermissionSet(request_.security_origin, 656 OnMediaStreamPermissionSet(content_settings_,
600 request_permissions_); 657 web_contents_,
658 request_.security_origin,
659 request_permissions_);
601 } 660 }
602 661
603 bool MediaStreamDevicesController::IsDeviceAudioCaptureRequestedAndAllowed() 662 bool MediaStreamDevicesController::IsDeviceAudioCaptureRequestedAndAllowed()
604 const { 663 const {
605 MediaStreamTypeSettingsMap::const_iterator it = 664 MediaStreamTypeSettingsMap::const_iterator it =
606 request_permissions_.find(content::MEDIA_DEVICE_AUDIO_CAPTURE); 665 request_permissions_.find(content::MEDIA_DEVICE_AUDIO_CAPTURE);
607 return (it != request_permissions_.end() && IsCaptureDeviceRequestAllowed() && 666 return (it != request_permissions_.end() && IsCaptureDeviceRequestAllowed() &&
608 it->second.permission == MEDIA_ALLOWED); 667 it->second.permission == MEDIA_ALLOWED);
609 } 668 }
610 669
611 bool MediaStreamDevicesController::IsDeviceVideoCaptureRequestedAndAllowed() 670 bool MediaStreamDevicesController::IsDeviceVideoCaptureRequestedAndAllowed()
612 const { 671 const {
613 MediaStreamTypeSettingsMap::const_iterator it = 672 MediaStreamTypeSettingsMap::const_iterator it =
614 request_permissions_.find(content::MEDIA_DEVICE_VIDEO_CAPTURE); 673 request_permissions_.find(content::MEDIA_DEVICE_VIDEO_CAPTURE);
615 return (it != request_permissions_.end() && IsCaptureDeviceRequestAllowed() && 674 return (it != request_permissions_.end() && IsCaptureDeviceRequestAllowed() &&
616 it->second.permission == MEDIA_ALLOWED); 675 it->second.permission == MEDIA_ALLOWED);
617 } 676 }
618 677
619 bool MediaStreamDevicesController::IsCaptureDeviceRequestAllowed() const { 678 bool MediaStreamDevicesController::IsCaptureDeviceRequestAllowed() const {
620 #if defined(OS_ANDROID) 679 #if defined(OS_ANDROID)
621 // Don't approve device requests if the tab was hidden. 680 // Don't approve device requests if the tab was hidden.
622 // TODO(qinmin): Add a test for this. http://crbug.com/396869. 681 // TODO(qinmin): Add a test for this. http://crbug.com/396869.
623 return web_contents_->GetRenderWidgetHostView()->IsShowing(); 682 return web_contents_->GetRenderWidgetHostView()->IsShowing();
624 #endif 683 #endif
625 return true; 684 return true;
626 } 685 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698