Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(334)

Side by Side Diff: chrome/browser/bookmarks/bookmark_utils_unittest.cc

Issue 242693003: Introduce BookmarkClient interface to abstract embedder (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Work around STL android bug Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/bookmarks/bookmark_utils.h" 5 #include "chrome/browser/bookmarks/bookmark_utils.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/message_loop/message_loop.h" 9 #include "base/message_loop/message_loop.h"
10 #include "base/strings/utf_string_conversions.h" 10 #include "base/strings/utf_string_conversions.h"
11 #include "chrome/browser/bookmarks/base_bookmark_model_observer.h" 11 #include "chrome/browser/bookmarks/base_bookmark_model_observer.h"
12 #include "chrome/browser/bookmarks/bookmark_model.h" 12 #include "chrome/browser/bookmarks/bookmark_model.h"
13 #include "chrome/browser/bookmarks/bookmark_node_data.h" 13 #include "chrome/browser/bookmarks/bookmark_node_data.h"
14 #include "chrome/browser/bookmarks/test_bookmark_client.h"
14 #include "testing/gtest/include/gtest/gtest.h" 15 #include "testing/gtest/include/gtest/gtest.h"
15 #include "ui/base/clipboard/clipboard.h" 16 #include "ui/base/clipboard/clipboard.h"
16 #include "ui/base/clipboard/scoped_clipboard_writer.h" 17 #include "ui/base/clipboard/scoped_clipboard_writer.h"
17 18
18 using base::ASCIIToUTF16; 19 using base::ASCIIToUTF16;
19 using std::string; 20 using std::string;
20 21
21 namespace bookmark_utils { 22 namespace bookmark_utils {
22 namespace { 23 namespace {
23 24
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
63 int grouped_changes_beginning_count_; 64 int grouped_changes_beginning_count_;
64 int grouped_changes_ended_count_; 65 int grouped_changes_ended_count_;
65 66
66 // Clipboard requires a message loop. 67 // Clipboard requires a message loop.
67 base::MessageLoopForUI loop_; 68 base::MessageLoopForUI loop_;
68 69
69 DISALLOW_COPY_AND_ASSIGN(BookmarkUtilsTest); 70 DISALLOW_COPY_AND_ASSIGN(BookmarkUtilsTest);
70 }; 71 };
71 72
72 TEST_F(BookmarkUtilsTest, GetBookmarksMatchingPropertiesWordPhraseQuery) { 73 TEST_F(BookmarkUtilsTest, GetBookmarksMatchingPropertiesWordPhraseQuery) {
73 BookmarkModel model(NULL, false); 74 test::TestBookmarkClient client;
74 const BookmarkNode* node1 = model.AddURL(model.other_node(), 75 scoped_ptr<BookmarkModel> model(client.CreateModel(false));
75 0, 76 const BookmarkNode* node1 = model->AddURL(model->other_node(),
76 ASCIIToUTF16("foo bar"), 77 0,
77 GURL("http://www.google.com")); 78 ASCIIToUTF16("foo bar"),
78 const BookmarkNode* node2 = model.AddURL(model.other_node(), 79 GURL("http://www.google.com"));
79 0, 80 const BookmarkNode* node2 = model->AddURL(model->other_node(),
80 ASCIIToUTF16("baz buz"), 81 0,
81 GURL("http://www.cnn.com")); 82 ASCIIToUTF16("baz buz"),
82 const BookmarkNode* folder1 = model.AddFolder(model.other_node(), 83 GURL("http://www.cnn.com"));
83 0, 84 const BookmarkNode* folder1 =
84 ASCIIToUTF16("foo")); 85 model->AddFolder(model->other_node(), 0, ASCIIToUTF16("foo"));
85 std::vector<const BookmarkNode*> nodes; 86 std::vector<const BookmarkNode*> nodes;
86 QueryFields query; 87 QueryFields query;
87 query.word_phrase_query.reset(new base::string16); 88 query.word_phrase_query.reset(new base::string16);
88 // No nodes are returned for empty string. 89 // No nodes are returned for empty string.
89 *query.word_phrase_query = ASCIIToUTF16(""); 90 *query.word_phrase_query = ASCIIToUTF16("");
90 GetBookmarksMatchingProperties(&model, query, 100, string(), &nodes); 91 GetBookmarksMatchingProperties(model.get(), query, 100, string(), &nodes);
91 EXPECT_TRUE(nodes.empty()); 92 EXPECT_TRUE(nodes.empty());
92 nodes.clear(); 93 nodes.clear();
93 94
94 // No nodes are returned for space-only string. 95 // No nodes are returned for space-only string.
95 *query.word_phrase_query = ASCIIToUTF16(" "); 96 *query.word_phrase_query = ASCIIToUTF16(" ");
96 GetBookmarksMatchingProperties(&model, query, 100, string(), &nodes); 97 GetBookmarksMatchingProperties(model.get(), query, 100, string(), &nodes);
97 EXPECT_TRUE(nodes.empty()); 98 EXPECT_TRUE(nodes.empty());
98 nodes.clear(); 99 nodes.clear();
99 100
100 // Node "foo bar" and folder "foo" are returned in search results. 101 // Node "foo bar" and folder "foo" are returned in search results.
101 *query.word_phrase_query = ASCIIToUTF16("foo"); 102 *query.word_phrase_query = ASCIIToUTF16("foo");
102 GetBookmarksMatchingProperties(&model, query, 100, string(), &nodes); 103 GetBookmarksMatchingProperties(model.get(), query, 100, string(), &nodes);
103 ASSERT_EQ(2U, nodes.size()); 104 ASSERT_EQ(2U, nodes.size());
104 EXPECT_TRUE(nodes[0] == folder1); 105 EXPECT_TRUE(nodes[0] == folder1);
105 EXPECT_TRUE(nodes[1] == node1); 106 EXPECT_TRUE(nodes[1] == node1);
106 nodes.clear(); 107 nodes.clear();
107 108
108 // Ensure url matches return in search results. 109 // Ensure url matches return in search results.
109 *query.word_phrase_query = ASCIIToUTF16("cnn"); 110 *query.word_phrase_query = ASCIIToUTF16("cnn");
110 GetBookmarksMatchingProperties(&model, query, 100, string(), &nodes); 111 GetBookmarksMatchingProperties(model.get(), query, 100, string(), &nodes);
111 ASSERT_EQ(1U, nodes.size()); 112 ASSERT_EQ(1U, nodes.size());
112 EXPECT_TRUE(nodes[0] == node2); 113 EXPECT_TRUE(nodes[0] == node2);
113 nodes.clear(); 114 nodes.clear();
114 115
115 // Ensure folder "foo" is not returned in more specific search. 116 // Ensure folder "foo" is not returned in more specific search.
116 *query.word_phrase_query = ASCIIToUTF16("foo bar"); 117 *query.word_phrase_query = ASCIIToUTF16("foo bar");
117 GetBookmarksMatchingProperties(&model, query, 100, string(), &nodes); 118 GetBookmarksMatchingProperties(model.get(), query, 100, string(), &nodes);
118 ASSERT_EQ(1U, nodes.size()); 119 ASSERT_EQ(1U, nodes.size());
119 EXPECT_TRUE(nodes[0] == node1); 120 EXPECT_TRUE(nodes[0] == node1);
120 nodes.clear(); 121 nodes.clear();
121 122
122 // Bookmark Bar and Other Bookmarks are not returned in search results. 123 // Bookmark Bar and Other Bookmarks are not returned in search results.
123 *query.word_phrase_query = ASCIIToUTF16("Bookmark"); 124 *query.word_phrase_query = ASCIIToUTF16("Bookmark");
124 GetBookmarksMatchingProperties(&model, query, 100, string(), &nodes); 125 GetBookmarksMatchingProperties(model.get(), query, 100, string(), &nodes);
125 ASSERT_EQ(0U, nodes.size()); 126 ASSERT_EQ(0U, nodes.size());
126 nodes.clear(); 127 nodes.clear();
127 } 128 }
128 129
129 // Check exact matching against a URL query. 130 // Check exact matching against a URL query.
130 TEST_F(BookmarkUtilsTest, GetBookmarksMatchingPropertiesUrl) { 131 TEST_F(BookmarkUtilsTest, GetBookmarksMatchingPropertiesUrl) {
131 BookmarkModel model(NULL, false); 132 test::TestBookmarkClient client;
132 const BookmarkNode* node1 = model.AddURL(model.other_node(), 133 scoped_ptr<BookmarkModel> model(client.CreateModel(false));
133 0, 134 const BookmarkNode* node1 = model->AddURL(model->other_node(),
134 ASCIIToUTF16("Google"), 135 0,
135 GURL("https://www.google.com/")); 136 ASCIIToUTF16("Google"),
136 model.AddURL(model.other_node(), 137 GURL("https://www.google.com/"));
137 0, 138 model->AddURL(model->other_node(),
138 ASCIIToUTF16("Google Calendar"), 139 0,
139 GURL("https://www.google.com/calendar")); 140 ASCIIToUTF16("Google Calendar"),
141 GURL("https://www.google.com/calendar"));
140 142
141 model.AddFolder(model.other_node(), 0, ASCIIToUTF16("Folder")); 143 model->AddFolder(model->other_node(), 0, ASCIIToUTF16("Folder"));
142 144
143 std::vector<const BookmarkNode*> nodes; 145 std::vector<const BookmarkNode*> nodes;
144 QueryFields query; 146 QueryFields query;
145 query.url.reset(new base::string16); 147 query.url.reset(new base::string16);
146 *query.url = ASCIIToUTF16("https://www.google.com/"); 148 *query.url = ASCIIToUTF16("https://www.google.com/");
147 GetBookmarksMatchingProperties(&model, query, 100, string(), &nodes); 149 GetBookmarksMatchingProperties(model.get(), query, 100, string(), &nodes);
148 ASSERT_EQ(1U, nodes.size()); 150 ASSERT_EQ(1U, nodes.size());
149 EXPECT_TRUE(nodes[0] == node1); 151 EXPECT_TRUE(nodes[0] == node1);
150 nodes.clear(); 152 nodes.clear();
151 153
152 *query.url = ASCIIToUTF16("calendar"); 154 *query.url = ASCIIToUTF16("calendar");
153 GetBookmarksMatchingProperties(&model, query, 100, string(), &nodes); 155 GetBookmarksMatchingProperties(model.get(), query, 100, string(), &nodes);
154 ASSERT_EQ(0U, nodes.size()); 156 ASSERT_EQ(0U, nodes.size());
155 nodes.clear(); 157 nodes.clear();
156 158
157 // Empty URL should not match folders. 159 // Empty URL should not match folders.
158 *query.url = ASCIIToUTF16(""); 160 *query.url = ASCIIToUTF16("");
159 GetBookmarksMatchingProperties(&model, query, 100, string(), &nodes); 161 GetBookmarksMatchingProperties(model.get(), query, 100, string(), &nodes);
160 ASSERT_EQ(0U, nodes.size()); 162 ASSERT_EQ(0U, nodes.size());
161 nodes.clear(); 163 nodes.clear();
162 } 164 }
163 165
164 // Check exact matching against a title query. 166 // Check exact matching against a title query.
165 TEST_F(BookmarkUtilsTest, GetBookmarksMatchingPropertiesTitle) { 167 TEST_F(BookmarkUtilsTest, GetBookmarksMatchingPropertiesTitle) {
166 BookmarkModel model(NULL, false); 168 test::TestBookmarkClient client;
167 const BookmarkNode* node1 = model.AddURL(model.other_node(), 169 scoped_ptr<BookmarkModel> model(client.CreateModel(false));
168 0, 170 const BookmarkNode* node1 = model->AddURL(model->other_node(),
169 ASCIIToUTF16("Google"), 171 0,
170 GURL("https://www.google.com/")); 172 ASCIIToUTF16("Google"),
171 model.AddURL(model.other_node(), 173 GURL("https://www.google.com/"));
172 0, 174 model->AddURL(model->other_node(),
173 ASCIIToUTF16("Google Calendar"), 175 0,
174 GURL("https://www.google.com/calendar")); 176 ASCIIToUTF16("Google Calendar"),
177 GURL("https://www.google.com/calendar"));
175 178
176 const BookmarkNode* folder1 = 179 const BookmarkNode* folder1 =
177 model.AddFolder(model.other_node(), 0, ASCIIToUTF16("Folder")); 180 model->AddFolder(model->other_node(), 0, ASCIIToUTF16("Folder"));
178 181
179 std::vector<const BookmarkNode*> nodes; 182 std::vector<const BookmarkNode*> nodes;
180 QueryFields query; 183 QueryFields query;
181 query.title.reset(new base::string16); 184 query.title.reset(new base::string16);
182 *query.title = ASCIIToUTF16("Google"); 185 *query.title = ASCIIToUTF16("Google");
183 GetBookmarksMatchingProperties(&model, query, 100, string(), &nodes); 186 GetBookmarksMatchingProperties(model.get(), query, 100, string(), &nodes);
184 ASSERT_EQ(1U, nodes.size()); 187 ASSERT_EQ(1U, nodes.size());
185 EXPECT_TRUE(nodes[0] == node1); 188 EXPECT_TRUE(nodes[0] == node1);
186 nodes.clear(); 189 nodes.clear();
187 190
188 *query.title = ASCIIToUTF16("Calendar"); 191 *query.title = ASCIIToUTF16("Calendar");
189 GetBookmarksMatchingProperties(&model, query, 100, string(), &nodes); 192 GetBookmarksMatchingProperties(model.get(), query, 100, string(), &nodes);
190 ASSERT_EQ(0U, nodes.size()); 193 ASSERT_EQ(0U, nodes.size());
191 nodes.clear(); 194 nodes.clear();
192 195
193 // Title should match folders. 196 // Title should match folders.
194 *query.title = ASCIIToUTF16("Folder"); 197 *query.title = ASCIIToUTF16("Folder");
195 GetBookmarksMatchingProperties(&model, query, 100, string(), &nodes); 198 GetBookmarksMatchingProperties(model.get(), query, 100, string(), &nodes);
196 ASSERT_EQ(1U, nodes.size()); 199 ASSERT_EQ(1U, nodes.size());
197 EXPECT_TRUE(nodes[0] == folder1); 200 EXPECT_TRUE(nodes[0] == folder1);
198 nodes.clear(); 201 nodes.clear();
199 } 202 }
200 203
201 // Check matching against a query with multiple predicates. 204 // Check matching against a query with multiple predicates.
202 TEST_F(BookmarkUtilsTest, GetBookmarksMatchingPropertiesConjunction) { 205 TEST_F(BookmarkUtilsTest, GetBookmarksMatchingPropertiesConjunction) {
203 BookmarkModel model(NULL, false); 206 test::TestBookmarkClient client;
204 const BookmarkNode* node1 = model.AddURL(model.other_node(), 207 scoped_ptr<BookmarkModel> model(client.CreateModel(false));
205 0, 208 const BookmarkNode* node1 = model->AddURL(model->other_node(),
206 ASCIIToUTF16("Google"), 209 0,
207 GURL("https://www.google.com/")); 210 ASCIIToUTF16("Google"),
208 model.AddURL(model.other_node(), 211 GURL("https://www.google.com/"));
209 0, 212 model->AddURL(model->other_node(),
210 ASCIIToUTF16("Google Calendar"), 213 0,
211 GURL("https://www.google.com/calendar")); 214 ASCIIToUTF16("Google Calendar"),
215 GURL("https://www.google.com/calendar"));
212 216
213 model.AddFolder(model.other_node(), 0, ASCIIToUTF16("Folder")); 217 model->AddFolder(model->other_node(), 0, ASCIIToUTF16("Folder"));
214 218
215 std::vector<const BookmarkNode*> nodes; 219 std::vector<const BookmarkNode*> nodes;
216 QueryFields query; 220 QueryFields query;
217 221
218 // Test all fields matching. 222 // Test all fields matching.
219 query.word_phrase_query.reset(new base::string16(ASCIIToUTF16("www"))); 223 query.word_phrase_query.reset(new base::string16(ASCIIToUTF16("www")));
220 query.url.reset(new base::string16(ASCIIToUTF16("https://www.google.com/"))); 224 query.url.reset(new base::string16(ASCIIToUTF16("https://www.google.com/")));
221 query.title.reset(new base::string16(ASCIIToUTF16("Google"))); 225 query.title.reset(new base::string16(ASCIIToUTF16("Google")));
222 GetBookmarksMatchingProperties(&model, query, 100, string(), &nodes); 226 GetBookmarksMatchingProperties(model.get(), query, 100, string(), &nodes);
223 ASSERT_EQ(1U, nodes.size()); 227 ASSERT_EQ(1U, nodes.size());
224 EXPECT_TRUE(nodes[0] == node1); 228 EXPECT_TRUE(nodes[0] == node1);
225 nodes.clear(); 229 nodes.clear();
226 230
227 scoped_ptr<base::string16>* fields[] = { 231 scoped_ptr<base::string16>* fields[] = {
228 &query.word_phrase_query, &query.url, &query.title }; 232 &query.word_phrase_query, &query.url, &query.title };
229 233
230 // Test two fields matching. 234 // Test two fields matching.
231 for (size_t i = 0; i < arraysize(fields); i++) { 235 for (size_t i = 0; i < arraysize(fields); i++) {
232 scoped_ptr<base::string16> original_value(fields[i]->release()); 236 scoped_ptr<base::string16> original_value(fields[i]->release());
233 GetBookmarksMatchingProperties(&model, query, 100, string(), &nodes); 237 GetBookmarksMatchingProperties(model.get(), query, 100, string(), &nodes);
234 ASSERT_EQ(1U, nodes.size()); 238 ASSERT_EQ(1U, nodes.size());
235 EXPECT_TRUE(nodes[0] == node1); 239 EXPECT_TRUE(nodes[0] == node1);
236 nodes.clear(); 240 nodes.clear();
237 fields[i]->reset(original_value.release()); 241 fields[i]->reset(original_value.release());
238 } 242 }
239 243
240 // Test two fields matching with one non-matching field. 244 // Test two fields matching with one non-matching field.
241 for (size_t i = 0; i < arraysize(fields); i++) { 245 for (size_t i = 0; i < arraysize(fields); i++) {
242 scoped_ptr<base::string16> original_value(fields[i]->release()); 246 scoped_ptr<base::string16> original_value(fields[i]->release());
243 fields[i]->reset(new base::string16(ASCIIToUTF16("fjdkslafjkldsa"))); 247 fields[i]->reset(new base::string16(ASCIIToUTF16("fjdkslafjkldsa")));
244 GetBookmarksMatchingProperties(&model, query, 100, string(), &nodes); 248 GetBookmarksMatchingProperties(model.get(), query, 100, string(), &nodes);
245 ASSERT_EQ(0U, nodes.size()); 249 ASSERT_EQ(0U, nodes.size());
246 nodes.clear(); 250 nodes.clear();
247 fields[i]->reset(original_value.release()); 251 fields[i]->reset(original_value.release());
248 } 252 }
249 } 253 }
250 254
251 TEST_F(BookmarkUtilsTest, CopyPaste) { 255 TEST_F(BookmarkUtilsTest, CopyPaste) {
252 BookmarkModel model(NULL, false); 256 test::TestBookmarkClient client;
253 const BookmarkNode* node = model.AddURL(model.other_node(), 257 scoped_ptr<BookmarkModel> model(client.CreateModel(false));
254 0, 258 const BookmarkNode* node = model->AddURL(model->other_node(),
255 ASCIIToUTF16("foo bar"), 259 0,
256 GURL("http://www.google.com")); 260 ASCIIToUTF16("foo bar"),
261 GURL("http://www.google.com"));
257 262
258 // Copy a node to the clipboard. 263 // Copy a node to the clipboard.
259 std::vector<const BookmarkNode*> nodes; 264 std::vector<const BookmarkNode*> nodes;
260 nodes.push_back(node); 265 nodes.push_back(node);
261 CopyToClipboard(&model, nodes, false); 266 CopyToClipboard(model.get(), nodes, false);
262 267
263 // And make sure we can paste a bookmark from the clipboard. 268 // And make sure we can paste a bookmark from the clipboard.
264 EXPECT_TRUE(CanPasteFromClipboard(model.bookmark_bar_node())); 269 EXPECT_TRUE(CanPasteFromClipboard(model->bookmark_bar_node()));
265 270
266 // Write some text to the clipboard. 271 // Write some text to the clipboard.
267 { 272 {
268 ui::ScopedClipboardWriter clipboard_writer( 273 ui::ScopedClipboardWriter clipboard_writer(
269 ui::Clipboard::GetForCurrentThread(), 274 ui::Clipboard::GetForCurrentThread(),
270 ui::CLIPBOARD_TYPE_COPY_PASTE); 275 ui::CLIPBOARD_TYPE_COPY_PASTE);
271 clipboard_writer.WriteText(ASCIIToUTF16("foo")); 276 clipboard_writer.WriteText(ASCIIToUTF16("foo"));
272 } 277 }
273 278
274 // Now we shouldn't be able to paste from the clipboard. 279 // Now we shouldn't be able to paste from the clipboard.
275 EXPECT_FALSE(CanPasteFromClipboard(model.bookmark_bar_node())); 280 EXPECT_FALSE(CanPasteFromClipboard(model->bookmark_bar_node()));
276 } 281 }
277 282
278 TEST_F(BookmarkUtilsTest, CutToClipboard) { 283 TEST_F(BookmarkUtilsTest, CutToClipboard) {
279 BookmarkModel model(NULL, false); 284 test::TestBookmarkClient client;
280 model.AddObserver(this); 285 scoped_ptr<BookmarkModel> model(client.CreateModel(false));
286 model->AddObserver(this);
281 287
282 base::string16 title(ASCIIToUTF16("foo")); 288 base::string16 title(ASCIIToUTF16("foo"));
283 GURL url("http://foo.com"); 289 GURL url("http://foo.com");
284 const BookmarkNode* n1 = model.AddURL(model.other_node(), 0, title, url); 290 const BookmarkNode* n1 = model->AddURL(model->other_node(), 0, title, url);
285 const BookmarkNode* n2 = model.AddURL(model.other_node(), 1, title, url); 291 const BookmarkNode* n2 = model->AddURL(model->other_node(), 1, title, url);
286 292
287 // Cut the nodes to the clipboard. 293 // Cut the nodes to the clipboard.
288 std::vector<const BookmarkNode*> nodes; 294 std::vector<const BookmarkNode*> nodes;
289 nodes.push_back(n1); 295 nodes.push_back(n1);
290 nodes.push_back(n2); 296 nodes.push_back(n2);
291 CopyToClipboard(&model, nodes, true); 297 CopyToClipboard(model.get(), nodes, true);
292 298
293 // Make sure the nodes were removed. 299 // Make sure the nodes were removed.
294 EXPECT_EQ(0, model.other_node()->child_count()); 300 EXPECT_EQ(0, model->other_node()->child_count());
295 301
296 // Make sure observers were notified the set of changes should be grouped. 302 // Make sure observers were notified the set of changes should be grouped.
297 ExpectGroupedChangeCount(1, 1); 303 ExpectGroupedChangeCount(1, 1);
298 304
299 // And make sure we can paste from the clipboard. 305 // And make sure we can paste from the clipboard.
300 EXPECT_TRUE(CanPasteFromClipboard(model.other_node())); 306 EXPECT_TRUE(CanPasteFromClipboard(model->other_node()));
301 } 307 }
302 308
303 TEST_F(BookmarkUtilsTest, GetParentForNewNodes) { 309 TEST_F(BookmarkUtilsTest, GetParentForNewNodes) {
304 BookmarkModel model(NULL, false); 310 test::TestBookmarkClient client;
311 scoped_ptr<BookmarkModel> model(client.CreateModel(false));
305 // This tests the case where selection contains one item and that item is a 312 // This tests the case where selection contains one item and that item is a
306 // folder. 313 // folder.
307 std::vector<const BookmarkNode*> nodes; 314 std::vector<const BookmarkNode*> nodes;
308 nodes.push_back(model.bookmark_bar_node()); 315 nodes.push_back(model->bookmark_bar_node());
309 int index = -1; 316 int index = -1;
310 const BookmarkNode* real_parent = GetParentForNewNodes( 317 const BookmarkNode* real_parent =
311 model.bookmark_bar_node(), nodes, &index); 318 GetParentForNewNodes(model->bookmark_bar_node(), nodes, &index);
312 EXPECT_EQ(real_parent, model.bookmark_bar_node()); 319 EXPECT_EQ(real_parent, model->bookmark_bar_node());
313 EXPECT_EQ(0, index); 320 EXPECT_EQ(0, index);
314 321
315 nodes.clear(); 322 nodes.clear();
316 323
317 // This tests the case where selection contains one item and that item is an 324 // This tests the case where selection contains one item and that item is an
318 // url. 325 // url.
319 const BookmarkNode* page1 = model.AddURL(model.bookmark_bar_node(), 326 const BookmarkNode* page1 = model->AddURL(model->bookmark_bar_node(),
320 0, 327 0,
321 ASCIIToUTF16("Google"), 328 ASCIIToUTF16("Google"),
322 GURL("http://google.com")); 329 GURL("http://google.com"));
323 nodes.push_back(page1); 330 nodes.push_back(page1);
324 real_parent = GetParentForNewNodes(model.bookmark_bar_node(), nodes, &index); 331 real_parent = GetParentForNewNodes(model->bookmark_bar_node(), nodes, &index);
325 EXPECT_EQ(real_parent, model.bookmark_bar_node()); 332 EXPECT_EQ(real_parent, model->bookmark_bar_node());
326 EXPECT_EQ(1, index); 333 EXPECT_EQ(1, index);
327 334
328 // This tests the case where selection has more than one item. 335 // This tests the case where selection has more than one item.
329 const BookmarkNode* folder1 = model.AddFolder(model.bookmark_bar_node(), 1, 336 const BookmarkNode* folder1 =
330 ASCIIToUTF16("Folder 1")); 337 model->AddFolder(model->bookmark_bar_node(), 1, ASCIIToUTF16("Folder 1"));
331 nodes.push_back(folder1); 338 nodes.push_back(folder1);
332 real_parent = GetParentForNewNodes(model.bookmark_bar_node(), nodes, &index); 339 real_parent = GetParentForNewNodes(model->bookmark_bar_node(), nodes, &index);
333 EXPECT_EQ(real_parent, model.bookmark_bar_node()); 340 EXPECT_EQ(real_parent, model->bookmark_bar_node());
334 EXPECT_EQ(2, index); 341 EXPECT_EQ(2, index);
335 342
336 // This tests the case where selection doesn't contain any items. 343 // This tests the case where selection doesn't contain any items.
337 nodes.clear(); 344 nodes.clear();
338 real_parent = GetParentForNewNodes(model.bookmark_bar_node(), nodes, &index); 345 real_parent = GetParentForNewNodes(model->bookmark_bar_node(), nodes, &index);
339 EXPECT_EQ(real_parent, model.bookmark_bar_node()); 346 EXPECT_EQ(real_parent, model->bookmark_bar_node());
340 EXPECT_EQ(2, index); 347 EXPECT_EQ(2, index);
341 } 348 }
342 349
343 // Verifies that meta info is copied when nodes are cloned. 350 // Verifies that meta info is copied when nodes are cloned.
344 TEST_F(BookmarkUtilsTest, CloneMetaInfo) { 351 TEST_F(BookmarkUtilsTest, CloneMetaInfo) {
345 BookmarkModel model(NULL, false); 352 test::TestBookmarkClient client;
353 scoped_ptr<BookmarkModel> model(client.CreateModel(false));
346 // Add a node containing meta info. 354 // Add a node containing meta info.
347 const BookmarkNode* node = model.AddURL(model.other_node(), 355 const BookmarkNode* node = model->AddURL(model->other_node(),
348 0, 356 0,
349 ASCIIToUTF16("foo bar"), 357 ASCIIToUTF16("foo bar"),
350 GURL("http://www.google.com")); 358 GURL("http://www.google.com"));
351 model.SetNodeMetaInfo(node, "somekey", "somevalue"); 359 model->SetNodeMetaInfo(node, "somekey", "somevalue");
352 model.SetNodeMetaInfo(node, "someotherkey", "someothervalue"); 360 model->SetNodeMetaInfo(node, "someotherkey", "someothervalue");
353 361
354 // Clone node to a different folder. 362 // Clone node to a different folder.
355 const BookmarkNode* folder = model.AddFolder(model.bookmark_bar_node(), 0, 363 const BookmarkNode* folder =
356 ASCIIToUTF16("Folder")); 364 model->AddFolder(model->bookmark_bar_node(), 0, ASCIIToUTF16("Folder"));
357 std::vector<BookmarkNodeData::Element> elements; 365 std::vector<BookmarkNodeData::Element> elements;
358 BookmarkNodeData::Element node_data(node); 366 BookmarkNodeData::Element node_data(node);
359 elements.push_back(node_data); 367 elements.push_back(node_data);
360 EXPECT_EQ(0, folder->child_count()); 368 EXPECT_EQ(0, folder->child_count());
361 CloneBookmarkNode(&model, elements, folder, 0, false); 369 CloneBookmarkNode(model.get(), elements, folder, 0, false);
362 ASSERT_EQ(1, folder->child_count()); 370 ASSERT_EQ(1, folder->child_count());
363 371
364 // Verify that the cloned node contains the same meta info. 372 // Verify that the cloned node contains the same meta info.
365 const BookmarkNode* clone = folder->GetChild(0); 373 const BookmarkNode* clone = folder->GetChild(0);
366 ASSERT_TRUE(clone->GetMetaInfoMap()); 374 ASSERT_TRUE(clone->GetMetaInfoMap());
367 EXPECT_EQ(2u, clone->GetMetaInfoMap()->size()); 375 EXPECT_EQ(2u, clone->GetMetaInfoMap()->size());
368 std::string value; 376 std::string value;
369 EXPECT_TRUE(clone->GetMetaInfo("somekey", &value)); 377 EXPECT_TRUE(clone->GetMetaInfo("somekey", &value));
370 EXPECT_EQ("somevalue", value); 378 EXPECT_EQ("somevalue", value);
371 EXPECT_TRUE(clone->GetMetaInfo("someotherkey", &value)); 379 EXPECT_TRUE(clone->GetMetaInfo("someotherkey", &value));
372 EXPECT_EQ("someothervalue", value); 380 EXPECT_EQ("someothervalue", value);
373 } 381 }
374 382
375 } // namespace 383 } // namespace
376 } // namespace bookmark_utils 384 } // namespace bookmark_utils
OLDNEW
« no previous file with comments | « chrome/browser/bookmarks/bookmark_utils.cc ('k') | chrome/browser/bookmarks/chrome_bookmark_client.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698