1 // Copyright (c) 2012 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.
5 #include "chrome/browser/bookmarks/bookmark_utils.h"
7 #include "base/message_loop/message_loop.h"
8 #include "base/strings/utf_string_conversions.h"
9 #include "chrome/browser/bookmarks/bookmark_model.h"
10 #include "testing/gtest/include/gtest/gtest.h"
11 #include "ui/base/clipboard/clipboard.h"
12 #include "ui/base/clipboard/scoped_clipboard_writer.h"
16 namespace bookmark_utils {
19 class BookmarkUtilsTest : public ::testing::Test {
21 virtual void TearDown() OVERRIDE {
22 ui::Clipboard::DestroyClipboardForCurrentThread();
26 // Clipboard requires a message loop.
27 base::MessageLoopForUI loop;
30 TEST_F(BookmarkUtilsTest, GetBookmarksContainingText) {
31 BookmarkModel model(NULL);
32 const BookmarkNode* n1 = model.AddURL(model.other_node(),
34 ASCIIToUTF16("foo bar"),
35 GURL("http://www.google.com"));
36 const BookmarkNode* n2 = model.AddURL(model.other_node(),
38 ASCIIToUTF16("baz buz"),
39 GURL("http://www.cnn.com"));
41 model.AddFolder(model.other_node(), 0, ASCIIToUTF16("foo"));
43 std::vector<const BookmarkNode*> nodes;
44 GetBookmarksContainingText(
45 &model, ASCIIToUTF16("foo"), 100, string(), &nodes);
46 ASSERT_EQ(1U, nodes.size());
47 EXPECT_TRUE(nodes[0] == n1);
50 GetBookmarksContainingText(
51 &model, ASCIIToUTF16("cnn"), 100, string(), &nodes);
52 ASSERT_EQ(1U, nodes.size());
53 EXPECT_TRUE(nodes[0] == n2);
56 GetBookmarksContainingText(
57 &model, ASCIIToUTF16("foo bar"), 100, string(), &nodes);
58 ASSERT_EQ(1U, nodes.size());
59 EXPECT_TRUE(nodes[0] == n1);
63 TEST_F(BookmarkUtilsTest, CopyPaste) {
64 BookmarkModel model(NULL);
65 const BookmarkNode* node = model.AddURL(model.other_node(),
67 ASCIIToUTF16("foo bar"),
68 GURL("http://www.google.com"));
70 // Copy a node to the clipboard.
71 std::vector<const BookmarkNode*> nodes;
72 nodes.push_back(node);
73 CopyToClipboard(&model, nodes, false);
75 // And make sure we can paste a bookmark from the clipboard.
76 EXPECT_TRUE(CanPasteFromClipboard(model.bookmark_bar_node()));
78 // Write some text to the clipboard.
80 ui::ScopedClipboardWriter clipboard_writer(
81 ui::Clipboard::GetForCurrentThread(),
82 ui::CLIPBOARD_TYPE_COPY_PASTE);
83 clipboard_writer.WriteText(ASCIIToUTF16("foo"));
86 // Now we shouldn't be able to paste from the clipboard.
87 EXPECT_FALSE(CanPasteFromClipboard(model.bookmark_bar_node()));
90 TEST_F(BookmarkUtilsTest, GetParentForNewNodes) {
91 BookmarkModel model(NULL);
92 // This tests the case where selection contains one item and that item is a
94 std::vector<const BookmarkNode*> nodes;
95 nodes.push_back(model.bookmark_bar_node());
97 const BookmarkNode* real_parent = GetParentForNewNodes(
98 model.bookmark_bar_node(), nodes, &index);
99 EXPECT_EQ(real_parent, model.bookmark_bar_node());
104 // This tests the case where selection contains one item and that item is an
106 const BookmarkNode* page1 = model.AddURL(model.bookmark_bar_node(), 0,
107 ASCIIToUTF16("Google"),
108 GURL("http://google.com"));
109 nodes.push_back(page1);
110 real_parent = GetParentForNewNodes(model.bookmark_bar_node(), nodes, &index);
111 EXPECT_EQ(real_parent, model.bookmark_bar_node());
114 // This tests the case where selection has more than one item.
115 const BookmarkNode* folder1 = model.AddFolder(model.bookmark_bar_node(), 1,
116 ASCIIToUTF16("Folder 1"));
117 nodes.push_back(folder1);
118 real_parent = GetParentForNewNodes(model.bookmark_bar_node(), nodes, &index);
119 EXPECT_EQ(real_parent, model.bookmark_bar_node());
122 // This tests the case where selection doesn't contain any items.
124 real_parent = GetParentForNewNodes(model.bookmark_bar_node(), nodes, &index);
125 EXPECT_EQ(real_parent, model.bookmark_bar_node());
130 } // namespace bookmark_utils