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

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