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

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

Issue 1312153003: jni_generator: Pass object parameters as JavaParamRef. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 5 years, 3 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 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 157 matching lines...) Expand 10 before | Expand all | Expand 10 after
168 NOTREACHED(); 168 NOTREACHED();
169 } 169 }
170 GetHostContentSettingsMap(is_incognito) 170 GetHostContentSettingsMap(is_incognito)
171 ->SetContentSetting(ContentSettingsPattern::FromURLNoWildcard(url), 171 ->SetContentSetting(ContentSettingsPattern::FromURLNoWildcard(url),
172 secondary_pattern, content_type, std::string(), 172 secondary_pattern, content_type, std::string(),
173 setting); 173 setting);
174 WebSiteSettingsUmaUtil::LogPermissionChange(content_type, setting); 174 WebSiteSettingsUmaUtil::LogPermissionChange(content_type, setting);
175 } 175 }
176 176
177 static void GetFullscreenOrigins(JNIEnv* env, 177 static void GetFullscreenOrigins(JNIEnv* env,
178 jclass clazz, 178 const JavaParamRef<jclass>& clazz,
179 jobject list, 179 const JavaParamRef<jobject>& list,
180 jboolean managedOnly) { 180 jboolean managedOnly) {
181 GetOrigins(env, CONTENT_SETTINGS_TYPE_FULLSCREEN, list, managedOnly); 181 GetOrigins(env, CONTENT_SETTINGS_TYPE_FULLSCREEN, list, managedOnly);
182 } 182 }
183 183
184 static jint GetFullscreenSettingForOrigin(JNIEnv* env, 184 static jint GetFullscreenSettingForOrigin(JNIEnv* env,
185 jclass clazz, 185 const JavaParamRef<jclass>& clazz,
186 jstring origin, 186 const JavaParamRef<jstring>& origin,
187 jstring embedder, 187 const JavaParamRef<jstring>& embedder,
188 jboolean is_incognito) { 188 jboolean is_incognito) {
189 return GetSettingForOrigin(env, CONTENT_SETTINGS_TYPE_FULLSCREEN, origin, 189 return GetSettingForOrigin(env, CONTENT_SETTINGS_TYPE_FULLSCREEN, origin,
190 embedder, is_incognito); 190 embedder, is_incognito);
191 } 191 }
192 192
193 static void SetFullscreenSettingForOrigin(JNIEnv* env, 193 static void SetFullscreenSettingForOrigin(JNIEnv* env,
194 jclass clazz, 194 const JavaParamRef<jclass>& clazz,
195 jstring origin, 195 const JavaParamRef<jstring>& origin,
196 jstring embedder, 196 const JavaParamRef<jstring>& embedder,
197 jint value, 197 jint value,
198 jboolean is_incognito) { 198 jboolean is_incognito) {
199 GURL embedder_url(ConvertJavaStringToUTF8(env, embedder)); 199 GURL embedder_url(ConvertJavaStringToUTF8(env, embedder));
200 SetSettingForOrigin(env, CONTENT_SETTINGS_TYPE_FULLSCREEN, origin, 200 SetSettingForOrigin(env, CONTENT_SETTINGS_TYPE_FULLSCREEN, origin,
201 ContentSettingsPattern::FromURLNoWildcard(embedder_url), 201 ContentSettingsPattern::FromURLNoWildcard(embedder_url),
202 value, is_incognito); 202 value, is_incognito);
203 } 203 }
204 204
205 static void GetGeolocationOrigins(JNIEnv* env, 205 static void GetGeolocationOrigins(JNIEnv* env,
206 jclass clazz, 206 const JavaParamRef<jclass>& clazz,
207 jobject list, 207 const JavaParamRef<jobject>& list,
208 jboolean managedOnly) { 208 jboolean managedOnly) {
209 GetOrigins(env, CONTENT_SETTINGS_TYPE_GEOLOCATION, list, managedOnly); 209 GetOrigins(env, CONTENT_SETTINGS_TYPE_GEOLOCATION, list, managedOnly);
210 } 210 }
211 211
212 static jint GetGeolocationSettingForOrigin(JNIEnv* env, 212 static jint GetGeolocationSettingForOrigin(
213 jclass clazz, 213 JNIEnv* env,
214 jstring origin, 214 const JavaParamRef<jclass>& clazz,
215 jstring embedder, 215 const JavaParamRef<jstring>& origin,
216 jboolean is_incognito) { 216 const JavaParamRef<jstring>& embedder,
217 jboolean is_incognito) {
217 return GetSettingForOrigin(env, CONTENT_SETTINGS_TYPE_GEOLOCATION, origin, 218 return GetSettingForOrigin(env, CONTENT_SETTINGS_TYPE_GEOLOCATION, origin,
218 embedder, is_incognito); 219 embedder, is_incognito);
219 } 220 }
220 221
221 static void SetGeolocationSettingForOrigin(JNIEnv* env, 222 static void SetGeolocationSettingForOrigin(
222 jclass clazz, 223 JNIEnv* env,
223 jstring origin, 224 const JavaParamRef<jclass>& clazz,
224 jstring embedder, 225 const JavaParamRef<jstring>& origin,
225 jint value, 226 const JavaParamRef<jstring>& embedder,
226 jboolean is_incognito) { 227 jint value,
228 jboolean is_incognito) {
227 GURL embedder_url(ConvertJavaStringToUTF8(env, embedder)); 229 GURL embedder_url(ConvertJavaStringToUTF8(env, embedder));
228 SetSettingForOrigin(env, CONTENT_SETTINGS_TYPE_GEOLOCATION, origin, 230 SetSettingForOrigin(env, CONTENT_SETTINGS_TYPE_GEOLOCATION, origin,
229 ContentSettingsPattern::FromURLNoWildcard(embedder_url), 231 ContentSettingsPattern::FromURLNoWildcard(embedder_url),
230 value, is_incognito); 232 value, is_incognito);
231 } 233 }
232 234
233 static void GetMidiOrigins(JNIEnv* env, jclass clazz, jobject list) { 235 static void GetMidiOrigins(JNIEnv* env,
236 const JavaParamRef<jclass>& clazz,
237 const JavaParamRef<jobject>& list) {
234 GetOrigins(env, CONTENT_SETTINGS_TYPE_MIDI_SYSEX, list, false); 238 GetOrigins(env, CONTENT_SETTINGS_TYPE_MIDI_SYSEX, list, false);
235 } 239 }
236 240
237 static jint GetMidiSettingForOrigin(JNIEnv* env, 241 static jint GetMidiSettingForOrigin(JNIEnv* env,
238 jclass clazz, 242 const JavaParamRef<jclass>& clazz,
239 jstring origin, 243 const JavaParamRef<jstring>& origin,
240 jstring embedder, 244 const JavaParamRef<jstring>& embedder,
241 jboolean is_incognito) { 245 jboolean is_incognito) {
242 return GetSettingForOrigin(env, CONTENT_SETTINGS_TYPE_MIDI_SYSEX, origin, 246 return GetSettingForOrigin(env, CONTENT_SETTINGS_TYPE_MIDI_SYSEX, origin,
243 embedder, is_incognito); 247 embedder, is_incognito);
244 } 248 }
245 249
246 static void SetMidiSettingForOrigin(JNIEnv* env, 250 static void SetMidiSettingForOrigin(JNIEnv* env,
247 jclass clazz, 251 const JavaParamRef<jclass>& clazz,
248 jstring origin, 252 const JavaParamRef<jstring>& origin,
249 jstring embedder, 253 const JavaParamRef<jstring>& embedder,
250 jint value, 254 jint value,
251 jboolean is_incognito) { 255 jboolean is_incognito) {
252 GURL embedder_url(ConvertJavaStringToUTF8(env, embedder)); 256 GURL embedder_url(ConvertJavaStringToUTF8(env, embedder));
253 SetSettingForOrigin(env, CONTENT_SETTINGS_TYPE_MIDI_SYSEX, origin, 257 SetSettingForOrigin(env, CONTENT_SETTINGS_TYPE_MIDI_SYSEX, origin,
254 ContentSettingsPattern::FromURLNoWildcard(embedder_url), 258 ContentSettingsPattern::FromURLNoWildcard(embedder_url),
255 value, is_incognito); 259 value, is_incognito);
256 } 260 }
257 261
258 static void GetProtectedMediaIdentifierOrigins(JNIEnv* env, jclass clazz, 262 static void GetProtectedMediaIdentifierOrigins(
259 jobject list) { 263 JNIEnv* env,
264 const JavaParamRef<jclass>& clazz,
265 const JavaParamRef<jobject>& list) {
260 GetOrigins(env, CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER, list, 266 GetOrigins(env, CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER, list,
261 false); 267 false);
262 } 268 }
263 269
264 static jint GetProtectedMediaIdentifierSettingForOrigin(JNIEnv* env, 270 static jint GetProtectedMediaIdentifierSettingForOrigin(
265 jclass clazz, 271 JNIEnv* env,
266 jstring origin, 272 const JavaParamRef<jclass>& clazz,
267 jstring embedder, 273 const JavaParamRef<jstring>& origin,
268 jboolean is_incognito) { 274 const JavaParamRef<jstring>& embedder,
275 jboolean is_incognito) {
269 return GetSettingForOrigin(env, 276 return GetSettingForOrigin(env,
270 CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER, 277 CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER,
271 origin, embedder, is_incognito); 278 origin, embedder, is_incognito);
272 } 279 }
273 280
274 static void SetProtectedMediaIdentifierSettingForOrigin(JNIEnv* env, 281 static void SetProtectedMediaIdentifierSettingForOrigin(
275 jclass clazz, 282 JNIEnv* env,
276 jstring origin, 283 const JavaParamRef<jclass>& clazz,
277 jstring embedder, 284 const JavaParamRef<jstring>& origin,
278 jint value, 285 const JavaParamRef<jstring>& embedder,
279 jboolean is_incognito) { 286 jint value,
287 jboolean is_incognito) {
280 GURL embedder_url(ConvertJavaStringToUTF8(env, embedder)); 288 GURL embedder_url(ConvertJavaStringToUTF8(env, embedder));
281 SetSettingForOrigin(env, CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER, 289 SetSettingForOrigin(env, CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER,
282 origin, 290 origin,
283 ContentSettingsPattern::FromURLNoWildcard(embedder_url), 291 ContentSettingsPattern::FromURLNoWildcard(embedder_url),
284 value, is_incognito); 292 value, is_incognito);
285 } 293 }
286 294
287 static void GetPushNotificationOrigins(JNIEnv* env, 295 static void GetPushNotificationOrigins(JNIEnv* env,
288 jclass clazz, 296 const JavaParamRef<jclass>& clazz,
289 jobject list) { 297 const JavaParamRef<jobject>& list) {
290 GetOrigins(env, CONTENT_SETTINGS_TYPE_NOTIFICATIONS, list, false); 298 GetOrigins(env, CONTENT_SETTINGS_TYPE_NOTIFICATIONS, list, false);
291 } 299 }
292 300
293 static jint GetPushNotificationSettingForOrigin(JNIEnv* env, 301 static jint GetPushNotificationSettingForOrigin(
294 jclass clazz, 302 JNIEnv* env,
295 jstring origin, 303 const JavaParamRef<jclass>& clazz,
296 jstring embedder, 304 const JavaParamRef<jstring>& origin,
297 jboolean is_incognito) { 305 const JavaParamRef<jstring>& embedder,
306 jboolean is_incognito) {
298 return DesktopNotificationProfileUtil::GetContentSetting( 307 return DesktopNotificationProfileUtil::GetContentSetting(
299 GetActiveUserProfile(is_incognito), 308 GetActiveUserProfile(is_incognito),
300 GURL(ConvertJavaStringToUTF8(env, origin))); 309 GURL(ConvertJavaStringToUTF8(env, origin)));
301 } 310 }
302 311
303 static void SetPushNotificationSettingForOrigin(JNIEnv* env, 312 static void SetPushNotificationSettingForOrigin(
304 jclass clazz, 313 JNIEnv* env,
305 jstring origin, 314 const JavaParamRef<jclass>& clazz,
306 jstring embedder, 315 const JavaParamRef<jstring>& origin,
307 jint value, 316 const JavaParamRef<jstring>& embedder,
308 jboolean is_incognito) { 317 jint value,
318 jboolean is_incognito) {
309 // TODO(peter): Web Notification permission behaves differently from all other 319 // TODO(peter): Web Notification permission behaves differently from all other
310 // permission types. See https://crbug.com/416894. 320 // permission types. See https://crbug.com/416894.
311 Profile* profile = GetActiveUserProfile(is_incognito); 321 Profile* profile = GetActiveUserProfile(is_incognito);
312 GURL url = GURL(ConvertJavaStringToUTF8(env, origin)); 322 GURL url = GURL(ConvertJavaStringToUTF8(env, origin));
313 ContentSetting setting = CONTENT_SETTING_DEFAULT; 323 ContentSetting setting = CONTENT_SETTING_DEFAULT;
314 switch (value) { 324 switch (value) {
315 case -1: 325 case -1:
316 DesktopNotificationProfileUtil::ClearSetting( 326 DesktopNotificationProfileUtil::ClearSetting(
317 profile, ContentSettingsPattern::FromURLNoWildcard(url)); 327 profile, ContentSettingsPattern::FromURLNoWildcard(url));
318 break; 328 break;
319 case 1: 329 case 1:
320 DesktopNotificationProfileUtil::GrantPermission(profile, url); 330 DesktopNotificationProfileUtil::GrantPermission(profile, url);
321 setting = CONTENT_SETTING_ALLOW; 331 setting = CONTENT_SETTING_ALLOW;
322 break; 332 break;
323 case 2: 333 case 2:
324 DesktopNotificationProfileUtil::DenyPermission(profile, url); 334 DesktopNotificationProfileUtil::DenyPermission(profile, url);
325 setting = CONTENT_SETTING_BLOCK; 335 setting = CONTENT_SETTING_BLOCK;
326 break; 336 break;
327 default: 337 default:
328 NOTREACHED(); 338 NOTREACHED();
329 } 339 }
330 WebSiteSettingsUmaUtil::LogPermissionChange( 340 WebSiteSettingsUmaUtil::LogPermissionChange(
331 CONTENT_SETTINGS_TYPE_NOTIFICATIONS, setting); 341 CONTENT_SETTINGS_TYPE_NOTIFICATIONS, setting);
332 } 342 }
333 343
334 static void GetCameraOrigins(JNIEnv* env, 344 static void GetCameraOrigins(JNIEnv* env,
335 jclass clazz, 345 const JavaParamRef<jclass>& clazz,
336 jobject list, 346 const JavaParamRef<jobject>& list,
337 jboolean managedOnly) { 347 jboolean managedOnly) {
338 GetOrigins(env, CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA, list, managedOnly); 348 GetOrigins(env, CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA, list, managedOnly);
339 } 349 }
340 350
341 static void GetMicrophoneOrigins(JNIEnv* env, 351 static void GetMicrophoneOrigins(JNIEnv* env,
342 jclass clazz, 352 const JavaParamRef<jclass>& clazz,
343 jobject list, 353 const JavaParamRef<jobject>& list,
344 jboolean managedOnly) { 354 jboolean managedOnly) {
345 GetOrigins(env, CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC, list, managedOnly); 355 GetOrigins(env, CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC, list, managedOnly);
346 } 356 }
347 357
348 static jint GetMicrophoneSettingForOrigin(JNIEnv* env, 358 static jint GetMicrophoneSettingForOrigin(JNIEnv* env,
349 jclass clazz, 359 const JavaParamRef<jclass>& clazz,
350 jstring origin, 360 const JavaParamRef<jstring>& origin,
351 jstring embedder, 361 const JavaParamRef<jstring>& embedder,
352 jboolean is_incognito) { 362 jboolean is_incognito) {
353 return GetSettingForOrigin(env, CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC, origin, 363 return GetSettingForOrigin(env, CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC, origin,
354 embedder, is_incognito); 364 embedder, is_incognito);
355 } 365 }
356 366
357 static jint GetCameraSettingForOrigin(JNIEnv* env, 367 static jint GetCameraSettingForOrigin(JNIEnv* env,
358 jclass clazz, 368 const JavaParamRef<jclass>& clazz,
359 jstring origin, 369 const JavaParamRef<jstring>& origin,
360 jstring embedder, 370 const JavaParamRef<jstring>& embedder,
361 jboolean is_incognito) { 371 jboolean is_incognito) {
362 return GetSettingForOrigin(env, CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA, 372 return GetSettingForOrigin(env, CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA,
363 origin, embedder, is_incognito); 373 origin, embedder, is_incognito);
364 } 374 }
365 375
366 static void SetMicrophoneSettingForOrigin(JNIEnv* env, 376 static void SetMicrophoneSettingForOrigin(JNIEnv* env,
367 jclass clazz, 377 const JavaParamRef<jclass>& clazz,
368 jstring origin, 378 const JavaParamRef<jstring>& origin,
369 jstring embedder, 379 const JavaParamRef<jstring>& embedder,
370 jint value, 380 jint value,
371 jboolean is_incognito) { 381 jboolean is_incognito) {
372 SetSettingForOrigin(env, CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC, origin, 382 SetSettingForOrigin(env, CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC, origin,
373 ContentSettingsPattern::Wildcard(), value, is_incognito); 383 ContentSettingsPattern::Wildcard(), value, is_incognito);
374 } 384 }
375 385
376 static void SetCameraSettingForOrigin(JNIEnv* env, 386 static void SetCameraSettingForOrigin(JNIEnv* env,
377 jclass clazz, 387 const JavaParamRef<jclass>& clazz,
378 jstring origin, 388 const JavaParamRef<jstring>& origin,
379 jstring embedder, 389 const JavaParamRef<jstring>& embedder,
380 jint value, 390 jint value,
381 jboolean is_incognito) { 391 jboolean is_incognito) {
382 SetSettingForOrigin(env, CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA, origin, 392 SetSettingForOrigin(env, CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA, origin,
383 ContentSettingsPattern::Wildcard(), value, is_incognito); 393 ContentSettingsPattern::Wildcard(), value, is_incognito);
384 } 394 }
385 395
386 static scoped_refptr<content_settings::CookieSettings> GetCookieSettings() { 396 static scoped_refptr<content_settings::CookieSettings> GetCookieSettings() {
387 // A single cookie setting applies to both incognito and non-incognito. 397 // A single cookie setting applies to both incognito and non-incognito.
388 Profile* profile = ProfileManager::GetActiveUserProfile(); 398 Profile* profile = ProfileManager::GetActiveUserProfile();
389 return CookieSettingsFactory::GetForProfile(profile); 399 return CookieSettingsFactory::GetForProfile(profile);
390 } 400 }
391 401
392 static void GetCookieOrigins(JNIEnv* env, 402 static void GetCookieOrigins(JNIEnv* env,
393 jclass clazz, 403 const JavaParamRef<jclass>& clazz,
394 jobject list, 404 const JavaParamRef<jobject>& list,
395 jboolean managedOnly) { 405 jboolean managedOnly) {
396 ContentSettingsForOneType all_settings; 406 ContentSettingsForOneType all_settings;
397 GetCookieSettings()->GetCookieSettings(&all_settings); 407 GetCookieSettings()->GetCookieSettings(&all_settings);
398 const ContentSetting default_setting = 408 const ContentSetting default_setting =
399 GetCookieSettings()->GetDefaultCookieSetting(nullptr); 409 GetCookieSettings()->GetDefaultCookieSetting(nullptr);
400 for (const auto& settings_it : all_settings) { 410 for (const auto& settings_it : all_settings) {
401 if (settings_it.setting == default_setting) 411 if (settings_it.setting == default_setting)
402 continue; 412 continue;
403 if (managedOnly && 413 if (managedOnly &&
404 HostContentSettingsMap::GetProviderTypeFromSource(settings_it.source) != 414 HostContentSettingsMap::GetProviderTypeFromSource(settings_it.source) !=
405 HostContentSettingsMap::ProviderType::POLICY_PROVIDER) { 415 HostContentSettingsMap::ProviderType::POLICY_PROVIDER) {
406 continue; 416 continue;
407 } 417 }
408 const std::string& origin = settings_it.primary_pattern.ToString(); 418 const std::string& origin = settings_it.primary_pattern.ToString();
409 const std::string& embedder = settings_it.secondary_pattern.ToString(); 419 const std::string& embedder = settings_it.secondary_pattern.ToString();
410 ScopedJavaLocalRef<jstring> jorigin = ConvertUTF8ToJavaString(env, origin); 420 ScopedJavaLocalRef<jstring> jorigin = ConvertUTF8ToJavaString(env, origin);
411 ScopedJavaLocalRef<jstring> jembedder; 421 ScopedJavaLocalRef<jstring> jembedder;
412 if (embedder != origin) 422 if (embedder != origin)
413 jembedder = ConvertUTF8ToJavaString(env, embedder); 423 jembedder = ConvertUTF8ToJavaString(env, embedder);
414 Java_WebsitePreferenceBridge_insertCookieInfoIntoList(env, list, 424 Java_WebsitePreferenceBridge_insertCookieInfoIntoList(env, list,
415 jorigin.obj(), jembedder.obj()); 425 jorigin.obj(), jembedder.obj());
416 } 426 }
417 } 427 }
418 428
419 static jint GetCookieSettingForOrigin(JNIEnv* env, 429 static jint GetCookieSettingForOrigin(JNIEnv* env,
420 jclass clazz, 430 const JavaParamRef<jclass>& clazz,
421 jstring origin, 431 const JavaParamRef<jstring>& origin,
422 jstring embedder, 432 const JavaParamRef<jstring>& embedder,
423 jboolean is_incognito) { 433 jboolean is_incognito) {
424 return GetSettingForOrigin(env, CONTENT_SETTINGS_TYPE_COOKIES, origin, 434 return GetSettingForOrigin(env, CONTENT_SETTINGS_TYPE_COOKIES, origin,
425 embedder, false); 435 embedder, false);
426 } 436 }
427 437
428 static void SetCookieSettingForOrigin(JNIEnv* env, 438 static void SetCookieSettingForOrigin(JNIEnv* env,
429 jclass clazz, 439 const JavaParamRef<jclass>& clazz,
430 jstring origin, 440 const JavaParamRef<jstring>& origin,
431 jstring embedder, 441 const JavaParamRef<jstring>& embedder,
432 jint value, 442 jint value,
433 jboolean is_incognito) { 443 jboolean is_incognito) {
434 GURL url(ConvertJavaStringToUTF8(env, origin)); 444 GURL url(ConvertJavaStringToUTF8(env, origin));
435 ContentSettingsPattern primary_pattern( 445 ContentSettingsPattern primary_pattern(
436 ContentSettingsPattern::FromURLNoWildcard(url)); 446 ContentSettingsPattern::FromURLNoWildcard(url));
437 ContentSettingsPattern secondary_pattern(ContentSettingsPattern::Wildcard()); 447 ContentSettingsPattern secondary_pattern(ContentSettingsPattern::Wildcard());
438 ContentSetting setting = CONTENT_SETTING_DEFAULT; 448 ContentSetting setting = CONTENT_SETTING_DEFAULT;
439 if (value == -1) { 449 if (value == -1) {
440 GetCookieSettings()->ResetCookieSetting(primary_pattern, secondary_pattern); 450 GetCookieSettings()->ResetCookieSetting(primary_pattern, secondary_pattern);
441 } else { 451 } else {
442 setting = value ? CONTENT_SETTING_ALLOW : CONTENT_SETTING_BLOCK; 452 setting = value ? CONTENT_SETTING_ALLOW : CONTENT_SETTING_BLOCK;
443 GetCookieSettings()->SetCookieSetting(primary_pattern, secondary_pattern, 453 GetCookieSettings()->SetCookieSetting(primary_pattern, secondary_pattern,
444 setting); 454 setting);
445 } 455 }
446 WebSiteSettingsUmaUtil::LogPermissionChange( 456 WebSiteSettingsUmaUtil::LogPermissionChange(
447 CONTENT_SETTINGS_TYPE_NOTIFICATIONS, setting); 457 CONTENT_SETTINGS_TYPE_NOTIFICATIONS, setting);
448 } 458 }
449 459
450 static jboolean IsContentSettingsPatternValid(JNIEnv* env, jclass clazz, 460 static jboolean IsContentSettingsPatternValid(
451 jstring pattern) { 461 JNIEnv* env,
462 const JavaParamRef<jclass>& clazz,
463 const JavaParamRef<jstring>& pattern) {
452 return ContentSettingsPattern::FromString( 464 return ContentSettingsPattern::FromString(
453 ConvertJavaStringToUTF8(env, pattern)).IsValid(); 465 ConvertJavaStringToUTF8(env, pattern)).IsValid();
454 } 466 }
455 467
456 static jboolean UrlMatchesContentSettingsPattern(JNIEnv* env, 468 static jboolean UrlMatchesContentSettingsPattern(
457 jclass clazz, 469 JNIEnv* env,
458 jstring jurl, 470 const JavaParamRef<jclass>& clazz,
459 jstring jpattern) { 471 const JavaParamRef<jstring>& jurl,
472 const JavaParamRef<jstring>& jpattern) {
460 ContentSettingsPattern pattern = ContentSettingsPattern::FromString( 473 ContentSettingsPattern pattern = ContentSettingsPattern::FromString(
461 ConvertJavaStringToUTF8(env, jpattern)); 474 ConvertJavaStringToUTF8(env, jpattern));
462 return pattern.Matches(GURL(ConvertJavaStringToUTF8(env, jurl))); 475 return pattern.Matches(GURL(ConvertJavaStringToUTF8(env, jurl)));
463 } 476 }
464 477
465 namespace { 478 namespace {
466 479
467 class SiteDataDeleteHelper : 480 class SiteDataDeleteHelper :
468 public base::RefCountedThreadSafe<SiteDataDeleteHelper>, 481 public base::RefCountedThreadSafe<SiteDataDeleteHelper>,
469 public CookiesTreeModel::Observer { 482 public CookiesTreeModel::Observer {
(...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after
727 // TODO(jknotten): These methods should not be static. Instead we should 740 // TODO(jknotten): These methods should not be static. Instead we should
728 // expose a class to Java so that the fetch requests can be cancelled, 741 // expose a class to Java so that the fetch requests can be cancelled,
729 // and manage the lifetimes of the callback (and indirectly the helper 742 // and manage the lifetimes of the callback (and indirectly the helper
730 // by having a reference to it). 743 // by having a reference to it).
731 744
732 // The helper methods (StartFetching, DeleteLocalStorageFile, DeleteDatabase) 745 // The helper methods (StartFetching, DeleteLocalStorageFile, DeleteDatabase)
733 // are asynchronous. A "use after free" error is not possible because the 746 // are asynchronous. A "use after free" error is not possible because the
734 // helpers keep a reference to themselves for the duration of their tasks, 747 // helpers keep a reference to themselves for the duration of their tasks,
735 // which includes callback invocation. 748 // which includes callback invocation.
736 749
737 static void FetchLocalStorageInfo(JNIEnv* env, jclass clazz, 750 static void FetchLocalStorageInfo(JNIEnv* env,
738 jobject java_callback) { 751 const JavaParamRef<jclass>& clazz,
752 const JavaParamRef<jobject>& java_callback) {
739 Profile* profile = ProfileManager::GetActiveUserProfile(); 753 Profile* profile = ProfileManager::GetActiveUserProfile();
740 scoped_refptr<BrowsingDataLocalStorageHelper> local_storage_helper( 754 scoped_refptr<BrowsingDataLocalStorageHelper> local_storage_helper(
741 new BrowsingDataLocalStorageHelper(profile)); 755 new BrowsingDataLocalStorageHelper(profile));
742 // local_storage_callback will delete itself when it is run. 756 // local_storage_callback will delete itself when it is run.
743 LocalStorageInfoReadyCallback* local_storage_callback = 757 LocalStorageInfoReadyCallback* local_storage_callback =
744 new LocalStorageInfoReadyCallback( 758 new LocalStorageInfoReadyCallback(
745 ScopedJavaLocalRef<jobject>(env, java_callback)); 759 ScopedJavaLocalRef<jobject>(env, java_callback));
746 local_storage_helper->StartFetching( 760 local_storage_helper->StartFetching(
747 base::Bind(&LocalStorageInfoReadyCallback::OnLocalStorageModelInfoLoaded, 761 base::Bind(&LocalStorageInfoReadyCallback::OnLocalStorageModelInfoLoaded,
748 base::Unretained(local_storage_callback))); 762 base::Unretained(local_storage_callback)));
749 } 763 }
750 764
751 static void FetchStorageInfo(JNIEnv* env, jclass clazz, jobject java_callback) { 765 static void FetchStorageInfo(JNIEnv* env,
766 const JavaParamRef<jclass>& clazz,
767 const JavaParamRef<jobject>& java_callback) {
752 Profile* profile = ProfileManager::GetActiveUserProfile(); 768 Profile* profile = ProfileManager::GetActiveUserProfile();
753 scoped_refptr<StorageInfoFetcher> storage_info_fetcher(new StorageInfoFetcher( 769 scoped_refptr<StorageInfoFetcher> storage_info_fetcher(new StorageInfoFetcher(
754 content::BrowserContext::GetDefaultStoragePartition( 770 content::BrowserContext::GetDefaultStoragePartition(
755 profile)->GetQuotaManager(), 771 profile)->GetQuotaManager(),
756 ScopedJavaLocalRef<jobject>(env, java_callback))); 772 ScopedJavaLocalRef<jobject>(env, java_callback)));
757 storage_info_fetcher->Run(); 773 storage_info_fetcher->Run();
758 } 774 }
759 775
760 static void ClearLocalStorageData(JNIEnv* env, jclass clazz, jstring jorigin) { 776 static void ClearLocalStorageData(JNIEnv* env,
777 const JavaParamRef<jclass>& clazz,
778 const JavaParamRef<jstring>& jorigin) {
761 Profile* profile = ProfileManager::GetActiveUserProfile(); 779 Profile* profile = ProfileManager::GetActiveUserProfile();
762 scoped_refptr<BrowsingDataLocalStorageHelper> local_storage_helper = 780 scoped_refptr<BrowsingDataLocalStorageHelper> local_storage_helper =
763 new BrowsingDataLocalStorageHelper(profile); 781 new BrowsingDataLocalStorageHelper(profile);
764 GURL origin_url = GURL(ConvertJavaStringToUTF8(env, jorigin)); 782 GURL origin_url = GURL(ConvertJavaStringToUTF8(env, jorigin));
765 local_storage_helper->DeleteOrigin(origin_url); 783 local_storage_helper->DeleteOrigin(origin_url);
766 } 784 }
767 785
768 static void ClearStorageData(JNIEnv* env, 786 static void ClearStorageData(JNIEnv* env,
769 jclass clazz, 787 const JavaParamRef<jclass>& clazz,
770 jstring jhost, 788 const JavaParamRef<jstring>& jhost,
771 jint type, 789 jint type,
772 jobject java_callback) { 790 const JavaParamRef<jobject>& java_callback) {
773 Profile* profile = ProfileManager::GetActiveUserProfile(); 791 Profile* profile = ProfileManager::GetActiveUserProfile();
774 std::string host = ConvertJavaStringToUTF8(env, jhost); 792 std::string host = ConvertJavaStringToUTF8(env, jhost);
775 scoped_refptr<StorageDataDeleter> storage_data_deleter(new StorageDataDeleter( 793 scoped_refptr<StorageDataDeleter> storage_data_deleter(new StorageDataDeleter(
776 content::BrowserContext::GetDefaultStoragePartition( 794 content::BrowserContext::GetDefaultStoragePartition(
777 profile)->GetQuotaManager(), 795 profile)->GetQuotaManager(),
778 host, 796 host,
779 static_cast<storage::StorageType>(type), 797 static_cast<storage::StorageType>(type),
780 ScopedJavaLocalRef<jobject>(env, java_callback))); 798 ScopedJavaLocalRef<jobject>(env, java_callback)));
781 storage_data_deleter->Run(); 799 storage_data_deleter->Run();
782 } 800 }
783 801
784 static void ClearCookieData(JNIEnv* env, jclass clazz, jstring jorigin) { 802 static void ClearCookieData(JNIEnv* env,
803 const JavaParamRef<jclass>& clazz,
804 const JavaParamRef<jstring>& jorigin) {
785 Profile* profile = ProfileManager::GetActiveUserProfile(); 805 Profile* profile = ProfileManager::GetActiveUserProfile();
786 GURL url(ConvertJavaStringToUTF8(env, jorigin)); 806 GURL url(ConvertJavaStringToUTF8(env, jorigin));
787 scoped_refptr<SiteDataDeleteHelper> site_data_deleter( 807 scoped_refptr<SiteDataDeleteHelper> site_data_deleter(
788 new SiteDataDeleteHelper(profile, url)); 808 new SiteDataDeleteHelper(profile, url));
789 site_data_deleter->Run(); 809 site_data_deleter->Run();
790 } 810 }
791 811
792 // Register native methods 812 // Register native methods
793 bool RegisterWebsitePreferenceBridge(JNIEnv* env) { 813 bool RegisterWebsitePreferenceBridge(JNIEnv* env) {
794 return RegisterNativesImpl(env); 814 return RegisterNativesImpl(env);
795 } 815 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698