1010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
2010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// found in the LICENSE file.
4010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
5cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "components/bookmarks/test/test_bookmark_client.h"
6010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "base/bind.h"
846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "base/bind_helpers.h"
9cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "base/logging.h"
10cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "components/bookmarks/browser/bookmark_model.h"
11cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "components/bookmarks/browser/bookmark_node.h"
12cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "components/bookmarks/browser/bookmark_storage.h"
13010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccinamespace bookmarks {
15010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
1646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)TestBookmarkClient::TestBookmarkClient() {}
1746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
1846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)TestBookmarkClient::~TestBookmarkClient() {}
1946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciscoped_ptr<BookmarkModel> TestBookmarkClient::CreateModel() {
211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  scoped_ptr<BookmarkModel> bookmark_model(new BookmarkModel(this));
2246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  scoped_ptr<bookmarks::BookmarkLoadDetails> details =
2346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      bookmark_model->CreateLoadDetails(std::string());
2446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  details->LoadExtraNodes();
2546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  bookmark_model->DoneLoading(details.Pass());
26010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  return bookmark_model.Pass();
27010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)}
28010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
2946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)void TestBookmarkClient::SetExtraNodesToLoad(
3046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    bookmarks::BookmarkPermanentNodeList extra_nodes) {
3146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  extra_nodes_to_load_ = extra_nodes.Pass();
3246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  // Keep a copy in |extra_nodes_| for the acessor.
3346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  extra_nodes_ = extra_nodes_to_load_.get();
3446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)}
3546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
3646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)bool TestBookmarkClient::IsExtraNodeRoot(const BookmarkNode* node) {
3746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  for (size_t i = 0; i < extra_nodes_.size(); ++i) {
3846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    if (node == extra_nodes_[i])
3946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      return true;
4046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  }
4146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  return false;
4246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)}
4346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
4446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)bool TestBookmarkClient::IsAnExtraNode(const BookmarkNode* node) {
4546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  if (!node)
4646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    return false;
4746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  for (size_t i = 0; i < extra_nodes_.size(); ++i) {
4846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    if (node->HasAncestor(extra_nodes_[i]))
4946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      return true;
5046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  }
5146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  return false;
5246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)}
5346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
5446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)bool TestBookmarkClient::IsPermanentNodeVisible(
5546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    const BookmarkPermanentNode* node) {
5646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  DCHECK(node->type() == BookmarkNode::BOOKMARK_BAR ||
5746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)         node->type() == BookmarkNode::OTHER_NODE ||
5846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)         node->type() == BookmarkNode::MOBILE ||
5946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)         IsExtraNodeRoot(node));
6046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  return node->type() != BookmarkNode::MOBILE && !IsExtraNodeRoot(node);
61010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)}
62010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
63010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)void TestBookmarkClient::RecordAction(const base::UserMetricsAction& action) {
64010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)}
65010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
6646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)bookmarks::LoadExtraCallback TestBookmarkClient::GetLoadExtraNodesCallback() {
6746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  return base::Bind(&TestBookmarkClient::LoadExtraNodes,
6846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                    base::Passed(&extra_nodes_to_load_));
6946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)}
7046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
7146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)bool TestBookmarkClient::CanSetPermanentNodeTitle(
7246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    const BookmarkNode* permanent_node) {
7346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  return IsExtraNodeRoot(permanent_node);
7446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)}
7546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
7646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)bool TestBookmarkClient::CanSyncNode(const BookmarkNode* node) {
7746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  return !IsAnExtraNode(node);
7846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)}
7946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
8046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)bool TestBookmarkClient::CanBeEditedByUser(const BookmarkNode* node) {
8146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  return !IsAnExtraNode(node);
8246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)}
8346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
8446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// static
8546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)bookmarks::BookmarkPermanentNodeList TestBookmarkClient::LoadExtraNodes(
8646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    bookmarks::BookmarkPermanentNodeList extra_nodes,
8746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    int64* next_id) {
8846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  return extra_nodes.Pass();
8946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)}
9046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}  // namespace bookmarks
92