 Chromium Code Reviews
 Chromium Code Reviews Issue 634523004:
  Allow copying of multiple bookmarks from within the bookmark manager.  (Closed) 
  Base URL: https://chromium.googlesource.com/chromium/src.git@master
    
  
    Issue 634523004:
  Allow copying of multiple bookmarks from within the bookmark manager.  (Closed) 
  Base URL: https://chromium.googlesource.com/chromium/src.git@master| Index: components/bookmarks/browser/bookmark_node_data_unittest.cc | 
| diff --git a/components/bookmarks/browser/bookmark_node_data_unittest.cc b/components/bookmarks/browser/bookmark_node_data_unittest.cc | 
| index 4e93fa298d21e7d20f3b008b2a4f3c52bdd43cf8..d15b12846007834ca13588a8e084b08cdfd33574 100644 | 
| --- a/components/bookmarks/browser/bookmark_node_data_unittest.cc | 
| +++ b/components/bookmarks/browser/bookmark_node_data_unittest.cc | 
| @@ -5,6 +5,7 @@ | 
| #include "base/basictypes.h" | 
| #include "base/files/scoped_temp_dir.h" | 
| #include "base/memory/scoped_ptr.h" | 
| +#include "base/message_loop/message_loop.h" | 
| #include "base/strings/string16.h" | 
| #include "base/strings/utf_string_conversions.h" | 
| #include "components/bookmarks/browser/bookmark_model.h" | 
| @@ -12,6 +13,7 @@ | 
| #include "components/bookmarks/test/bookmark_test_helpers.h" | 
| #include "components/bookmarks/test/test_bookmark_client.h" | 
| #include "testing/gtest/include/gtest/gtest.h" | 
| +#include "ui/base/clipboard/clipboard.h" | 
| #include "ui/base/dragdrop/os_exchange_data.h" | 
| #include "ui/events/platform/platform_event_source.h" | 
| #include "url/gurl.h" | 
| @@ -37,6 +39,7 @@ class BookmarkNodeDataTest : public testing::Test { | 
| event_source_.reset(); | 
| bool success = profile_dir_.Delete(); | 
| ASSERT_TRUE(success); | 
| + ui::Clipboard::DestroyClipboardForCurrentThread(); | 
| } | 
| const base::FilePath& GetProfilePath() const { return profile_dir_.path(); } | 
| @@ -48,6 +51,7 @@ class BookmarkNodeDataTest : public testing::Test { | 
| TestBookmarkClient client_; | 
| scoped_ptr<BookmarkModel> model_; | 
| scoped_ptr<ui::PlatformEventSource> event_source_; | 
| + base::MessageLoopForUI loop_; | 
| DISALLOW_COPY_AND_ASSIGN(BookmarkNodeDataTest); | 
| }; | 
| @@ -269,6 +273,117 @@ TEST_F(BookmarkNodeDataTest, MultipleNodes) { | 
| EXPECT_TRUE(read_data.GetFirstNode(model(), GetProfilePath()) == NULL); | 
| } | 
| +TEST_F(BookmarkNodeDataTest, WriteToClipboardURL) { | 
| + BookmarkNodeData data; | 
| + GURL url(GURL("http://foo.com")); | 
| + const base::string16 title(ASCIIToUTF16("blah")); | 
| + | 
| + // 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.
 | 
| + data.ReadFromTuple(url, title); | 
| + data.WriteToClipboard(ui::CLIPBOARD_TYPE_COPY_PASTE); | 
| + | 
| + // Now read the data back in. | 
| + BookmarkNodeData read_data; | 
| + read_data.ReadFromClipboard(ui::CLIPBOARD_TYPE_COPY_PASTE); | 
| + ASSERT_EQ(1u, read_data.elements.size()); | 
| + EXPECT_TRUE(read_data.elements[0].is_url); | 
| + EXPECT_EQ(url, read_data.elements[0].url); | 
| + EXPECT_EQ(title, read_data.elements[0].title); | 
| +} | 
| + | 
| +TEST_F(BookmarkNodeDataTest, WriteToClipboardMultipleURLs) { | 
| + BookmarkNodeData data; | 
| + const BookmarkNode* root = model()->bookmark_bar_node(); | 
| + GURL url(GURL("http://foo.com")); | 
| + const base::string16 title(ASCIIToUTF16("blah")); | 
| + GURL url2(GURL("http://bar.com")); | 
| + const base::string16 title2(ASCIIToUTF16("blah2")); | 
| + const BookmarkNode* url_node = model()->AddURL(root, 0, title, url); | 
| + const BookmarkNode* url_node2 = model()->AddURL(root, 1, title2, url2); | 
| + std::vector<const BookmarkNode*> nodes; | 
| + nodes.push_back(url_node); | 
| + nodes.push_back(url_node2); | 
| + | 
| + // Write to clipboard | 
| + data.ReadFromVector(nodes); | 
| + data.WriteToClipboard(ui::CLIPBOARD_TYPE_COPY_PASTE); | 
| + | 
| + // Now read the data back in. | 
| + BookmarkNodeData read_data; | 
| + read_data.ReadFromClipboard(ui::CLIPBOARD_TYPE_COPY_PASTE); | 
| + ASSERT_EQ(2u, read_data.elements.size()); | 
| + EXPECT_TRUE(read_data.elements[0].is_url); | 
| + EXPECT_EQ(url, read_data.elements[0].url); | 
| + EXPECT_TRUE(read_data.elements[1].is_url); | 
| + EXPECT_EQ(url2, read_data.elements[1].url); | 
| +} | 
| + | 
| +TEST_F(BookmarkNodeDataTest, WriteToClipboardEmptyFolder) { | 
| + BookmarkNodeData data; | 
| + const BookmarkNode* root = model()->bookmark_bar_node(); | 
| + const BookmarkNode* folder = model()->AddFolder(root, 0, ASCIIToUTF16("g1")); | 
| + std::vector<const BookmarkNode*> nodes; | 
| + nodes.push_back(folder); | 
| + | 
| + // Write to clipboard | 
| + data.ReadFromVector(nodes); | 
| + data.WriteToClipboard(ui::CLIPBOARD_TYPE_COPY_PASTE); | 
| + | 
| + // Now read the data back in. | 
| + BookmarkNodeData read_data; | 
| + read_data.ReadFromClipboard(ui::CLIPBOARD_TYPE_COPY_PASTE); | 
| + ASSERT_EQ(1u, read_data.elements.size()); | 
| + EXPECT_FALSE(read_data.elements[0].is_url); | 
| + EXPECT_EQ(ASCIIToUTF16("g1"), read_data.elements[0].title); | 
| +} | 
| + | 
| +TEST_F(BookmarkNodeDataTest, WriteToClipboardFolderWithChildren) { | 
| + BookmarkNodeData data; | 
| + const BookmarkNode* root = model()->bookmark_bar_node(); | 
| + const BookmarkNode* folder = model()->AddFolder(root, 0, ASCIIToUTF16("g1")); | 
| + GURL url(GURL("http://foo.com")); | 
| + const base::string16 title(ASCIIToUTF16("blah")); | 
| + const BookmarkNode* url_node = model()->AddURL(folder, 0, title, url); | 
| + std::vector<const BookmarkNode*> nodes; | 
| + nodes.push_back(folder); | 
| + | 
| + // Write to clipboard | 
| + data.ReadFromVector(nodes); | 
| + data.WriteToClipboard(ui::CLIPBOARD_TYPE_COPY_PASTE); | 
| + | 
| + // Now read the data back in. | 
| + BookmarkNodeData read_data; | 
| + read_data.ReadFromClipboard(ui::CLIPBOARD_TYPE_COPY_PASTE); | 
| + ASSERT_EQ(1u, read_data.elements.size()); | 
| + EXPECT_FALSE(read_data.elements[0].is_url); | 
| + EXPECT_EQ(ASCIIToUTF16("g1"), read_data.elements[0].title); | 
| +} | 
| + | 
| +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
 | 
| + BookmarkNodeData data; | 
| + GURL url(GURL("http://foo.com")); | 
| + const base::string16 title(ASCIIToUTF16("blah")); | 
| + const BookmarkNode* root = model()->bookmark_bar_node(); | 
| + const BookmarkNode* url_node = model()->AddURL(root, 0, title, url); | 
| + const BookmarkNode* folder = model()->AddFolder(root, 0, ASCIIToUTF16("g1")); | 
| + std::vector<const BookmarkNode*> nodes; | 
| + nodes.push_back(url_node); | 
| + nodes.push_back(folder); | 
| + | 
| + // Write to clipboard | 
| + data.ReadFromVector(nodes); | 
| + data.WriteToClipboard(ui::CLIPBOARD_TYPE_COPY_PASTE); | 
| + | 
| + // Now read the data back in. | 
| + BookmarkNodeData read_data; | 
| + read_data.ReadFromClipboard(ui::CLIPBOARD_TYPE_COPY_PASTE); | 
| + ASSERT_EQ(2u, read_data.elements.size()); | 
| + EXPECT_TRUE(read_data.elements[0].is_url); | 
| + EXPECT_EQ(url, read_data.elements[0].url); | 
| + EXPECT_FALSE(read_data.elements[1].is_url); | 
| + EXPECT_EQ(ASCIIToUTF16("g1"), read_data.elements[1].title); | 
| +} | 
| + | 
| // Tests reading/writing of meta info. | 
| TEST_F(BookmarkNodeDataTest, MetaInfo) { | 
| // Create a node containing meta info. |