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

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

Issue 634523004: Allow copying of multiple bookmarks from within the bookmark manager. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Attempt to fix unittest Created 6 years, 2 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 "base/basictypes.h" 5 #include "base/basictypes.h"
6 #include "base/files/scoped_temp_dir.h" 6 #include "base/files/scoped_temp_dir.h"
7 #include "base/memory/scoped_ptr.h" 7 #include "base/memory/scoped_ptr.h"
8 #include "base/message_loop/message_loop.h"
8 #include "base/strings/string16.h" 9 #include "base/strings/string16.h"
9 #include "base/strings/utf_string_conversions.h" 10 #include "base/strings/utf_string_conversions.h"
10 #include "components/bookmarks/browser/bookmark_model.h" 11 #include "components/bookmarks/browser/bookmark_model.h"
11 #include "components/bookmarks/browser/bookmark_node_data.h" 12 #include "components/bookmarks/browser/bookmark_node_data.h"
12 #include "components/bookmarks/test/bookmark_test_helpers.h" 13 #include "components/bookmarks/test/bookmark_test_helpers.h"
13 #include "components/bookmarks/test/test_bookmark_client.h" 14 #include "components/bookmarks/test/test_bookmark_client.h"
14 #include "testing/gtest/include/gtest/gtest.h" 15 #include "testing/gtest/include/gtest/gtest.h"
16 #include "ui/base/clipboard/clipboard.h"
15 #include "ui/base/dragdrop/os_exchange_data.h" 17 #include "ui/base/dragdrop/os_exchange_data.h"
16 #include "ui/events/platform/platform_event_source.h" 18 #include "ui/events/platform/platform_event_source.h"
17 #include "url/gurl.h" 19 #include "url/gurl.h"
18 20
19 using base::ASCIIToUTF16; 21 using base::ASCIIToUTF16;
20 22
21 namespace bookmarks { 23 namespace bookmarks {
22 24
23 class BookmarkNodeDataTest : public testing::Test { 25 class BookmarkNodeDataTest : public testing::Test {
24 public: 26 public:
25 BookmarkNodeDataTest() {} 27 BookmarkNodeDataTest() {}
26 28
27 virtual void SetUp() OVERRIDE { 29 virtual void SetUp() OVERRIDE {
28 event_source_ = ui::PlatformEventSource::CreateDefault(); 30 event_source_ = ui::PlatformEventSource::CreateDefault();
29 model_ = client_.CreateModel(); 31 model_ = client_.CreateModel();
30 test::WaitForBookmarkModelToLoad(model_.get()); 32 test::WaitForBookmarkModelToLoad(model_.get());
31 bool success = profile_dir_.CreateUniqueTempDir(); 33 bool success = profile_dir_.CreateUniqueTempDir();
32 ASSERT_TRUE(success); 34 ASSERT_TRUE(success);
33 } 35 }
34 36
35 virtual void TearDown() OVERRIDE { 37 virtual void TearDown() OVERRIDE {
36 model_.reset(); 38 model_.reset();
37 event_source_.reset(); 39 event_source_.reset();
38 bool success = profile_dir_.Delete(); 40 bool success = profile_dir_.Delete();
39 ASSERT_TRUE(success); 41 ASSERT_TRUE(success);
42 ui::Clipboard::DestroyClipboardForCurrentThread();
40 } 43 }
41 44
42 const base::FilePath& GetProfilePath() const { return profile_dir_.path(); } 45 const base::FilePath& GetProfilePath() const { return profile_dir_.path(); }
43 46
44 BookmarkModel* model() { return model_.get(); } 47 BookmarkModel* model() { return model_.get(); }
45 48
46 private: 49 private:
47 base::ScopedTempDir profile_dir_; 50 base::ScopedTempDir profile_dir_;
48 TestBookmarkClient client_; 51 TestBookmarkClient client_;
49 scoped_ptr<BookmarkModel> model_; 52 scoped_ptr<BookmarkModel> model_;
50 scoped_ptr<ui::PlatformEventSource> event_source_; 53 scoped_ptr<ui::PlatformEventSource> event_source_;
54 base::MessageLoopForUI loop_;
51 55
52 DISALLOW_COPY_AND_ASSIGN(BookmarkNodeDataTest); 56 DISALLOW_COPY_AND_ASSIGN(BookmarkNodeDataTest);
53 }; 57 };
54 58
55 namespace { 59 namespace {
56 60
57 ui::OSExchangeData::Provider* CloneProvider(const ui::OSExchangeData& data) { 61 ui::OSExchangeData::Provider* CloneProvider(const ui::OSExchangeData& data) {
58 return data.provider().Clone(); 62 return data.provider().Clone();
59 } 63 }
60 64
(...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after
262 read_data.GetNodes(model(), GetProfilePath()); 266 read_data.GetNodes(model(), GetProfilePath());
263 ASSERT_EQ(2u, read_nodes.size()); 267 ASSERT_EQ(2u, read_nodes.size());
264 EXPECT_TRUE(read_nodes[0] == folder); 268 EXPECT_TRUE(read_nodes[0] == folder);
265 EXPECT_TRUE(read_nodes[1] == url_node); 269 EXPECT_TRUE(read_nodes[1] == url_node);
266 270
267 // Asking for the first node should return NULL with more than one element 271 // Asking for the first node should return NULL with more than one element
268 // present. 272 // present.
269 EXPECT_TRUE(read_data.GetFirstNode(model(), GetProfilePath()) == NULL); 273 EXPECT_TRUE(read_data.GetFirstNode(model(), GetProfilePath()) == NULL);
270 } 274 }
271 275
276 TEST_F(BookmarkNodeDataTest, WriteToClipboardURL) {
277 BookmarkNodeData data;
278 GURL url(GURL("http://foo.com"));
279 const base::string16 title(ASCIIToUTF16("blah"));
280
281 // Write to clipboard
sky 2014/10/20 20:37:12 nit: this comment here and in other places don't p
hichris123 2014/10/20 23:12:59 Done.
282 data.ReadFromTuple(url, title);
283 data.WriteToClipboard(ui::CLIPBOARD_TYPE_COPY_PASTE);
284
285 // Now read the data back in.
286 BookmarkNodeData read_data;
287 read_data.ReadFromClipboard(ui::CLIPBOARD_TYPE_COPY_PASTE);
288 ASSERT_EQ(1u, read_data.elements.size());
289 EXPECT_TRUE(read_data.elements[0].is_url);
290 EXPECT_EQ(url, read_data.elements[0].url);
291 EXPECT_EQ(title, read_data.elements[0].title);
292 }
293
294 TEST_F(BookmarkNodeDataTest, WriteToClipboardMultipleURLs) {
295 BookmarkNodeData data;
296 const BookmarkNode* root = model()->bookmark_bar_node();
297 GURL url(GURL("http://foo.com"));
298 const base::string16 title(ASCIIToUTF16("blah"));
299 GURL url2(GURL("http://bar.com"));
300 const base::string16 title2(ASCIIToUTF16("blah2"));
301 const BookmarkNode* url_node = model()->AddURL(root, 0, title, url);
302 const BookmarkNode* url_node2 = model()->AddURL(root, 1, title2, url2);
303 std::vector<const BookmarkNode*> nodes;
304 nodes.push_back(url_node);
305 nodes.push_back(url_node2);
306
307 // Write to clipboard
308 data.ReadFromVector(nodes);
309 data.WriteToClipboard(ui::CLIPBOARD_TYPE_COPY_PASTE);
310
311 // Now read the data back in.
312 BookmarkNodeData read_data;
313 read_data.ReadFromClipboard(ui::CLIPBOARD_TYPE_COPY_PASTE);
314 ASSERT_EQ(2u, read_data.elements.size());
315 EXPECT_TRUE(read_data.elements[0].is_url);
316 EXPECT_EQ(url, read_data.elements[0].url);
317 EXPECT_TRUE(read_data.elements[1].is_url);
318 EXPECT_EQ(url2, read_data.elements[1].url);
319 }
320
321 TEST_F(BookmarkNodeDataTest, WriteToClipboardEmptyFolder) {
322 BookmarkNodeData data;
323 const BookmarkNode* root = model()->bookmark_bar_node();
324 const BookmarkNode* folder = model()->AddFolder(root, 0, ASCIIToUTF16("g1"));
325 std::vector<const BookmarkNode*> nodes;
326 nodes.push_back(folder);
327
328 // Write to clipboard
329 data.ReadFromVector(nodes);
330 data.WriteToClipboard(ui::CLIPBOARD_TYPE_COPY_PASTE);
331
332 // Now read the data back in.
333 BookmarkNodeData read_data;
334 read_data.ReadFromClipboard(ui::CLIPBOARD_TYPE_COPY_PASTE);
335 ASSERT_EQ(1u, read_data.elements.size());
336 EXPECT_FALSE(read_data.elements[0].is_url);
337 EXPECT_EQ(ASCIIToUTF16("g1"), read_data.elements[0].title);
338 }
339
340 TEST_F(BookmarkNodeDataTest, WriteToClipboardFolderWithChildren) {
341 BookmarkNodeData data;
342 const BookmarkNode* root = model()->bookmark_bar_node();
343 const BookmarkNode* folder = model()->AddFolder(root, 0, ASCIIToUTF16("g1"));
344 GURL url(GURL("http://foo.com"));
345 const base::string16 title(ASCIIToUTF16("blah"));
346 const BookmarkNode* url_node = model()->AddURL(folder, 0, title, url);
347 std::vector<const BookmarkNode*> nodes;
348 nodes.push_back(folder);
349
350 // Write to clipboard
351 data.ReadFromVector(nodes);
352 data.WriteToClipboard(ui::CLIPBOARD_TYPE_COPY_PASTE);
353
354 // Now read the data back in.
355 BookmarkNodeData read_data;
356 read_data.ReadFromClipboard(ui::CLIPBOARD_TYPE_COPY_PASTE);
357 ASSERT_EQ(1u, read_data.elements.size());
358 EXPECT_FALSE(read_data.elements[0].is_url);
359 EXPECT_EQ(ASCIIToUTF16("g1"), read_data.elements[0].title);
360 }
361
362 TEST_F(BookmarkNodeDataTest, WriteToClipboardFolderAndURL) {
sky 2014/10/20 20:37:11 Do any of these tests actually verify the code you
hichris123 2014/10/20 20:41:12 Only WriteToClipboardURL should be verifying exist
363 BookmarkNodeData data;
364 GURL url(GURL("http://foo.com"));
365 const base::string16 title(ASCIIToUTF16("blah"));
366 const BookmarkNode* root = model()->bookmark_bar_node();
367 const BookmarkNode* url_node = model()->AddURL(root, 0, title, url);
368 const BookmarkNode* folder = model()->AddFolder(root, 0, ASCIIToUTF16("g1"));
369 std::vector<const BookmarkNode*> nodes;
370 nodes.push_back(url_node);
371 nodes.push_back(folder);
372
373 // Write to clipboard
374 data.ReadFromVector(nodes);
375 data.WriteToClipboard(ui::CLIPBOARD_TYPE_COPY_PASTE);
376
377 // Now read the data back in.
378 BookmarkNodeData read_data;
379 read_data.ReadFromClipboard(ui::CLIPBOARD_TYPE_COPY_PASTE);
380 ASSERT_EQ(2u, read_data.elements.size());
381 EXPECT_TRUE(read_data.elements[0].is_url);
382 EXPECT_EQ(url, read_data.elements[0].url);
383 EXPECT_FALSE(read_data.elements[1].is_url);
384 EXPECT_EQ(ASCIIToUTF16("g1"), read_data.elements[1].title);
385 }
386
272 // Tests reading/writing of meta info. 387 // Tests reading/writing of meta info.
273 TEST_F(BookmarkNodeDataTest, MetaInfo) { 388 TEST_F(BookmarkNodeDataTest, MetaInfo) {
274 // Create a node containing meta info. 389 // Create a node containing meta info.
275 const BookmarkNode* node = model()->AddURL(model()->other_node(), 390 const BookmarkNode* node = model()->AddURL(model()->other_node(),
276 0, 391 0,
277 ASCIIToUTF16("foo bar"), 392 ASCIIToUTF16("foo bar"),
278 GURL("http://www.google.com")); 393 GURL("http://www.google.com"));
279 model()->SetNodeMetaInfo(node, "somekey", "somevalue"); 394 model()->SetNodeMetaInfo(node, "somekey", "somevalue");
280 model()->SetNodeMetaInfo(node, "someotherkey", "someothervalue"); 395 model()->SetNodeMetaInfo(node, "someotherkey", "someothervalue");
281 396
282 BookmarkNodeData node_data(node); 397 BookmarkNodeData node_data(node);
283 ui::OSExchangeData data; 398 ui::OSExchangeData data;
284 node_data.Write(GetProfilePath(), &data); 399 node_data.Write(GetProfilePath(), &data);
285 400
286 // Read the data back in. 401 // Read the data back in.
287 ui::OSExchangeData data2(CloneProvider(data)); 402 ui::OSExchangeData data2(CloneProvider(data));
288 BookmarkNodeData read_data; 403 BookmarkNodeData read_data;
289 EXPECT_TRUE(read_data.Read(data2)); 404 EXPECT_TRUE(read_data.Read(data2));
290 EXPECT_TRUE(read_data.is_valid()); 405 EXPECT_TRUE(read_data.is_valid());
291 ASSERT_EQ(1u, read_data.elements.size()); 406 ASSERT_EQ(1u, read_data.elements.size());
292 407
293 // Verify that the read data contains the same meta info. 408 // Verify that the read data contains the same meta info.
294 BookmarkNode::MetaInfoMap meta_info_map = read_data.elements[0].meta_info_map; 409 BookmarkNode::MetaInfoMap meta_info_map = read_data.elements[0].meta_info_map;
295 EXPECT_EQ(2u, meta_info_map.size()); 410 EXPECT_EQ(2u, meta_info_map.size());
296 EXPECT_EQ("somevalue", meta_info_map["somekey"]); 411 EXPECT_EQ("somevalue", meta_info_map["somekey"]);
297 EXPECT_EQ("someothervalue", meta_info_map["someotherkey"]); 412 EXPECT_EQ("someothervalue", meta_info_map["someotherkey"]);
298 } 413 }
299 414
300 } // namespace bookmarks 415 } // namespace bookmarks
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698