blob: 4e3b0a6213c37e5c91f3edcbb32e0371d36eb38d [file] [log] [blame]
// Copyright 2014 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 "components/bookmarks/test/test_bookmark_client.h"
#include <stddef.h>
#include <memory>
#include <utility>
#include "base/bind.h"
#include "base/bind_helpers.h"
#include "base/logging.h"
#include "base/stl_util.h"
#include "components/bookmarks/browser/bookmark_model.h"
#include "components/bookmarks/browser/bookmark_node.h"
#include "components/bookmarks/browser/bookmark_storage.h"
namespace bookmarks {
TestBookmarkClient::TestBookmarkClient() {}
TestBookmarkClient::~TestBookmarkClient() {}
// static
std::unique_ptr<BookmarkModel> TestBookmarkClient::CreateModel() {
return CreateModelWithClient(std::make_unique<TestBookmarkClient>());
}
// static
std::unique_ptr<BookmarkModel> TestBookmarkClient::CreateModelWithClient(
std::unique_ptr<BookmarkClient> client) {
BookmarkClient* client_ptr = client.get();
std::unique_ptr<BookmarkModel> bookmark_model(
new BookmarkModel(std::move(client)));
std::unique_ptr<BookmarkLoadDetails> details =
std::make_unique<BookmarkLoadDetails>(client_ptr);
details->LoadManagedNode();
details->CreateUrlIndex();
bookmark_model->DoneLoading(std::move(details));
return bookmark_model;
}
BookmarkPermanentNode* TestBookmarkClient::EnableManagedNode() {
managed_node_ = std::make_unique<BookmarkPermanentNode>(
100, BookmarkNode::FOLDER, /*visible_when_empty=*/false);
// Keep a copy of the node in |unowned_managed_node_| for the accessor
// functions.
unowned_managed_node_ = managed_node_.get();
return unowned_managed_node_;
}
bool TestBookmarkClient::IsManagedNodeRoot(const BookmarkNode* node) {
return unowned_managed_node_ == node;
}
bool TestBookmarkClient::IsAManagedNode(const BookmarkNode* node) {
return node && node->HasAncestor(unowned_managed_node_);
}
bool TestBookmarkClient::IsPermanentNodeVisibleWhenEmpty(
BookmarkNode::Type type) {
switch (type) {
case bookmarks::BookmarkNode::URL:
NOTREACHED();
return false;
case bookmarks::BookmarkNode::BOOKMARK_BAR:
case bookmarks::BookmarkNode::OTHER_NODE:
return true;
case bookmarks::BookmarkNode::FOLDER:
case bookmarks::BookmarkNode::MOBILE:
return false;
}
NOTREACHED();
return false;
}
void TestBookmarkClient::RecordAction(const base::UserMetricsAction& action) {
}
LoadManagedNodeCallback TestBookmarkClient::GetLoadManagedNodeCallback() {
return base::BindOnce(&TestBookmarkClient::LoadManagedNode,
std::move(managed_node_));
}
bool TestBookmarkClient::CanSetPermanentNodeTitle(
const BookmarkNode* permanent_node) {
return IsManagedNodeRoot(permanent_node);
}
bool TestBookmarkClient::CanSyncNode(const BookmarkNode* node) {
return !IsAManagedNode(node);
}
bool TestBookmarkClient::CanBeEditedByUser(const BookmarkNode* node) {
return !IsAManagedNode(node);
}
std::string TestBookmarkClient::EncodeBookmarkSyncMetadata() {
return std::string();
}
void TestBookmarkClient::DecodeBookmarkSyncMetadata(
const std::string& metadata_str,
const base::RepeatingClosure& schedule_save_closure) {}
// static
std::unique_ptr<BookmarkPermanentNode> TestBookmarkClient::LoadManagedNode(
std::unique_ptr<BookmarkPermanentNode> managed_node,
int64_t* next_id) {
return managed_node;
}
} // namespace bookmarks