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 <algorithm> | 7 #include <algorithm> |
8 #include <string> | 8 #include <string> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
11 #include "base/android/callback_android.h" | 11 #include "base/android/callback_android.h" |
12 #include "base/android/jni_android.h" | 12 #include "base/android/jni_android.h" |
13 #include "base/android/jni_string.h" | 13 #include "base/android/jni_string.h" |
14 #include "base/android/scoped_java_ref.h" | 14 #include "base/android/scoped_java_ref.h" |
15 #include "base/bind.h" | 15 #include "base/bind.h" |
16 #include "base/bind_helpers.h" | 16 #include "base/bind_helpers.h" |
17 #include "base/json/json_reader.h" | |
18 #include "base/json/json_string_value_serializer.h" | |
17 #include "base/logging.h" | 19 #include "base/logging.h" |
18 #include "base/macros.h" | 20 #include "base/macros.h" |
19 #include "chrome/browser/android/preferences/important_sites_util.h" | 21 #include "chrome/browser/android/preferences/important_sites_util.h" |
20 #include "chrome/browser/browsing_data/browsing_data_local_storage_helper.h" | 22 #include "chrome/browser/browsing_data/browsing_data_local_storage_helper.h" |
21 #include "chrome/browser/browsing_data/browsing_data_quota_helper.h" | 23 #include "chrome/browser/browsing_data/browsing_data_quota_helper.h" |
22 #include "chrome/browser/browsing_data/cookies_tree_model.h" | 24 #include "chrome/browser/browsing_data/cookies_tree_model.h" |
23 #include "chrome/browser/browsing_data/local_data_container.h" | 25 #include "chrome/browser/browsing_data/local_data_container.h" |
24 #include "chrome/browser/content_settings/cookie_settings_factory.h" | 26 #include "chrome/browser/content_settings/cookie_settings_factory.h" |
25 #include "chrome/browser/content_settings/host_content_settings_map_factory.h" | 27 #include "chrome/browser/content_settings/host_content_settings_map_factory.h" |
26 #include "chrome/browser/content_settings/tab_specific_content_settings.h" | 28 #include "chrome/browser/content_settings/tab_specific_content_settings.h" |
27 #include "chrome/browser/content_settings/web_site_settings_uma_util.h" | 29 #include "chrome/browser/content_settings/web_site_settings_uma_util.h" |
28 #include "chrome/browser/notifications/desktop_notification_profile_util.h" | 30 #include "chrome/browser/notifications/desktop_notification_profile_util.h" |
29 #include "chrome/browser/permissions/permission_util.h" | 31 #include "chrome/browser/permissions/permission_util.h" |
30 #include "chrome/browser/profiles/profile.h" | 32 #include "chrome/browser/profiles/profile.h" |
31 #include "chrome/browser/profiles/profile_manager.h" | 33 #include "chrome/browser/profiles/profile_manager.h" |
32 #include "chrome/browser/storage/storage_info_fetcher.h" | 34 #include "chrome/browser/storage/storage_info_fetcher.h" |
35 #include "chrome/browser/usb/usb_chooser_context.h" | |
36 #include "chrome/browser/usb/usb_chooser_context_factory.h" | |
33 #include "components/content_settings/core/browser/cookie_settings.h" | 37 #include "components/content_settings/core/browser/cookie_settings.h" |
34 #include "components/content_settings/core/browser/host_content_settings_map.h" | 38 #include "components/content_settings/core/browser/host_content_settings_map.h" |
35 #include "content/public/browser/browser_thread.h" | 39 #include "content/public/browser/browser_thread.h" |
36 #include "content/public/browser/storage_partition.h" | 40 #include "content/public/browser/storage_partition.h" |
37 #include "jni/WebsitePreferenceBridge_jni.h" | 41 #include "jni/WebsitePreferenceBridge_jni.h" |
38 #include "net/base/registry_controlled_domains/registry_controlled_domain.h" | 42 #include "net/base/registry_controlled_domains/registry_controlled_domain.h" |
39 #include "storage/browser/quota/quota_manager.h" | 43 #include "storage/browser/quota/quota_manager.h" |
40 #include "storage/common/quota/quota_status_code.h" | 44 #include "storage/common/quota/quota_status_code.h" |
41 #include "url/url_constants.h" | 45 #include "url/url_constants.h" |
42 | 46 |
(...skipping 383 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
426 static jboolean UrlMatchesContentSettingsPattern( | 430 static jboolean UrlMatchesContentSettingsPattern( |
427 JNIEnv* env, | 431 JNIEnv* env, |
428 const JavaParamRef<jclass>& clazz, | 432 const JavaParamRef<jclass>& clazz, |
429 const JavaParamRef<jstring>& jurl, | 433 const JavaParamRef<jstring>& jurl, |
430 const JavaParamRef<jstring>& jpattern) { | 434 const JavaParamRef<jstring>& jpattern) { |
431 ContentSettingsPattern pattern = ContentSettingsPattern::FromString( | 435 ContentSettingsPattern pattern = ContentSettingsPattern::FromString( |
432 ConvertJavaStringToUTF8(env, jpattern)); | 436 ConvertJavaStringToUTF8(env, jpattern)); |
433 return pattern.Matches(GURL(ConvertJavaStringToUTF8(env, jurl))); | 437 return pattern.Matches(GURL(ConvertJavaStringToUTF8(env, jurl))); |
434 } | 438 } |
435 | 439 |
440 static void GetUsbOrigins(JNIEnv* env, | |
441 const JavaParamRef<jclass>& clazz, | |
442 const JavaParamRef<jobject>& list) { | |
443 Profile* profile = ProfileManager::GetActiveUserProfile(); | |
444 UsbChooserContext* context = UsbChooserContextFactory::GetForProfile(profile); | |
445 for (const auto& object : context->GetAllGrantedObjects()) { | |
Bernhard Bauer
2016/07/13 08:54:45
Can you use the actual type here instead of auto?
Reilly Grant (use Gerrit)
2016/07/13 21:20:16
It's rather long. We use auto above in GetOrigins.
| |
446 // Remove the trailing backslashes so that origins are matched correctly in | |
Bernhard Bauer
2016/07/13 08:54:45
That's a (forward) slash.
Reilly Grant (use Gerrit)
2016/07/13 21:20:16
Fixed.
| |
447 // SingleWebsitePreferences.mergePermissionInfoForTopLevelOrigin. | |
448 std::string origin = object->requesting_origin.spec(); | |
449 DCHECK(origin[origin.size() - 1] == '/'); | |
Bernhard Bauer
2016/07/13 08:54:45
DCHECK_EQ?
Reilly Grant (use Gerrit)
2016/07/13 21:20:16
Done.
| |
450 origin = origin.substr(0, origin.size() - 1); | |
451 ScopedJavaLocalRef<jstring> jorigin = ConvertUTF8ToJavaString(env, origin); | |
452 | |
453 std::string embedder = object->requesting_origin.spec(); | |
454 DCHECK(embedder[embedder.size() - 1] == '/'); | |
455 embedder = embedder.substr(0, embedder.size() - 1); | |
Bernhard Bauer
2016/07/13 08:54:45
You could use embedder.resize().
Reilly Grant (use Gerrit)
2016/07/13 21:20:16
Someone came by and switched all the other instanc
| |
456 ScopedJavaLocalRef<jstring> jembedder = | |
457 ConvertUTF8ToJavaString(env, embedder); | |
458 | |
459 std::string name; | |
460 bool found = object->object.GetString("name", &name); | |
461 DCHECK(found); | |
462 ScopedJavaLocalRef<jstring> jname = ConvertUTF8ToJavaString(env, name); | |
463 | |
464 std::string serialized; | |
465 JSONStringValueSerializer serializer(&serialized); | |
Bernhard Bauer
2016/07/13 08:54:45
You could use JSONWriter::Write (which is what thi
Reilly Grant (use Gerrit)
2016/07/13 21:20:16
Done.
| |
466 serializer.Serialize(object->object); | |
467 ScopedJavaLocalRef<jstring> jserialized = | |
468 ConvertUTF8ToJavaString(env, serialized); | |
469 | |
470 Java_WebsitePreferenceBridge_insertUsbInfoIntoList( | |
471 env, list, jorigin.obj(), jembedder.obj(), object->incognito, | |
472 jname.obj(), jserialized.obj()); | |
473 } | |
474 } | |
475 | |
476 static void RevokeUsbPermission(JNIEnv* env, | |
477 const JavaParamRef<jclass>& clazz, | |
478 const JavaParamRef<jstring>& jorigin, | |
479 const JavaParamRef<jstring>& jembedder, | |
480 const JavaParamRef<jstring>& jobject) { | |
481 Profile* profile = ProfileManager::GetActiveUserProfile(); | |
482 UsbChooserContext* context = UsbChooserContextFactory::GetForProfile(profile); | |
483 GURL origin(ConvertJavaStringToUTF8(env, jorigin)); | |
484 DCHECK(origin.is_valid()); | |
485 GURL embedder(ConvertJavaStringToUTF8(env, jembedder)); | |
486 DCHECK(embedder.is_valid()); | |
487 std::unique_ptr<base::DictionaryValue> object = base::DictionaryValue::From( | |
488 base::JSONReader::Read(ConvertJavaStringToUTF8(env, jobject))); | |
489 DCHECK(object); | |
490 context->RevokeObjectPermission(origin, embedder, *object); | |
491 } | |
492 | |
436 namespace { | 493 namespace { |
437 | 494 |
438 class SiteDataDeleteHelper : | 495 class SiteDataDeleteHelper : |
439 public base::RefCountedThreadSafe<SiteDataDeleteHelper>, | 496 public base::RefCountedThreadSafe<SiteDataDeleteHelper>, |
440 public CookiesTreeModel::Observer { | 497 public CookiesTreeModel::Observer { |
441 public: | 498 public: |
442 SiteDataDeleteHelper(Profile* profile, const GURL& domain) | 499 SiteDataDeleteHelper(Profile* profile, const GURL& domain) |
443 : profile_(profile), domain_(domain), ending_batch_processing_(false) { | 500 : profile_(profile), domain_(domain), ending_batch_processing_(false) { |
444 } | 501 } |
445 | 502 |
(...skipping 272 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
718 GURL url(ConvertJavaStringToUTF8(env, jorigin)); | 775 GURL url(ConvertJavaStringToUTF8(env, jorigin)); |
719 scoped_refptr<SiteDataDeleteHelper> site_data_deleter( | 776 scoped_refptr<SiteDataDeleteHelper> site_data_deleter( |
720 new SiteDataDeleteHelper(profile, url)); | 777 new SiteDataDeleteHelper(profile, url)); |
721 site_data_deleter->Run(); | 778 site_data_deleter->Run(); |
722 } | 779 } |
723 | 780 |
724 // Register native methods | 781 // Register native methods |
725 bool RegisterWebsitePreferenceBridge(JNIEnv* env) { | 782 bool RegisterWebsitePreferenceBridge(JNIEnv* env) { |
726 return RegisterNativesImpl(env); | 783 return RegisterNativesImpl(env); |
727 } | 784 } |
OLD | NEW |