#include "components/undo/bookmark_undo_service.h"
#include <stddef.h>
#include <stdint.h>
#include <cstdint>
#include <memory>
#include <utility>
#include "base/check.h"
#include "base/memory/raw_ptr.h"
#include "base/notreached.h"
#include "base/ranges/algorithm.h"
#include "components/bookmarks/browser/bookmark_node.h"
#include "components/bookmarks/browser/bookmark_node_data.h"
#include "components/bookmarks/browser/bookmark_undo_provider.h"
#include "components/bookmarks/browser/bookmark_utils.h"
#include "components/bookmarks/browser/scoped_group_bookmark_actions.h"
#include "components/bookmarks/common/bookmark_metrics.h"
#include "components/strings/grit/components_strings.h"
#include "components/undo/undo_operation.h"
namespace {
BookmarkModel;
BookmarkNode;
BookmarkNodeData;
BookmarkUndoProvider;
class BookmarkUndoOperation : public UndoOperation { … };
class BookmarkAddOperation : public BookmarkUndoOperation { … };
BookmarkAddOperation::BookmarkAddOperation(BookmarkModel* bookmark_model,
const BookmarkNode* parent,
size_t index)
: … { … }
void BookmarkAddOperation::Undo() { … }
int BookmarkAddOperation::GetUndoLabelId() const { … }
int BookmarkAddOperation::GetRedoLabelId() const { … }
class BookmarkRemoveOperation : public BookmarkUndoOperation { … };
BookmarkRemoveOperation::BookmarkRemoveOperation(
BookmarkModel* model,
const BookmarkNode* parent,
size_t index,
std::unique_ptr<BookmarkNode> node)
: … { … }
BookmarkRemoveOperation::~BookmarkRemoveOperation() = default;
void BookmarkRemoveOperation::Undo() { … }
int BookmarkRemoveOperation::GetUndoLabelId() const { … }
int BookmarkRemoveOperation::GetRedoLabelId() const { … }
class BookmarkEditOperation : public BookmarkUndoOperation { … };
BookmarkEditOperation::BookmarkEditOperation(
BookmarkModel* bookmark_model,
const BookmarkNode* node)
: … { … }
void BookmarkEditOperation::Undo() { … }
int BookmarkEditOperation::GetUndoLabelId() const { … }
int BookmarkEditOperation::GetRedoLabelId() const { … }
class BookmarkMoveOperation : public BookmarkUndoOperation { … };
BookmarkMoveOperation::BookmarkMoveOperation(BookmarkModel* bookmark_model,
const BookmarkNode* old_parent,
size_t old_index,
const BookmarkNode* new_parent,
size_t new_index)
: … { … }
void BookmarkMoveOperation::Undo() { … }
int BookmarkMoveOperation::GetUndoLabelId() const { … }
int BookmarkMoveOperation::GetRedoLabelId() const { … }
class BookmarkReorderOperation : public BookmarkUndoOperation { … };
BookmarkReorderOperation::BookmarkReorderOperation(
BookmarkModel* bookmark_model,
const BookmarkNode* parent)
: … { … }
BookmarkReorderOperation::~BookmarkReorderOperation() = default;
void BookmarkReorderOperation::Undo() { … }
int BookmarkReorderOperation::GetUndoLabelId() const { … }
int BookmarkReorderOperation::GetRedoLabelId() const { … }
}
BookmarkUndoService::BookmarkUndoService() = default;
BookmarkUndoService::~BookmarkUndoService() = default;
void BookmarkUndoService::StartObservingBookmarkModel(BookmarkModel* model) { … }
void BookmarkUndoService::Shutdown() { … }
void BookmarkUndoService::BookmarkModelBeingDeleted() { … }
void BookmarkUndoService::BookmarkNodeMoved(const BookmarkNode* old_parent,
size_t old_index,
const BookmarkNode* new_parent,
size_t new_index) { … }
void BookmarkUndoService::BookmarkNodeAdded(const BookmarkNode* parent,
size_t index,
bool added_by_user) { … }
void BookmarkUndoService::OnWillChangeBookmarkNode(const BookmarkNode* node) { … }
void BookmarkUndoService::OnWillReorderBookmarkNode(const BookmarkNode* node) { … }
void BookmarkUndoService::GroupedBookmarkChangesBeginning() { … }
void BookmarkUndoService::GroupedBookmarkChangesEnded() { … }
void BookmarkUndoService::AddUndoEntryForRemovedNode(
const BookmarkNode* parent,
size_t index,
std::unique_ptr<BookmarkNode> node) { … }