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...) 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...) 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...) 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...) 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...) 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 |