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

Unified Diff: chrome/browser/browsing_data/history_counter.cc

Issue 2153863002: Move counters for passwords, history and autofill to components (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@separate_build_targets_in_components_bd
Patch Set: Addressed comments Created 4 years, 5 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: chrome/browser/browsing_data/history_counter.cc
diff --git a/chrome/browser/browsing_data/history_counter.cc b/chrome/browser/browsing_data/history_counter.cc
deleted file mode 100644
index 1a6388f2215b7f44802ef673792ffca72126f693..0000000000000000000000000000000000000000
--- a/chrome/browser/browsing_data/history_counter.cc
+++ /dev/null
@@ -1,192 +0,0 @@
-// Copyright (c) 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/browsing_data/history_counter.h"
-
-#include <limits.h>
-#include <stdint.h>
-
-#include "base/memory/ptr_util.h"
-#include "base/timer/timer.h"
-#include "chrome/browser/history/history_service_factory.h"
-#include "chrome/browser/history/web_history_service_factory.h"
-#include "chrome/browser/profiles/profile.h"
-#include "chrome/browser/sync/profile_sync_service_factory.h"
-#include "components/browser_sync/browser/profile_sync_service.h"
-#include "components/browsing_data/core/pref_names.h"
-#include "components/history/core/browser/history_service.h"
-#include "components/history/core/browser/web_history_service.h"
-#include "content/public/browser/browser_thread.h"
-
-namespace {
-static const int64_t kWebHistoryTimeoutSeconds = 10;
-}
-
-HistoryCounter::HistoryCounter(Profile* profile)
- : BrowsingDataCounter(browsing_data::prefs::kDeleteBrowsingHistory),
- profile_(profile),
- has_synced_visits_(false),
- local_counting_finished_(false),
- web_counting_finished_(false),
- testing_web_history_service_(nullptr),
- sync_service_(nullptr),
- history_sync_enabled_(false),
- weak_ptr_factory_(this) {}
-
-HistoryCounter::~HistoryCounter() {
- if (sync_service_)
- sync_service_->RemoveObserver(this);
-}
-
-void HistoryCounter::OnInitialized() {
- sync_service_ = ProfileSyncServiceFactory::GetForProfile(profile_);
- if (sync_service_)
- sync_service_->AddObserver(this);
- history_sync_enabled_ = !!WebHistoryServiceFactory::GetForProfile(profile_);
-}
-
-bool HistoryCounter::HasTrackedTasks() {
- return cancelable_task_tracker_.HasTrackedTasks();
-}
-
-void HistoryCounter::SetWebHistoryServiceForTesting(
- history::WebHistoryService* service) {
- testing_web_history_service_ = service;
-}
-
-void HistoryCounter::Count() {
- // Reset the state.
- cancelable_task_tracker_.TryCancelAll();
- web_history_request_.reset();
- has_synced_visits_ = false;
-
- // Count the locally stored items.
- local_counting_finished_ = false;
-
- history::HistoryService* service = HistoryServiceFactory::GetForProfile(
- profile_, ServiceAccessType::EXPLICIT_ACCESS);
-
- service->GetHistoryCount(
- GetPeriodStart(),
- base::Time::Max(),
- base::Bind(&HistoryCounter::OnGetLocalHistoryCount,
- weak_ptr_factory_.GetWeakPtr()),
- &cancelable_task_tracker_);
-
- // If the history sync is enabled, test if there is at least one synced item.
- // If the testing web history service is present, use that one instead.
- history::WebHistoryService* web_history =
- testing_web_history_service_
- ? testing_web_history_service_
- : WebHistoryServiceFactory::GetForProfile(profile_);
-
- if (!web_history) {
- web_counting_finished_ = true;
- return;
- }
-
- web_counting_finished_ = false;
-
- web_history_timeout_.Start(
- FROM_HERE,
- base::TimeDelta::FromSeconds(kWebHistoryTimeoutSeconds),
- this,
- &HistoryCounter::OnWebHistoryTimeout);
-
- history::QueryOptions options;
- options.max_count = 1;
- options.begin_time = GetPeriodStart();
- options.end_time = base::Time::Max();
- web_history_request_ = web_history->QueryHistory(
- base::string16(),
- options,
- base::Bind(&HistoryCounter::OnGetWebHistoryCount,
- weak_ptr_factory_.GetWeakPtr()));
-
- // TODO(msramek): Include web history count when there is an API for it.
-}
-
-void HistoryCounter::OnGetLocalHistoryCount(
- history::HistoryCountResult result) {
- // Ensure that all callbacks are on the same thread, so that we do not need
- // a mutex for |MergeResults|.
- DCHECK(thread_checker_.CalledOnValidThread());
-
- if (!result.success) {
- LOG(ERROR) << "Failed to count the local history.";
- return;
- }
-
- local_result_ = result.count;
- local_counting_finished_ = true;
- MergeResults();
-}
-
-void HistoryCounter::OnGetWebHistoryCount(
- history::WebHistoryService::Request* request,
- const base::DictionaryValue* result) {
- // Ensure that all callbacks are on the same thread, so that we do not need
- // a mutex for |MergeResults|.
- DCHECK(thread_checker_.CalledOnValidThread());
-
- // If the timeout for this request already fired, ignore the result.
- if (!web_history_timeout_.IsRunning())
- return;
-
- web_history_timeout_.Stop();
-
- // If the query failed, err on the safe side and inform the user that they
- // may have history items stored in Sync. Otherwise, we expect at least one
- // entry in the "event" list.
- const base::ListValue* events;
- has_synced_visits_ =
- !result ||
- (result->GetList("event", &events) && !events->empty());
- web_counting_finished_ = true;
- MergeResults();
-}
-
-void HistoryCounter::OnWebHistoryTimeout() {
- // Ensure that all callbacks are on the same thread, so that we do not need
- // a mutex for |MergeResults|.
- DCHECK(thread_checker_.CalledOnValidThread());
-
- // If the query timed out, err on the safe side and inform the user that they
- // may have history items stored in Sync.
- web_history_request_.reset();
- has_synced_visits_ = true;
- web_counting_finished_ = true;
- MergeResults();
-}
-
-void HistoryCounter::MergeResults() {
- if (!local_counting_finished_ || !web_counting_finished_)
- return;
-
- ReportResult(base::WrapUnique(
- new HistoryResult(this, local_result_, has_synced_visits_)));
-}
-
-HistoryCounter::HistoryResult::HistoryResult(
- const HistoryCounter* source,
- ResultInt value,
- bool has_synced_visits)
- : FinishedResult(source, value),
- has_synced_visits_(has_synced_visits) {
-}
-
-HistoryCounter::HistoryResult::~HistoryResult() {
-}
-
-void HistoryCounter::OnStateChanged() {
- bool history_sync_enabled_new_state =
- !!WebHistoryServiceFactory::GetForProfile(profile_);
-
- // If the history sync was just enabled or disabled, restart the counter
- // so that we update the result accordingly.
- if (history_sync_enabled_ != history_sync_enabled_new_state) {
- history_sync_enabled_ = history_sync_enabled_new_state;
- Restart();
- }
-}
« no previous file with comments | « chrome/browser/browsing_data/history_counter.h ('k') | chrome/browser/browsing_data/history_counter_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698