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

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: Make unittest actually test changes 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
« no previous file with comments | « components/bookmarks/browser/bookmark_node_data.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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:
50 Clipboard& clipboard() { return *ui::Clipboard::GetForCurrentThread(); }
51
47 base::ScopedTempDir profile_dir_; 52 base::ScopedTempDir profile_dir_;
48 TestBookmarkClient client_; 53 TestBookmarkClient client_;
49 scoped_ptr<BookmarkModel> model_; 54 scoped_ptr<BookmarkModel> model_;
50 scoped_ptr<ui::PlatformEventSource> event_source_; 55 scoped_ptr<ui::PlatformEventSource> event_source_;
56 base::MessageLoopForUI loop_;
51 57
52 DISALLOW_COPY_AND_ASSIGN(BookmarkNodeDataTest); 58 DISALLOW_COPY_AND_ASSIGN(BookmarkNodeDataTest);
53 }; 59 };
54 60
55 namespace { 61 namespace {
56 62
57 ui::OSExchangeData::Provider* CloneProvider(const ui::OSExchangeData& data) { 63 ui::OSExchangeData::Provider* CloneProvider(const ui::OSExchangeData& data) {
58 return data.provider().Clone(); 64 return data.provider().Clone();
59 } 65 }
60 66
(...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after
262 read_data.GetNodes(model(), GetProfilePath()); 268 read_data.GetNodes(model(), GetProfilePath());
263 ASSERT_EQ(2u, read_nodes.size()); 269 ASSERT_EQ(2u, read_nodes.size());
264 EXPECT_TRUE(read_nodes[0] == folder); 270 EXPECT_TRUE(read_nodes[0] == folder);
265 EXPECT_TRUE(read_nodes[1] == url_node); 271 EXPECT_TRUE(read_nodes[1] == url_node);
266 272
267 // Asking for the first node should return NULL with more than one element 273 // Asking for the first node should return NULL with more than one element
268 // present. 274 // present.
269 EXPECT_TRUE(read_data.GetFirstNode(model(), GetProfilePath()) == NULL); 275 EXPECT_TRUE(read_data.GetFirstNode(model(), GetProfilePath()) == NULL);
270 } 276 }
271 277
278 TEST_F(BookmarkNodeDataTest, WriteToClipboardURL) {
279 BookmarkNodeData data;
280 GURL url(GURL("http://foo.com"));
281 const base::string16 title(ASCIIToUTF16("blah"));
282
283 data.ReadFromTuple(url, title);
284 data.WriteToClipboard(ui::CLIPBOARD_TYPE_COPY_PASTE);
285
286 // Now read the data back in.
287 base::string16 clipboard_result;
288 clipboard().ReadText(CLIPBOARD_TYPE_COPY_PASTE, &clipboard_result);
289 EXPECT_EQ(UTF8ToUTF16(url.spec()), clipboard_result);
290 }
291
292 TEST_F(BookmarkNodeDataTest, WriteToClipboardMultipleURLs) {
293 BookmarkNodeData data;
294 const BookmarkNode* root = model()->bookmark_bar_node();
295 GURL url(GURL("http://foo.com"));
296 const base::string16 title(ASCIIToUTF16("blah"));
297 GURL url2(GURL("http://bar.com"));
298 const base::string16 title2(ASCIIToUTF16("blah2"));
299 const BookmarkNode* url_node = model()->AddURL(root, 0, title, url);
300 const BookmarkNode* url_node2 = model()->AddURL(root, 1, title2, url2);
301 std::vector<const BookmarkNode*> nodes;
302 nodes.push_back(url_node);
303 nodes.push_back(url_node2);
304
305 data.ReadFromVector(nodes);
306 data.WriteToClipboard(ui::CLIPBOARD_TYPE_COPY_PASTE);
307
308 // Now read the data back in.
309 base::string16 combined_text;
310 base::string16 new_line = base::ASCIIToUTF16("\n");
311 combined_text = UTF8ToUTF16(url.spec()) + new_line
312 + UTF8ToUTF16(url2.spec());
313 base::string16 clipboard_result;
314 clipboard().ReadText(CLIPBOARD_TYPE_COPY_PASTE, &clipboard_result);
315 EXPECT_EQ(combined_text, clipboard_result);
316 }
317
318 TEST_F(BookmarkNodeDataTest, WriteToClipboardEmptyFolder) {
319 BookmarkNodeData data;
320 const BookmarkNode* root = model()->bookmark_bar_node();
321 const BookmarkNode* folder = model()->AddFolder(root, 0, ASCIIToUTF16("g1"));
322 std::vector<const BookmarkNode*> nodes;
323 nodes.push_back(folder);
324
325 data.ReadFromVector(nodes);
326 data.WriteToClipboard(ui::CLIPBOARD_TYPE_COPY_PASTE);
327
328 // Now read the data back in.
329 base::string16 clipboard_result;
330 clipboard().ReadText(CLIPBOARD_TYPE_COPY_PASTE, &clipboard_result);
331 EXPECT_EQ(ASCIIToUTF16("g1"), clipboard_result);
332 }
333
334 TEST_F(BookmarkNodeDataTest, WriteToClipboardFolderWithChildren) {
335 BookmarkNodeData data;
336 const BookmarkNode* root = model()->bookmark_bar_node();
337 const BookmarkNode* folder = model()->AddFolder(root, 0, ASCIIToUTF16("g1"));
338 GURL url(GURL("http://foo.com"));
339 const base::string16 title(ASCIIToUTF16("blah"));
340 const BookmarkNode* url_node = model()->AddURL(folder, 0, title, url);
341 std::vector<const BookmarkNode*> nodes;
342 nodes.push_back(folder);
343
344 data.ReadFromVector(nodes);
345 data.WriteToClipboard(ui::CLIPBOARD_TYPE_COPY_PASTE);
346
347 // Now read the data back in.
348 base::string16 clipboard_result;
349 clipboard().ReadText(CLIPBOARD_TYPE_COPY_PASTE, &clipboard_result);
350 EXPECT_EQ(ASCIIToUTF16("g1"), clipboard_result);
351 }
352
353 TEST_F(BookmarkNodeDataTest, WriteToClipboardFolderAndURL) {
sky 2014/10/21 00:07:16 This is the only test that hits your code, right?
354 BookmarkNodeData data;
355 GURL url(GURL("http://foo.com"));
356 const base::string16 title(ASCIIToUTF16("blah"));
357 const BookmarkNode* root = model()->bookmark_bar_node();
358 const BookmarkNode* url_node = model()->AddURL(root, 0, title, url);
359 const BookmarkNode* folder = model()->AddFolder(root, 0, ASCIIToUTF16("g1"));
360 std::vector<const BookmarkNode*> nodes;
361 nodes.push_back(url_node);
362 nodes.push_back(folder);
363
364 data.ReadFromVector(nodes);
365 data.WriteToClipboard(ui::CLIPBOARD_TYPE_COPY_PASTE);
366
367 // Now read the data back in.
368 base::string16 combined_text;
369 base::string16 new_line = base::ASCIIToUTF16("\n");
370 combined_text = title + new_line + ASCIIToUTF16(url.spec());
371 base::string16 clipboard_result;
372 clipboard().ReadText(CLIPBOARD_TYPE_COPY_PASTE, &clipboard_result);
373 EXPECT_EQ(combined_text, clipboard_result);
374 }
375
272 // Tests reading/writing of meta info. 376 // Tests reading/writing of meta info.
273 TEST_F(BookmarkNodeDataTest, MetaInfo) { 377 TEST_F(BookmarkNodeDataTest, MetaInfo) {
274 // Create a node containing meta info. 378 // Create a node containing meta info.
275 const BookmarkNode* node = model()->AddURL(model()->other_node(), 379 const BookmarkNode* node = model()->AddURL(model()->other_node(),
276 0, 380 0,
277 ASCIIToUTF16("foo bar"), 381 ASCIIToUTF16("foo bar"),
278 GURL("http://www.google.com")); 382 GURL("http://www.google.com"));
279 model()->SetNodeMetaInfo(node, "somekey", "somevalue"); 383 model()->SetNodeMetaInfo(node, "somekey", "somevalue");
280 model()->SetNodeMetaInfo(node, "someotherkey", "someothervalue"); 384 model()->SetNodeMetaInfo(node, "someotherkey", "someothervalue");
281 385
282 BookmarkNodeData node_data(node); 386 BookmarkNodeData node_data(node);
283 ui::OSExchangeData data; 387 ui::OSExchangeData data;
284 node_data.Write(GetProfilePath(), &data); 388 node_data.Write(GetProfilePath(), &data);
285 389
286 // Read the data back in. 390 // Read the data back in.
287 ui::OSExchangeData data2(CloneProvider(data)); 391 ui::OSExchangeData data2(CloneProvider(data));
288 BookmarkNodeData read_data; 392 BookmarkNodeData read_data;
289 EXPECT_TRUE(read_data.Read(data2)); 393 EXPECT_TRUE(read_data.Read(data2));
290 EXPECT_TRUE(read_data.is_valid()); 394 EXPECT_TRUE(read_data.is_valid());
291 ASSERT_EQ(1u, read_data.elements.size()); 395 ASSERT_EQ(1u, read_data.elements.size());
292 396
293 // Verify that the read data contains the same meta info. 397 // Verify that the read data contains the same meta info.
294 BookmarkNode::MetaInfoMap meta_info_map = read_data.elements[0].meta_info_map; 398 BookmarkNode::MetaInfoMap meta_info_map = read_data.elements[0].meta_info_map;
295 EXPECT_EQ(2u, meta_info_map.size()); 399 EXPECT_EQ(2u, meta_info_map.size());
296 EXPECT_EQ("somevalue", meta_info_map["somekey"]); 400 EXPECT_EQ("somevalue", meta_info_map["somekey"]);
297 EXPECT_EQ("someothervalue", meta_info_map["someotherkey"]); 401 EXPECT_EQ("someothervalue", meta_info_map["someotherkey"]);
298 } 402 }
299 403
300 } // namespace bookmarks 404 } // namespace bookmarks
OLDNEW
« no previous file with comments | « components/bookmarks/browser/bookmark_node_data.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698