Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/pref_service_bridge.h" | 5 #include "chrome/browser/android/preferences/pref_service_bridge.h" |
| 6 | 6 |
| 7 #include <jni.h> | 7 #include <jni.h> |
| 8 #include <stddef.h> | 8 #include <stddef.h> |
| 9 | 9 |
| 10 #include <memory> | 10 #include <memory> |
| (...skipping 495 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 506 static ScopedJavaLocalRef<jstring> GetLatestVersionWhenClickedUpdateMenuItem( | 506 static ScopedJavaLocalRef<jstring> GetLatestVersionWhenClickedUpdateMenuItem( |
| 507 JNIEnv* env, | 507 JNIEnv* env, |
| 508 const JavaParamRef<jobject>& obj) { | 508 const JavaParamRef<jobject>& obj) { |
| 509 return ConvertUTF8ToJavaString( | 509 return ConvertUTF8ToJavaString( |
| 510 env, GetPrefService()->GetString( | 510 env, GetPrefService()->GetString( |
| 511 prefs::kLatestVersionWhenClickedUpdateMenuItem)); | 511 prefs::kLatestVersionWhenClickedUpdateMenuItem)); |
| 512 } | 512 } |
| 513 | 513 |
| 514 namespace { | 514 namespace { |
| 515 | 515 |
| 516 // Redirects a BrowsingDataRemover completion callback back into Java. | 516 // Merges |task_count| BrowsingDataRemover completion callbacks and redirects |
| 517 // them back into Java. | |
| 517 class ClearBrowsingDataObserver : public BrowsingDataRemover::Observer { | 518 class ClearBrowsingDataObserver : public BrowsingDataRemover::Observer { |
| 518 public: | 519 public: |
| 519 // |obj| is expected to be the object passed into ClearBrowsingData(); e.g. a | 520 // |obj| is expected to be the object passed into ClearBrowsingData(); e.g. a |
| 520 // ChromePreference. | 521 // ChromePreference. |
| 521 ClearBrowsingDataObserver(JNIEnv* env, | 522 ClearBrowsingDataObserver(JNIEnv* env, |
| 522 jobject obj, | 523 jobject obj, |
| 523 BrowsingDataRemover* browsing_data_remover) | 524 BrowsingDataRemover* browsing_data_remover, |
| 524 : weak_chrome_native_preferences_(env, obj), observer_(this) { | 525 int task_count) |
| 526 : task_count_(task_count), | |
| 527 weak_chrome_native_preferences_(env, obj), | |
| 528 observer_(this) { | |
| 529 DCHECK_GT(task_count, 0); | |
| 525 observer_.Add(browsing_data_remover); | 530 observer_.Add(browsing_data_remover); |
| 526 } | 531 } |
| 527 | 532 |
| 528 void OnBrowsingDataRemoverDone() override { | 533 void OnBrowsingDataRemoverDone() override { |
| 534 DCHECK(task_count_); | |
| 535 if (--task_count_) | |
| 536 return; | |
| 537 | |
| 529 // We delete ourselves when done. | 538 // We delete ourselves when done. |
| 530 std::unique_ptr<ClearBrowsingDataObserver> auto_delete(this); | 539 std::unique_ptr<ClearBrowsingDataObserver> auto_delete(this); |
| 531 | 540 |
| 532 JNIEnv* env = AttachCurrentThread(); | 541 JNIEnv* env = AttachCurrentThread(); |
| 533 if (weak_chrome_native_preferences_.get(env).is_null()) | 542 if (weak_chrome_native_preferences_.get(env).is_null()) |
| 534 return; | 543 return; |
| 535 | 544 |
| 536 Java_PrefServiceBridge_browsingDataCleared( | 545 Java_PrefServiceBridge_browsingDataCleared( |
| 537 env, weak_chrome_native_preferences_.get(env).obj()); | 546 env, weak_chrome_native_preferences_.get(env).obj()); |
| 538 } | 547 } |
| 539 | 548 |
| 540 private: | 549 private: |
| 550 int task_count_; | |
| 541 JavaObjectWeakGlobalRef weak_chrome_native_preferences_; | 551 JavaObjectWeakGlobalRef weak_chrome_native_preferences_; |
| 542 ScopedObserver<BrowsingDataRemover, BrowsingDataRemover::Observer> observer_; | 552 ScopedObserver<BrowsingDataRemover, BrowsingDataRemover::Observer> observer_; |
| 543 }; | 553 }; |
| 544 | 554 |
| 545 } // namespace | 555 } // namespace |
| 546 | 556 |
| 547 static jboolean GetBrowsingDataDeletionPreference( | 557 static jboolean GetBrowsingDataDeletionPreference( |
| 548 JNIEnv* env, | 558 JNIEnv* env, |
| 549 const JavaParamRef<jobject>& obj, | 559 const JavaParamRef<jobject>& obj, |
| 550 jint data_type) { | 560 jint data_type) { |
| (...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 643 new RegistrableDomainFilterBuilder(BrowsingDataFilterBuilder::BLACKLIST)); | 653 new RegistrableDomainFilterBuilder(BrowsingDataFilterBuilder::BLACKLIST)); |
| 644 for (const std::string& domain : excluding_domains) { | 654 for (const std::string& domain : excluding_domains) { |
| 645 filter_builder->AddRegisterableDomain(domain); | 655 filter_builder->AddRegisterableDomain(domain); |
| 646 } | 656 } |
| 647 | 657 |
| 648 if (!excluding_domains.empty()) { | 658 if (!excluding_domains.empty()) { |
| 649 ImportantSitesUtil::RecordMetricsForBlacklistedSites(GetOriginalProfile(), | 659 ImportantSitesUtil::RecordMetricsForBlacklistedSites(GetOriginalProfile(), |
| 650 excluding_domains); | 660 excluding_domains); |
| 651 } | 661 } |
| 652 | 662 |
| 663 // Delete the filterable types with a filter, and the rest completely. | |
| 664 // TODO(msramek): This is only necessary until the filter is implemented in | |
| 665 // all data storage backends. | |
| 666 int filterable_mask = remove_mask & BrowsingDataRemover::FILTERABLE_DATATYPES; | |
| 667 int nonfilterable_mask = | |
| 668 remove_mask & ~BrowsingDataRemover::FILTERABLE_DATATYPES; | |
| 669 | |
| 653 // ClearBrowsingDataObserver deletes itself when |browsing_data_remover| is | 670 // ClearBrowsingDataObserver deletes itself when |browsing_data_remover| is |
| 654 // done. | 671 // done with both removal tasks. |
| 655 ClearBrowsingDataObserver* observer = | 672 ClearBrowsingDataObserver* observer = new ClearBrowsingDataObserver( |
| 656 new ClearBrowsingDataObserver(env, obj, browsing_data_remover); | 673 env, obj, browsing_data_remover, 2 /* tasks_count */); |
|
Bernhard Bauer
2016/08/11 15:16:16
I was actually thinking to increase the count for
msramek
2016/08/11 15:36:31
I see. Yes, I was exactly trying to avoid that edg
| |
| 657 | 674 |
| 658 browsing_data_remover->RemoveWithFilterAndReply( | 675 if (filterable_mask) { |
| 659 BrowsingDataRemover::Period( | 676 browsing_data_remover->RemoveWithFilterAndReply( |
| 660 static_cast<browsing_data::TimePeriod>(time_period)), | 677 BrowsingDataRemover::Period( |
| 661 remove_mask, BrowsingDataHelper::UNPROTECTED_WEB, | 678 static_cast<browsing_data::TimePeriod>(time_period)), |
| 662 std::move(filter_builder), observer); | 679 filterable_mask, BrowsingDataHelper::UNPROTECTED_WEB, |
| 680 std::move(filter_builder), observer); | |
| 681 } else { | |
| 682 // Make sure |observer| doesn't wait for the filtered task. | |
| 683 observer->OnBrowsingDataRemoverDone(); | |
| 684 } | |
| 685 | |
| 686 if (nonfilterable_mask) { | |
| 687 browsing_data_remover->RemoveAndReply( | |
| 688 BrowsingDataRemover::Period( | |
| 689 static_cast<browsing_data::TimePeriod>(time_period)), | |
| 690 nonfilterable_mask, BrowsingDataHelper::UNPROTECTED_WEB, observer); | |
| 691 } else { | |
| 692 // Make sure |observer| doesn't wait for the non-filtered task. | |
| 693 observer->OnBrowsingDataRemoverDone(); | |
| 694 } | |
| 663 } | 695 } |
| 664 | 696 |
| 665 static jboolean CanDeleteBrowsingHistory(JNIEnv* env, | 697 static jboolean CanDeleteBrowsingHistory(JNIEnv* env, |
| 666 const JavaParamRef<jobject>& obj) { | 698 const JavaParamRef<jobject>& obj) { |
| 667 return GetPrefService()->GetBoolean(prefs::kAllowDeletingBrowserHistory); | 699 return GetPrefService()->GetBoolean(prefs::kAllowDeletingBrowserHistory); |
| 668 } | 700 } |
| 669 | 701 |
| 670 static void FetchImportantSites(JNIEnv* env, | 702 static void FetchImportantSites(JNIEnv* env, |
| 671 const JavaParamRef<jclass>& clazz, | 703 const JavaParamRef<jclass>& clazz, |
| 672 const JavaParamRef<jobject>& java_callback) { | 704 const JavaParamRef<jobject>& java_callback) { |
| (...skipping 494 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1167 | 1199 |
| 1168 return ConvertJavaStringToUTF8(android_permission); | 1200 return ConvertJavaStringToUTF8(android_permission); |
| 1169 } | 1201 } |
| 1170 | 1202 |
| 1171 static void SetSupervisedUserId(JNIEnv* env, | 1203 static void SetSupervisedUserId(JNIEnv* env, |
| 1172 const JavaParamRef<jobject>& obj, | 1204 const JavaParamRef<jobject>& obj, |
| 1173 const JavaParamRef<jstring>& pref) { | 1205 const JavaParamRef<jstring>& pref) { |
| 1174 GetPrefService()->SetString(prefs::kSupervisedUserId, | 1206 GetPrefService()->SetString(prefs::kSupervisedUserId, |
| 1175 ConvertJavaStringToUTF8(env, pref)); | 1207 ConvertJavaStringToUTF8(env, pref)); |
| 1176 } | 1208 } |
| OLD | NEW |