Chromium Code Reviews

Side by Side Diff: chrome/browser/android/preferences/website_preference_bridge.cc

Issue 1819773002: Use GURLs instead of patterns for SetContentSetting() in WebsitePreferenceBridge (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff |
« no previous file with comments | « chrome/android/java/src/org/chromium/chrome/browser/preferences/website/WebsitePreferenceBridge.java ('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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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/android/preferences/website_preference_bridge.h" 5 #include "chrome/browser/android/preferences/website_preference_bridge.h"
6 6
7 #include "base/android/jni_android.h" 7 #include "base/android/jni_android.h"
8 #include "base/android/jni_string.h" 8 #include "base/android/jni_string.h"
9 #include "base/android/scoped_java_ref.h" 9 #include "base/android/scoped_java_ref.h"
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 113 matching lines...)
124 GURL embedder_url(ConvertJavaStringToUTF8(env, embedder)); 124 GURL embedder_url(ConvertJavaStringToUTF8(env, embedder));
125 ContentSetting setting = 125 ContentSetting setting =
126 GetHostContentSettingsMap(is_incognito) 126 GetHostContentSettingsMap(is_incognito)
127 ->GetContentSetting(url, embedder_url, content_type, std::string()); 127 ->GetContentSetting(url, embedder_url, content_type, std::string());
128 return setting; 128 return setting;
129 } 129 }
130 130
131 void SetSettingForOrigin(JNIEnv* env, 131 void SetSettingForOrigin(JNIEnv* env,
132 ContentSettingsType content_type, 132 ContentSettingsType content_type,
133 jstring origin, 133 jstring origin,
134 ContentSettingsPattern secondary_pattern, 134 jstring embedder,
135 ContentSetting setting, 135 ContentSetting setting,
136 jboolean is_incognito) { 136 jboolean is_incognito) {
137 GURL url(ConvertJavaStringToUTF8(env, origin)); 137 GURL origin_url(ConvertJavaStringToUTF8(env, origin));
138 GURL embedder_url =
139 embedder ? GURL(ConvertJavaStringToUTF8(env, embedder)) : GURL();
138 GetHostContentSettingsMap(is_incognito) 140 GetHostContentSettingsMap(is_incognito)
139 ->SetContentSetting(ContentSettingsPattern::FromURLNoWildcard(url), 141 ->SetContentSettingDefaultScope(origin_url, embedder_url, content_type,
140 secondary_pattern, content_type, std::string(), 142 std::string(), setting);
141 setting);
142 WebSiteSettingsUmaUtil::LogPermissionChange(content_type, setting); 143 WebSiteSettingsUmaUtil::LogPermissionChange(content_type, setting);
143 } 144 }
144 145
145 } // anonymous namespace 146 } // anonymous namespace
146 147
147 static void GetFullscreenOrigins(JNIEnv* env, 148 static void GetFullscreenOrigins(JNIEnv* env,
148 const JavaParamRef<jclass>& clazz, 149 const JavaParamRef<jclass>& clazz,
149 const JavaParamRef<jobject>& list, 150 const JavaParamRef<jobject>& list,
150 jboolean managedOnly) { 151 jboolean managedOnly) {
151 GetOrigins(env, CONTENT_SETTINGS_TYPE_FULLSCREEN, 152 GetOrigins(env, CONTENT_SETTINGS_TYPE_FULLSCREEN,
152 &Java_WebsitePreferenceBridge_insertFullscreenInfoIntoList, list, 153 &Java_WebsitePreferenceBridge_insertFullscreenInfoIntoList, list,
153 managedOnly); 154 managedOnly);
154 } 155 }
155 156
156 static jint GetFullscreenSettingForOrigin(JNIEnv* env, 157 static jint GetFullscreenSettingForOrigin(JNIEnv* env,
157 const JavaParamRef<jclass>& clazz, 158 const JavaParamRef<jclass>& clazz,
158 const JavaParamRef<jstring>& origin, 159 const JavaParamRef<jstring>& origin,
159 const JavaParamRef<jstring>& embedder, 160 const JavaParamRef<jstring>& embedder,
160 jboolean is_incognito) { 161 jboolean is_incognito) {
161 return GetSettingForOrigin(env, CONTENT_SETTINGS_TYPE_FULLSCREEN, origin, 162 return GetSettingForOrigin(env, CONTENT_SETTINGS_TYPE_FULLSCREEN, origin,
162 embedder, is_incognito); 163 embedder, is_incognito);
163 } 164 }
164 165
165 static void SetFullscreenSettingForOrigin(JNIEnv* env, 166 static void SetFullscreenSettingForOrigin(JNIEnv* env,
166 const JavaParamRef<jclass>& clazz, 167 const JavaParamRef<jclass>& clazz,
167 const JavaParamRef<jstring>& origin, 168 const JavaParamRef<jstring>& origin,
168 const JavaParamRef<jstring>& embedder, 169 const JavaParamRef<jstring>& embedder,
169 jint value, 170 jint value,
170 jboolean is_incognito) { 171 jboolean is_incognito) {
171 GURL embedder_url(ConvertJavaStringToUTF8(env, embedder)); 172 SetSettingForOrigin(env, CONTENT_SETTINGS_TYPE_FULLSCREEN, origin, embedder,
172 SetSettingForOrigin(env, CONTENT_SETTINGS_TYPE_FULLSCREEN, origin, 173 static_cast<ContentSetting>(value), is_incognito);
173 ContentSettingsPattern::FromURLNoWildcard(embedder_url),
174 (ContentSetting) value, is_incognito);
175 } 174 }
176 175
177 static void GetGeolocationOrigins(JNIEnv* env, 176 static void GetGeolocationOrigins(JNIEnv* env,
178 const JavaParamRef<jclass>& clazz, 177 const JavaParamRef<jclass>& clazz,
179 const JavaParamRef<jobject>& list, 178 const JavaParamRef<jobject>& list,
180 jboolean managedOnly) { 179 jboolean managedOnly) {
181 GetOrigins(env, CONTENT_SETTINGS_TYPE_GEOLOCATION, 180 GetOrigins(env, CONTENT_SETTINGS_TYPE_GEOLOCATION,
182 &Java_WebsitePreferenceBridge_insertGeolocationInfoIntoList, list, 181 &Java_WebsitePreferenceBridge_insertGeolocationInfoIntoList, list,
183 managedOnly); 182 managedOnly);
184 } 183 }
185 184
186 static jint GetGeolocationSettingForOrigin( 185 static jint GetGeolocationSettingForOrigin(
187 JNIEnv* env, 186 JNIEnv* env,
188 const JavaParamRef<jclass>& clazz, 187 const JavaParamRef<jclass>& clazz,
189 const JavaParamRef<jstring>& origin, 188 const JavaParamRef<jstring>& origin,
190 const JavaParamRef<jstring>& embedder, 189 const JavaParamRef<jstring>& embedder,
191 jboolean is_incognito) { 190 jboolean is_incognito) {
192 return GetSettingForOrigin(env, CONTENT_SETTINGS_TYPE_GEOLOCATION, origin, 191 return GetSettingForOrigin(env, CONTENT_SETTINGS_TYPE_GEOLOCATION, origin,
193 embedder, is_incognito); 192 embedder, is_incognito);
194 } 193 }
195 194
196 static void SetGeolocationSettingForOrigin( 195 static void SetGeolocationSettingForOrigin(
197 JNIEnv* env, 196 JNIEnv* env,
198 const JavaParamRef<jclass>& clazz, 197 const JavaParamRef<jclass>& clazz,
199 const JavaParamRef<jstring>& origin, 198 const JavaParamRef<jstring>& origin,
200 const JavaParamRef<jstring>& embedder, 199 const JavaParamRef<jstring>& embedder,
201 jint value, 200 jint value,
202 jboolean is_incognito) { 201 jboolean is_incognito) {
203 GURL embedder_url(ConvertJavaStringToUTF8(env, embedder)); 202 SetSettingForOrigin(env, CONTENT_SETTINGS_TYPE_GEOLOCATION, origin, embedder,
204 SetSettingForOrigin(env, CONTENT_SETTINGS_TYPE_GEOLOCATION, origin, 203 static_cast<ContentSetting>(value), is_incognito);
205 ContentSettingsPattern::FromURLNoWildcard(embedder_url),
206 (ContentSetting) value, is_incognito);
207 } 204 }
208 205
209 static void GetKeygenOrigins(JNIEnv* env, 206 static void GetKeygenOrigins(JNIEnv* env,
210 const JavaParamRef<jclass>& clazz, 207 const JavaParamRef<jclass>& clazz,
211 const JavaParamRef<jobject>& list) { 208 const JavaParamRef<jobject>& list) {
212 GetOrigins(env, CONTENT_SETTINGS_TYPE_KEYGEN, 209 GetOrigins(env, CONTENT_SETTINGS_TYPE_KEYGEN,
213 &Java_WebsitePreferenceBridge_insertKeygenInfoIntoList, list, 210 &Java_WebsitePreferenceBridge_insertKeygenInfoIntoList, list,
214 false); 211 false);
215 } 212 }
216 213
217 static jint GetKeygenSettingForOrigin(JNIEnv* env, 214 static jint GetKeygenSettingForOrigin(JNIEnv* env,
218 const JavaParamRef<jclass>& clazz, 215 const JavaParamRef<jclass>& clazz,
219 const JavaParamRef<jstring>& origin, 216 const JavaParamRef<jstring>& origin,
220 const JavaParamRef<jstring>& embedder, 217 const JavaParamRef<jstring>& embedder,
221 jboolean is_incognito) { 218 jboolean is_incognito) {
222 return GetSettingForOrigin(env, CONTENT_SETTINGS_TYPE_KEYGEN, origin, 219 return GetSettingForOrigin(env, CONTENT_SETTINGS_TYPE_KEYGEN, origin,
223 embedder, is_incognito); 220 embedder, is_incognito);
224 } 221 }
225 222
226 static void SetKeygenSettingForOrigin(JNIEnv* env, 223 static void SetKeygenSettingForOrigin(JNIEnv* env,
227 const JavaParamRef<jclass>& clazz, 224 const JavaParamRef<jclass>& clazz,
228 const JavaParamRef<jstring>& origin, 225 const JavaParamRef<jstring>& origin,
229 const JavaParamRef<jstring>& embedder,
230 jint value, 226 jint value,
231 jboolean is_incognito) { 227 jboolean is_incognito) {
232 GURL embedder_url(ConvertJavaStringToUTF8(env, embedder)); 228 // Here 'nullptr' indicates that keygen uses wildcard for embedder.
233 SetSettingForOrigin(env, CONTENT_SETTINGS_TYPE_KEYGEN, origin, 229 SetSettingForOrigin(env, CONTENT_SETTINGS_TYPE_KEYGEN, origin, nullptr,
234 ContentSettingsPattern::FromURLNoWildcard(embedder_url), 230 static_cast<ContentSetting>(value), is_incognito);
235 (ContentSetting) value, is_incognito);
236 } 231 }
237 232
238 static jboolean GetKeygenBlocked(JNIEnv* env, 233 static jboolean GetKeygenBlocked(JNIEnv* env,
239 const JavaParamRef<jclass>& clazz, 234 const JavaParamRef<jclass>& clazz,
240 const JavaParamRef<jobject>& java_web_contents) { 235 const JavaParamRef<jobject>& java_web_contents) {
241 content::WebContents* web_contents = 236 content::WebContents* web_contents =
242 content::WebContents::FromJavaWebContents(java_web_contents); 237 content::WebContents::FromJavaWebContents(java_web_contents);
243 return TabSpecificContentSettings::FromWebContents( 238 return TabSpecificContentSettings::FromWebContents(
244 web_contents)->IsContentBlocked(CONTENT_SETTINGS_TYPE_KEYGEN); 239 web_contents)->IsContentBlocked(CONTENT_SETTINGS_TYPE_KEYGEN);
245 } 240 }
(...skipping 13 matching lines...)
259 return GetSettingForOrigin(env, CONTENT_SETTINGS_TYPE_MIDI_SYSEX, origin, 254 return GetSettingForOrigin(env, CONTENT_SETTINGS_TYPE_MIDI_SYSEX, origin,
260 embedder, is_incognito); 255 embedder, is_incognito);
261 } 256 }
262 257
263 static void SetMidiSettingForOrigin(JNIEnv* env, 258 static void SetMidiSettingForOrigin(JNIEnv* env,
264 const JavaParamRef<jclass>& clazz, 259 const JavaParamRef<jclass>& clazz,
265 const JavaParamRef<jstring>& origin, 260 const JavaParamRef<jstring>& origin,
266 const JavaParamRef<jstring>& embedder, 261 const JavaParamRef<jstring>& embedder,
267 jint value, 262 jint value,
268 jboolean is_incognito) { 263 jboolean is_incognito) {
269 GURL embedder_url(ConvertJavaStringToUTF8(env, embedder)); 264 SetSettingForOrigin(env, CONTENT_SETTINGS_TYPE_MIDI_SYSEX, origin, embedder,
270 SetSettingForOrigin(env, CONTENT_SETTINGS_TYPE_MIDI_SYSEX, origin, 265 static_cast<ContentSetting>(value), is_incognito);
271 ContentSettingsPattern::FromURLNoWildcard(embedder_url),
272 (ContentSetting) value, is_incognito);
273 } 266 }
274 267
275 static void GetProtectedMediaIdentifierOrigins( 268 static void GetProtectedMediaIdentifierOrigins(
276 JNIEnv* env, 269 JNIEnv* env,
277 const JavaParamRef<jclass>& clazz, 270 const JavaParamRef<jclass>& clazz,
278 const JavaParamRef<jobject>& list) { 271 const JavaParamRef<jobject>& list) {
279 GetOrigins( 272 GetOrigins(
280 env, CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER, 273 env, CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER,
281 &Java_WebsitePreferenceBridge_insertProtectedMediaIdentifierInfoIntoList, 274 &Java_WebsitePreferenceBridge_insertProtectedMediaIdentifierInfoIntoList,
282 list, false); 275 list, false);
(...skipping 10 matching lines...)
293 origin, embedder, is_incognito); 286 origin, embedder, is_incognito);
294 } 287 }
295 288
296 static void SetProtectedMediaIdentifierSettingForOrigin( 289 static void SetProtectedMediaIdentifierSettingForOrigin(
297 JNIEnv* env, 290 JNIEnv* env,
298 const JavaParamRef<jclass>& clazz, 291 const JavaParamRef<jclass>& clazz,
299 const JavaParamRef<jstring>& origin, 292 const JavaParamRef<jstring>& origin,
300 const JavaParamRef<jstring>& embedder, 293 const JavaParamRef<jstring>& embedder,
301 jint value, 294 jint value,
302 jboolean is_incognito) { 295 jboolean is_incognito) {
303 GURL embedder_url(ConvertJavaStringToUTF8(env, embedder));
304 SetSettingForOrigin(env, CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER, 296 SetSettingForOrigin(env, CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER,
305 origin, 297 origin, embedder, static_cast<ContentSetting>(value),
306 ContentSettingsPattern::FromURLNoWildcard(embedder_url), 298 is_incognito);
307 (ContentSetting) value, is_incognito);
308 } 299 }
309 300
310 static void GetNotificationOrigins(JNIEnv* env, 301 static void GetNotificationOrigins(JNIEnv* env,
311 const JavaParamRef<jclass>& clazz, 302 const JavaParamRef<jclass>& clazz,
312 const JavaParamRef<jobject>& list) { 303 const JavaParamRef<jobject>& list) {
313 GetOrigins(env, CONTENT_SETTINGS_TYPE_NOTIFICATIONS, 304 GetOrigins(env, CONTENT_SETTINGS_TYPE_NOTIFICATIONS,
314 &Java_WebsitePreferenceBridge_insertNotificationIntoList, list, 305 &Java_WebsitePreferenceBridge_insertNotificationIntoList, list,
315 false); 306 false);
316 } 307 }
317 308
(...skipping 69 matching lines...)
387 const JavaParamRef<jstring>& origin, 378 const JavaParamRef<jstring>& origin,
388 const JavaParamRef<jstring>& embedder, 379 const JavaParamRef<jstring>& embedder,
389 jboolean is_incognito) { 380 jboolean is_incognito) {
390 return GetSettingForOrigin(env, CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA, 381 return GetSettingForOrigin(env, CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA,
391 origin, embedder, is_incognito); 382 origin, embedder, is_incognito);
392 } 383 }
393 384
394 static void SetMicrophoneSettingForOrigin(JNIEnv* env, 385 static void SetMicrophoneSettingForOrigin(JNIEnv* env,
395 const JavaParamRef<jclass>& clazz, 386 const JavaParamRef<jclass>& clazz,
396 const JavaParamRef<jstring>& origin, 387 const JavaParamRef<jstring>& origin,
397 const JavaParamRef<jstring>& embedder,
398 jint value, 388 jint value,
399 jboolean is_incognito) { 389 jboolean is_incognito) {
390 // Here 'nullptr' indicates that microphone uses wildcard for embedder.
400 SetSettingForOrigin(env, CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC, origin, 391 SetSettingForOrigin(env, CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC, origin,
401 ContentSettingsPattern::Wildcard(), 392 nullptr, static_cast<ContentSetting>(value),
402 (ContentSetting) value, is_incognito); 393 is_incognito);
403 } 394 }
404 395
405 static void SetCameraSettingForOrigin(JNIEnv* env, 396 static void SetCameraSettingForOrigin(JNIEnv* env,
406 const JavaParamRef<jclass>& clazz, 397 const JavaParamRef<jclass>& clazz,
407 const JavaParamRef<jstring>& origin, 398 const JavaParamRef<jstring>& origin,
408 const JavaParamRef<jstring>& embedder,
409 jint value, 399 jint value,
410 jboolean is_incognito) { 400 jboolean is_incognito) {
401 // Here 'nullptr' indicates that camera uses wildcard for embedder.
411 SetSettingForOrigin(env, CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA, origin, 402 SetSettingForOrigin(env, CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA, origin,
412 ContentSettingsPattern::Wildcard(), 403 nullptr, static_cast<ContentSetting>(value),
413 (ContentSetting) value, is_incognito); 404 is_incognito);
414 } 405 }
415 406
416 static scoped_refptr<content_settings::CookieSettings> GetCookieSettings() { 407 static scoped_refptr<content_settings::CookieSettings> GetCookieSettings() {
417 // A single cookie setting applies to both incognito and non-incognito. 408 // A single cookie setting applies to both incognito and non-incognito.
418 Profile* profile = ProfileManager::GetActiveUserProfile(); 409 Profile* profile = ProfileManager::GetActiveUserProfile();
419 return CookieSettingsFactory::GetForProfile(profile); 410 return CookieSettingsFactory::GetForProfile(profile);
420 } 411 }
421 412
422 static void GetCookieOrigins(JNIEnv* env, 413 static void GetCookieOrigins(JNIEnv* env,
423 const JavaParamRef<jclass>& clazz, 414 const JavaParamRef<jclass>& clazz,
(...skipping 335 matching lines...)
759 GURL url(ConvertJavaStringToUTF8(env, jorigin)); 750 GURL url(ConvertJavaStringToUTF8(env, jorigin));
760 scoped_refptr<SiteDataDeleteHelper> site_data_deleter( 751 scoped_refptr<SiteDataDeleteHelper> site_data_deleter(
761 new SiteDataDeleteHelper(profile, url)); 752 new SiteDataDeleteHelper(profile, url));
762 site_data_deleter->Run(); 753 site_data_deleter->Run();
763 } 754 }
764 755
765 // Register native methods 756 // Register native methods
766 bool RegisterWebsitePreferenceBridge(JNIEnv* env) { 757 bool RegisterWebsitePreferenceBridge(JNIEnv* env) {
767 return RegisterNativesImpl(env); 758 return RegisterNativesImpl(env);
768 } 759 }
OLDNEW
« no previous file with comments | « chrome/android/java/src/org/chromium/chrome/browser/preferences/website/WebsitePreferenceBridge.java ('k') | no next file » | no next file with comments »

Powered by Google App Engine