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

Side by Side Diff: chrome/browser/geolocation/geolocation_permission_context_android.cc

Issue 2945243002: Permissions: Allow PermissionManager to return more PermissionStatusSources.
Patch Set: Cleanup. Created 3 years, 6 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 2012 The Chromium Authors. All rights reserved. 1 // Copyright 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/geolocation/geolocation_permission_context_android.h" 5 #include "chrome/browser/geolocation/geolocation_permission_context_android.h"
6 6
7 #include <utility> 7 #include <utility>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
83 GeolocationPermissionContextAndroid::GeolocationPermissionContextAndroid( 83 GeolocationPermissionContextAndroid::GeolocationPermissionContextAndroid(
84 Profile* profile) 84 Profile* profile)
85 : GeolocationPermissionContext(profile), 85 : GeolocationPermissionContext(profile),
86 location_settings_(new LocationSettingsImpl()), 86 location_settings_(new LocationSettingsImpl()),
87 permission_update_infobar_(nullptr), 87 permission_update_infobar_(nullptr),
88 weak_factory_(this) {} 88 weak_factory_(this) {}
89 89
90 GeolocationPermissionContextAndroid::~GeolocationPermissionContextAndroid() { 90 GeolocationPermissionContextAndroid::~GeolocationPermissionContextAndroid() {
91 } 91 }
92 92
93 ContentSetting GeolocationPermissionContextAndroid::GetPermissionStatusInternal( 93 PermissionResult
94 GeolocationPermissionContextAndroid::GetPermissionStatusInternal(
94 content::RenderFrameHost* render_frame_host, 95 content::RenderFrameHost* render_frame_host,
95 const GURL& requesting_origin, 96 const GURL& requesting_origin,
96 const GURL& embedding_origin) const { 97 const GURL& embedding_origin) const {
97 ContentSetting value = 98 PermissionResult result =
98 GeolocationPermissionContext::GetPermissionStatusInternal( 99 GeolocationPermissionContext::GetPermissionStatusInternal(
99 render_frame_host, requesting_origin, embedding_origin); 100 render_frame_host, requesting_origin, embedding_origin);
100 101
101 if (value == CONTENT_SETTING_ASK && requesting_origin == embedding_origin) { 102 if (result.content_setting == CONTENT_SETTING_ASK &&
103 requesting_origin == embedding_origin) {
102 // Consult the DSE Geolocation setting. Note that this only needs to be 104 // Consult the DSE Geolocation setting. Note that this only needs to be
103 // consulted when the content setting is ASK. In the other cases (ALLOW or 105 // consulted when the content setting is ASK. In the other cases (ALLOW or
104 // BLOCK) checking the setting is redundant, as the setting is kept 106 // BLOCK) checking the setting is redundant, as the setting is kept
105 // consistent with the content setting. 107 // consistent with the content setting.
106 SearchGeolocationService* search_helper = 108 SearchGeolocationService* search_helper =
107 SearchGeolocationService::Factory::GetForBrowserContext(profile()); 109 SearchGeolocationService::Factory::GetForBrowserContext(profile());
108 110
109 // If the user is incognito, use the DSE Geolocation setting from the 111 // If the user is incognito, use the DSE Geolocation setting from the
110 // original profile - but only if it is BLOCK. 112 // original profile - but only if it is BLOCK.
111 if (!search_helper) { 113 if (!search_helper) {
112 DCHECK(profile()->IsOffTheRecord()); 114 DCHECK(profile()->IsOffTheRecord());
113 search_helper = SearchGeolocationService::Factory::GetForBrowserContext( 115 search_helper = SearchGeolocationService::Factory::GetForBrowserContext(
114 profile()->GetOriginalProfile()); 116 profile()->GetOriginalProfile());
115 } 117 }
116 118
117 if (search_helper && 119 if (search_helper &&
118 search_helper->UseDSEGeolocationSetting( 120 search_helper->UseDSEGeolocationSetting(
119 url::Origin(embedding_origin))) { 121 url::Origin(embedding_origin))) {
120 if (!search_helper->GetDSEGeolocationSetting()) { 122 if (!search_helper->GetDSEGeolocationSetting()) {
121 // If the DSE setting is off, always return BLOCK. 123 // If the DSE setting is off, always return BLOCK.
122 value = CONTENT_SETTING_BLOCK; 124 result.content_setting = CONTENT_SETTING_BLOCK;
123 } else if (!profile()->IsOffTheRecord()) { 125 } else if (!profile()->IsOffTheRecord()) {
124 // Otherwise, return ALLOW only if this is not incognito. 126 // Otherwise, return ALLOW only if this is not incognito.
125 value = CONTENT_SETTING_ALLOW; 127 result.content_setting = CONTENT_SETTING_ALLOW;
126 } 128 }
127 } 129 }
128 } 130 }
129 131
130 return value; 132 return result;
131 } 133 }
132 134
133 // static 135 // static
134 void GeolocationPermissionContextAndroid::AddDayOffsetForTesting(int days) { 136 void GeolocationPermissionContextAndroid::AddDayOffsetForTesting(int days) {
135 g_day_offset_for_testing += days; 137 g_day_offset_for_testing += days;
136 } 138 }
137 139
138 // static 140 // static
139 void GeolocationPermissionContextAndroid::SetDSEOriginForTesting( 141 void GeolocationPermissionContextAndroid::SetDSEOriginForTesting(
140 const char* dse_origin) { 142 const char* dse_origin) {
(...skipping 361 matching lines...) Expand 10 before | Expand all | Expand 10 after
502 // The tab helper can be null in tests. 504 // The tab helper can be null in tests.
503 if (disclosure_helper) 505 if (disclosure_helper)
504 disclosure_helper->MaybeShowDisclosureForAPIAccess(requesting_origin); 506 disclosure_helper->MaybeShowDisclosureForAPIAccess(requesting_origin);
505 } 507 }
506 } 508 }
507 509
508 void GeolocationPermissionContextAndroid::SetLocationSettingsForTesting( 510 void GeolocationPermissionContextAndroid::SetLocationSettingsForTesting(
509 std::unique_ptr<LocationSettings> settings) { 511 std::unique_ptr<LocationSettings> settings) {
510 location_settings_ = std::move(settings); 512 location_settings_ = std::move(settings);
511 } 513 }
OLDNEW
« no previous file with comments | « chrome/browser/geolocation/geolocation_permission_context_android.h ('k') | chrome/browser/media/midi_permission_context.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698