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

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

Issue 1198963014: Change ownership of BookmarkClient (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@cleanup_managed_and_supervised_nodes
Patch Set: Rebase Created 5 years, 6 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 2014 The Chromium Authors. All rights reserved. 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 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 "components/bookmarks/browser/bookmark_utils.h" 5 #include "components/bookmarks/browser/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"
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
67 int grouped_changes_beginning_count_; 67 int grouped_changes_beginning_count_;
68 int grouped_changes_ended_count_; 68 int grouped_changes_ended_count_;
69 69
70 // Clipboard requires a message loop. 70 // Clipboard requires a message loop.
71 base::MessageLoopForUI loop_; 71 base::MessageLoopForUI loop_;
72 72
73 DISALLOW_COPY_AND_ASSIGN(BookmarkUtilsTest); 73 DISALLOW_COPY_AND_ASSIGN(BookmarkUtilsTest);
74 }; 74 };
75 75
76 TEST_F(BookmarkUtilsTest, GetBookmarksMatchingPropertiesWordPhraseQuery) { 76 TEST_F(BookmarkUtilsTest, GetBookmarksMatchingPropertiesWordPhraseQuery) {
77 TestBookmarkClient client; 77 scoped_ptr<BookmarkModel> model(TestBookmarkClient::CreateModel());
78 scoped_ptr<BookmarkModel> model(client.CreateModel());
79 const BookmarkNode* node1 = model->AddURL(model->other_node(), 78 const BookmarkNode* node1 = model->AddURL(model->other_node(),
80 0, 79 0,
81 ASCIIToUTF16("foo bar"), 80 ASCIIToUTF16("foo bar"),
82 GURL("http://www.google.com")); 81 GURL("http://www.google.com"));
83 const BookmarkNode* node2 = model->AddURL(model->other_node(), 82 const BookmarkNode* node2 = model->AddURL(model->other_node(),
84 0, 83 0,
85 ASCIIToUTF16("baz buz"), 84 ASCIIToUTF16("baz buz"),
86 GURL("http://www.cnn.com")); 85 GURL("http://www.cnn.com"));
87 const BookmarkNode* folder1 = 86 const BookmarkNode* folder1 =
88 model->AddFolder(model->other_node(), 0, ASCIIToUTF16("foo")); 87 model->AddFolder(model->other_node(), 0, ASCIIToUTF16("foo"));
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
125 124
126 // Bookmark Bar and Other Bookmarks are not returned in search results. 125 // Bookmark Bar and Other Bookmarks are not returned in search results.
127 *query.word_phrase_query = ASCIIToUTF16("Bookmark"); 126 *query.word_phrase_query = ASCIIToUTF16("Bookmark");
128 GetBookmarksMatchingProperties(model.get(), query, 100, string(), &nodes); 127 GetBookmarksMatchingProperties(model.get(), query, 100, string(), &nodes);
129 ASSERT_EQ(0U, nodes.size()); 128 ASSERT_EQ(0U, nodes.size());
130 nodes.clear(); 129 nodes.clear();
131 } 130 }
132 131
133 // Check exact matching against a URL query. 132 // Check exact matching against a URL query.
134 TEST_F(BookmarkUtilsTest, GetBookmarksMatchingPropertiesUrl) { 133 TEST_F(BookmarkUtilsTest, GetBookmarksMatchingPropertiesUrl) {
135 TestBookmarkClient client; 134 scoped_ptr<BookmarkModel> model(TestBookmarkClient::CreateModel());
136 scoped_ptr<BookmarkModel> model(client.CreateModel());
137 const BookmarkNode* node1 = model->AddURL(model->other_node(), 135 const BookmarkNode* node1 = model->AddURL(model->other_node(),
138 0, 136 0,
139 ASCIIToUTF16("Google"), 137 ASCIIToUTF16("Google"),
140 GURL("https://www.google.com/")); 138 GURL("https://www.google.com/"));
141 model->AddURL(model->other_node(), 139 model->AddURL(model->other_node(),
142 0, 140 0,
143 ASCIIToUTF16("Google Calendar"), 141 ASCIIToUTF16("Google Calendar"),
144 GURL("https://www.google.com/calendar")); 142 GURL("https://www.google.com/calendar"));
145 143
146 model->AddFolder(model->other_node(), 0, ASCIIToUTF16("Folder")); 144 model->AddFolder(model->other_node(), 0, ASCIIToUTF16("Folder"));
(...skipping 14 matching lines...) Expand all
161 159
162 // Empty URL should not match folders. 160 // Empty URL should not match folders.
163 *query.url = ASCIIToUTF16(""); 161 *query.url = ASCIIToUTF16("");
164 GetBookmarksMatchingProperties(model.get(), query, 100, string(), &nodes); 162 GetBookmarksMatchingProperties(model.get(), query, 100, string(), &nodes);
165 ASSERT_EQ(0U, nodes.size()); 163 ASSERT_EQ(0U, nodes.size());
166 nodes.clear(); 164 nodes.clear();
167 } 165 }
168 166
169 // Check exact matching against a title query. 167 // Check exact matching against a title query.
170 TEST_F(BookmarkUtilsTest, GetBookmarksMatchingPropertiesTitle) { 168 TEST_F(BookmarkUtilsTest, GetBookmarksMatchingPropertiesTitle) {
171 TestBookmarkClient client; 169 scoped_ptr<BookmarkModel> model(TestBookmarkClient::CreateModel());
172 scoped_ptr<BookmarkModel> model(client.CreateModel());
173 const BookmarkNode* node1 = model->AddURL(model->other_node(), 170 const BookmarkNode* node1 = model->AddURL(model->other_node(),
174 0, 171 0,
175 ASCIIToUTF16("Google"), 172 ASCIIToUTF16("Google"),
176 GURL("https://www.google.com/")); 173 GURL("https://www.google.com/"));
177 model->AddURL(model->other_node(), 174 model->AddURL(model->other_node(),
178 0, 175 0,
179 ASCIIToUTF16("Google Calendar"), 176 ASCIIToUTF16("Google Calendar"),
180 GURL("https://www.google.com/calendar")); 177 GURL("https://www.google.com/calendar"));
181 178
182 const BookmarkNode* folder1 = 179 const BookmarkNode* folder1 =
(...skipping 16 matching lines...) Expand all
199 // Title should match folders. 196 // Title should match folders.
200 *query.title = ASCIIToUTF16("Folder"); 197 *query.title = ASCIIToUTF16("Folder");
201 GetBookmarksMatchingProperties(model.get(), query, 100, string(), &nodes); 198 GetBookmarksMatchingProperties(model.get(), query, 100, string(), &nodes);
202 ASSERT_EQ(1U, nodes.size()); 199 ASSERT_EQ(1U, nodes.size());
203 EXPECT_TRUE(nodes[0] == folder1); 200 EXPECT_TRUE(nodes[0] == folder1);
204 nodes.clear(); 201 nodes.clear();
205 } 202 }
206 203
207 // Check matching against a query with multiple predicates. 204 // Check matching against a query with multiple predicates.
208 TEST_F(BookmarkUtilsTest, GetBookmarksMatchingPropertiesConjunction) { 205 TEST_F(BookmarkUtilsTest, GetBookmarksMatchingPropertiesConjunction) {
209 TestBookmarkClient client; 206 scoped_ptr<BookmarkModel> model(TestBookmarkClient::CreateModel());
210 scoped_ptr<BookmarkModel> model(client.CreateModel());
211 const BookmarkNode* node1 = model->AddURL(model->other_node(), 207 const BookmarkNode* node1 = model->AddURL(model->other_node(),
212 0, 208 0,
213 ASCIIToUTF16("Google"), 209 ASCIIToUTF16("Google"),
214 GURL("https://www.google.com/")); 210 GURL("https://www.google.com/"));
215 model->AddURL(model->other_node(), 211 model->AddURL(model->other_node(),
216 0, 212 0,
217 ASCIIToUTF16("Google Calendar"), 213 ASCIIToUTF16("Google Calendar"),
218 GURL("https://www.google.com/calendar")); 214 GURL("https://www.google.com/calendar"));
219 215
220 model->AddFolder(model->other_node(), 0, ASCIIToUTF16("Folder")); 216 model->AddFolder(model->other_node(), 0, ASCIIToUTF16("Folder"));
(...skipping 30 matching lines...) Expand all
251 GetBookmarksMatchingProperties(model.get(), query, 100, string(), &nodes); 247 GetBookmarksMatchingProperties(model.get(), query, 100, string(), &nodes);
252 ASSERT_EQ(0U, nodes.size()); 248 ASSERT_EQ(0U, nodes.size());
253 nodes.clear(); 249 nodes.clear();
254 fields[i]->reset(original_value.release()); 250 fields[i]->reset(original_value.release());
255 } 251 }
256 } 252 }
257 253
258 // Copy and paste is not yet supported on iOS. http://crbug.com/228147 254 // Copy and paste is not yet supported on iOS. http://crbug.com/228147
259 #if !defined(OS_IOS) 255 #if !defined(OS_IOS)
260 TEST_F(BookmarkUtilsTest, PasteBookmarkFromURL) { 256 TEST_F(BookmarkUtilsTest, PasteBookmarkFromURL) {
261 TestBookmarkClient client; 257 scoped_ptr<BookmarkModel> model(TestBookmarkClient::CreateModel());
262 scoped_ptr<BookmarkModel> model(client.CreateModel());
263 const base::string16 url_text = ASCIIToUTF16("http://www.google.com/"); 258 const base::string16 url_text = ASCIIToUTF16("http://www.google.com/");
264 const BookmarkNode* new_folder = model->AddFolder( 259 const BookmarkNode* new_folder = model->AddFolder(
265 model->bookmark_bar_node(), 0, ASCIIToUTF16("New_Folder")); 260 model->bookmark_bar_node(), 0, ASCIIToUTF16("New_Folder"));
266 261
267 // Write blank text to clipboard. 262 // Write blank text to clipboard.
268 { 263 {
269 ui::ScopedClipboardWriter clipboard_writer(ui::CLIPBOARD_TYPE_COPY_PASTE); 264 ui::ScopedClipboardWriter clipboard_writer(ui::CLIPBOARD_TYPE_COPY_PASTE);
270 clipboard_writer.WriteText(base::string16()); 265 clipboard_writer.WriteText(base::string16());
271 } 266 }
272 // Now we shouldn't be able to paste from the clipboard. 267 // Now we shouldn't be able to paste from the clipboard.
273 EXPECT_FALSE(CanPasteFromClipboard(model.get(), new_folder)); 268 EXPECT_FALSE(CanPasteFromClipboard(model.get(), new_folder));
274 269
275 // Write some valid url to the clipboard. 270 // Write some valid url to the clipboard.
276 { 271 {
277 ui::ScopedClipboardWriter clipboard_writer(ui::CLIPBOARD_TYPE_COPY_PASTE); 272 ui::ScopedClipboardWriter clipboard_writer(ui::CLIPBOARD_TYPE_COPY_PASTE);
278 clipboard_writer.WriteText(url_text); 273 clipboard_writer.WriteText(url_text);
279 } 274 }
280 // Now we should be able to paste from the clipboard. 275 // Now we should be able to paste from the clipboard.
281 EXPECT_TRUE(CanPasteFromClipboard(model.get(), new_folder)); 276 EXPECT_TRUE(CanPasteFromClipboard(model.get(), new_folder));
282 277
283 PasteFromClipboard(model.get(), new_folder, 0); 278 PasteFromClipboard(model.get(), new_folder, 0);
284 ASSERT_EQ(1, new_folder->child_count()); 279 ASSERT_EQ(1, new_folder->child_count());
285 280
286 // Url for added node should be same as url_text. 281 // Url for added node should be same as url_text.
287 EXPECT_EQ(url_text, ASCIIToUTF16(new_folder->GetChild(0)->url().spec())); 282 EXPECT_EQ(url_text, ASCIIToUTF16(new_folder->GetChild(0)->url().spec()));
288 } 283 }
289 284
290 TEST_F(BookmarkUtilsTest, CopyPaste) { 285 TEST_F(BookmarkUtilsTest, CopyPaste) {
291 TestBookmarkClient client; 286 scoped_ptr<BookmarkModel> model(TestBookmarkClient::CreateModel());
292 scoped_ptr<BookmarkModel> model(client.CreateModel());
293 const BookmarkNode* node = model->AddURL(model->other_node(), 287 const BookmarkNode* node = model->AddURL(model->other_node(),
294 0, 288 0,
295 ASCIIToUTF16("foo bar"), 289 ASCIIToUTF16("foo bar"),
296 GURL("http://www.google.com")); 290 GURL("http://www.google.com"));
297 291
298 // Copy a node to the clipboard. 292 // Copy a node to the clipboard.
299 std::vector<const BookmarkNode*> nodes; 293 std::vector<const BookmarkNode*> nodes;
300 nodes.push_back(node); 294 nodes.push_back(node);
301 CopyToClipboard(model.get(), nodes, false); 295 CopyToClipboard(model.get(), nodes, false);
302 296
303 // And make sure we can paste a bookmark from the clipboard. 297 // And make sure we can paste a bookmark from the clipboard.
304 EXPECT_TRUE(CanPasteFromClipboard(model.get(), model->bookmark_bar_node())); 298 EXPECT_TRUE(CanPasteFromClipboard(model.get(), model->bookmark_bar_node()));
305 299
306 // Write some text to the clipboard. 300 // Write some text to the clipboard.
307 { 301 {
308 ui::ScopedClipboardWriter clipboard_writer( 302 ui::ScopedClipboardWriter clipboard_writer(
309 ui::CLIPBOARD_TYPE_COPY_PASTE); 303 ui::CLIPBOARD_TYPE_COPY_PASTE);
310 clipboard_writer.WriteText(ASCIIToUTF16("foo")); 304 clipboard_writer.WriteText(ASCIIToUTF16("foo"));
311 } 305 }
312 306
313 // Now we shouldn't be able to paste from the clipboard. 307 // Now we shouldn't be able to paste from the clipboard.
314 EXPECT_FALSE(CanPasteFromClipboard(model.get(), model->bookmark_bar_node())); 308 EXPECT_FALSE(CanPasteFromClipboard(model.get(), model->bookmark_bar_node()));
315 } 309 }
316 310
317 // Test for updating title such that url and title pair are unique among the 311 // Test for updating title such that url and title pair are unique among the
318 // children of parent. 312 // children of parent.
319 TEST_F(BookmarkUtilsTest, MakeTitleUnique) { 313 TEST_F(BookmarkUtilsTest, MakeTitleUnique) {
320 TestBookmarkClient client; 314 scoped_ptr<BookmarkModel> model(TestBookmarkClient::CreateModel());
321 scoped_ptr<BookmarkModel> model(client.CreateModel());
322 const base::string16 url_text = ASCIIToUTF16("http://www.google.com/"); 315 const base::string16 url_text = ASCIIToUTF16("http://www.google.com/");
323 const base::string16 title_text = ASCIIToUTF16("foobar"); 316 const base::string16 title_text = ASCIIToUTF16("foobar");
324 const BookmarkNode* bookmark_bar_node = model->bookmark_bar_node(); 317 const BookmarkNode* bookmark_bar_node = model->bookmark_bar_node();
325 318
326 const BookmarkNode* node = 319 const BookmarkNode* node =
327 model->AddURL(bookmark_bar_node, 0, title_text, GURL(url_text)); 320 model->AddURL(bookmark_bar_node, 0, title_text, GURL(url_text));
328 321
329 EXPECT_EQ(url_text, 322 EXPECT_EQ(url_text,
330 ASCIIToUTF16(bookmark_bar_node->GetChild(0)->url().spec())); 323 ASCIIToUTF16(bookmark_bar_node->GetChild(0)->url().spec()));
331 EXPECT_EQ(title_text, bookmark_bar_node->GetChild(0)->GetTitle()); 324 EXPECT_EQ(title_text, bookmark_bar_node->GetChild(0)->GetTitle());
(...skipping 12 matching lines...) Expand all
344 // Url for added node should be same as url_text. 337 // Url for added node should be same as url_text.
345 EXPECT_EQ(url_text, 338 EXPECT_EQ(url_text,
346 ASCIIToUTF16(bookmark_bar_node->GetChild(1)->url().spec())); 339 ASCIIToUTF16(bookmark_bar_node->GetChild(1)->url().spec()));
347 // Title for added node should be numeric subscript suffix with copied node 340 // Title for added node should be numeric subscript suffix with copied node
348 // title. 341 // title.
349 EXPECT_EQ(ASCIIToUTF16("foobar (1)"), 342 EXPECT_EQ(ASCIIToUTF16("foobar (1)"),
350 bookmark_bar_node->GetChild(1)->GetTitle()); 343 bookmark_bar_node->GetChild(1)->GetTitle());
351 } 344 }
352 345
353 TEST_F(BookmarkUtilsTest, CopyPasteMetaInfo) { 346 TEST_F(BookmarkUtilsTest, CopyPasteMetaInfo) {
354 TestBookmarkClient client; 347 scoped_ptr<BookmarkModel> model(TestBookmarkClient::CreateModel());
355 scoped_ptr<BookmarkModel> model(client.CreateModel());
356 const BookmarkNode* node = model->AddURL(model->other_node(), 348 const BookmarkNode* node = model->AddURL(model->other_node(),
357 0, 349 0,
358 ASCIIToUTF16("foo bar"), 350 ASCIIToUTF16("foo bar"),
359 GURL("http://www.google.com")); 351 GURL("http://www.google.com"));
360 model->SetNodeMetaInfo(node, "somekey", "somevalue"); 352 model->SetNodeMetaInfo(node, "somekey", "somevalue");
361 model->SetNodeMetaInfo(node, "someotherkey", "someothervalue"); 353 model->SetNodeMetaInfo(node, "someotherkey", "someothervalue");
362 354
363 // Copy a node to the clipboard. 355 // Copy a node to the clipboard.
364 std::vector<const BookmarkNode*> nodes; 356 std::vector<const BookmarkNode*> nodes;
365 nodes.push_back(node); 357 nodes.push_back(node);
(...skipping 21 matching lines...) Expand all
387 EXPECT_EQ("someothervalue", value); 379 EXPECT_EQ("someothervalue", value);
388 } 380 }
389 381
390 #if defined(OS_LINUX) || defined(OS_MACOSX) 382 #if defined(OS_LINUX) || defined(OS_MACOSX)
391 // http://crbug.com/396472 383 // http://crbug.com/396472
392 #define MAYBE_CutToClipboard DISABLED_CutToClipboard 384 #define MAYBE_CutToClipboard DISABLED_CutToClipboard
393 #else 385 #else
394 #define MAYBE_CutToClipboard CutToClipboard 386 #define MAYBE_CutToClipboard CutToClipboard
395 #endif 387 #endif
396 TEST_F(BookmarkUtilsTest, MAYBE_CutToClipboard) { 388 TEST_F(BookmarkUtilsTest, MAYBE_CutToClipboard) {
397 TestBookmarkClient client; 389 scoped_ptr<BookmarkModel> model(TestBookmarkClient::CreateModel());
398 scoped_ptr<BookmarkModel> model(client.CreateModel());
399 model->AddObserver(this); 390 model->AddObserver(this);
400 391
401 base::string16 title(ASCIIToUTF16("foo")); 392 base::string16 title(ASCIIToUTF16("foo"));
402 GURL url("http://foo.com"); 393 GURL url("http://foo.com");
403 const BookmarkNode* n1 = model->AddURL(model->other_node(), 0, title, url); 394 const BookmarkNode* n1 = model->AddURL(model->other_node(), 0, title, url);
404 const BookmarkNode* n2 = model->AddURL(model->other_node(), 1, title, url); 395 const BookmarkNode* n2 = model->AddURL(model->other_node(), 1, title, url);
405 396
406 // Cut the nodes to the clipboard. 397 // Cut the nodes to the clipboard.
407 std::vector<const BookmarkNode*> nodes; 398 std::vector<const BookmarkNode*> nodes;
408 nodes.push_back(n1); 399 nodes.push_back(n1);
409 nodes.push_back(n2); 400 nodes.push_back(n2);
410 CopyToClipboard(model.get(), nodes, true); 401 CopyToClipboard(model.get(), nodes, true);
411 402
412 // Make sure the nodes were removed. 403 // Make sure the nodes were removed.
413 EXPECT_EQ(0, model->other_node()->child_count()); 404 EXPECT_EQ(0, model->other_node()->child_count());
414 405
415 // Make sure observers were notified the set of changes should be grouped. 406 // Make sure observers were notified the set of changes should be grouped.
416 ExpectGroupedChangeCount(1, 1); 407 ExpectGroupedChangeCount(1, 1);
417 408
418 // And make sure we can paste from the clipboard. 409 // And make sure we can paste from the clipboard.
419 EXPECT_TRUE(CanPasteFromClipboard(model.get(), model->other_node())); 410 EXPECT_TRUE(CanPasteFromClipboard(model.get(), model->other_node()));
420 } 411 }
421 412
422 TEST_F(BookmarkUtilsTest, PasteNonEditableNodes) { 413 TEST_F(BookmarkUtilsTest, PasteNonEditableNodes) {
423 TestBookmarkClient client;
424 // Load a model with an extra node that is not editable. 414 // Load a model with an extra node that is not editable.
425 BookmarkPermanentNode* extra_node = new BookmarkPermanentNode(100); 415 BookmarkPermanentNode* extra_node = new BookmarkPermanentNode(100);
426 BookmarkPermanentNodeList extra_nodes; 416 BookmarkPermanentNodeList extra_nodes;
427 extra_nodes.push_back(extra_node); 417 extra_nodes.push_back(extra_node);
428 client.SetExtraNodesToLoad(extra_nodes.Pass()); 418 scoped_ptr<BookmarkModel> model(
429 419 TestBookmarkClient::CreateModel(extra_nodes.Pass(), nullptr, false));
430 scoped_ptr<BookmarkModel> model(client.CreateModel());
431 const BookmarkNode* node = model->AddURL(model->other_node(), 420 const BookmarkNode* node = model->AddURL(model->other_node(),
432 0, 421 0,
433 ASCIIToUTF16("foo bar"), 422 ASCIIToUTF16("foo bar"),
434 GURL("http://www.google.com")); 423 GURL("http://www.google.com"));
435 424
436 // Copy a node to the clipboard. 425 // Copy a node to the clipboard.
437 std::vector<const BookmarkNode*> nodes; 426 std::vector<const BookmarkNode*> nodes;
438 nodes.push_back(node); 427 nodes.push_back(node);
439 CopyToClipboard(model.get(), nodes, false); 428 CopyToClipboard(model.get(), nodes, false);
440 429
441 // And make sure we can paste a bookmark from the clipboard. 430 // And make sure we can paste a bookmark from the clipboard.
442 EXPECT_TRUE(CanPasteFromClipboard(model.get(), model->bookmark_bar_node())); 431 EXPECT_TRUE(CanPasteFromClipboard(model.get(), model->bookmark_bar_node()));
443 432
444 // But it can't be pasted into a non-editable folder. 433 // But it can't be pasted into a non-editable folder.
445 EXPECT_FALSE(model->CanBeEditedByUser(extra_node)); 434 EXPECT_FALSE(model->CanBeEditedByUser(extra_node));
446 EXPECT_FALSE(CanPasteFromClipboard(model.get(), extra_node)); 435 EXPECT_FALSE(CanPasteFromClipboard(model.get(), extra_node));
447 } 436 }
448 #endif // !defined(OS_IOS) 437 #endif // !defined(OS_IOS)
449 438
450 TEST_F(BookmarkUtilsTest, GetParentForNewNodes) { 439 TEST_F(BookmarkUtilsTest, GetParentForNewNodes) {
451 TestBookmarkClient client; 440 scoped_ptr<BookmarkModel> model(TestBookmarkClient::CreateModel());
452 scoped_ptr<BookmarkModel> model(client.CreateModel());
453 // This tests the case where selection contains one item and that item is a 441 // This tests the case where selection contains one item and that item is a
454 // folder. 442 // folder.
455 std::vector<const BookmarkNode*> nodes; 443 std::vector<const BookmarkNode*> nodes;
456 nodes.push_back(model->bookmark_bar_node()); 444 nodes.push_back(model->bookmark_bar_node());
457 int index = -1; 445 int index = -1;
458 const BookmarkNode* real_parent = 446 const BookmarkNode* real_parent =
459 GetParentForNewNodes(model->bookmark_bar_node(), nodes, &index); 447 GetParentForNewNodes(model->bookmark_bar_node(), nodes, &index);
460 EXPECT_EQ(real_parent, model->bookmark_bar_node()); 448 EXPECT_EQ(real_parent, model->bookmark_bar_node());
461 EXPECT_EQ(0, index); 449 EXPECT_EQ(0, index);
462 450
(...skipping 20 matching lines...) Expand all
483 471
484 // This tests the case where selection doesn't contain any items. 472 // This tests the case where selection doesn't contain any items.
485 nodes.clear(); 473 nodes.clear();
486 real_parent = GetParentForNewNodes(model->bookmark_bar_node(), nodes, &index); 474 real_parent = GetParentForNewNodes(model->bookmark_bar_node(), nodes, &index);
487 EXPECT_EQ(real_parent, model->bookmark_bar_node()); 475 EXPECT_EQ(real_parent, model->bookmark_bar_node());
488 EXPECT_EQ(2, index); 476 EXPECT_EQ(2, index);
489 } 477 }
490 478
491 // Verifies that meta info is copied when nodes are cloned. 479 // Verifies that meta info is copied when nodes are cloned.
492 TEST_F(BookmarkUtilsTest, CloneMetaInfo) { 480 TEST_F(BookmarkUtilsTest, CloneMetaInfo) {
493 TestBookmarkClient client; 481 scoped_ptr<BookmarkModel> model(TestBookmarkClient::CreateModel());
494 scoped_ptr<BookmarkModel> model(client.CreateModel());
495 // Add a node containing meta info. 482 // Add a node containing meta info.
496 const BookmarkNode* node = model->AddURL(model->other_node(), 483 const BookmarkNode* node = model->AddURL(model->other_node(),
497 0, 484 0,
498 ASCIIToUTF16("foo bar"), 485 ASCIIToUTF16("foo bar"),
499 GURL("http://www.google.com")); 486 GURL("http://www.google.com"));
500 model->SetNodeMetaInfo(node, "somekey", "somevalue"); 487 model->SetNodeMetaInfo(node, "somekey", "somevalue");
501 model->SetNodeMetaInfo(node, "someotherkey", "someothervalue"); 488 model->SetNodeMetaInfo(node, "someotherkey", "someothervalue");
502 489
503 // Clone node to a different folder. 490 // Clone node to a different folder.
504 const BookmarkNode* folder = 491 const BookmarkNode* folder =
(...skipping 12 matching lines...) Expand all
517 std::string value; 504 std::string value;
518 EXPECT_TRUE(clone->GetMetaInfo("somekey", &value)); 505 EXPECT_TRUE(clone->GetMetaInfo("somekey", &value));
519 EXPECT_EQ("somevalue", value); 506 EXPECT_EQ("somevalue", value);
520 EXPECT_TRUE(clone->GetMetaInfo("someotherkey", &value)); 507 EXPECT_TRUE(clone->GetMetaInfo("someotherkey", &value));
521 EXPECT_EQ("someothervalue", value); 508 EXPECT_EQ("someothervalue", value);
522 } 509 }
523 510
524 // Verifies that meta info fields in the non cloned set are not copied when 511 // Verifies that meta info fields in the non cloned set are not copied when
525 // cloning a bookmark. 512 // cloning a bookmark.
526 TEST_F(BookmarkUtilsTest, CloneBookmarkResetsNonClonedKey) { 513 TEST_F(BookmarkUtilsTest, CloneBookmarkResetsNonClonedKey) {
527 TestBookmarkClient client; 514 scoped_ptr<BookmarkModel> model(TestBookmarkClient::CreateModel());
528 scoped_ptr<BookmarkModel> model(client.CreateModel());
529 model->AddNonClonedKey("foo"); 515 model->AddNonClonedKey("foo");
530 const BookmarkNode* parent = model->other_node(); 516 const BookmarkNode* parent = model->other_node();
531 const BookmarkNode* node = model->AddURL( 517 const BookmarkNode* node = model->AddURL(
532 parent, 0, ASCIIToUTF16("title"), GURL("http://www.google.com")); 518 parent, 0, ASCIIToUTF16("title"), GURL("http://www.google.com"));
533 model->SetNodeMetaInfo(node, "foo", "ignored value"); 519 model->SetNodeMetaInfo(node, "foo", "ignored value");
534 model->SetNodeMetaInfo(node, "bar", "kept value"); 520 model->SetNodeMetaInfo(node, "bar", "kept value");
535 std::vector<BookmarkNodeData::Element> elements; 521 std::vector<BookmarkNodeData::Element> elements;
536 BookmarkNodeData::Element node_data(node); 522 BookmarkNodeData::Element node_data(node);
537 elements.push_back(node_data); 523 elements.push_back(node_data);
538 524
539 // Cloning a bookmark should clear the non cloned key. 525 // Cloning a bookmark should clear the non cloned key.
540 CloneBookmarkNode(model.get(), elements, parent, 0, true); 526 CloneBookmarkNode(model.get(), elements, parent, 0, true);
541 ASSERT_EQ(2, parent->child_count()); 527 ASSERT_EQ(2, parent->child_count());
542 std::string value; 528 std::string value;
543 EXPECT_FALSE(parent->GetChild(0)->GetMetaInfo("foo", &value)); 529 EXPECT_FALSE(parent->GetChild(0)->GetMetaInfo("foo", &value));
544 530
545 // Other keys should still be cloned. 531 // Other keys should still be cloned.
546 EXPECT_TRUE(parent->GetChild(0)->GetMetaInfo("bar", &value)); 532 EXPECT_TRUE(parent->GetChild(0)->GetMetaInfo("bar", &value));
547 EXPECT_EQ("kept value", value); 533 EXPECT_EQ("kept value", value);
548 } 534 }
549 535
550 // Verifies that meta info fields in the non cloned set are not copied when 536 // Verifies that meta info fields in the non cloned set are not copied when
551 // cloning a folder. 537 // cloning a folder.
552 TEST_F(BookmarkUtilsTest, CloneFolderResetsNonClonedKey) { 538 TEST_F(BookmarkUtilsTest, CloneFolderResetsNonClonedKey) {
553 TestBookmarkClient client; 539 scoped_ptr<BookmarkModel> model(TestBookmarkClient::CreateModel());
554 scoped_ptr<BookmarkModel> model(client.CreateModel());
555 model->AddNonClonedKey("foo"); 540 model->AddNonClonedKey("foo");
556 const BookmarkNode* parent = model->other_node(); 541 const BookmarkNode* parent = model->other_node();
557 const BookmarkNode* node = model->AddFolder(parent, 0, ASCIIToUTF16("title")); 542 const BookmarkNode* node = model->AddFolder(parent, 0, ASCIIToUTF16("title"));
558 model->SetNodeMetaInfo(node, "foo", "ignored value"); 543 model->SetNodeMetaInfo(node, "foo", "ignored value");
559 model->SetNodeMetaInfo(node, "bar", "kept value"); 544 model->SetNodeMetaInfo(node, "bar", "kept value");
560 std::vector<BookmarkNodeData::Element> elements; 545 std::vector<BookmarkNodeData::Element> elements;
561 BookmarkNodeData::Element node_data(node); 546 BookmarkNodeData::Element node_data(node);
562 elements.push_back(node_data); 547 elements.push_back(node_data);
563 548
564 // Cloning a folder should clear the non cloned key. 549 // Cloning a folder should clear the non cloned key.
565 CloneBookmarkNode(model.get(), elements, parent, 0, true); 550 CloneBookmarkNode(model.get(), elements, parent, 0, true);
566 ASSERT_EQ(2, parent->child_count()); 551 ASSERT_EQ(2, parent->child_count());
567 std::string value; 552 std::string value;
568 EXPECT_FALSE(parent->GetChild(0)->GetMetaInfo("foo", &value)); 553 EXPECT_FALSE(parent->GetChild(0)->GetMetaInfo("foo", &value));
569 554
570 // Other keys should still be cloned. 555 // Other keys should still be cloned.
571 EXPECT_TRUE(parent->GetChild(0)->GetMetaInfo("bar", &value)); 556 EXPECT_TRUE(parent->GetChild(0)->GetMetaInfo("bar", &value));
572 EXPECT_EQ("kept value", value); 557 EXPECT_EQ("kept value", value);
573 } 558 }
574 559
575 TEST_F(BookmarkUtilsTest, RemoveAllBookmarks) { 560 TEST_F(BookmarkUtilsTest, RemoveAllBookmarks) {
576 TestBookmarkClient client;
577 // Load a model with an extra node that is not editable. 561 // Load a model with an extra node that is not editable.
578 BookmarkPermanentNode* extra_node = new BookmarkPermanentNode(100); 562 BookmarkPermanentNode* extra_node = new BookmarkPermanentNode(100);
579 BookmarkPermanentNodeList extra_nodes; 563 BookmarkPermanentNodeList extra_nodes;
580 extra_nodes.push_back(extra_node); 564 extra_nodes.push_back(extra_node);
581 client.SetExtraNodesToLoad(extra_nodes.Pass());
582 565
583 scoped_ptr<BookmarkModel> model(client.CreateModel()); 566 scoped_ptr<BookmarkModel> model(
567 TestBookmarkClient::CreateModel(extra_nodes.Pass(), nullptr, false));
584 EXPECT_TRUE(model->bookmark_bar_node()->empty()); 568 EXPECT_TRUE(model->bookmark_bar_node()->empty());
585 EXPECT_TRUE(model->other_node()->empty()); 569 EXPECT_TRUE(model->other_node()->empty());
586 EXPECT_TRUE(model->mobile_node()->empty()); 570 EXPECT_TRUE(model->mobile_node()->empty());
587 EXPECT_TRUE(extra_node->empty()); 571 EXPECT_TRUE(extra_node->empty());
588 572
589 const base::string16 title = base::ASCIIToUTF16("Title"); 573 const base::string16 title = base::ASCIIToUTF16("Title");
590 const GURL url("http://google.com"); 574 const GURL url("http://google.com");
591 model->AddURL(model->bookmark_bar_node(), 0, title, url); 575 model->AddURL(model->bookmark_bar_node(), 0, title, url);
592 model->AddURL(model->other_node(), 0, title, url); 576 model->AddURL(model->other_node(), 0, title, url);
593 model->AddURL(model->mobile_node(), 0, title, url); 577 model->AddURL(model->mobile_node(), 0, title, url);
594 model->AddURL(extra_node, 0, title, url); 578 model->AddURL(extra_node, 0, title, url);
595 579
596 std::vector<const BookmarkNode*> nodes; 580 std::vector<const BookmarkNode*> nodes;
597 model->GetNodesByURL(url, &nodes); 581 model->GetNodesByURL(url, &nodes);
598 ASSERT_EQ(4u, nodes.size()); 582 ASSERT_EQ(4u, nodes.size());
599 583
600 RemoveAllBookmarks(model.get(), url); 584 RemoveAllBookmarks(model.get(), url);
601 585
602 nodes.clear(); 586 nodes.clear();
603 model->GetNodesByURL(url, &nodes); 587 model->GetNodesByURL(url, &nodes);
604 ASSERT_EQ(1u, nodes.size()); 588 ASSERT_EQ(1u, nodes.size());
605 EXPECT_TRUE(model->bookmark_bar_node()->empty()); 589 EXPECT_TRUE(model->bookmark_bar_node()->empty());
606 EXPECT_TRUE(model->other_node()->empty()); 590 EXPECT_TRUE(model->other_node()->empty());
607 EXPECT_TRUE(model->mobile_node()->empty()); 591 EXPECT_TRUE(model->mobile_node()->empty());
608 EXPECT_EQ(1, extra_node->child_count()); 592 EXPECT_EQ(1, extra_node->child_count());
609 } 593 }
610 594
611 } // namespace 595 } // namespace
612 } // namespace bookmarks 596 } // namespace bookmarks
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698