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