| Index: chrome/browser/bookmarks/bookmark_utils_unittest.cc
|
| diff --git a/chrome/browser/bookmarks/bookmark_utils_unittest.cc b/chrome/browser/bookmarks/bookmark_utils_unittest.cc
|
| index 428fa1b0168a86226773b4b818167e7a4ac170a2..d5702275780c9580f740d584ed68533de3e1b279 100644
|
| --- a/chrome/browser/bookmarks/bookmark_utils_unittest.cc
|
| +++ b/chrome/browser/bookmarks/bookmark_utils_unittest.cc
|
| @@ -11,6 +11,7 @@
|
| #include "chrome/browser/bookmarks/base_bookmark_model_observer.h"
|
| #include "chrome/browser/bookmarks/bookmark_model.h"
|
| #include "chrome/browser/bookmarks/bookmark_node_data.h"
|
| +#include "chrome/browser/bookmarks/test_bookmark_client.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
| #include "ui/base/clipboard/clipboard.h"
|
| #include "ui/base/clipboard/scoped_clipboard_writer.h"
|
| @@ -70,36 +71,36 @@ class BookmarkUtilsTest : public testing::Test,
|
| };
|
|
|
| TEST_F(BookmarkUtilsTest, GetBookmarksMatchingPropertiesWordPhraseQuery) {
|
| - BookmarkModel model(NULL, false);
|
| - const BookmarkNode* node1 = model.AddURL(model.other_node(),
|
| - 0,
|
| - ASCIIToUTF16("foo bar"),
|
| - GURL("http://www.google.com"));
|
| - const BookmarkNode* node2 = model.AddURL(model.other_node(),
|
| - 0,
|
| - ASCIIToUTF16("baz buz"),
|
| - GURL("http://www.cnn.com"));
|
| - const BookmarkNode* folder1 = model.AddFolder(model.other_node(),
|
| - 0,
|
| - ASCIIToUTF16("foo"));
|
| + test::TestBookmarkClient client;
|
| + scoped_ptr<BookmarkModel> model(client.CreateModel(false));
|
| + const BookmarkNode* node1 = model->AddURL(model->other_node(),
|
| + 0,
|
| + ASCIIToUTF16("foo bar"),
|
| + GURL("http://www.google.com"));
|
| + const BookmarkNode* node2 = model->AddURL(model->other_node(),
|
| + 0,
|
| + ASCIIToUTF16("baz buz"),
|
| + GURL("http://www.cnn.com"));
|
| + const BookmarkNode* folder1 =
|
| + model->AddFolder(model->other_node(), 0, ASCIIToUTF16("foo"));
|
| std::vector<const BookmarkNode*> nodes;
|
| QueryFields query;
|
| query.word_phrase_query.reset(new base::string16);
|
| // No nodes are returned for empty string.
|
| *query.word_phrase_query = ASCIIToUTF16("");
|
| - GetBookmarksMatchingProperties(&model, query, 100, string(), &nodes);
|
| + GetBookmarksMatchingProperties(model.get(), query, 100, string(), &nodes);
|
| EXPECT_TRUE(nodes.empty());
|
| nodes.clear();
|
|
|
| // No nodes are returned for space-only string.
|
| *query.word_phrase_query = ASCIIToUTF16(" ");
|
| - GetBookmarksMatchingProperties(&model, query, 100, string(), &nodes);
|
| + GetBookmarksMatchingProperties(model.get(), query, 100, string(), &nodes);
|
| EXPECT_TRUE(nodes.empty());
|
| nodes.clear();
|
|
|
| // Node "foo bar" and folder "foo" are returned in search results.
|
| *query.word_phrase_query = ASCIIToUTF16("foo");
|
| - GetBookmarksMatchingProperties(&model, query, 100, string(), &nodes);
|
| + GetBookmarksMatchingProperties(model.get(), query, 100, string(), &nodes);
|
| ASSERT_EQ(2U, nodes.size());
|
| EXPECT_TRUE(nodes[0] == folder1);
|
| EXPECT_TRUE(nodes[1] == node1);
|
| @@ -107,92 +108,94 @@ TEST_F(BookmarkUtilsTest, GetBookmarksMatchingPropertiesWordPhraseQuery) {
|
|
|
| // Ensure url matches return in search results.
|
| *query.word_phrase_query = ASCIIToUTF16("cnn");
|
| - GetBookmarksMatchingProperties(&model, query, 100, string(), &nodes);
|
| + GetBookmarksMatchingProperties(model.get(), query, 100, string(), &nodes);
|
| ASSERT_EQ(1U, nodes.size());
|
| EXPECT_TRUE(nodes[0] == node2);
|
| nodes.clear();
|
|
|
| // Ensure folder "foo" is not returned in more specific search.
|
| *query.word_phrase_query = ASCIIToUTF16("foo bar");
|
| - GetBookmarksMatchingProperties(&model, query, 100, string(), &nodes);
|
| + GetBookmarksMatchingProperties(model.get(), query, 100, string(), &nodes);
|
| ASSERT_EQ(1U, nodes.size());
|
| EXPECT_TRUE(nodes[0] == node1);
|
| nodes.clear();
|
|
|
| // Bookmark Bar and Other Bookmarks are not returned in search results.
|
| *query.word_phrase_query = ASCIIToUTF16("Bookmark");
|
| - GetBookmarksMatchingProperties(&model, query, 100, string(), &nodes);
|
| + GetBookmarksMatchingProperties(model.get(), query, 100, string(), &nodes);
|
| ASSERT_EQ(0U, nodes.size());
|
| nodes.clear();
|
| }
|
|
|
| // Check exact matching against a URL query.
|
| TEST_F(BookmarkUtilsTest, GetBookmarksMatchingPropertiesUrl) {
|
| - BookmarkModel model(NULL, false);
|
| - const BookmarkNode* node1 = model.AddURL(model.other_node(),
|
| - 0,
|
| - ASCIIToUTF16("Google"),
|
| - GURL("https://www.google.com/"));
|
| - model.AddURL(model.other_node(),
|
| - 0,
|
| - ASCIIToUTF16("Google Calendar"),
|
| - GURL("https://www.google.com/calendar"));
|
| -
|
| - model.AddFolder(model.other_node(), 0, ASCIIToUTF16("Folder"));
|
| + test::TestBookmarkClient client;
|
| + scoped_ptr<BookmarkModel> model(client.CreateModel(false));
|
| + const BookmarkNode* node1 = model->AddURL(model->other_node(),
|
| + 0,
|
| + ASCIIToUTF16("Google"),
|
| + GURL("https://www.google.com/"));
|
| + model->AddURL(model->other_node(),
|
| + 0,
|
| + ASCIIToUTF16("Google Calendar"),
|
| + GURL("https://www.google.com/calendar"));
|
| +
|
| + model->AddFolder(model->other_node(), 0, ASCIIToUTF16("Folder"));
|
|
|
| std::vector<const BookmarkNode*> nodes;
|
| QueryFields query;
|
| query.url.reset(new base::string16);
|
| *query.url = ASCIIToUTF16("https://www.google.com/");
|
| - GetBookmarksMatchingProperties(&model, query, 100, string(), &nodes);
|
| + GetBookmarksMatchingProperties(model.get(), query, 100, string(), &nodes);
|
| ASSERT_EQ(1U, nodes.size());
|
| EXPECT_TRUE(nodes[0] == node1);
|
| nodes.clear();
|
|
|
| *query.url = ASCIIToUTF16("calendar");
|
| - GetBookmarksMatchingProperties(&model, query, 100, string(), &nodes);
|
| + GetBookmarksMatchingProperties(model.get(), query, 100, string(), &nodes);
|
| ASSERT_EQ(0U, nodes.size());
|
| nodes.clear();
|
|
|
| // Empty URL should not match folders.
|
| *query.url = ASCIIToUTF16("");
|
| - GetBookmarksMatchingProperties(&model, query, 100, string(), &nodes);
|
| + GetBookmarksMatchingProperties(model.get(), query, 100, string(), &nodes);
|
| ASSERT_EQ(0U, nodes.size());
|
| nodes.clear();
|
| }
|
|
|
| // Check exact matching against a title query.
|
| TEST_F(BookmarkUtilsTest, GetBookmarksMatchingPropertiesTitle) {
|
| - BookmarkModel model(NULL, false);
|
| - const BookmarkNode* node1 = model.AddURL(model.other_node(),
|
| - 0,
|
| - ASCIIToUTF16("Google"),
|
| - GURL("https://www.google.com/"));
|
| - model.AddURL(model.other_node(),
|
| - 0,
|
| - ASCIIToUTF16("Google Calendar"),
|
| - GURL("https://www.google.com/calendar"));
|
| + test::TestBookmarkClient client;
|
| + scoped_ptr<BookmarkModel> model(client.CreateModel(false));
|
| + const BookmarkNode* node1 = model->AddURL(model->other_node(),
|
| + 0,
|
| + ASCIIToUTF16("Google"),
|
| + GURL("https://www.google.com/"));
|
| + model->AddURL(model->other_node(),
|
| + 0,
|
| + ASCIIToUTF16("Google Calendar"),
|
| + GURL("https://www.google.com/calendar"));
|
|
|
| const BookmarkNode* folder1 =
|
| - model.AddFolder(model.other_node(), 0, ASCIIToUTF16("Folder"));
|
| + model->AddFolder(model->other_node(), 0, ASCIIToUTF16("Folder"));
|
|
|
| std::vector<const BookmarkNode*> nodes;
|
| QueryFields query;
|
| query.title.reset(new base::string16);
|
| *query.title = ASCIIToUTF16("Google");
|
| - GetBookmarksMatchingProperties(&model, query, 100, string(), &nodes);
|
| + GetBookmarksMatchingProperties(model.get(), query, 100, string(), &nodes);
|
| ASSERT_EQ(1U, nodes.size());
|
| EXPECT_TRUE(nodes[0] == node1);
|
| nodes.clear();
|
|
|
| *query.title = ASCIIToUTF16("Calendar");
|
| - GetBookmarksMatchingProperties(&model, query, 100, string(), &nodes);
|
| + GetBookmarksMatchingProperties(model.get(), query, 100, string(), &nodes);
|
| ASSERT_EQ(0U, nodes.size());
|
| nodes.clear();
|
|
|
| // Title should match folders.
|
| *query.title = ASCIIToUTF16("Folder");
|
| - GetBookmarksMatchingProperties(&model, query, 100, string(), &nodes);
|
| + GetBookmarksMatchingProperties(model.get(), query, 100, string(), &nodes);
|
| ASSERT_EQ(1U, nodes.size());
|
| EXPECT_TRUE(nodes[0] == folder1);
|
| nodes.clear();
|
| @@ -200,17 +203,18 @@ TEST_F(BookmarkUtilsTest, GetBookmarksMatchingPropertiesTitle) {
|
|
|
| // Check matching against a query with multiple predicates.
|
| TEST_F(BookmarkUtilsTest, GetBookmarksMatchingPropertiesConjunction) {
|
| - BookmarkModel model(NULL, false);
|
| - const BookmarkNode* node1 = model.AddURL(model.other_node(),
|
| - 0,
|
| - ASCIIToUTF16("Google"),
|
| - GURL("https://www.google.com/"));
|
| - model.AddURL(model.other_node(),
|
| - 0,
|
| - ASCIIToUTF16("Google Calendar"),
|
| - GURL("https://www.google.com/calendar"));
|
| -
|
| - model.AddFolder(model.other_node(), 0, ASCIIToUTF16("Folder"));
|
| + test::TestBookmarkClient client;
|
| + scoped_ptr<BookmarkModel> model(client.CreateModel(false));
|
| + const BookmarkNode* node1 = model->AddURL(model->other_node(),
|
| + 0,
|
| + ASCIIToUTF16("Google"),
|
| + GURL("https://www.google.com/"));
|
| + model->AddURL(model->other_node(),
|
| + 0,
|
| + ASCIIToUTF16("Google Calendar"),
|
| + GURL("https://www.google.com/calendar"));
|
| +
|
| + model->AddFolder(model->other_node(), 0, ASCIIToUTF16("Folder"));
|
|
|
| std::vector<const BookmarkNode*> nodes;
|
| QueryFields query;
|
| @@ -219,7 +223,7 @@ TEST_F(BookmarkUtilsTest, GetBookmarksMatchingPropertiesConjunction) {
|
| query.word_phrase_query.reset(new base::string16(ASCIIToUTF16("www")));
|
| query.url.reset(new base::string16(ASCIIToUTF16("https://www.google.com/")));
|
| query.title.reset(new base::string16(ASCIIToUTF16("Google")));
|
| - GetBookmarksMatchingProperties(&model, query, 100, string(), &nodes);
|
| + GetBookmarksMatchingProperties(model.get(), query, 100, string(), &nodes);
|
| ASSERT_EQ(1U, nodes.size());
|
| EXPECT_TRUE(nodes[0] == node1);
|
| nodes.clear();
|
| @@ -230,7 +234,7 @@ TEST_F(BookmarkUtilsTest, GetBookmarksMatchingPropertiesConjunction) {
|
| // Test two fields matching.
|
| for (size_t i = 0; i < arraysize(fields); i++) {
|
| scoped_ptr<base::string16> original_value(fields[i]->release());
|
| - GetBookmarksMatchingProperties(&model, query, 100, string(), &nodes);
|
| + GetBookmarksMatchingProperties(model.get(), query, 100, string(), &nodes);
|
| ASSERT_EQ(1U, nodes.size());
|
| EXPECT_TRUE(nodes[0] == node1);
|
| nodes.clear();
|
| @@ -241,7 +245,7 @@ TEST_F(BookmarkUtilsTest, GetBookmarksMatchingPropertiesConjunction) {
|
| for (size_t i = 0; i < arraysize(fields); i++) {
|
| scoped_ptr<base::string16> original_value(fields[i]->release());
|
| fields[i]->reset(new base::string16(ASCIIToUTF16("fjdkslafjkldsa")));
|
| - GetBookmarksMatchingProperties(&model, query, 100, string(), &nodes);
|
| + GetBookmarksMatchingProperties(model.get(), query, 100, string(), &nodes);
|
| ASSERT_EQ(0U, nodes.size());
|
| nodes.clear();
|
| fields[i]->reset(original_value.release());
|
| @@ -249,19 +253,20 @@ TEST_F(BookmarkUtilsTest, GetBookmarksMatchingPropertiesConjunction) {
|
| }
|
|
|
| TEST_F(BookmarkUtilsTest, CopyPaste) {
|
| - BookmarkModel model(NULL, false);
|
| - const BookmarkNode* node = model.AddURL(model.other_node(),
|
| - 0,
|
| - ASCIIToUTF16("foo bar"),
|
| - GURL("http://www.google.com"));
|
| + test::TestBookmarkClient client;
|
| + scoped_ptr<BookmarkModel> model(client.CreateModel(false));
|
| + const BookmarkNode* node = model->AddURL(model->other_node(),
|
| + 0,
|
| + ASCIIToUTF16("foo bar"),
|
| + GURL("http://www.google.com"));
|
|
|
| // Copy a node to the clipboard.
|
| std::vector<const BookmarkNode*> nodes;
|
| nodes.push_back(node);
|
| - CopyToClipboard(&model, nodes, false);
|
| + CopyToClipboard(model.get(), nodes, false);
|
|
|
| // And make sure we can paste a bookmark from the clipboard.
|
| - EXPECT_TRUE(CanPasteFromClipboard(model.bookmark_bar_node()));
|
| + EXPECT_TRUE(CanPasteFromClipboard(model->bookmark_bar_node()));
|
|
|
| // Write some text to the clipboard.
|
| {
|
| @@ -272,93 +277,96 @@ TEST_F(BookmarkUtilsTest, CopyPaste) {
|
| }
|
|
|
| // Now we shouldn't be able to paste from the clipboard.
|
| - EXPECT_FALSE(CanPasteFromClipboard(model.bookmark_bar_node()));
|
| + EXPECT_FALSE(CanPasteFromClipboard(model->bookmark_bar_node()));
|
| }
|
|
|
| TEST_F(BookmarkUtilsTest, CutToClipboard) {
|
| - BookmarkModel model(NULL, false);
|
| - model.AddObserver(this);
|
| + test::TestBookmarkClient client;
|
| + scoped_ptr<BookmarkModel> model(client.CreateModel(false));
|
| + model->AddObserver(this);
|
|
|
| base::string16 title(ASCIIToUTF16("foo"));
|
| GURL url("http://foo.com");
|
| - const BookmarkNode* n1 = model.AddURL(model.other_node(), 0, title, url);
|
| - const BookmarkNode* n2 = model.AddURL(model.other_node(), 1, title, url);
|
| + const BookmarkNode* n1 = model->AddURL(model->other_node(), 0, title, url);
|
| + const BookmarkNode* n2 = model->AddURL(model->other_node(), 1, title, url);
|
|
|
| // Cut the nodes to the clipboard.
|
| std::vector<const BookmarkNode*> nodes;
|
| nodes.push_back(n1);
|
| nodes.push_back(n2);
|
| - CopyToClipboard(&model, nodes, true);
|
| + CopyToClipboard(model.get(), nodes, true);
|
|
|
| // Make sure the nodes were removed.
|
| - EXPECT_EQ(0, model.other_node()->child_count());
|
| + EXPECT_EQ(0, model->other_node()->child_count());
|
|
|
| // Make sure observers were notified the set of changes should be grouped.
|
| ExpectGroupedChangeCount(1, 1);
|
|
|
| // And make sure we can paste from the clipboard.
|
| - EXPECT_TRUE(CanPasteFromClipboard(model.other_node()));
|
| + EXPECT_TRUE(CanPasteFromClipboard(model->other_node()));
|
| }
|
|
|
| TEST_F(BookmarkUtilsTest, GetParentForNewNodes) {
|
| - BookmarkModel model(NULL, false);
|
| + test::TestBookmarkClient client;
|
| + scoped_ptr<BookmarkModel> model(client.CreateModel(false));
|
| // This tests the case where selection contains one item and that item is a
|
| // folder.
|
| std::vector<const BookmarkNode*> nodes;
|
| - nodes.push_back(model.bookmark_bar_node());
|
| + nodes.push_back(model->bookmark_bar_node());
|
| int index = -1;
|
| - const BookmarkNode* real_parent = GetParentForNewNodes(
|
| - model.bookmark_bar_node(), nodes, &index);
|
| - EXPECT_EQ(real_parent, model.bookmark_bar_node());
|
| + const BookmarkNode* real_parent =
|
| + GetParentForNewNodes(model->bookmark_bar_node(), nodes, &index);
|
| + EXPECT_EQ(real_parent, model->bookmark_bar_node());
|
| EXPECT_EQ(0, index);
|
|
|
| nodes.clear();
|
|
|
| // This tests the case where selection contains one item and that item is an
|
| // url.
|
| - const BookmarkNode* page1 = model.AddURL(model.bookmark_bar_node(),
|
| - 0,
|
| - ASCIIToUTF16("Google"),
|
| - GURL("http://google.com"));
|
| + const BookmarkNode* page1 = model->AddURL(model->bookmark_bar_node(),
|
| + 0,
|
| + ASCIIToUTF16("Google"),
|
| + GURL("http://google.com"));
|
| nodes.push_back(page1);
|
| - real_parent = GetParentForNewNodes(model.bookmark_bar_node(), nodes, &index);
|
| - EXPECT_EQ(real_parent, model.bookmark_bar_node());
|
| + real_parent = GetParentForNewNodes(model->bookmark_bar_node(), nodes, &index);
|
| + EXPECT_EQ(real_parent, model->bookmark_bar_node());
|
| EXPECT_EQ(1, index);
|
|
|
| // This tests the case where selection has more than one item.
|
| - const BookmarkNode* folder1 = model.AddFolder(model.bookmark_bar_node(), 1,
|
| - ASCIIToUTF16("Folder 1"));
|
| + const BookmarkNode* folder1 =
|
| + model->AddFolder(model->bookmark_bar_node(), 1, ASCIIToUTF16("Folder 1"));
|
| nodes.push_back(folder1);
|
| - real_parent = GetParentForNewNodes(model.bookmark_bar_node(), nodes, &index);
|
| - EXPECT_EQ(real_parent, model.bookmark_bar_node());
|
| + real_parent = GetParentForNewNodes(model->bookmark_bar_node(), nodes, &index);
|
| + EXPECT_EQ(real_parent, model->bookmark_bar_node());
|
| EXPECT_EQ(2, index);
|
|
|
| // This tests the case where selection doesn't contain any items.
|
| nodes.clear();
|
| - real_parent = GetParentForNewNodes(model.bookmark_bar_node(), nodes, &index);
|
| - EXPECT_EQ(real_parent, model.bookmark_bar_node());
|
| + real_parent = GetParentForNewNodes(model->bookmark_bar_node(), nodes, &index);
|
| + EXPECT_EQ(real_parent, model->bookmark_bar_node());
|
| EXPECT_EQ(2, index);
|
| }
|
|
|
| // Verifies that meta info is copied when nodes are cloned.
|
| TEST_F(BookmarkUtilsTest, CloneMetaInfo) {
|
| - BookmarkModel model(NULL, false);
|
| + test::TestBookmarkClient client;
|
| + scoped_ptr<BookmarkModel> model(client.CreateModel(false));
|
| // Add a node containing meta info.
|
| - const BookmarkNode* node = model.AddURL(model.other_node(),
|
| - 0,
|
| - ASCIIToUTF16("foo bar"),
|
| - GURL("http://www.google.com"));
|
| - model.SetNodeMetaInfo(node, "somekey", "somevalue");
|
| - model.SetNodeMetaInfo(node, "someotherkey", "someothervalue");
|
| + const BookmarkNode* node = model->AddURL(model->other_node(),
|
| + 0,
|
| + ASCIIToUTF16("foo bar"),
|
| + GURL("http://www.google.com"));
|
| + model->SetNodeMetaInfo(node, "somekey", "somevalue");
|
| + model->SetNodeMetaInfo(node, "someotherkey", "someothervalue");
|
|
|
| // Clone node to a different folder.
|
| - const BookmarkNode* folder = model.AddFolder(model.bookmark_bar_node(), 0,
|
| - ASCIIToUTF16("Folder"));
|
| + const BookmarkNode* folder =
|
| + model->AddFolder(model->bookmark_bar_node(), 0, ASCIIToUTF16("Folder"));
|
| std::vector<BookmarkNodeData::Element> elements;
|
| BookmarkNodeData::Element node_data(node);
|
| elements.push_back(node_data);
|
| EXPECT_EQ(0, folder->child_count());
|
| - CloneBookmarkNode(&model, elements, folder, 0, false);
|
| + CloneBookmarkNode(model.get(), elements, folder, 0, false);
|
| ASSERT_EQ(1, folder->child_count());
|
|
|
| // Verify that the cloned node contains the same meta info.
|
|
|