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. 4 5 #include <string> 6 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" 12 #include "url/gurl.h" 13 14 namespace ui { 15 16 TEST(GtkDndUtilTest, ExtractNamedURLValid) { 17 const std::string kTitle = "title"; 18 const std::string kUrl = "http://www.foobar.com/"; 19 Pickle pickle; 20 pickle.WriteString(kTitle); 21 pickle.WriteString(kUrl); 22 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(); 28 29 GURL url; 30 base::string16 title; 31 ASSERT_EQ(true, ui::ExtractNamedURL(&data, &url, &title)); 32 EXPECT_EQ(UTF8ToUTF16(kTitle), title); 33 EXPECT_EQ(GURL(kUrl), url); 34 } 35 36 TEST(GtkDndUtilTest, ExtractNamedURLInvalidURL) { 37 const std::string kTitle = "title"; 38 const std::string kBadUrl = "foobar"; 39 Pickle pickle; 40 pickle.WriteString(kTitle); 41 pickle.WriteString(kBadUrl); 42 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(); 48 49 GURL url; 50 base::string16 title; 51 EXPECT_FALSE(ui::ExtractNamedURL(&data, &url, &title)); 52 } 53 54 TEST(GtkDndUtilTest, ExtractNamedURLInvalidInput) { 55 GURL url; 56 base::string16 title; 57 GtkSelectionData data; 58 data.data = NULL; 59 data.length = 0; 60 61 EXPECT_FALSE(ui::ExtractNamedURL(&data, &url, &title)); 62 63 guchar empty_data[] = ""; 64 data.data = empty_data; 65 data.length = 0; 66 67 EXPECT_FALSE(ui::ExtractNamedURL(&data, &url, &title)); 68 69 const std::string kTitle = "title"; 70 Pickle pickle; 71 pickle.WriteString(kTitle); 72 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(); 77 78 EXPECT_FALSE(ui::ExtractNamedURL(&data, &url, &title)); 79 } 80 81 } // namespace ui 82