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 14 namespace test { 15 16 TestBookmarkClient::TestBookmarkClient() {} 17 18 TestBookmarkClient::~TestBookmarkClient() {} 19 20 scoped_ptr<BookmarkModel> TestBookmarkClient::CreateModel(bool index_urls) { 21 scoped_ptr<BookmarkModel> bookmark_model(new BookmarkModel(this, index_urls)); 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 29 void 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 36 bool 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 44 bool 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 54 bool 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 63 void TestBookmarkClient::RecordAction(const base::UserMetricsAction& action) { 64 } 65 66 bookmarks::LoadExtraCallback TestBookmarkClient::GetLoadExtraNodesCallback() { 67 return base::Bind(&TestBookmarkClient::LoadExtraNodes, 68 base::Passed(&extra_nodes_to_load_)); 69 } 70 71 bool TestBookmarkClient::CanSetPermanentNodeTitle( 72 const BookmarkNode* permanent_node) { 73 return IsExtraNodeRoot(permanent_node); 74 } 75 76 bool TestBookmarkClient::CanSyncNode(const BookmarkNode* node) { 77 return !IsAnExtraNode(node); 78 } 79 80 bool TestBookmarkClient::CanBeEditedByUser(const BookmarkNode* node) { 81 return !IsAnExtraNode(node); 82 } 83 84 // static 85 bookmarks::BookmarkPermanentNodeList TestBookmarkClient::LoadExtraNodes( 86 bookmarks::BookmarkPermanentNodeList extra_nodes, 87 int64* next_id) { 88 return extra_nodes.Pass(); 89 } 90 91 } // namespace test 92