#ifndef ASH_BIRCH_BIRCH_ITEM_REMOVER_H_
#define ASH_BIRCH_BIRCH_ITEM_REMOVER_H_
#include <memory>
#include "ash/ash_export.h"
#include "ash/birch/birch_item.h"
#include "ash/birch/removed_items.pb.h"
#include "ash/utility/persistent_proto.h"
#include "base/functional/callback_forward.h"
namespace ash {
class BirchCalendarItem;
class BirchItem;
class BirchTabItem;
class ASH_EXPORT BirchItemRemover {
public:
explicit BirchItemRemover(base::FilePath path,
base::OnceClosure on_init_callback);
BirchItemRemover(const BirchItemRemover&) = delete;
BirchItemRemover& operator=(const BirchItemRemover&) = delete;
~BirchItemRemover();
bool Initialized();
void RemoveItem(BirchItem* item);
void FilterRemovedTabs(std::vector<BirchTabItem>* tab_items);
void FilterRemovedLastActiveItems(std::vector<BirchLastActiveItem>* items);
void FilterRemovedMostVisitedItems(std::vector<BirchMostVisitedItem>* items);
void FilterRemovedSelfShareItems(
std::vector<BirchSelfShareItem>* self_share_items);
void FilterRemovedCalendarItems(
std::vector<BirchCalendarItem>* calendar_items);
void FilterRemovedAttachmentItems(
std::vector<BirchAttachmentItem>* file_items);
void FilterRemovedFileItems(std::vector<BirchFileItem>* file_items);
void SetProtoInitCallbackForTest(base::OnceClosure callback);
private:
PersistentProto<RemovedItemsProto> removed_items_proto_;
};
}
#endif