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

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

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

Powered by Google App Engine
This is Rietveld 408576698