OLD | NEW |
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/content_settings/tab_specific_content_settings.h" | 5 #include "chrome/browser/content_settings/tab_specific_content_settings.h" |
6 | 6 |
7 #include <list> | 7 #include <list> |
8 | 8 |
9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
10 #include "base/lazy_instance.h" | 10 #include "base/lazy_instance.h" |
(...skipping 512 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
523 prefs->GetString(prefs::kDefaultVideoCaptureDevice) != | 523 prefs->GetString(prefs::kDefaultVideoCaptureDevice) != |
524 media_stream_selected_video_device() && | 524 media_stream_selected_video_device() && |
525 media_indicator->IsCapturingVideo(web_contents())) | 525 media_indicator->IsCapturingVideo(web_contents())) |
526 return true; | 526 return true; |
527 | 527 |
528 return false; | 528 return false; |
529 } | 529 } |
530 | 530 |
531 void TabSpecificContentSettings::OnMediaStreamPermissionSet( | 531 void TabSpecificContentSettings::OnMediaStreamPermissionSet( |
532 const GURL& request_origin, | 532 const GURL& request_origin, |
533 const MediaStreamDevicesController::MediaStreamTypeSettingsMap& | 533 MicrophoneCameraState new_microphone_camera_state, |
534 request_permissions) { | 534 const std::string& media_stream_selected_audio_device, |
| 535 const std::string& media_stream_selected_video_device, |
| 536 const std::string& media_stream_requested_audio_device, |
| 537 const std::string& media_stream_requested_video_device) { |
535 media_stream_access_origin_ = request_origin; | 538 media_stream_access_origin_ = request_origin; |
536 MicrophoneCameraState prev_microphone_camera_state = microphone_camera_state_; | |
537 microphone_camera_state_ = MICROPHONE_CAMERA_NOT_ACCESSED; | |
538 | 539 |
539 PrefService* prefs = | 540 if (new_microphone_camera_state & MICROPHONE_ACCESSED) { |
540 Profile::FromBrowserContext(web_contents()->GetBrowserContext())-> | 541 media_stream_requested_audio_device_ = media_stream_requested_audio_device; |
541 GetPrefs(); | 542 media_stream_selected_audio_device_ = media_stream_selected_audio_device; |
542 MediaStreamDevicesController::MediaStreamTypeSettingsMap::const_iterator it = | 543 bool mic_blocked = (new_microphone_camera_state & MICROPHONE_BLOCKED) != 0; |
543 request_permissions.find(content::MEDIA_DEVICE_AUDIO_CAPTURE); | 544 content_allowed_[CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC] = !mic_blocked; |
544 if (it != request_permissions.end()) { | 545 content_blocked_[CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC] = mic_blocked; |
545 media_stream_requested_audio_device_ = it->second.requested_device_id; | |
546 media_stream_selected_audio_device_ = | |
547 media_stream_requested_audio_device_.empty() ? | |
548 prefs->GetString(prefs::kDefaultAudioCaptureDevice) : | |
549 media_stream_requested_audio_device_; | |
550 DCHECK_NE(MediaStreamDevicesController::MEDIA_NONE, it->second.permission); | |
551 bool mic_allowed = | |
552 it->second.permission == MediaStreamDevicesController::MEDIA_ALLOWED; | |
553 content_allowed_[CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC] = mic_allowed; | |
554 content_blocked_[CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC] = !mic_allowed; | |
555 microphone_camera_state_ |= | |
556 MICROPHONE_ACCESSED | (mic_allowed ? 0 : MICROPHONE_BLOCKED); | |
557 } | 546 } |
558 | 547 |
559 it = request_permissions.find(content::MEDIA_DEVICE_VIDEO_CAPTURE); | 548 if (new_microphone_camera_state & CAMERA_ACCESSED) { |
560 if (it != request_permissions.end()) { | 549 media_stream_requested_video_device_ = media_stream_requested_video_device; |
561 media_stream_requested_video_device_ = it->second.requested_device_id; | 550 media_stream_selected_video_device_ = media_stream_selected_video_device; |
562 media_stream_selected_video_device_ = | 551 bool cam_blocked = (new_microphone_camera_state & CAMERA_BLOCKED) != 0; |
563 media_stream_requested_video_device_.empty() ? | 552 content_allowed_[CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA] = !cam_blocked; |
564 prefs->GetString(prefs::kDefaultVideoCaptureDevice) : | 553 content_blocked_[CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA] = cam_blocked; |
565 media_stream_requested_video_device_; | |
566 DCHECK_NE(MediaStreamDevicesController::MEDIA_NONE, it->second.permission); | |
567 bool cam_allowed = | |
568 it->second.permission == MediaStreamDevicesController::MEDIA_ALLOWED; | |
569 content_allowed_[CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA] = cam_allowed; | |
570 content_blocked_[CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA] = !cam_allowed; | |
571 microphone_camera_state_ |= | |
572 CAMERA_ACCESSED | (cam_allowed ? 0 : CAMERA_BLOCKED); | |
573 } | 554 } |
574 | 555 |
575 if (microphone_camera_state_ != prev_microphone_camera_state) { | 556 if (microphone_camera_state_ != new_microphone_camera_state) { |
| 557 microphone_camera_state_ = new_microphone_camera_state; |
576 content::NotificationService::current()->Notify( | 558 content::NotificationService::current()->Notify( |
577 chrome::NOTIFICATION_WEB_CONTENT_SETTINGS_CHANGED, | 559 chrome::NOTIFICATION_WEB_CONTENT_SETTINGS_CHANGED, |
578 content::Source<WebContents>(web_contents()), | 560 content::Source<WebContents>(web_contents()), |
579 content::NotificationService::NoDetails()); | 561 content::NotificationService::NoDetails()); |
580 } | 562 } |
581 } | 563 } |
582 | 564 |
583 void TabSpecificContentSettings::OnMidiSysExAccessed( | 565 void TabSpecificContentSettings::OnMidiSysExAccessed( |
584 const GURL& requesting_origin) { | 566 const GURL& requesting_origin) { |
585 midi_usages_state_.OnPermissionSet(requesting_origin, true); | 567 midi_usages_state_.OnPermissionSet(requesting_origin, true); |
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
767 } | 749 } |
768 | 750 |
769 void TabSpecificContentSettings::RemoveSiteDataObserver( | 751 void TabSpecificContentSettings::RemoveSiteDataObserver( |
770 SiteDataObserver* observer) { | 752 SiteDataObserver* observer) { |
771 observer_list_.RemoveObserver(observer); | 753 observer_list_.RemoveObserver(observer); |
772 } | 754 } |
773 | 755 |
774 void TabSpecificContentSettings::NotifySiteDataObservers() { | 756 void TabSpecificContentSettings::NotifySiteDataObservers() { |
775 FOR_EACH_OBSERVER(SiteDataObserver, observer_list_, OnSiteDataAccessed()); | 757 FOR_EACH_OBSERVER(SiteDataObserver, observer_list_, OnSiteDataAccessed()); |
776 } | 758 } |
OLD | NEW |