blob: c72b093dc6845760a1c26e8ce5f7337b01733b64 [file] [log] [blame]
// Copyright 2016 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 "ios/chrome/browser/browsing_data/browsing_data_counter_wrapper.h"
#include "base/callback.h"
#include "base/memory/ptr_util.h"
#include "components/prefs/pref_service.h"
#include "ios/chrome/browser/browser_state/chrome_browser_state.h"
#include "ios/chrome/browser/browsing_data/ios_browsing_data_counter_factory.h"
// static
std::unique_ptr<BrowsingDataCounterWrapper>
BrowsingDataCounterWrapper::CreateCounterWrapper(
const char* pref_name,
ios::ChromeBrowserState* browser_state,
PrefService* pref_service,
const UpdateUICallback& update_ui_callback) {
std::unique_ptr<browsing_data::BrowsingDataCounter> counter =
IOSBrowsingDataCounterFactory::GetForBrowserStateAndPref(browser_state,
pref_name);
if (!counter)
return nullptr;
return base::WrapUnique<BrowsingDataCounterWrapper>(
new BrowsingDataCounterWrapper(std::move(counter), pref_service,
update_ui_callback));
}
BrowsingDataCounterWrapper::~BrowsingDataCounterWrapper() {}
void BrowsingDataCounterWrapper::RestartCounter() {
counter_->Restart();
}
BrowsingDataCounterWrapper::BrowsingDataCounterWrapper(
std::unique_ptr<browsing_data::BrowsingDataCounter> counter,
PrefService* pref_service,
const UpdateUICallback& update_ui_callback)
: counter_(std::move(counter)), update_ui_callback_(update_ui_callback) {
counter_->Init(pref_service, browsing_data::ClearBrowsingDataTab::ADVANCED,
base::Bind(&BrowsingDataCounterWrapper::UpdateWithResult,
base::Unretained(this)));
}
void BrowsingDataCounterWrapper::UpdateWithResult(
std::unique_ptr<browsing_data::BrowsingDataCounter::Result> result) {
update_ui_callback_.Run(*result.get());
}