Chromium Code Reviews| OLD | NEW |
|---|---|
| 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...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 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(ConvertJavaStringToUTF8(env, embedder)); | |
| 138 GetHostContentSettingsMap(is_incognito) | 139 GetHostContentSettingsMap(is_incognito) |
| 139 ->SetContentSetting(ContentSettingsPattern::FromURLNoWildcard(url), | 140 ->SetContentSettingDefaultScope(origin_url, embedder_url, content_type, |
| 140 secondary_pattern, content_type, std::string(), | 141 std::string(), setting); |
| 141 setting); | |
| 142 WebSiteSettingsUmaUtil::LogPermissionChange(content_type, setting); | 142 WebSiteSettingsUmaUtil::LogPermissionChange(content_type, setting); |
| 143 } | 143 } |
| 144 | 144 |
| 145 } // anonymous namespace | 145 } // anonymous namespace |
| 146 | 146 |
| 147 static void GetFullscreenOrigins(JNIEnv* env, | 147 static void GetFullscreenOrigins(JNIEnv* env, |
| 148 const JavaParamRef<jclass>& clazz, | 148 const JavaParamRef<jclass>& clazz, |
| 149 const JavaParamRef<jobject>& list, | 149 const JavaParamRef<jobject>& list, |
| 150 jboolean managedOnly) { | 150 jboolean managedOnly) { |
| 151 GetOrigins(env, CONTENT_SETTINGS_TYPE_FULLSCREEN, | 151 GetOrigins(env, CONTENT_SETTINGS_TYPE_FULLSCREEN, |
| 152 &Java_WebsitePreferenceBridge_insertFullscreenInfoIntoList, list, | 152 &Java_WebsitePreferenceBridge_insertFullscreenInfoIntoList, list, |
| 153 managedOnly); | 153 managedOnly); |
| 154 } | 154 } |
| 155 | 155 |
| 156 static jint GetFullscreenSettingForOrigin(JNIEnv* env, | 156 static jint GetFullscreenSettingForOrigin(JNIEnv* env, |
| 157 const JavaParamRef<jclass>& clazz, | 157 const JavaParamRef<jclass>& clazz, |
| 158 const JavaParamRef<jstring>& origin, | 158 const JavaParamRef<jstring>& origin, |
| 159 const JavaParamRef<jstring>& embedder, | 159 const JavaParamRef<jstring>& embedder, |
| 160 jboolean is_incognito) { | 160 jboolean is_incognito) { |
| 161 return GetSettingForOrigin(env, CONTENT_SETTINGS_TYPE_FULLSCREEN, origin, | 161 return GetSettingForOrigin(env, CONTENT_SETTINGS_TYPE_FULLSCREEN, origin, |
| 162 embedder, is_incognito); | 162 embedder, is_incognito); |
| 163 } | 163 } |
| 164 | 164 |
| 165 static void SetFullscreenSettingForOrigin(JNIEnv* env, | 165 static void SetFullscreenSettingForOrigin(JNIEnv* env, |
| 166 const JavaParamRef<jclass>& clazz, | 166 const JavaParamRef<jclass>& clazz, |
| 167 const JavaParamRef<jstring>& origin, | 167 const JavaParamRef<jstring>& origin, |
| 168 const JavaParamRef<jstring>& embedder, | 168 const JavaParamRef<jstring>& embedder, |
| 169 jint value, | 169 jint value, |
| 170 jboolean is_incognito) { | 170 jboolean is_incognito) { |
| 171 GURL embedder_url(ConvertJavaStringToUTF8(env, embedder)); | 171 SetSettingForOrigin(env, CONTENT_SETTINGS_TYPE_FULLSCREEN, origin, embedder, |
| 172 SetSettingForOrigin(env, CONTENT_SETTINGS_TYPE_FULLSCREEN, origin, | 172 (ContentSetting)value, is_incognito); |
| 173 ContentSettingsPattern::FromURLNoWildcard(embedder_url), | |
| 174 (ContentSetting) value, is_incognito); | |
| 175 } | 173 } |
| 176 | 174 |
| 177 static void GetGeolocationOrigins(JNIEnv* env, | 175 static void GetGeolocationOrigins(JNIEnv* env, |
| 178 const JavaParamRef<jclass>& clazz, | 176 const JavaParamRef<jclass>& clazz, |
| 179 const JavaParamRef<jobject>& list, | 177 const JavaParamRef<jobject>& list, |
| 180 jboolean managedOnly) { | 178 jboolean managedOnly) { |
| 181 GetOrigins(env, CONTENT_SETTINGS_TYPE_GEOLOCATION, | 179 GetOrigins(env, CONTENT_SETTINGS_TYPE_GEOLOCATION, |
| 182 &Java_WebsitePreferenceBridge_insertGeolocationInfoIntoList, list, | 180 &Java_WebsitePreferenceBridge_insertGeolocationInfoIntoList, list, |
| 183 managedOnly); | 181 managedOnly); |
| 184 } | 182 } |
| 185 | 183 |
| 186 static jint GetGeolocationSettingForOrigin( | 184 static jint GetGeolocationSettingForOrigin( |
| 187 JNIEnv* env, | 185 JNIEnv* env, |
| 188 const JavaParamRef<jclass>& clazz, | 186 const JavaParamRef<jclass>& clazz, |
| 189 const JavaParamRef<jstring>& origin, | 187 const JavaParamRef<jstring>& origin, |
| 190 const JavaParamRef<jstring>& embedder, | 188 const JavaParamRef<jstring>& embedder, |
| 191 jboolean is_incognito) { | 189 jboolean is_incognito) { |
| 192 return GetSettingForOrigin(env, CONTENT_SETTINGS_TYPE_GEOLOCATION, origin, | 190 return GetSettingForOrigin(env, CONTENT_SETTINGS_TYPE_GEOLOCATION, origin, |
| 193 embedder, is_incognito); | 191 embedder, is_incognito); |
| 194 } | 192 } |
| 195 | 193 |
| 196 static void SetGeolocationSettingForOrigin( | 194 static void SetGeolocationSettingForOrigin( |
| 197 JNIEnv* env, | 195 JNIEnv* env, |
| 198 const JavaParamRef<jclass>& clazz, | 196 const JavaParamRef<jclass>& clazz, |
| 199 const JavaParamRef<jstring>& origin, | 197 const JavaParamRef<jstring>& origin, |
| 200 const JavaParamRef<jstring>& embedder, | 198 const JavaParamRef<jstring>& embedder, |
| 201 jint value, | 199 jint value, |
| 202 jboolean is_incognito) { | 200 jboolean is_incognito) { |
| 203 GURL embedder_url(ConvertJavaStringToUTF8(env, embedder)); | 201 SetSettingForOrigin(env, CONTENT_SETTINGS_TYPE_GEOLOCATION, origin, embedder, |
| 204 SetSettingForOrigin(env, CONTENT_SETTINGS_TYPE_GEOLOCATION, origin, | 202 (ContentSetting)value, is_incognito); |
| 205 ContentSettingsPattern::FromURLNoWildcard(embedder_url), | |
| 206 (ContentSetting) value, is_incognito); | |
| 207 } | 203 } |
| 208 | 204 |
| 209 static void GetKeygenOrigins(JNIEnv* env, | 205 static void GetKeygenOrigins(JNIEnv* env, |
| 210 const JavaParamRef<jclass>& clazz, | 206 const JavaParamRef<jclass>& clazz, |
| 211 const JavaParamRef<jobject>& list) { | 207 const JavaParamRef<jobject>& list) { |
| 212 GetOrigins(env, CONTENT_SETTINGS_TYPE_KEYGEN, | 208 GetOrigins(env, CONTENT_SETTINGS_TYPE_KEYGEN, |
| 213 &Java_WebsitePreferenceBridge_insertKeygenInfoIntoList, list, | 209 &Java_WebsitePreferenceBridge_insertKeygenInfoIntoList, list, |
| 214 false); | 210 false); |
| 215 } | 211 } |
| 216 | 212 |
| 217 static jint GetKeygenSettingForOrigin(JNIEnv* env, | 213 static jint GetKeygenSettingForOrigin(JNIEnv* env, |
| 218 const JavaParamRef<jclass>& clazz, | 214 const JavaParamRef<jclass>& clazz, |
| 219 const JavaParamRef<jstring>& origin, | 215 const JavaParamRef<jstring>& origin, |
| 220 const JavaParamRef<jstring>& embedder, | 216 const JavaParamRef<jstring>& embedder, |
| 221 jboolean is_incognito) { | 217 jboolean is_incognito) { |
| 222 return GetSettingForOrigin(env, CONTENT_SETTINGS_TYPE_KEYGEN, origin, | 218 return GetSettingForOrigin(env, CONTENT_SETTINGS_TYPE_KEYGEN, origin, |
| 223 embedder, is_incognito); | 219 embedder, is_incognito); |
| 224 } | 220 } |
| 225 | 221 |
| 226 static void SetKeygenSettingForOrigin(JNIEnv* env, | 222 static void SetKeygenSettingForOrigin(JNIEnv* env, |
| 227 const JavaParamRef<jclass>& clazz, | 223 const JavaParamRef<jclass>& clazz, |
| 228 const JavaParamRef<jstring>& origin, | 224 const JavaParamRef<jstring>& origin, |
| 229 const JavaParamRef<jstring>& embedder, | 225 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 SetSettingForOrigin(env, CONTENT_SETTINGS_TYPE_KEYGEN, origin, NULL, |
|
svaldez
2016/03/22 16:05:24
Should this be NULL, possibly add a comment?
Bernhard Bauer
2016/03/22 16:11:58
And in any case it should be nullptr, not NULL.
lshang
2016/03/23 01:46:12
Done. I changed it to nullptr, and it indicates th
lshang
2016/03/23 01:46:12
Done.
Bernhard Bauer
2016/03/23 14:12:15
The biggest issue I have with nullptr specifically
| |
| 233 SetSettingForOrigin(env, CONTENT_SETTINGS_TYPE_KEYGEN, origin, | 229 (ContentSetting)value, is_incognito); |
|
Bernhard Bauer
2016/03/22 16:11:58
Ooh, also we should use static_cast<ContentSetting
lshang
2016/03/23 01:46:12
Done.
| |
| 234 ContentSettingsPattern::FromURLNoWildcard(embedder_url), | |
| 235 (ContentSetting) value, is_incognito); | |
| 236 } | 230 } |
| 237 | 231 |
| 238 static jboolean GetKeygenBlocked(JNIEnv* env, | 232 static jboolean GetKeygenBlocked(JNIEnv* env, |
| 239 const JavaParamRef<jclass>& clazz, | 233 const JavaParamRef<jclass>& clazz, |
| 240 const JavaParamRef<jobject>& java_web_contents) { | 234 const JavaParamRef<jobject>& java_web_contents) { |
| 241 content::WebContents* web_contents = | 235 content::WebContents* web_contents = |
| 242 content::WebContents::FromJavaWebContents(java_web_contents); | 236 content::WebContents::FromJavaWebContents(java_web_contents); |
| 243 return TabSpecificContentSettings::FromWebContents( | 237 return TabSpecificContentSettings::FromWebContents( |
| 244 web_contents)->IsContentBlocked(CONTENT_SETTINGS_TYPE_KEYGEN); | 238 web_contents)->IsContentBlocked(CONTENT_SETTINGS_TYPE_KEYGEN); |
| 245 } | 239 } |
| (...skipping 13 matching lines...) Expand all Loading... | |
| 259 return GetSettingForOrigin(env, CONTENT_SETTINGS_TYPE_MIDI_SYSEX, origin, | 253 return GetSettingForOrigin(env, CONTENT_SETTINGS_TYPE_MIDI_SYSEX, origin, |
| 260 embedder, is_incognito); | 254 embedder, is_incognito); |
| 261 } | 255 } |
| 262 | 256 |
| 263 static void SetMidiSettingForOrigin(JNIEnv* env, | 257 static void SetMidiSettingForOrigin(JNIEnv* env, |
| 264 const JavaParamRef<jclass>& clazz, | 258 const JavaParamRef<jclass>& clazz, |
| 265 const JavaParamRef<jstring>& origin, | 259 const JavaParamRef<jstring>& origin, |
| 266 const JavaParamRef<jstring>& embedder, | 260 const JavaParamRef<jstring>& embedder, |
| 267 jint value, | 261 jint value, |
| 268 jboolean is_incognito) { | 262 jboolean is_incognito) { |
| 269 GURL embedder_url(ConvertJavaStringToUTF8(env, embedder)); | 263 SetSettingForOrigin(env, CONTENT_SETTINGS_TYPE_MIDI_SYSEX, origin, embedder, |
| 270 SetSettingForOrigin(env, CONTENT_SETTINGS_TYPE_MIDI_SYSEX, origin, | 264 (ContentSetting)value, is_incognito); |
| 271 ContentSettingsPattern::FromURLNoWildcard(embedder_url), | |
| 272 (ContentSetting) value, is_incognito); | |
| 273 } | 265 } |
| 274 | 266 |
| 275 static void GetProtectedMediaIdentifierOrigins( | 267 static void GetProtectedMediaIdentifierOrigins( |
| 276 JNIEnv* env, | 268 JNIEnv* env, |
| 277 const JavaParamRef<jclass>& clazz, | 269 const JavaParamRef<jclass>& clazz, |
| 278 const JavaParamRef<jobject>& list) { | 270 const JavaParamRef<jobject>& list) { |
| 279 GetOrigins( | 271 GetOrigins( |
| 280 env, CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER, | 272 env, CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER, |
| 281 &Java_WebsitePreferenceBridge_insertProtectedMediaIdentifierInfoIntoList, | 273 &Java_WebsitePreferenceBridge_insertProtectedMediaIdentifierInfoIntoList, |
| 282 list, false); | 274 list, false); |
| (...skipping 10 matching lines...) Expand all Loading... | |
| 293 origin, embedder, is_incognito); | 285 origin, embedder, is_incognito); |
| 294 } | 286 } |
| 295 | 287 |
| 296 static void SetProtectedMediaIdentifierSettingForOrigin( | 288 static void SetProtectedMediaIdentifierSettingForOrigin( |
| 297 JNIEnv* env, | 289 JNIEnv* env, |
| 298 const JavaParamRef<jclass>& clazz, | 290 const JavaParamRef<jclass>& clazz, |
| 299 const JavaParamRef<jstring>& origin, | 291 const JavaParamRef<jstring>& origin, |
| 300 const JavaParamRef<jstring>& embedder, | 292 const JavaParamRef<jstring>& embedder, |
| 301 jint value, | 293 jint value, |
| 302 jboolean is_incognito) { | 294 jboolean is_incognito) { |
| 303 GURL embedder_url(ConvertJavaStringToUTF8(env, embedder)); | |
| 304 SetSettingForOrigin(env, CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER, | 295 SetSettingForOrigin(env, CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER, |
| 305 origin, | 296 origin, embedder, (ContentSetting)value, is_incognito); |
| 306 ContentSettingsPattern::FromURLNoWildcard(embedder_url), | |
| 307 (ContentSetting) value, is_incognito); | |
| 308 } | 297 } |
| 309 | 298 |
| 310 static void GetNotificationOrigins(JNIEnv* env, | 299 static void GetNotificationOrigins(JNIEnv* env, |
| 311 const JavaParamRef<jclass>& clazz, | 300 const JavaParamRef<jclass>& clazz, |
| 312 const JavaParamRef<jobject>& list) { | 301 const JavaParamRef<jobject>& list) { |
| 313 GetOrigins(env, CONTENT_SETTINGS_TYPE_NOTIFICATIONS, | 302 GetOrigins(env, CONTENT_SETTINGS_TYPE_NOTIFICATIONS, |
| 314 &Java_WebsitePreferenceBridge_insertNotificationIntoList, list, | 303 &Java_WebsitePreferenceBridge_insertNotificationIntoList, list, |
| 315 false); | 304 false); |
| 316 } | 305 } |
| 317 | 306 |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 390 return GetSettingForOrigin(env, CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA, | 379 return GetSettingForOrigin(env, CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA, |
| 391 origin, embedder, is_incognito); | 380 origin, embedder, is_incognito); |
| 392 } | 381 } |
| 393 | 382 |
| 394 static void SetMicrophoneSettingForOrigin(JNIEnv* env, | 383 static void SetMicrophoneSettingForOrigin(JNIEnv* env, |
| 395 const JavaParamRef<jclass>& clazz, | 384 const JavaParamRef<jclass>& clazz, |
| 396 const JavaParamRef<jstring>& origin, | 385 const JavaParamRef<jstring>& origin, |
| 397 const JavaParamRef<jstring>& embedder, | 386 const JavaParamRef<jstring>& embedder, |
| 398 jint value, | 387 jint value, |
| 399 jboolean is_incognito) { | 388 jboolean is_incognito) { |
| 400 SetSettingForOrigin(env, CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC, origin, | 389 SetSettingForOrigin(env, CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC, origin, NULL, |
| 401 ContentSettingsPattern::Wildcard(), | 390 (ContentSetting)value, is_incognito); |
| 402 (ContentSetting) value, is_incognito); | |
| 403 } | 391 } |
| 404 | 392 |
| 405 static void SetCameraSettingForOrigin(JNIEnv* env, | 393 static void SetCameraSettingForOrigin(JNIEnv* env, |
| 406 const JavaParamRef<jclass>& clazz, | 394 const JavaParamRef<jclass>& clazz, |
| 407 const JavaParamRef<jstring>& origin, | 395 const JavaParamRef<jstring>& origin, |
| 408 const JavaParamRef<jstring>& embedder, | 396 const JavaParamRef<jstring>& embedder, |
| 409 jint value, | 397 jint value, |
| 410 jboolean is_incognito) { | 398 jboolean is_incognito) { |
| 411 SetSettingForOrigin(env, CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA, origin, | 399 SetSettingForOrigin(env, CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA, origin, |
| 412 ContentSettingsPattern::Wildcard(), | 400 NULL, (ContentSetting)value, is_incognito); |
| 413 (ContentSetting) value, is_incognito); | |
| 414 } | 401 } |
| 415 | 402 |
| 416 static scoped_refptr<content_settings::CookieSettings> GetCookieSettings() { | 403 static scoped_refptr<content_settings::CookieSettings> GetCookieSettings() { |
| 417 // A single cookie setting applies to both incognito and non-incognito. | 404 // A single cookie setting applies to both incognito and non-incognito. |
| 418 Profile* profile = ProfileManager::GetActiveUserProfile(); | 405 Profile* profile = ProfileManager::GetActiveUserProfile(); |
| 419 return CookieSettingsFactory::GetForProfile(profile); | 406 return CookieSettingsFactory::GetForProfile(profile); |
| 420 } | 407 } |
| 421 | 408 |
| 422 static void GetCookieOrigins(JNIEnv* env, | 409 static void GetCookieOrigins(JNIEnv* env, |
| 423 const JavaParamRef<jclass>& clazz, | 410 const JavaParamRef<jclass>& clazz, |
| (...skipping 340 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 764 GURL url(ConvertJavaStringToUTF8(env, jorigin)); | 751 GURL url(ConvertJavaStringToUTF8(env, jorigin)); |
| 765 scoped_refptr<SiteDataDeleteHelper> site_data_deleter( | 752 scoped_refptr<SiteDataDeleteHelper> site_data_deleter( |
| 766 new SiteDataDeleteHelper(profile, url)); | 753 new SiteDataDeleteHelper(profile, url)); |
| 767 site_data_deleter->Run(); | 754 site_data_deleter->Run(); |
| 768 } | 755 } |
| 769 | 756 |
| 770 // Register native methods | 757 // Register native methods |
| 771 bool RegisterWebsitePreferenceBridge(JNIEnv* env) { | 758 bool RegisterWebsitePreferenceBridge(JNIEnv* env) { |
| 772 return RegisterNativesImpl(env); | 759 return RegisterNativesImpl(env); |
| 773 } | 760 } |
| OLD | NEW |