blob: 4adbe956692d6e292e5acb80d4a53018cf450475 [file] [log] [blame]
// 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_
#import <Foundation/Foundation.h>
#include "base/callback.h"
#include "base/observer_list.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"
class BrowsingDataRemoverObserver;
// BrowsingDataRemover is responsible for removing data related to
// browsing: history, downloads, cookies, ...
class BrowsingDataRemover : public KeyedService {
public:
BrowsingDataRemover();
BrowsingDataRemover(const BrowsingDataRemover&) = delete;
BrowsingDataRemover& operator=(const BrowsingDataRemover&) = delete;
~BrowsingDataRemover() override;
// 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;
// Removes all persisted data for sessions with `session_ids`.
virtual void RemoveSessionsData(NSArray<NSString*>* session_ids) = 0;
// Adds/removes `observer` from the list of observers notified when data is
// removed by BrowsingDataRemover.
void AddObserver(BrowsingDataRemoverObserver* observer);
void RemoveObserver(BrowsingDataRemoverObserver* observer);
protected:
// Invokes `OnBrowsingDataRemoved` on all registered observers.
void NotifyBrowsingDataRemoved(BrowsingDataRemoveMask mask);
private:
base::ObserverList<BrowsingDataRemoverObserver, true>::Unchecked observers_;
};
#endif // IOS_CHROME_BROWSER_BROWSING_DATA_BROWSING_DATA_REMOVER_H_