| 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 = |
| 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...) Expand all Loading... |
| 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...) Expand all Loading... |
| 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...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 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...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 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 } |
| OLD | NEW |