| 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();
|
| - }
|
| -}
|
|
|