Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(305)

Unified Diff: components/browsing_data_ui/history_notice_utils.cc

Issue 1983073002: Query the existence other forms of browsing history. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Nit. Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: components/browsing_data_ui/history_notice_utils.cc
diff --git a/components/browsing_data_ui/history_notice_utils.cc b/components/browsing_data_ui/history_notice_utils.cc
index c1568f2a188375f9629ffe3c3ea73e110fea8a62..6a54c26d407457b4c1ab2892112874101d7149a3 100644
--- a/components/browsing_data_ui/history_notice_utils.cc
+++ b/components/browsing_data_ui/history_notice_utils.cc
@@ -4,9 +4,50 @@
#include "components/browsing_data_ui/history_notice_utils.h"
+#include "base/bind.h"
#include "base/callback.h"
-#include "components/browser_sync/browser/profile_sync_service.h"
+#include "base/message_loop/message_loop.h"
+#include "base/strings/stringprintf.h"
#include "components/history/core/browser/web_history_service.h"
+#include "components/sync_driver/sync_service.h"
+#include "components/version_info/version_info.h"
+
+namespace {
+
+// Merges several asynchronous boolean callbacks into one that returns a boolean
+// product of their responses. Deletes itself when done.
+class MergeBooleanCallbacks {
+ public:
+ // Constructor. Upon receiving |expected_call_count| calls to |RunCallback|,
+ // |target_callback| will be run with the boolean product of their results.
+ MergeBooleanCallbacks(
+ int expected_call_count,
+ const base::Callback<void(bool)>& target_callback)
+ : expected_call_count_(expected_call_count),
+ target_callback_(target_callback),
+ final_response_(true),
+ call_count_(0) {}
+
+ // This method is to be bound to all asynchronous callbacks which we want
+ // to merge.
+ void RunCallback(bool response) {
+ final_response_ &= response;
+
+ if (++call_count_ < expected_call_count_)
+ return;
+
+ target_callback_.Run(final_response_);
+ base::MessageLoop::current()->DeleteSoon(FROM_HERE, this);
+ }
+
+ private:
+ int expected_call_count_;
+ base::Callback<void(bool)> target_callback_;
+ bool final_response_;
+ int call_count_;
+};
+
+} // namespace
namespace browsing_data_ui {
@@ -14,14 +55,16 @@ namespace testing {
bool g_override_other_forms_of_browsing_history_query = false;
-}
+} // namespace testing
void ShouldShowNoticeAboutOtherFormsOfBrowsingHistory(
- const ProfileSyncService* sync_service,
+ const sync_driver::SyncService* sync_service,
history::WebHistoryService* history_service,
base::Callback<void(bool)> callback) {
if (!sync_service ||
!sync_service->IsSyncActive() ||
+ !sync_service->GetActiveDataTypes().Has(
+ syncer::HISTORY_DELETE_DIRECTIVES) ||
sync_service->IsUsingSecondaryPassphrase() ||
!history_service) {
callback.Run(false);
@@ -32,12 +75,48 @@ void ShouldShowNoticeAboutOtherFormsOfBrowsingHistory(
}
void ShouldPopupDialogAboutOtherFormsOfBrowsingHistory(
- const ProfileSyncService* sync_service,
+ const sync_driver::SyncService* sync_service,
+ history::WebHistoryService* history_service,
+ version_info::Channel channel,
+ base::Callback<void(bool)> callback) {
+ // If the query for other forms of browsing history is overriden for testing,
+ // the conditions are identical with
+ // ShouldShowNoticeAboutOtherFormsOfBrowsingHistory.
+ if (testing::g_override_other_forms_of_browsing_history_query) {
+ ShouldShowNoticeAboutOtherFormsOfBrowsingHistory(
+ sync_service, history_service, callback);
+ return;
+ }
+
+ if (!sync_service ||
+ !sync_service->IsSyncActive() ||
+ !sync_service->GetActiveDataTypes().Has(
+ syncer::HISTORY_DELETE_DIRECTIVES) ||
+ sync_service->IsUsingSecondaryPassphrase() ||
+ !history_service) {
+ callback.Run(false);
+ return;
+ }
+
+ // Return the boolean product of QueryWebAndAppActivity and
+ // QueryOtherFormsOfBrowsingHistory. MergeBooleanCallbacks deletes itself
+ // after processing both callbacks.
+ MergeBooleanCallbacks* merger = new MergeBooleanCallbacks(2, callback);
+ history_service->QueryWebAndAppActivity(base::Bind(
+ &MergeBooleanCallbacks::RunCallback, base::Unretained(merger)));
+ history_service->QueryOtherFormsOfBrowsingHistory(
+ channel,
+ base::Bind(
+ &MergeBooleanCallbacks::RunCallback, base::Unretained(merger)));
+}
+
+// TODO(crbug.com/614319): This function is deprecated and should be removed.
+void ShouldPopupDialogAboutOtherFormsOfBrowsingHistory(
+ const sync_driver::SyncService* sync_service,
history::WebHistoryService* history_service,
base::Callback<void(bool)> callback) {
if (!history_service ||
- (!testing::g_override_other_forms_of_browsing_history_query &&
- !history_service->HasOtherFormsOfBrowsingHistory())) {
+ !testing::g_override_other_forms_of_browsing_history_query) {
callback.Run(false);
return;
}
« no previous file with comments | « components/browsing_data_ui/history_notice_utils.h ('k') | components/browsing_data_ui/history_notice_utils_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698