• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 "ui/events/platform/platform_event_source.h"
12 #include "url/gurl.h"
13 
14 namespace ui {
15 
16 class OSExchangeDataTest : public PlatformTest {
17  public:
OSExchangeDataTest()18   OSExchangeDataTest()
19       : event_source_(ui::PlatformEventSource::CreateDefault()) {}
20 
21  private:
22   base::MessageLoopForUI message_loop_;
23   scoped_ptr<PlatformEventSource> event_source_;
24 };
25 
TEST_F(OSExchangeDataTest,StringDataGetAndSet)26 TEST_F(OSExchangeDataTest, StringDataGetAndSet) {
27   OSExchangeData data;
28   base::string16 input = base::ASCIIToUTF16("I can has cheezburger?");
29   data.SetString(input);
30 
31   OSExchangeData data2(data.provider().Clone());
32   base::string16 output;
33   EXPECT_TRUE(data2.GetString(&output));
34   EXPECT_EQ(input, output);
35   std::string url_spec = "http://www.goats.com/";
36   GURL url(url_spec);
37   base::string16 title;
38   EXPECT_FALSE(
39       data2.GetURLAndTitle(OSExchangeData::CONVERT_FILENAMES, &url, &title));
40   // No URLs in |data|, so url should be untouched.
41   EXPECT_EQ(url_spec, url.spec());
42 }
43 
TEST_F(OSExchangeDataTest,TestURLExchangeFormats)44 TEST_F(OSExchangeDataTest, TestURLExchangeFormats) {
45   OSExchangeData data;
46   std::string url_spec = "http://www.google.com/";
47   GURL url(url_spec);
48   base::string16 url_title = base::ASCIIToUTF16("www.google.com");
49   data.SetURL(url, url_title);
50   base::string16 output;
51 
52   OSExchangeData data2(data.provider().Clone());
53 
54   // URL spec and title should match
55   GURL output_url;
56   base::string16 output_title;
57   EXPECT_TRUE(data2.GetURLAndTitle(
58       OSExchangeData::CONVERT_FILENAMES, &output_url, &output_title));
59   EXPECT_EQ(url_spec, output_url.spec());
60   EXPECT_EQ(url_title, output_title);
61   base::string16 output_string;
62 
63   // URL should be the raw text response
64   EXPECT_TRUE(data2.GetString(&output_string));
65   EXPECT_EQ(url_spec, base::UTF16ToUTF8(output_string));
66 }
67 
TEST_F(OSExchangeDataTest,TestPickledData)68 TEST_F(OSExchangeDataTest, TestPickledData) {
69   const OSExchangeData::CustomFormat kTestFormat =
70       ui::Clipboard::GetFormatType("application/vnd.chromium.test");
71 
72   Pickle saved_pickle;
73   saved_pickle.WriteInt(1);
74   saved_pickle.WriteInt(2);
75   OSExchangeData data;
76   data.SetPickledData(kTestFormat, saved_pickle);
77 
78   OSExchangeData copy(data.provider().Clone());
79   EXPECT_TRUE(copy.HasCustomFormat(kTestFormat));
80 
81   Pickle restored_pickle;
82   EXPECT_TRUE(copy.GetPickledData(kTestFormat, &restored_pickle));
83   PickleIterator iterator(restored_pickle);
84   int value;
85   EXPECT_TRUE(restored_pickle.ReadInt(&iterator, &value));
86   EXPECT_EQ(1, value);
87   EXPECT_TRUE(restored_pickle.ReadInt(&iterator, &value));
88   EXPECT_EQ(2, value);
89 }
90 
91 #if defined(USE_AURA)
TEST_F(OSExchangeDataTest,TestHTML)92 TEST_F(OSExchangeDataTest, TestHTML) {
93   OSExchangeData data;
94   GURL url("http://www.google.com/");
95   base::string16 html = base::ASCIIToUTF16(
96       "<HTML>\n<BODY>\n"
97       "<b>bold.</b> <i><b>This is bold italic.</b></i>\n"
98       "</BODY>\n</HTML>");
99   data.SetHtml(html, url);
100 
101   OSExchangeData copy(data.provider().Clone());
102   base::string16 read_html;
103   EXPECT_TRUE(copy.GetHtml(&read_html, &url));
104   EXPECT_EQ(html, read_html);
105 }
106 #endif
107 
108 }  // namespace ui
109