Chromium Code Reviews| 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; |
|
vabr (Chromium)
2014/10/28 20:48:43
This != 0 might seem unnecessary, but without it,
Bernhard Bauer
2014/10/29 09:35:17
Yeah, direct assignment can be tricky (I remember
vabr (Chromium)
2014/10/29 10:30:21
If that happens, that would be bad. The C4800 warn
Bernhard Bauer
2014/10/29 13:56:59
TBH, the whole thing seems a bit weird. It's suppo
| |
| 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 |