1// Copyright 2014 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "components/bookmarks/test/test_bookmark_client.h" 6 7#include "base/bind.h" 8#include "base/bind_helpers.h" 9#include "base/logging.h" 10#include "components/bookmarks/browser/bookmark_model.h" 11#include "components/bookmarks/browser/bookmark_node.h" 12#include "components/bookmarks/browser/bookmark_storage.h" 13 14namespace bookmarks { 15 16TestBookmarkClient::TestBookmarkClient() {} 17 18TestBookmarkClient::~TestBookmarkClient() {} 19 20scoped_ptr<BookmarkModel> TestBookmarkClient::CreateModel() { 21 scoped_ptr<BookmarkModel> bookmark_model(new BookmarkModel(this)); 22 scoped_ptr<bookmarks::BookmarkLoadDetails> details = 23 bookmark_model->CreateLoadDetails(std::string()); 24 details->LoadExtraNodes(); 25 bookmark_model->DoneLoading(details.Pass()); 26 return bookmark_model.Pass(); 27} 28 29void TestBookmarkClient::SetExtraNodesToLoad( 30 bookmarks::BookmarkPermanentNodeList extra_nodes) { 31 extra_nodes_to_load_ = extra_nodes.Pass(); 32 // Keep a copy in |extra_nodes_| for the acessor. 33 extra_nodes_ = extra_nodes_to_load_.get(); 34} 35 36bool TestBookmarkClient::IsExtraNodeRoot(const BookmarkNode* node) { 37 for (size_t i = 0; i < extra_nodes_.size(); ++i) { 38 if (node == extra_nodes_[i]) 39 return true; 40 } 41 return false; 42} 43 44bool TestBookmarkClient::IsAnExtraNode(const BookmarkNode* node) { 45 if (!node) 46 return false; 47 for (size_t i = 0; i < extra_nodes_.size(); ++i) { 48 if (node->HasAncestor(extra_nodes_[i])) 49 return true; 50 } 51 return false; 52} 53 54bool TestBookmarkClient::IsPermanentNodeVisible( 55 const BookmarkPermanentNode* node) { 56 DCHECK(node->type() == BookmarkNode::BOOKMARK_BAR || 57 node->type() == BookmarkNode::OTHER_NODE || 58 node->type() == BookmarkNode::MOBILE || 59 IsExtraNodeRoot(node)); 60 return node->type() != BookmarkNode::MOBILE && !IsExtraNodeRoot(node); 61} 62 63void TestBookmarkClient::RecordAction(const base::UserMetricsAction& action) { 64} 65 66bookmarks::LoadExtraCallback TestBookmarkClient::GetLoadExtraNodesCallback() { 67 return base::Bind(&TestBookmarkClient::LoadExtraNodes, 68 base::Passed(&extra_nodes_to_load_)); 69} 70 71bool TestBookmarkClient::CanSetPermanentNodeTitle( 72 const BookmarkNode* permanent_node) { 73 return IsExtraNodeRoot(permanent_node); 74} 75 76bool TestBookmarkClient::CanSyncNode(const BookmarkNode* node) { 77 return !IsAnExtraNode(node); 78} 79 80bool TestBookmarkClient::CanBeEditedByUser(const BookmarkNode* node) { 81 return !IsAnExtraNode(node); 82} 83 84// static 85bookmarks::BookmarkPermanentNodeList TestBookmarkClient::LoadExtraNodes( 86 bookmarks::BookmarkPermanentNodeList extra_nodes, 87 int64* next_id) { 88 return extra_nodes.Pass(); 89} 90 91} // namespace bookmarks 92