blob: dcfd0325fcaa05e33e7e162359140af3bf6ce94b [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 "base/bind.h"
#include "base/bind_helpers.h"
#include "base/logging.h"
#include "components/bookmarks/browser/bookmark_model.h"
#include "components/bookmarks/browser/bookmark_node.h"
#include "components/bookmarks/browser/bookmark_storage.h"
namespace test {
TestBookmarkClient::TestBookmarkClient() {}
TestBookmarkClient::~TestBookmarkClient() {}
scoped_ptr<BookmarkModel> TestBookmarkClient::CreateModel(bool index_urls) {
scoped_ptr<BookmarkModel> bookmark_model(new BookmarkModel(this, index_urls));
scoped_ptr<bookmarks::BookmarkLoadDetails> details =
bookmark_model->CreateLoadDetails(std::string());
details->LoadExtraNodes();
bookmark_model->DoneLoading(details.Pass());
return bookmark_model.Pass();
}
void TestBookmarkClient::SetExtraNodesToLoad(
bookmarks::BookmarkPermanentNodeList extra_nodes) {
extra_nodes_to_load_ = extra_nodes.Pass();
// Keep a copy in |extra_nodes_| for the acessor.
extra_nodes_ = extra_nodes_to_load_.get();
}
bool TestBookmarkClient::IsExtraNodeRoot(const BookmarkNode* node) {
for (size_t i = 0; i < extra_nodes_.size(); ++i) {
if (node == extra_nodes_[i])
return true;
}
return false;
}
bool TestBookmarkClient::IsAnExtraNode(const BookmarkNode* node) {
if (!node)
return false;
for (size_t i = 0; i < extra_nodes_.size(); ++i) {
if (node->HasAncestor(extra_nodes_[i]))
return true;
}
return false;
}
bool TestBookmarkClient::IsPermanentNodeVisible(
const BookmarkPermanentNode* node) {
DCHECK(node->type() == BookmarkNode::BOOKMARK_BAR ||
node->type() == BookmarkNode::OTHER_NODE ||
node->type() == BookmarkNode::MOBILE ||
IsExtraNodeRoot(node));
return node->type() != BookmarkNode::MOBILE && !IsExtraNodeRoot(node);
}
void TestBookmarkClient::RecordAction(const base::UserMetricsAction& action) {
}
bookmarks::LoadExtraCallback TestBookmarkClient::GetLoadExtraNodesCallback() {
return base::Bind(&TestBookmarkClient::LoadExtraNodes,
base::Passed(&extra_nodes_to_load_));
}
bool TestBookmarkClient::CanSetPermanentNodeTitle(
const BookmarkNode* permanent_node) {
return IsExtraNodeRoot(permanent_node);
}
bool TestBookmarkClient::CanSyncNode(const BookmarkNode* node) {
return !IsAnExtraNode(node);
}
bool TestBookmarkClient::CanBeEditedByUser(const BookmarkNode* node) {
return !IsAnExtraNode(node);
}
// static
bookmarks::BookmarkPermanentNodeList TestBookmarkClient::LoadExtraNodes(
bookmarks::BookmarkPermanentNodeList extra_nodes,
int64* next_id) {
return extra_nodes.Pass();
}
} // namespace test