1 // Copyright (c) 2011 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.
7 #include "base/memory/scoped_ptr.h"
8 #include "base/pickle.h"
9 #include "base/strings/utf_string_conversions.h"
10 #include "testing/gtest/include/gtest/gtest.h"
11 #include "ui/base/dragdrop/gtk_dnd_util.h"
16 TEST(GtkDndUtilTest
, ExtractNamedURLValid
) {
17 const std::string kTitle
= "title";
18 const std::string kUrl
= "http://www.foobar.com/";
20 pickle
.WriteString(kTitle
);
21 pickle
.WriteString(kUrl
);
23 GtkSelectionData data
;
24 scoped_ptr
<guchar
[]> test_data(new guchar
[pickle
.size()]);
25 memcpy(test_data
.get(), pickle
.data(), pickle
.size());
26 data
.data
= test_data
.get();
27 data
.length
= pickle
.size();
31 ASSERT_EQ(true, ui::ExtractNamedURL(&data
, &url
, &title
));
32 EXPECT_EQ(base::UTF8ToUTF16(kTitle
), title
);
33 EXPECT_EQ(GURL(kUrl
), url
);
36 TEST(GtkDndUtilTest
, ExtractNamedURLInvalidURL
) {
37 const std::string kTitle
= "title";
38 const std::string kBadUrl
= "foobar";
40 pickle
.WriteString(kTitle
);
41 pickle
.WriteString(kBadUrl
);
43 GtkSelectionData data
;
44 scoped_ptr
<guchar
[]> test_data(new guchar
[pickle
.size()]);
45 memcpy(test_data
.get(), pickle
.data(), pickle
.size());
46 data
.data
= test_data
.get();
47 data
.length
= pickle
.size();
51 EXPECT_FALSE(ui::ExtractNamedURL(&data
, &url
, &title
));
54 TEST(GtkDndUtilTest
, ExtractNamedURLInvalidInput
) {
57 GtkSelectionData data
;
61 EXPECT_FALSE(ui::ExtractNamedURL(&data
, &url
, &title
));
63 guchar empty_data
[] = "";
64 data
.data
= empty_data
;
67 EXPECT_FALSE(ui::ExtractNamedURL(&data
, &url
, &title
));
69 const std::string kTitle
= "title";
71 pickle
.WriteString(kTitle
);
73 scoped_ptr
<guchar
[]> test_data(new guchar
[pickle
.size()]);
74 memcpy(test_data
.get(), pickle
.data(), pickle
.size());
75 data
.data
= test_data
.get();
76 data
.length
= pickle
.size();
78 EXPECT_FALSE(ui::ExtractNamedURL(&data
, &url
, &title
));