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 |