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

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

Issue 929253004: Do not always store media device rejection. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed spelling. Created 5 years, 10 months 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
« no previous file with comments | « chrome/browser/media/media_stream_devices_controller.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 367 matching lines...) Expand 10 before | Expand all | Expand 10 after
378 break; 378 break;
379 } 379 }
380 } // switch 380 } // switch
381 381
382 // TODO(raymes): We currently set the content permission for non-https 382 // TODO(raymes): We currently set the content permission for non-https
383 // websites for Pepper requests as well. This is temporary and should be 383 // websites for Pepper requests as well. This is temporary and should be
384 // removed. 384 // removed.
385 if (update_content_setting) { 385 if (update_content_setting) {
386 if ((IsSchemeSecure() && !devices.empty()) || 386 if ((IsSchemeSecure() && !devices.empty()) ||
387 request_.request_type == content::MEDIA_OPEN_DEVICE) { 387 request_.request_type == content::MEDIA_OPEN_DEVICE) {
388 SetPermission(true); 388 StorePermission(true);
389 } 389 }
390 } 390 }
391 391
392 if (audio_allowed) { 392 if (audio_allowed) {
393 profile_->GetHostContentSettingsMap()->UpdateLastUsageByPattern( 393 profile_->GetHostContentSettingsMap()->UpdateLastUsageByPattern(
394 ContentSettingsPattern::FromURLNoWildcard(request_.security_origin), 394 ContentSettingsPattern::FromURLNoWildcard(request_.security_origin),
395 ContentSettingsPattern::Wildcard(), 395 ContentSettingsPattern::Wildcard(),
396 CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC); 396 CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC);
397 } 397 }
398 if (video_allowed) { 398 if (video_allowed) {
(...skipping 17 matching lines...) Expand all
416 content::MEDIA_DEVICE_NO_HARDWARE : content::MEDIA_DEVICE_OK, 416 content::MEDIA_DEVICE_NO_HARDWARE : content::MEDIA_DEVICE_OK,
417 ui.Pass()); 417 ui.Pass());
418 } 418 }
419 419
420 void MediaStreamDevicesController::Deny( 420 void MediaStreamDevicesController::Deny(
421 bool update_content_setting, 421 bool update_content_setting,
422 content::MediaStreamRequestResult result) { 422 content::MediaStreamRequestResult result) {
423 DLOG(WARNING) << "MediaStreamDevicesController::Deny: " << result; 423 DLOG(WARNING) << "MediaStreamDevicesController::Deny: " << result;
424 NotifyUIRequestDenied(); 424 NotifyUIRequestDenied();
425 425
426 if (update_content_setting) { 426 if (update_content_setting && request_.all_ancestors_have_same_origin) {
427 // Store sticky permissions if |update_content_setting| and the request
428 // is not done from an iframe where the ancestor has a different origin.
427 CHECK_EQ(content::MEDIA_DEVICE_PERMISSION_DENIED, result); 429 CHECK_EQ(content::MEDIA_DEVICE_PERMISSION_DENIED, result);
428 SetPermission(false); 430 StorePermission(false);
429 } 431 }
430 432
431 content::MediaResponseCallback cb = callback_; 433 content::MediaResponseCallback cb = callback_;
432 callback_.Reset(); 434 callback_.Reset();
433 cb.Run(content::MediaStreamDevices(), 435 cb.Run(content::MediaStreamDevices(),
434 result, 436 result,
435 scoped_ptr<content::MediaStreamUI>()); 437 scoped_ptr<content::MediaStreamUI>());
436 } 438 }
437 439
438 int MediaStreamDevicesController::GetIconID() const { 440 int MediaStreamDevicesController::GetIconID() const {
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after
597 profile_->GetHostContentSettingsMap()->GetDefaultContentSetting( 599 profile_->GetHostContentSettingsMap()->GetDefaultContentSetting(
598 CONTENT_SETTINGS_TYPE_MEDIASTREAM, NULL); 600 CONTENT_SETTINGS_TYPE_MEDIASTREAM, NULL);
599 return (current_setting == CONTENT_SETTING_BLOCK); 601 return (current_setting == CONTENT_SETTING_BLOCK);
600 } 602 }
601 603
602 bool MediaStreamDevicesController::IsSchemeSecure() const { 604 bool MediaStreamDevicesController::IsSchemeSecure() const {
603 return request_.security_origin.SchemeIsSecure() || 605 return request_.security_origin.SchemeIsSecure() ||
604 request_.security_origin.SchemeIs(extensions::kExtensionScheme); 606 request_.security_origin.SchemeIs(extensions::kExtensionScheme);
605 } 607 }
606 608
607 void MediaStreamDevicesController::SetPermission(bool allowed) const { 609 void MediaStreamDevicesController::StorePermission(bool allowed) const {
608 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 610 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
609 ContentSettingsPattern primary_pattern = 611 ContentSettingsPattern primary_pattern =
610 ContentSettingsPattern::FromURLNoWildcard(request_.security_origin); 612 ContentSettingsPattern::FromURLNoWildcard(request_.security_origin);
611 // Check the pattern is valid or not. When the request is from a file access, 613 // Check the pattern is valid or not. When the request is from a file access,
612 // no exception will be made. 614 // no exception will be made.
613 if (!primary_pattern.IsValid()) 615 if (!primary_pattern.IsValid())
614 return; 616 return;
615 617
616 ContentSetting content_setting = allowed ? 618 ContentSetting content_setting = allowed ?
617 CONTENT_SETTING_ALLOW : CONTENT_SETTING_BLOCK; 619 CONTENT_SETTING_ALLOW : CONTENT_SETTING_BLOCK;
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
681 } 683 }
682 684
683 bool MediaStreamDevicesController::IsCaptureDeviceRequestAllowed() const { 685 bool MediaStreamDevicesController::IsCaptureDeviceRequestAllowed() const {
684 #if defined(OS_ANDROID) 686 #if defined(OS_ANDROID)
685 // Don't approve device requests if the tab was hidden. 687 // Don't approve device requests if the tab was hidden.
686 // TODO(qinmin): Add a test for this. http://crbug.com/396869. 688 // TODO(qinmin): Add a test for this. http://crbug.com/396869.
687 return web_contents_->GetRenderWidgetHostView()->IsShowing(); 689 return web_contents_->GetRenderWidgetHostView()->IsShowing();
688 #endif 690 #endif
689 return true; 691 return true;
690 } 692 }
OLDNEW
« no previous file with comments | « chrome/browser/media/media_stream_devices_controller.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698