blob: 32f89bb9b1eaf12674778dec0f337ef75901e051 [file] [log] [blame]
// Copyright 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "base/message_loop/message_loop.h"
#include "base/pickle.h"
#include "base/strings/utf_string_conversions.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "testing/platform_test.h"
#include "ui/base/dragdrop/os_exchange_data.h"
#include "url/gurl.h"
namespace ui {
class OSExchangeDataTest : public PlatformTest {
private:
base::MessageLoopForUI message_loop_;
};
TEST_F(OSExchangeDataTest, StringDataGetAndSet) {
OSExchangeData data;
string16 input = ASCIIToUTF16("I can has cheezburger?");
data.SetString(input);
OSExchangeData data2(data.provider().Clone());
string16 output;
EXPECT_TRUE(data2.GetString(&output));
EXPECT_EQ(input, output);
std::string url_spec = "http://www.goats.com/";
GURL url(url_spec);
string16 title;
EXPECT_FALSE(
data2.GetURLAndTitle(OSExchangeData::CONVERT_FILENAMES, &url, &title));
// No URLs in |data|, so url should be untouched.
EXPECT_EQ(url_spec, url.spec());
}
TEST_F(OSExchangeDataTest, TestURLExchangeFormats) {
OSExchangeData data;
std::string url_spec = "http://www.google.com/";
GURL url(url_spec);
string16 url_title = ASCIIToUTF16("www.google.com");
data.SetURL(url, url_title);
string16 output;
OSExchangeData data2(data.provider().Clone());
// URL spec and title should match
GURL output_url;
string16 output_title;
EXPECT_TRUE(data2.GetURLAndTitle(
OSExchangeData::CONVERT_FILENAMES, &output_url, &output_title));
EXPECT_EQ(url_spec, output_url.spec());
EXPECT_EQ(url_title, output_title);
string16 output_string;
// URL should be the raw text response
EXPECT_TRUE(data2.GetString(&output_string));
EXPECT_EQ(url_spec, UTF16ToUTF8(output_string));
}
TEST_F(OSExchangeDataTest, TestPickledData) {
const OSExchangeData::CustomFormat kTestFormat =
ui::Clipboard::GetFormatType("application/vnd.chromium.test");
Pickle saved_pickle;
saved_pickle.WriteInt(1);
saved_pickle.WriteInt(2);
OSExchangeData data;
data.SetPickledData(kTestFormat, saved_pickle);
OSExchangeData copy(data.provider().Clone());
EXPECT_TRUE(copy.HasCustomFormat(kTestFormat));
Pickle restored_pickle;
EXPECT_TRUE(copy.GetPickledData(kTestFormat, &restored_pickle));
PickleIterator iterator(restored_pickle);
int value;
EXPECT_TRUE(restored_pickle.ReadInt(&iterator, &value));
EXPECT_EQ(1, value);
EXPECT_TRUE(restored_pickle.ReadInt(&iterator, &value));
EXPECT_EQ(2, value);
}
TEST_F(OSExchangeDataTest, TestHTML) {
OSExchangeData data;
GURL url("http://www.google.com/");
string16 html = ASCIIToUTF16(
"<HTML>\n<BODY>\n"
"<b>bold.</b> <i><b>This is bold italic.</b></i>\n"
"</BODY>\n</HTML>");
data.SetHtml(html, url);
OSExchangeData copy(data.provider().Clone());
string16 read_html;
EXPECT_TRUE(copy.GetHtml(&read_html, &url));
EXPECT_EQ(html, read_html);
}
} // namespace ui