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

Side by Side Diff: chrome/browser/content_settings/tab_specific_content_settings.cc

Issue 2458453002: [sensors] Add Permission guard to the generic sensor apis.
Patch Set: rebase + blink reformat Created 3 years, 8 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
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/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 230 matching lines...) Expand 10 before | Expand all | Expand 10 after
241 241
242 if (content_type == CONTENT_SETTINGS_TYPE_IMAGES || 242 if (content_type == CONTENT_SETTINGS_TYPE_IMAGES ||
243 content_type == CONTENT_SETTINGS_TYPE_JAVASCRIPT || 243 content_type == CONTENT_SETTINGS_TYPE_JAVASCRIPT ||
244 content_type == CONTENT_SETTINGS_TYPE_PLUGINS || 244 content_type == CONTENT_SETTINGS_TYPE_PLUGINS ||
245 content_type == CONTENT_SETTINGS_TYPE_COOKIES || 245 content_type == CONTENT_SETTINGS_TYPE_COOKIES ||
246 content_type == CONTENT_SETTINGS_TYPE_POPUPS || 246 content_type == CONTENT_SETTINGS_TYPE_POPUPS ||
247 content_type == CONTENT_SETTINGS_TYPE_MIXEDSCRIPT || 247 content_type == CONTENT_SETTINGS_TYPE_MIXEDSCRIPT ||
248 content_type == CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC || 248 content_type == CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC ||
249 content_type == CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA || 249 content_type == CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA ||
250 content_type == CONTENT_SETTINGS_TYPE_PPAPI_BROKER || 250 content_type == CONTENT_SETTINGS_TYPE_PPAPI_BROKER ||
251 content_type == CONTENT_SETTINGS_TYPE_MIDI_SYSEX || 251 content_type == CONTENT_SETTINGS_TYPE_SENSORS ||
252 content_type == CONTENT_SETTINGS_TYPE_SUBRESOURCE_FILTER) { 252 content_type == CONTENT_SETTINGS_TYPE_MIDI_SYSEX) {
253 const auto& it = content_settings_status_.find(content_type); 253 const auto& it = content_settings_status_.find(content_type);
254 if (it != content_settings_status_.end()) 254 if (it != content_settings_status_.end())
255 return it->second.blocked; 255 return it->second.blocked;
256 } 256 }
257 257
258 return false; 258 return false;
259 } 259 }
260 260
261 bool TabSpecificContentSettings::IsBlockageIndicated( 261 bool TabSpecificContentSettings::IsBlockageIndicated(
262 ContentSettingsType content_type) const { 262 ContentSettingsType content_type) const {
(...skipping 12 matching lines...) Expand all
275 ContentSettingsType content_type) const { 275 ContentSettingsType content_type) const {
276 DCHECK_NE(CONTENT_SETTINGS_TYPE_AUTOMATIC_DOWNLOADS, content_type) 276 DCHECK_NE(CONTENT_SETTINGS_TYPE_AUTOMATIC_DOWNLOADS, content_type)
277 << "Automatic downloads handled by DownloadRequestLimiter"; 277 << "Automatic downloads handled by DownloadRequestLimiter";
278 278
279 // This method currently only returns meaningful values for the content type 279 // This method currently only returns meaningful values for the content type
280 // cookies, media, PPAPI broker, downloads, and MIDI sysex. 280 // cookies, media, PPAPI broker, downloads, and MIDI sysex.
281 if (content_type != CONTENT_SETTINGS_TYPE_COOKIES && 281 if (content_type != CONTENT_SETTINGS_TYPE_COOKIES &&
282 content_type != CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC && 282 content_type != CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC &&
283 content_type != CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA && 283 content_type != CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA &&
284 content_type != CONTENT_SETTINGS_TYPE_PPAPI_BROKER && 284 content_type != CONTENT_SETTINGS_TYPE_PPAPI_BROKER &&
285 content_type != CONTENT_SETTINGS_TYPE_SENSORS &&
285 content_type != CONTENT_SETTINGS_TYPE_MIDI_SYSEX) { 286 content_type != CONTENT_SETTINGS_TYPE_MIDI_SYSEX) {
286 return false; 287 return false;
287 } 288 }
288 289
289 const auto& it = content_settings_status_.find(content_type); 290 const auto& it = content_settings_status_.find(content_type);
290 if (it != content_settings_status_.end()) 291 if (it != content_settings_status_.end())
291 return it->second.allowed; 292 return it->second.allowed;
292 return false; 293 return false;
293 } 294 }
294 295
(...skipping 344 matching lines...) Expand 10 before | Expand all | Expand 10 after
639 midi_usages_state_.OnPermissionSet(requesting_origin, true); 640 midi_usages_state_.OnPermissionSet(requesting_origin, true);
640 OnContentAllowed(CONTENT_SETTINGS_TYPE_MIDI_SYSEX); 641 OnContentAllowed(CONTENT_SETTINGS_TYPE_MIDI_SYSEX);
641 } 642 }
642 643
643 void TabSpecificContentSettings::OnMidiSysExAccessBlocked( 644 void TabSpecificContentSettings::OnMidiSysExAccessBlocked(
644 const GURL& requesting_origin) { 645 const GURL& requesting_origin) {
645 midi_usages_state_.OnPermissionSet(requesting_origin, false); 646 midi_usages_state_.OnPermissionSet(requesting_origin, false);
646 OnContentBlocked(CONTENT_SETTINGS_TYPE_MIDI_SYSEX); 647 OnContentBlocked(CONTENT_SETTINGS_TYPE_MIDI_SYSEX);
647 } 648 }
648 649
650 void TabSpecificContentSettings::OnSensorAccessed(
651 const GURL& requesting_origin) {
652 OnContentAllowed(CONTENT_SETTINGS_TYPE_SENSORS);
653 }
654
655 void TabSpecificContentSettings::OnSensorAccessBlocked(
656 const GURL& requesting_origin) {
657 OnContentBlocked(CONTENT_SETTINGS_TYPE_SENSORS);
658 }
659
649 void TabSpecificContentSettings:: 660 void TabSpecificContentSettings::
650 ClearContentSettingsExceptForNavigationRelatedSettings() { 661 ClearContentSettingsExceptForNavigationRelatedSettings() {
651 for (auto& status : content_settings_status_) { 662 for (auto& status : content_settings_status_) {
652 if (status.first == CONTENT_SETTINGS_TYPE_COOKIES || 663 if (status.first == CONTENT_SETTINGS_TYPE_COOKIES ||
653 status.first == CONTENT_SETTINGS_TYPE_JAVASCRIPT) 664 status.first == CONTENT_SETTINGS_TYPE_JAVASCRIPT)
654 continue; 665 continue;
655 status.second.blocked = false; 666 status.second.blocked = false;
656 status.second.blockage_indicated_to_user = false; 667 status.second.blockage_indicated_to_user = false;
657 status.second.allowed = false; 668 status.second.allowed = false;
658 } 669 }
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
785 if (last_committed_entry) 796 if (last_committed_entry)
786 previous_url_ = last_committed_entry->GetURL(); 797 previous_url_ = last_committed_entry->GetURL();
787 798
788 // If we're displaying a network error page do not reset the content 799 // If we're displaying a network error page do not reset the content
789 // settings delegate's cookies so the user has a chance to modify cookie 800 // settings delegate's cookies so the user has a chance to modify cookie
790 // settings. 801 // settings.
791 if (!navigation_handle->IsErrorPage()) 802 if (!navigation_handle->IsErrorPage())
792 ClearNavigationRelatedContentSettings(); 803 ClearNavigationRelatedContentSettings();
793 ClearGeolocationContentSettings(); 804 ClearGeolocationContentSettings();
794 ClearMidiContentSettings(); 805 ClearMidiContentSettings();
806 // ClearSensorContentSettings();
795 ClearPendingProtocolHandler(); 807 ClearPendingProtocolHandler();
796 } 808 }
797 809
798 void TabSpecificContentSettings::DidFinishNavigation( 810 void TabSpecificContentSettings::DidFinishNavigation(
799 content::NavigationHandle* navigation_handle) { 811 content::NavigationHandle* navigation_handle) {
800 if (!navigation_handle->IsInMainFrame() || 812 if (!navigation_handle->IsInMainFrame() ||
801 !navigation_handle->HasCommitted() || 813 !navigation_handle->HasCommitted() ||
802 navigation_handle->IsSameDocument()) { 814 navigation_handle->IsSameDocument()) {
803 return; 815 return;
804 } 816 }
805 817
806 // Clear "blocked" flags. 818 // Clear "blocked" flags.
807 ClearContentSettingsExceptForNavigationRelatedSettings(); 819 ClearContentSettingsExceptForNavigationRelatedSettings();
808 blocked_plugin_names_.clear(); 820 blocked_plugin_names_.clear();
809 GeolocationDidNavigate(navigation_handle); 821 GeolocationDidNavigate(navigation_handle);
810 MidiDidNavigate(navigation_handle); 822 MidiDidNavigate(navigation_handle);
823 // SensorDidNavigate(navigation_handle);
811 824
812 if (web_contents()->GetVisibleURL().SchemeIsHTTPOrHTTPS()) { 825 if (web_contents()->GetVisibleURL().SchemeIsHTTPOrHTTPS()) {
813 content_settings::RecordPluginsAction( 826 content_settings::RecordPluginsAction(
814 content_settings::PLUGINS_ACTION_TOTAL_NAVIGATIONS); 827 content_settings::PLUGINS_ACTION_TOTAL_NAVIGATIONS);
815 } 828 }
816 } 829 }
817 830
818 void TabSpecificContentSettings::AppCacheAccessed(const GURL& manifest_url, 831 void TabSpecificContentSettings::AppCacheAccessed(const GURL& manifest_url,
819 bool blocked_by_policy) { 832 bool blocked_by_policy) {
820 if (blocked_by_policy) { 833 if (blocked_by_policy) {
(...skipping 21 matching lines...) Expand all
842 } 855 }
843 856
844 void TabSpecificContentSettings::ClearGeolocationContentSettings() { 857 void TabSpecificContentSettings::ClearGeolocationContentSettings() {
845 geolocation_usages_state_.ClearStateMap(); 858 geolocation_usages_state_.ClearStateMap();
846 } 859 }
847 860
848 void TabSpecificContentSettings::ClearMidiContentSettings() { 861 void TabSpecificContentSettings::ClearMidiContentSettings() {
849 midi_usages_state_.ClearStateMap(); 862 midi_usages_state_.ClearStateMap();
850 } 863 }
851 864
865 /*
866 void TabSpecificContentSettings::ClearSensorContentSettings() {
867 sensors_usages_state_.ClearStateMap();
868 }
869 */
870
852 void TabSpecificContentSettings::GeolocationDidNavigate( 871 void TabSpecificContentSettings::GeolocationDidNavigate(
853 content::NavigationHandle* navigation_handle) { 872 content::NavigationHandle* navigation_handle) {
854 ContentSettingsUsagesState::CommittedDetails committed_details; 873 ContentSettingsUsagesState::CommittedDetails committed_details;
855 committed_details.current_url = navigation_handle->GetURL(); 874 committed_details.current_url = navigation_handle->GetURL();
856 committed_details.previous_url = previous_url_; 875 committed_details.previous_url = previous_url_;
857 876
858 geolocation_usages_state_.DidNavigate(committed_details); 877 geolocation_usages_state_.DidNavigate(committed_details);
859 } 878 }
860 879
861 void TabSpecificContentSettings::MidiDidNavigate( 880 void TabSpecificContentSettings::MidiDidNavigate(
862 content::NavigationHandle* navigation_handle) { 881 content::NavigationHandle* navigation_handle) {
863 ContentSettingsUsagesState::CommittedDetails committed_details; 882 ContentSettingsUsagesState::CommittedDetails committed_details;
864 committed_details.current_url = navigation_handle->GetURL(); 883 committed_details.current_url = navigation_handle->GetURL();
865 committed_details.previous_url = previous_url_; 884 committed_details.previous_url = previous_url_;
866 midi_usages_state_.DidNavigate(committed_details); 885 midi_usages_state_.DidNavigate(committed_details);
867 } 886 }
868 887
888 /*
889 void TabSpecificContentSettings::SensorDidNavigate(
890 content::NavigationHandle* navigation_handle) {
891 ContentSettingsUsagesState::CommittedDetails committed_details;
892 committed_details.current_url = navigation_handle->GetURL();
893 committed_details.previous_url = previous_url_;
894 sensors_usages_state_.DidNavigate(committed_details);
895 }
896 */
897
869 void TabSpecificContentSettings::BlockAllContentForTesting() { 898 void TabSpecificContentSettings::BlockAllContentForTesting() {
870 content_settings::ContentSettingsRegistry* registry = 899 content_settings::ContentSettingsRegistry* registry =
871 content_settings::ContentSettingsRegistry::GetInstance(); 900 content_settings::ContentSettingsRegistry::GetInstance();
872 for (const content_settings::ContentSettingsInfo* info : *registry) { 901 for (const content_settings::ContentSettingsInfo* info : *registry) {
873 ContentSettingsType type = info->website_settings_info()->type(); 902 ContentSettingsType type = info->website_settings_info()->type();
874 if (type != CONTENT_SETTINGS_TYPE_GEOLOCATION && 903 if (type != CONTENT_SETTINGS_TYPE_GEOLOCATION &&
875 type != CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC && 904 type != CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC &&
876 type != CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA) { 905 type != CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA) {
877 OnContentBlocked(type); 906 OnContentBlocked(type);
878 } 907 }
879 } 908 }
880 909
881 // Geolocation and media must be blocked separately, as the generic 910 // Geolocation and media must be blocked separately, as the generic
882 // TabSpecificContentSettings::OnContentBlocked does not apply to them. 911 // TabSpecificContentSettings::OnContentBlocked does not apply to them.
883 OnGeolocationPermissionSet(web_contents()->GetLastCommittedURL(), false); 912 OnGeolocationPermissionSet(web_contents()->GetLastCommittedURL(), false);
884 MicrophoneCameraStateFlags media_blocked = 913 MicrophoneCameraStateFlags media_blocked =
885 static_cast<MicrophoneCameraStateFlags>( 914 static_cast<MicrophoneCameraStateFlags>(
886 TabSpecificContentSettings::MICROPHONE_ACCESSED | 915 TabSpecificContentSettings::MICROPHONE_ACCESSED |
887 TabSpecificContentSettings::MICROPHONE_BLOCKED | 916 TabSpecificContentSettings::MICROPHONE_BLOCKED |
888 TabSpecificContentSettings::CAMERA_ACCESSED | 917 TabSpecificContentSettings::CAMERA_ACCESSED |
889 TabSpecificContentSettings::CAMERA_BLOCKED); 918 TabSpecificContentSettings::CAMERA_BLOCKED);
890 OnMediaStreamPermissionSet( 919 OnMediaStreamPermissionSet(
891 web_contents()->GetLastCommittedURL(), 920 web_contents()->GetLastCommittedURL(),
892 media_blocked, 921 media_blocked,
893 std::string(), std::string(), std::string(), std::string()); 922 std::string(), std::string(), std::string(), std::string());
894 } 923 }
OLDNEW
« no previous file with comments | « chrome/browser/content_settings/tab_specific_content_settings.h ('k') | chrome/browser/generic_sensor_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698