Home | History | Annotate | Download | only in dragdrop
      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