| 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/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 522 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 533 | 533 |
| 534 if (policy == POLICY_NOT_SET) { | 534 if (policy == POLICY_NOT_SET) { |
| 535 // Only load content settings from secure origins unless it is a | 535 // Only load content settings from secure origins unless it is a |
| 536 // content::MEDIA_OPEN_DEVICE (Pepper) request. | 536 // content::MEDIA_OPEN_DEVICE (Pepper) request. |
| 537 if (!IsSchemeSecure() && | 537 if (!IsSchemeSecure() && |
| 538 request_.request_type != content::MEDIA_OPEN_DEVICE) { | 538 request_.request_type != content::MEDIA_OPEN_DEVICE) { |
| 539 return false; | 539 return false; |
| 540 } | 540 } |
| 541 if (profile_->GetHostContentSettingsMap()->GetContentSetting( | 541 if (profile_->GetHostContentSettingsMap()->GetContentSetting( |
| 542 request_.security_origin, request_.security_origin, | 542 request_.security_origin, request_.security_origin, |
| 543 device_checks[i].settings_type, NO_RESOURCE_IDENTIFIER) != | 543 device_checks[i].settings_type, |
| 544 CONTENT_SETTING_ALLOW) { | 544 NoResourceIdentifier::GetResourceIdentifier()) != |
| 545 CONTENT_SETTING_ALLOW) { |
| 545 return false; | 546 return false; |
| 546 } | 547 } |
| 547 } | 548 } |
| 548 // If we get here, then either policy is set to ALWAYS_ALLOW or the content | 549 // If we get here, then either policy is set to ALWAYS_ALLOW or the content |
| 549 // settings allow the request by default. | 550 // settings allow the request by default. |
| 550 } | 551 } |
| 551 | 552 |
| 552 return true; | 553 return true; |
| 553 } | 554 } |
| 554 | 555 |
| 555 int MediaStreamDevicesController::FilterBlockedByDefaultDevices() { | 556 int MediaStreamDevicesController::FilterBlockedByDefaultDevices() { |
| 556 int requested_devices = 0; | 557 int requested_devices = 0; |
| 557 | 558 |
| 558 if (IsDeviceAudioCaptureRequestedAndAllowed()) { | 559 if (IsDeviceAudioCaptureRequestedAndAllowed()) { |
| 559 if (profile_->GetHostContentSettingsMap()->GetContentSetting( | 560 if (profile_->GetHostContentSettingsMap()->GetContentSetting( |
| 560 request_.security_origin, | 561 request_.security_origin, request_.security_origin, |
| 561 request_.security_origin, | 562 CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC, |
| 562 CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC, | 563 NoResourceIdentifier::GetResourceIdentifier()) == |
| 563 NO_RESOURCE_IDENTIFIER) == CONTENT_SETTING_BLOCK) { | 564 CONTENT_SETTING_BLOCK) { |
| 564 request_permissions_[content::MEDIA_DEVICE_AUDIO_CAPTURE].permission = | 565 request_permissions_[content::MEDIA_DEVICE_AUDIO_CAPTURE].permission = |
| 565 MEDIA_BLOCKED_BY_USER_SETTING; | 566 MEDIA_BLOCKED_BY_USER_SETTING; |
| 566 } else { | 567 } else { |
| 567 ++requested_devices; | 568 ++requested_devices; |
| 568 } | 569 } |
| 569 } | 570 } |
| 570 | 571 |
| 571 if (IsDeviceVideoCaptureRequestedAndAllowed()) { | 572 if (IsDeviceVideoCaptureRequestedAndAllowed()) { |
| 572 if (profile_->GetHostContentSettingsMap()->GetContentSetting( | 573 if (profile_->GetHostContentSettingsMap()->GetContentSetting( |
| 573 request_.security_origin, | 574 request_.security_origin, request_.security_origin, |
| 574 request_.security_origin, | 575 CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA, |
| 575 CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA, | 576 NoResourceIdentifier::GetResourceIdentifier()) == |
| 576 NO_RESOURCE_IDENTIFIER) == CONTENT_SETTING_BLOCK) { | 577 CONTENT_SETTING_BLOCK) { |
| 577 request_permissions_[content::MEDIA_DEVICE_VIDEO_CAPTURE].permission = | 578 request_permissions_[content::MEDIA_DEVICE_VIDEO_CAPTURE].permission = |
| 578 MEDIA_BLOCKED_BY_USER_SETTING; | 579 MEDIA_BLOCKED_BY_USER_SETTING; |
| 579 } else { | 580 } else { |
| 580 ++requested_devices; | 581 ++requested_devices; |
| 581 } | 582 } |
| 582 } | 583 } |
| 583 | 584 |
| 584 return requested_devices; | 585 return requested_devices; |
| 585 } | 586 } |
| 586 | 587 |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 677 } | 678 } |
| 678 | 679 |
| 679 bool MediaStreamDevicesController::IsCaptureDeviceRequestAllowed() const { | 680 bool MediaStreamDevicesController::IsCaptureDeviceRequestAllowed() const { |
| 680 #if defined(OS_ANDROID) | 681 #if defined(OS_ANDROID) |
| 681 // Don't approve device requests if the tab was hidden. | 682 // Don't approve device requests if the tab was hidden. |
| 682 // TODO(qinmin): Add a test for this. http://crbug.com/396869. | 683 // TODO(qinmin): Add a test for this. http://crbug.com/396869. |
| 683 return web_contents_->GetRenderWidgetHostView()->IsShowing(); | 684 return web_contents_->GetRenderWidgetHostView()->IsShowing(); |
| 684 #endif | 685 #endif |
| 685 return true; | 686 return true; |
| 686 } | 687 } |
| OLD | NEW |