1 // Copyright 2013 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "base/message_loop/message_loop.h" 6 #include "base/pickle.h" 7 #include "base/strings/utf_string_conversions.h" 8 #include "testing/gtest/include/gtest/gtest.h" 9 #include "testing/platform_test.h" 10 #include "ui/base/dragdrop/os_exchange_data.h" 11 #include "url/gurl.h" 12 13 namespace ui { 14 15 class OSExchangeDataTest : public PlatformTest { 16 private: 17 base::MessageLoopForUI message_loop_; 18 }; 19 20 TEST_F(OSExchangeDataTest, StringDataGetAndSet) { 21 OSExchangeData data; 22 string16 input = ASCIIToUTF16("I can has cheezburger?"); 23 data.SetString(input); 24 25 OSExchangeData data2(data.provider().Clone()); 26 string16 output; 27 EXPECT_TRUE(data2.GetString(&output)); 28 EXPECT_EQ(input, output); 29 std::string url_spec = "http://www.goats.com/"; 30 GURL url(url_spec); 31 string16 title; 32 EXPECT_FALSE( 33 data2.GetURLAndTitle(OSExchangeData::CONVERT_FILENAMES, &url, &title)); 34 // No URLs in |data|, so url should be untouched. 35 EXPECT_EQ(url_spec, url.spec()); 36 } 37 38 TEST_F(OSExchangeDataTest, TestURLExchangeFormats) { 39 OSExchangeData data; 40 std::string url_spec = "http://www.google.com/"; 41 GURL url(url_spec); 42 string16 url_title = ASCIIToUTF16("www.google.com"); 43 data.SetURL(url, url_title); 44 string16 output; 45 46 OSExchangeData data2(data.provider().Clone()); 47 48 // URL spec and title should match 49 GURL output_url; 50 string16 output_title; 51 EXPECT_TRUE(data2.GetURLAndTitle( 52 OSExchangeData::CONVERT_FILENAMES, &output_url, &output_title)); 53 EXPECT_EQ(url_spec, output_url.spec()); 54 EXPECT_EQ(url_title, output_title); 55 string16 output_string; 56 57 // URL should be the raw text response 58 EXPECT_TRUE(data2.GetString(&output_string)); 59 EXPECT_EQ(url_spec, UTF16ToUTF8(output_string)); 60 } 61 62 TEST_F(OSExchangeDataTest, TestPickledData) { 63 const OSExchangeData::CustomFormat kTestFormat = 64 ui::Clipboard::GetFormatType("application/vnd.chromium.test"); 65 66 Pickle saved_pickle; 67 saved_pickle.WriteInt(1); 68 saved_pickle.WriteInt(2); 69 OSExchangeData data; 70 data.SetPickledData(kTestFormat, saved_pickle); 71 72 OSExchangeData copy(data.provider().Clone()); 73 EXPECT_TRUE(copy.HasCustomFormat(kTestFormat)); 74 75 Pickle restored_pickle; 76 EXPECT_TRUE(copy.GetPickledData(kTestFormat, &restored_pickle)); 77 PickleIterator iterator(restored_pickle); 78 int value; 79 EXPECT_TRUE(restored_pickle.ReadInt(&iterator, &value)); 80 EXPECT_EQ(1, value); 81 EXPECT_TRUE(restored_pickle.ReadInt(&iterator, &value)); 82 EXPECT_EQ(2, value); 83 } 84 85 TEST_F(OSExchangeDataTest, TestHTML) { 86 OSExchangeData data; 87 GURL url("http://www.google.com/"); 88 string16 html = ASCIIToUTF16( 89 "<HTML>\n<BODY>\n" 90 "<b>bold.</b> <i><b>This is bold italic.</b></i>\n" 91 "</BODY>\n</HTML>"); 92 data.SetHtml(html, url); 93 94 OSExchangeData copy(data.provider().Clone()); 95 string16 read_html; 96 EXPECT_TRUE(copy.GetHtml(&read_html, &url)); 97 EXPECT_EQ(html, read_html); 98 } 99 100 } // namespace ui 101