Commit f7305c4e authored by Sylvain Defresne's avatar Sylvain Defresne Committed by Commit Bot

Convert IOSChromeBrowsingDataRemover to a KeyedService

Rename IOSChromeBrowsingDataRemover to BrowsingDataRemover
and convert it to a KeyedService. Make the class an abstract
interface with a single implementation to allow injecting a
fake in unit tests eventually.

Bug: none
Change-Id: I6d8ca1ee1e0704d89a68f92af54106e0dba6f5a5
Cq-Include-Trybots: master.tryserver.chromium.mac:ios-simulator-cronet;master.tryserver.chromium.mac:ios-simulator-full-configs
Reviewed-on: https://chromium-review.googlesource.com/931127
Commit-Queue: Sylvain Defresne <sdefresne@chromium.org>
Reviewed-by: default avatarOlivier Robin <olivierrobin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#539121}
parent 106d17cb
......@@ -65,7 +65,6 @@
#include "ios/chrome/browser/browser_state/chrome_browser_state_removal_controller.h"
#import "ios/chrome/browser/browsing_data/browsing_data_removal_controller.h"
#include "ios/chrome/browser/browsing_data/browsing_data_remove_mask.h"
#include "ios/chrome/browser/browsing_data/ios_chrome_browsing_data_remover.h"
#include "ios/chrome/browser/chrome_paths.h"
#include "ios/chrome/browser/chrome_url_constants.h"
#import "ios/chrome/browser/chrome_url_util.h"
......@@ -864,8 +863,7 @@ void MainControllerAuthenticationServiceDelegate::ClearBrowsingData(
if (IsIPadIdiom() || _tabSwitcherIsActive)
[_tabSwitcher setOtrTabModel:nil];
[_browserViewWrangler
deleteIncognitoTabModelState:self.browsingDataRemovalController];
[_browserViewWrangler deleteIncognitoTabModelState];
if (otrBVCIsCurrent) {
[self activateBVCAndMakeCurrentBVCPrimary];
......
......@@ -80,6 +80,7 @@ source_set("browser_state_impl") {
"//ios/chrome/browser/autofill",
"//ios/chrome/browser/bookmarks",
"//ios/chrome/browser/browser_state_metrics",
"//ios/chrome/browser/browsing_data",
"//ios/chrome/browser/content_settings",
"//ios/chrome/browser/desktop_promotion",
"//ios/chrome/browser/dom_distiller",
......
......@@ -11,6 +11,7 @@
#include "ios/chrome/browser/autofill/personal_data_manager_factory.h"
#include "ios/chrome/browser/bookmarks/bookmark_model_factory.h"
#include "ios/chrome/browser/bookmarks/startup_task_runner_service_factory.h"
#include "ios/chrome/browser/browsing_data/browsing_data_remover_factory.h"
#include "ios/chrome/browser/content_settings/cookie_settings_factory.h"
#include "ios/chrome/browser/desktop_promotion/desktop_promotion_sync_service_factory.h"
#include "ios/chrome/browser/dom_distiller/dom_distiller_service_factory.h"
......@@ -101,6 +102,7 @@ void EnsureBrowserStateKeyedServiceFactoriesBuilt() {
AuthenticationServiceFactory::GetInstance();
BrowserListFactory::GetInstance();
BrowserListSessionServiceFactory::GetInstance();
BrowsingDataRemoverFactory::GetInstance();
DesktopPromotionSyncServiceFactory::GetInstance();
feature_engagement::TrackerFactory::GetInstance();
IOSChromeGCMProfileServiceFactory::GetInstance();
......
......@@ -11,8 +11,11 @@ source_set("browsing_data_remove_mask") {
source_set("browsing_data") {
sources = [
"ios_chrome_browsing_data_remover.h",
"ios_chrome_browsing_data_remover.mm",
"browsing_data_remover.h",
"browsing_data_remover_factory.cc",
"browsing_data_remover_factory.h",
"browsing_data_remover_impl.h",
"browsing_data_remover_impl.mm",
]
deps = [
"//base",
......@@ -21,6 +24,7 @@ source_set("browsing_data") {
"//components/browsing_data/core",
"//components/history/core/browser",
"//components/keyed_service/core",
"//components/keyed_service/ios",
"//components/language/core/browser",
"//components/omnibox/browser",
"//components/open_from_clipboard",
......
specific_include_rules = {
# TODO(crbug.com/619783): Remove this exception.
"^ios_chrome_browsing_data_remover\.mm$": [
"^browsing_data_remover_impl\.mm$": [
"+ios/web/web_state/ui/wk_web_view_configuration_provider.h",
],
}
......@@ -28,9 +28,6 @@ class ChromeBrowserState;
timePeriod:(browsing_data::TimePeriod)timePeriod
completionHandler:(ProceduralBlock)completionHandler;
// Called when |browserState| is destroyed.
- (void)browserStateDestroyed:(ios::ChromeBrowserState*)browserState;
// Returns YES if browsing data for |browserState| is still being cleared.
- (BOOL)hasPendingRemovalOperations:(ios::ChromeBrowserState*)browserState;
......
......@@ -12,19 +12,14 @@
#include "base/logging.h"
#import "base/mac/bind_objc_block.h"
#include "ios/chrome/browser/browsing_data/browsing_data_remove_mask.h"
#include "ios/chrome/browser/browsing_data/ios_chrome_browsing_data_remover.h"
#include "ios/chrome/browser/browsing_data/browsing_data_remover.h"
#include "ios/chrome/browser/browsing_data/browsing_data_remover_factory.h"
#if !defined(__has_feature) || !__has_feature(objc_arc)
#error "This file requires ARC support."
#endif
@implementation BrowsingDataRemovalController {
// Mapping from ChromeBrowserState to the IOSChromeBrowsingDataRemover used
// for removal of the data on that instance.
base::flat_map<ios::ChromeBrowserState*,
std::unique_ptr<IOSChromeBrowsingDataRemover>>
_browingDataRemovers;
}
@implementation BrowsingDataRemovalController
- (void)removeBrowsingDataFromBrowserState:
(ios::ChromeBrowserState*)browserState
......@@ -32,39 +27,18 @@
timePeriod:(browsing_data::TimePeriod)timePeriod
completionHandler:(ProceduralBlock)completionHandler {
DCHECK(browserState);
// The block capture |self| (via accessing the ivar _browingDataRemovers).
// This is a workaround to ensure the callback is invoked even if the object
// is destroyed when getting out of scope.
__block BrowsingDataRemovalController* strongSelf = self;
ProceduralBlock browsingDataCleared = ^{
if (completionHandler)
completionHandler();
strongSelf = nil;
};
auto iterator = _browingDataRemovers.find(browserState);
if (iterator == _browingDataRemovers.end()) {
iterator =
_browingDataRemovers
.emplace(
browserState,
std::make_unique<IOSChromeBrowsingDataRemover>(browserState))
.first;
DCHECK(iterator != _browingDataRemovers.end());
}
iterator->second->Remove(timePeriod, mask,
base::BindBlockArc(browsingDataCleared));
BrowsingDataRemoverFactory::GetForBrowserState(browserState)
->Remove(timePeriod, mask, base::BindBlockArc(^{
if (completionHandler)
completionHandler();
}));
}
- (BOOL)hasPendingRemovalOperations:(ios::ChromeBrowserState*)browserState {
auto iterator = _browingDataRemovers.find(browserState);
return iterator != _browingDataRemovers.end() &&
iterator->second->is_removing();
}
- (void)browserStateDestroyed:(ios::ChromeBrowserState*)browserState {
_browingDataRemovers.erase(browserState);
DCHECK(browserState);
BrowsingDataRemover* browsingDataRemover =
BrowsingDataRemoverFactory::GetForBrowserStateIfExists(browserState);
return browsingDataRemover && browsingDataRemover->IsRemoving();
}
@end
......@@ -71,7 +71,6 @@ TEST_F(BrowsingDataRemovalControllerTest, PerformAfterBrowserStateDestruction) {
}];
// Destroy the BrowserState immediately.
[removal_controller browserStateDestroyed:browser_state_.get()];
browser_state_.reset();
run_loop.RunUntilIdle();
......
// Copyright 2018 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.
#ifndef IOS_CHROME_BROWSER_BROWSING_DATA_BROWSING_DATA_REMOVER_H_
#define IOS_CHROME_BROWSER_BROWSING_DATA_BROWSING_DATA_REMOVER_H_
#include "base/callback.h"
#include "base/macros.h"
#include "components/browsing_data/core/browsing_data_utils.h"
#include "components/keyed_service/core/keyed_service.h"
#include "ios/chrome/browser/browsing_data/browsing_data_remove_mask.h"
// BrowsingDataRemover is responsible for removing data related to
// browsing: history, downloads, cookies, ...
class BrowsingDataRemover : public KeyedService {
public:
BrowsingDataRemover() = default;
~BrowsingDataRemover() override = default;
// Is the service currently in the process of removing data?
virtual bool IsRemoving() const = 0;
// Removes browsing data for the given |time_period| with data types specified
// by |remove_mask|. The |callback| is invoked asynchronously when the data
// has been removed.
virtual void Remove(browsing_data::TimePeriod time_period,
BrowsingDataRemoveMask remove_mask,
base::OnceClosure callback) = 0;
private:
DISALLOW_COPY_AND_ASSIGN(BrowsingDataRemover);
};
#endif // IOS_CHROME_BROWSER_BROWSING_DATA_BROWSING_DATA_REMOVER_H_
// Copyright 2018 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_remover_factory.h"
#include <utility>
#include "base/memory/singleton.h"
#include "components/keyed_service/ios/browser_state_dependency_manager.h"
#include "ios/chrome/browser/browser_state/browser_state_otr_helper.h"
#include "ios/chrome/browser/browser_state/chrome_browser_state.h"
#include "ios/chrome/browser/browsing_data/browsing_data_remover_impl.h"
// static
BrowsingDataRemover* BrowsingDataRemoverFactory::GetForBrowserState(
ios::ChromeBrowserState* browser_state) {
return static_cast<BrowsingDataRemover*>(
GetInstance()->GetServiceForBrowserState(browser_state, true));
}
// static
BrowsingDataRemover* BrowsingDataRemoverFactory::GetForBrowserStateIfExists(
ios::ChromeBrowserState* browser_state) {
return static_cast<BrowsingDataRemover*>(
GetInstance()->GetServiceForBrowserState(browser_state, false));
}
// static
BrowsingDataRemoverFactory* BrowsingDataRemoverFactory::GetInstance() {
return base::Singleton<BrowsingDataRemoverFactory>::get();
}
BrowsingDataRemoverFactory::BrowsingDataRemoverFactory()
: BrowserStateKeyedServiceFactory(
"BrowsingDataRemover",
BrowserStateDependencyManager::GetInstance()) {}
BrowsingDataRemoverFactory::~BrowsingDataRemoverFactory() = default;
std::unique_ptr<KeyedService>
BrowsingDataRemoverFactory::BuildServiceInstanceFor(
web::BrowserState* context) const {
ios::ChromeBrowserState* browser_state =
ios::ChromeBrowserState::FromBrowserState(context);
return std::make_unique<BrowsingDataRemoverImpl>(browser_state);
}
web::BrowserState* BrowsingDataRemoverFactory::GetBrowserStateToUse(
web::BrowserState* context) const {
return GetBrowserStateOwnInstanceInIncognito(context);
}
// Copyright 2018 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.
#ifndef IOS_CHROME_BROWSER_BROWSING_DATA_BROWSING_DATA_REMOVER_FACTORY_H_
#define IOS_CHROME_BROWSER_BROWSING_DATA_BROWSING_DATA_REMOVER_FACTORY_H_
#include <memory>
#include "base/macros.h"
#include "components/keyed_service/ios/browser_state_keyed_service_factory.h"
namespace base {
template <typename T>
struct DefaultSingletonTraits;
} // namespace base
namespace ios {
class ChromeBrowserState;
}
class BrowsingDataRemover;
// Singleton that owns all BrowsingDataRemovers and associates them with
// ios::ChromeBrowserState.
class BrowsingDataRemoverFactory : public BrowserStateKeyedServiceFactory {
public:
static BrowsingDataRemover* GetForBrowserState(
ios::ChromeBrowserState* browser_state);
static BrowsingDataRemover* GetForBrowserStateIfExists(
ios::ChromeBrowserState* browser_state);
static BrowsingDataRemoverFactory* GetInstance();
private:
friend struct base::DefaultSingletonTraits<BrowsingDataRemoverFactory>;
BrowsingDataRemoverFactory();
~BrowsingDataRemoverFactory() override;
// BrowserStateKeyedServiceFactory implementation.
std::unique_ptr<KeyedService> BuildServiceInstanceFor(
web::BrowserState* context) const override;
web::BrowserState* GetBrowserStateToUse(
web::BrowserState* context) const override;
DISALLOW_COPY_AND_ASSIGN(BrowsingDataRemoverFactory);
};
#endif // IOS_CHROME_BROWSER_BROWSING_DATA_BROWSING_DATA_REMOVER_FACTORY_H_
......@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef IOS_CHROME_BROWSER_BROWSING_DATA_IOS_CHROME_BROWSING_DATA_REMOVER_H_
#define IOS_CHROME_BROWSER_BROWSING_DATA_IOS_CHROME_BROWSING_DATA_REMOVER_H_
#ifndef IOS_CHROME_BROWSER_BROWSING_DATA_BROWSING_DATA_REMOVER_IMPL_H_
#define IOS_CHROME_BROWSER_BROWSING_DATA_BROWSING_DATA_REMOVER_IMPL_H_
#include <memory>
......@@ -18,6 +18,7 @@
#include "components/prefs/pref_member.h"
#include "components/search_engines/template_url_service.h"
#include "ios/chrome/browser/browsing_data/browsing_data_remove_mask.h"
#include "ios/chrome/browser/browsing_data/browsing_data_remover.h"
namespace ios {
class ChromeBrowserState;
......@@ -27,24 +28,23 @@ namespace net {
class URLRequestContextGetter;
}
// IOSChromeBrowsingDataRemover is responsible for removing data related to
// browsing: visits in url database, downloads, cookies ...
class IOSChromeBrowsingDataRemover {
// BrowsingDataRemoverImpl is the concrete implementation of the
// BrowsingDataRemover abstract interface.
class BrowsingDataRemoverImpl : public BrowsingDataRemover {
public:
// Creates a IOSChromeBrowsingDataRemover to remove browser data from the
// Creates a BrowsingDataRemoverImpl to remove browser data from the
// specified ChromeBrowserstate. Use Remove to initiate the removal.
explicit IOSChromeBrowsingDataRemover(ios::ChromeBrowserState* browser_state);
~IOSChromeBrowsingDataRemover();
explicit BrowsingDataRemoverImpl(ios::ChromeBrowserState* browser_state);
~BrowsingDataRemoverImpl() override;
// Is the object currently in the process of removing data?
bool is_removing() { return is_removing_; }
// KeyedService implementation.
void Shutdown() override;
// Removes browsing data for the given |time_range| with data types specified
// by |remove_mask|. The |callback| is invoked asynchronously when the data
// has been removed.
// BrowsingDataRemover implementation.
bool IsRemoving() const override;
void Remove(browsing_data::TimePeriod time_period,
BrowsingDataRemoveMask remove_mask,
base::OnceClosure callback);
base::OnceClosure callback) override;
private:
// Represents a single removal task. Contains all parameters to execute it.
......@@ -98,9 +98,9 @@ class IOSChromeBrowsingDataRemover {
// created by this method have been invoked.
base::OnceClosure CreatePendingTaskCompletionClosure();
// Returns a weak pointer to IOSChromeBrowsingDataRemover for internal
// Returns a weak pointer to BrowsingDataRemoverImpl for internal
// purposes.
base::WeakPtr<IOSChromeBrowsingDataRemover> GetWeakPtr();
base::WeakPtr<BrowsingDataRemoverImpl> GetWeakPtr();
// This object is sequence affine.
SEQUENCE_CHECKER(sequence_checker_);
......@@ -125,9 +125,9 @@ class IOSChromeBrowsingDataRemover {
std::unique_ptr<TemplateURLService::Subscription> template_url_subscription_;
base::WeakPtrFactory<IOSChromeBrowsingDataRemover> weak_ptr_factory_;
base::WeakPtrFactory<BrowsingDataRemoverImpl> weak_ptr_factory_;
DISALLOW_COPY_AND_ASSIGN(IOSChromeBrowsingDataRemover);
DISALLOW_COPY_AND_ASSIGN(BrowsingDataRemoverImpl);
};
#endif // IOS_CHROME_BROWSER_BROWSING_DATA_IOS_CHROME_BROWSING_DATA_REMOVER_H_
#endif // IOS_CHROME_BROWSER_BROWSING_DATA_BROWSING_DATA_REMOVER_IMPL_H_
......@@ -2,7 +2,7 @@
// 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/ios_chrome_browsing_data_remover.h"
#include "ios/chrome/browser/browsing_data/browsing_data_remover_impl.h"
#import <WebKit/WebKit.h>
......@@ -153,22 +153,21 @@ void ClearChannelIDs(
} // namespace
IOSChromeBrowsingDataRemover::RemovalTask::RemovalTask(
base::Time delete_begin,
base::Time delete_end,
BrowsingDataRemoveMask mask,
base::OnceClosure callback)
BrowsingDataRemoverImpl::RemovalTask::RemovalTask(base::Time delete_begin,
base::Time delete_end,
BrowsingDataRemoveMask mask,
base::OnceClosure callback)
: delete_begin(delete_begin),
delete_end(delete_end),
mask(mask),
callback(std::move(callback)) {}
IOSChromeBrowsingDataRemover::RemovalTask::RemovalTask(
BrowsingDataRemoverImpl::RemovalTask::RemovalTask(
RemovalTask&& other) noexcept = default;
IOSChromeBrowsingDataRemover::RemovalTask::~RemovalTask() = default;
BrowsingDataRemoverImpl::RemovalTask::~RemovalTask() = default;
IOSChromeBrowsingDataRemover::IOSChromeBrowsingDataRemover(
BrowsingDataRemoverImpl::BrowsingDataRemoverImpl(
ios::ChromeBrowserState* browser_state)
: browser_state_(browser_state),
context_getter_(browser_state->GetRequestContext()),
......@@ -177,10 +176,10 @@ IOSChromeBrowsingDataRemover::IOSChromeBrowsingDataRemover(
DCHECK(browser_state);
}
IOSChromeBrowsingDataRemover::~IOSChromeBrowsingDataRemover() {
BrowsingDataRemoverImpl::~BrowsingDataRemoverImpl() {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
if (is_removing()) {
VLOG(1) << "IOSChromeBrowsingDataRemover shuts down with "
if (is_removing_) {
VLOG(1) << "BrowsingDataRemoverImpl shuts down with "
<< removal_queue_.size() << " pending tasks"
<< (pending_tasks_count_ ? " (including one in progress)" : "");
}
......@@ -204,15 +203,26 @@ IOSChromeBrowsingDataRemover::~IOSChromeBrowsingDataRemover() {
}
}
void IOSChromeBrowsingDataRemover::SetRemoving(bool is_removing) {
void BrowsingDataRemoverImpl::Shutdown() {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
weak_ptr_factory_.InvalidateWeakPtrs();
browser_state_ = nullptr;
}
bool BrowsingDataRemoverImpl::IsRemoving() const {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
return is_removing_;
}
void BrowsingDataRemoverImpl::SetRemoving(bool is_removing) {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
DCHECK(is_removing_ != is_removing);
is_removing_ = is_removing;
}
void IOSChromeBrowsingDataRemover::Remove(browsing_data::TimePeriod time_period,
BrowsingDataRemoveMask mask,
base::OnceClosure callback) {
void BrowsingDataRemoverImpl::Remove(browsing_data::TimePeriod time_period,
BrowsingDataRemoveMask mask,
base::OnceClosure callback) {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
// Should always remove something.
......@@ -254,7 +264,7 @@ void IOSChromeBrowsingDataRemover::Remove(browsing_data::TimePeriod time_period,
}
}
void IOSChromeBrowsingDataRemover::RunNextTask() {
void BrowsingDataRemoverImpl::RunNextTask() {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
DCHECK(!removal_queue_.empty());
const RemovalTask& removal_task = removal_queue_.front();
......@@ -262,9 +272,9 @@ void IOSChromeBrowsingDataRemover::RunNextTask() {
removal_task.mask);
}
void IOSChromeBrowsingDataRemover::RemoveImpl(base::Time delete_begin,
base::Time delete_end,
BrowsingDataRemoveMask mask) {
void BrowsingDataRemoverImpl::RemoveImpl(base::Time delete_begin,
base::Time delete_end,
BrowsingDataRemoveMask mask) {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
base::ScopedClosureRunner synchronous_clear_operations(
CreatePendingTaskCompletionClosure());
......@@ -357,7 +367,7 @@ void IOSChromeBrowsingDataRemover::RemoveImpl(base::Time delete_begin,
if (keywords_model && !keywords_model->loaded()) {
template_url_subscription_ =
keywords_model->RegisterOnLoadedCallback(AdaptCallbackForRepeating(
base::BindOnce(&IOSChromeBrowsingDataRemover::OnKeywordsLoaded,
base::BindOnce(&BrowsingDataRemoverImpl::OnKeywordsLoaded,
GetWeakPtr(), delete_begin, delete_end,
CreatePendingTaskCompletionClosure())));
keywords_model->Load();
......@@ -542,7 +552,7 @@ void IOSChromeBrowsingDataRemover::RemoveImpl(base::Time delete_begin,
// TODO(crbug.com/619783): removing data from WkWebsiteDataStore should be
// implemented by //ios/web. Once this is available remove this and use the
// new API.
void IOSChromeBrowsingDataRemover::RemoveDataFromWKWebsiteDataStore(
void BrowsingDataRemoverImpl::RemoveDataFromWKWebsiteDataStore(
base::Time delete_begin,
base::Time delete_end,
BrowsingDataRemoveMask mask) {
......@@ -587,7 +597,7 @@ void IOSChromeBrowsingDataRemover::RemoveDataFromWKWebsiteDataStore(
if (IsRemoveDataMaskSet(mask, BrowsingDataRemoveMask::REMOVE_VISITED_LINKS)) {
ProceduralBlock previous_completion_block = completion_block;
base::WeakPtr<IOSChromeBrowsingDataRemover> weak_ptr = GetWeakPtr();
base::WeakPtr<BrowsingDataRemoverImpl> weak_ptr = GetWeakPtr();
// TODO(crbug.com/557963): Purging the WKProcessPool is a workaround for
// the fact that there is no public API to clear visited links in
......@@ -597,7 +607,7 @@ void IOSChromeBrowsingDataRemover::RemoveDataFromWKWebsiteDataStore(
// it is not a problem in practice since there is no UI to only have
// visited links be removed but not cookies.
completion_block = ^{
if (IOSChromeBrowsingDataRemover* strong_ptr = weak_ptr.get()) {
if (BrowsingDataRemoverImpl* strong_ptr = weak_ptr.get()) {
web::WKWebViewConfigurationProvider::FromBrowserState(
strong_ptr->browser_state_)
.Purge();
......@@ -633,13 +643,12 @@ void IOSChromeBrowsingDataRemover::RemoveDataFromWKWebsiteDataStore(
}
}
void IOSChromeBrowsingDataRemover::OnKeywordsLoaded(
base::Time delete_begin,
base::Time delete_end,
base::OnceClosure callback) {
void BrowsingDataRemoverImpl::OnKeywordsLoaded(base::Time delete_begin,
base::Time delete_end,
base::OnceClosure callback) {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
// Deletes the entries from the model, and if we're not waiting on anything
// else notifies observers and deletes this IOSChromeBrowsingDataRemover.
// else notifies observers and deletes this BrowsingDataRemoverImpl.
TemplateURLService* model =
ios::TemplateURLServiceFactory::GetForBrowserState(browser_state_);
model->RemoveAutoGeneratedBetween(delete_begin, delete_end);
......@@ -647,7 +656,7 @@ void IOSChromeBrowsingDataRemover::OnKeywordsLoaded(
std::move(callback).Run();
}
void IOSChromeBrowsingDataRemover::NotifyRemovalComplete() {
void BrowsingDataRemoverImpl::NotifyRemovalComplete() {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
DCHECK(!removal_queue_.empty());
......@@ -679,10 +688,10 @@ void IOSChromeBrowsingDataRemover::NotifyRemovalComplete() {
// RunNextTask() is not called before the callback has been invoked.
current_task_runner->PostTask(
FROM_HERE,
base::BindOnce(&IOSChromeBrowsingDataRemover::RunNextTask, GetWeakPtr()));
base::BindOnce(&BrowsingDataRemoverImpl::RunNextTask, GetWeakPtr()));
}
void IOSChromeBrowsingDataRemover::OnTaskComplete() {
void BrowsingDataRemoverImpl::OnTaskComplete() {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
// TODO(crbug.com/305259): This should also observe session clearing (what
......@@ -697,17 +706,15 @@ void IOSChromeBrowsingDataRemover::OnTaskComplete() {
}
base::OnceClosure
IOSChromeBrowsingDataRemover::CreatePendingTaskCompletionClosure() {
BrowsingDataRemoverImpl::CreatePendingTaskCompletionClosure() {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
++pending_tasks_count_;
return base::BindOnce(&IOSChromeBrowsingDataRemover::OnTaskComplete,
GetWeakPtr());
return base::BindOnce(&BrowsingDataRemoverImpl::OnTaskComplete, GetWeakPtr());
}
base::WeakPtr<IOSChromeBrowsingDataRemover>
IOSChromeBrowsingDataRemover::GetWeakPtr() {
base::WeakPtr<BrowsingDataRemoverImpl> BrowsingDataRemoverImpl::GetWeakPtr() {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
base::WeakPtr<IOSChromeBrowsingDataRemover> weak_ptr =
base::WeakPtr<BrowsingDataRemoverImpl> weak_ptr =
weak_ptr_factory_.GetWeakPtr();
// Immediately bind the weak pointer to the current sequence. This makes it
......
......@@ -10,7 +10,6 @@
#import "ios/chrome/browser/ui/main/browser_view_information.h"
@protocol ApplicationCommands;
@class BrowsingDataRemovalController;
@class DeviceSharingManager;
@protocol TabModelObserver;
......@@ -58,10 +57,8 @@ class ChromeBrowserState;
// tab model. This class creates and manages the state of the sharing manager.
- (void)updateDeviceSharingManager;
// Delete any incognito tab model state, using |removalController| to handle
// the storage removal.
- (void)deleteIncognitoTabModelState:
(BrowsingDataRemovalController*)removalController;
// Delete the incognito tab model state.
- (void)deleteIncognitoTabModelState;
// Called before the instance is deallocated.
- (void)shutdown;
......
......@@ -4,11 +4,10 @@
#import "ios/chrome/browser/ui/main/browser_view_wrangler.h"
#include "base/files/file_path.h"
#include "base/strings/sys_string_conversions.h"
#include "ios/chrome/browser/application_context.h"
#include "ios/chrome/browser/browser_state/chrome_browser_state.h"
#import "ios/chrome/browser/browsing_data/browsing_data_removal_controller.h"
#include "ios/chrome/browser/browsing_data/ios_chrome_browsing_data_remover.h"
#include "ios/chrome/browser/crash_report/crash_report_helper.h"
#import "ios/chrome/browser/device_sharing/device_sharing_manager.h"
#import "ios/chrome/browser/sessions/session_ios.h"
......@@ -253,8 +252,7 @@
[self.deviceSharingManager updateActiveURL:activeURL];
}
- (void)deleteIncognitoTabModelState:
(BrowsingDataRemovalController*)removalController {
- (void)deleteIncognitoTabModelState {
// It is theoretically possible that a Tab has been added to |_otrTabModel|
// since the deletion has been scheduled. It is unlikely to happen for real
// because it would require superhuman speed.
......@@ -269,9 +267,6 @@
// following code.
BOOL otrBVCIsCurrent = self.currentBVC == _otrBVC;
@autoreleasepool {
ios::ChromeBrowserState* otrBrowserState =
_browserState->GetOffTheRecordChromeBrowserState();
[removalController browserStateDestroyed:otrBrowserState];
self.otrBVC = nil;
// There's no guarantee the tab model was ever added to the BVC (or even
// that the BVC was created), so ensure the tab model gets notified.
......
......@@ -31,7 +31,6 @@
#include "ios/chrome/browser/browser_state/chrome_browser_state.h"
#import "ios/chrome/browser/browsing_data/browsing_data_removal_controller.h"
#include "ios/chrome/browser/browsing_data/browsing_data_remove_mask.h"
#include "ios/chrome/browser/browsing_data/ios_chrome_browsing_data_remover.h"
#include "ios/chrome/browser/chrome_url_constants.h"
#include "ios/chrome/browser/experimental_flags.h"
#include "ios/chrome/browser/feature_engagement/tracker_factory.h"
......
......@@ -8,7 +8,7 @@
#import "ios/chrome/app/main_controller.h"
#import "ios/chrome/app/main_controller_private.h"
#include "ios/chrome/browser/browser_state/chrome_browser_state.h"
#include "ios/chrome/browser/browsing_data/ios_chrome_browsing_data_remover.h"
#include "ios/chrome/browser/browsing_data/browsing_data_remove_mask.h"
#import "ios/chrome/test/app/chrome_test_util.h"
#import "ios/testing/wait_util.h"
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment