Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(60)

Unified Diff: ui/base/dragdrop/gtk_dnd_util.cc

Issue 231733005: Delete the GTK+ port of Chrome. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Remerge to ToT Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ui/base/dragdrop/gtk_dnd_util.cc
diff --git a/ui/base/dragdrop/gtk_dnd_util.cc b/ui/base/dragdrop/gtk_dnd_util.cc
deleted file mode 100644
index 1282723e4f98a91f9954071fe7bbef27641dd042..0000000000000000000000000000000000000000
--- a/ui/base/dragdrop/gtk_dnd_util.cc
+++ /dev/null
@@ -1,285 +0,0 @@
-// Copyright (c) 2012 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 "ui/base/dragdrop/gtk_dnd_util.h"
-
-#include <string>
-
-#include "base/logging.h"
-#include "base/pickle.h"
-#include "base/strings/utf_string_conversions.h"
-#include "ui/base/clipboard/custom_data_helper.h"
-#include "url/gurl.h"
-
-namespace ui {
-
-namespace {
-
-const int kBitsPerByte = 8;
-
-void AddTargetToList(GtkTargetList* targets, int target_code) {
- switch (target_code) {
- case ui::TEXT_PLAIN:
- gtk_target_list_add_text_targets(targets, ui::TEXT_PLAIN);
- break;
-
- case ui::TEXT_URI_LIST:
- gtk_target_list_add_uri_targets(targets, ui::TEXT_URI_LIST);
- break;
-
- case ui::TEXT_HTML:
- gtk_target_list_add(
- targets, ui::GetAtomForTarget(ui::TEXT_HTML), 0, ui::TEXT_HTML);
- break;
-
- case ui::NETSCAPE_URL:
- gtk_target_list_add(targets,
- ui::GetAtomForTarget(ui::NETSCAPE_URL), 0, ui::NETSCAPE_URL);
- break;
-
- case ui::CHROME_TAB:
- case ui::CHROME_BOOKMARK_ITEM:
- case ui::CHROME_NAMED_URL:
- gtk_target_list_add(targets, ui::GetAtomForTarget(target_code),
- GTK_TARGET_SAME_APP, target_code);
- break;
-
- case ui::DIRECT_SAVE_FILE:
- gtk_target_list_add(targets,
- ui::GetAtomForTarget(ui::DIRECT_SAVE_FILE), 0, ui::DIRECT_SAVE_FILE);
- break;
-
- case ui::CUSTOM_DATA:
- gtk_target_list_add(targets,
- ui::GetAtomForTarget(ui::CUSTOM_DATA), 0, ui::CUSTOM_DATA);
- break;
-
- case ui::RENDERER_TAINT:
- gtk_target_list_add(targets,
- ui::GetAtomForTarget(ui::RENDERER_TAINT), 0, ui::RENDERER_TAINT);
- break;
-
- default:
- NOTREACHED() << " Unexpected target code: " << target_code;
- }
-}
-
-} // namespace
-
-GdkAtom GetAtomForTarget(int target) {
- switch (target) {
- case CHROME_TAB:
- static const GdkAtom kTabAtom = gdk_atom_intern(
- "application/x-chrome-tab", false);
- return kTabAtom;
-
- case TEXT_HTML:
- static const GdkAtom kHtmlAtom = gdk_atom_intern(
- "text/html", false);
- return kHtmlAtom;
-
- case CHROME_BOOKMARK_ITEM:
- static const GdkAtom kBookmarkAtom = gdk_atom_intern(
- "application/x-chrome-bookmark-item", false);
- return kBookmarkAtom;
-
- case TEXT_PLAIN:
- static const GdkAtom kTextAtom= gdk_atom_intern(
- "text/plain;charset=utf-8", false);
- return kTextAtom;
-
- case TEXT_URI_LIST:
- static const GdkAtom kUrisAtom = gdk_atom_intern(
- "text/uri-list", false);
- return kUrisAtom;
-
- case CHROME_NAMED_URL:
- static const GdkAtom kNamedUrl = gdk_atom_intern(
- "application/x-chrome-named-url", false);
- return kNamedUrl;
-
- case NETSCAPE_URL:
- static const GdkAtom kNetscapeUrl = gdk_atom_intern(
- "_NETSCAPE_URL", false);
- return kNetscapeUrl;
-
- case TEXT_PLAIN_NO_CHARSET:
- static const GdkAtom kTextNoCharsetAtom = gdk_atom_intern(
- "text/plain", false);
- return kTextNoCharsetAtom;
-
- case DIRECT_SAVE_FILE:
- static const GdkAtom kXdsAtom = gdk_atom_intern(
- "XdndDirectSave0", false);
- return kXdsAtom;
-
- case CUSTOM_DATA:
- static const GdkAtom kCustomData = gdk_atom_intern(
- kMimeTypeWebCustomData, false);
- return kCustomData;
-
- case RENDERER_TAINT:
- static const GdkAtom kRendererTaint = gdk_atom_intern(
- "chromium/x-renderer-taint", false);
- return kRendererTaint;
-
- default:
- NOTREACHED();
- }
-
- return NULL;
-}
-
-GtkTargetList* GetTargetListFromCodeMask(int code_mask) {
- GtkTargetList* targets = gtk_target_list_new(NULL, 0);
-
- for (size_t i = 1; i < INVALID_TARGET; i = i << 1) {
- if (i == CHROME_WEBDROP_FILE_CONTENTS)
- continue;
-
- if (i & code_mask)
- AddTargetToList(targets, i);
- }
-
- return targets;
-}
-
-void SetSourceTargetListFromCodeMask(GtkWidget* source, int code_mask) {
- GtkTargetList* targets = GetTargetListFromCodeMask(code_mask);
- gtk_drag_source_set_target_list(source, targets);
- gtk_target_list_unref(targets);
-}
-
-void SetDestTargetList(GtkWidget* dest, const int* target_codes) {
- GtkTargetList* targets = gtk_target_list_new(NULL, 0);
-
- for (size_t i = 0; target_codes[i] != -1; ++i) {
- AddTargetToList(targets, target_codes[i]);
- }
-
- gtk_drag_dest_set_target_list(dest, targets);
- gtk_target_list_unref(targets);
-}
-
-void WriteURLWithName(GtkSelectionData* selection_data,
- const GURL& url,
- base::string16 title,
- int type) {
- if (title.empty()) {
- // We prefer to not have empty titles. Set it to the filename extracted
- // from the URL.
- title = base::UTF8ToUTF16(url.ExtractFileName());
- }
-
- switch (type) {
- case TEXT_PLAIN: {
- gtk_selection_data_set_text(selection_data, url.spec().c_str(),
- url.spec().length());
- break;
- }
- case TEXT_URI_LIST: {
- gchar* uri_array[2];
- uri_array[0] = strdup(url.spec().c_str());
- uri_array[1] = NULL;
- gtk_selection_data_set_uris(selection_data, uri_array);
- free(uri_array[0]);
- break;
- }
- case CHROME_NAMED_URL: {
- Pickle pickle;
- pickle.WriteString(base::UTF16ToUTF8(title));
- pickle.WriteString(url.spec());
- gtk_selection_data_set(
- selection_data,
- GetAtomForTarget(ui::CHROME_NAMED_URL),
- kBitsPerByte,
- reinterpret_cast<const guchar*>(pickle.data()),
- pickle.size());
- break;
- }
- case NETSCAPE_URL: {
- // _NETSCAPE_URL format is URL + \n + title.
- std::string utf8_text = url.spec() + "\n" + base::UTF16ToUTF8(title);
- gtk_selection_data_set(selection_data,
- gtk_selection_data_get_target(selection_data),
- kBitsPerByte,
- reinterpret_cast<const guchar*>(utf8_text.c_str()),
- utf8_text.length());
- break;
- }
-
- default: {
- NOTREACHED();
- break;
- }
- }
-}
-
-bool ExtractNamedURL(GtkSelectionData* selection_data,
- GURL* url,
- base::string16* title) {
- if (!selection_data || gtk_selection_data_get_length(selection_data) <= 0)
- return false;
-
- Pickle data(
- reinterpret_cast<const char*>(
- gtk_selection_data_get_data(selection_data)),
- gtk_selection_data_get_length(selection_data));
- PickleIterator iter(data);
- std::string title_utf8, url_utf8;
- if (!data.ReadString(&iter, &title_utf8) ||
- !data.ReadString(&iter, &url_utf8)) {
- return false;
- }
-
- GURL gurl(url_utf8);
- if (!gurl.is_valid())
- return false;
-
- *url = gurl;
- *title = base::UTF8ToUTF16(title_utf8);
- return true;
-}
-
-bool ExtractURIList(GtkSelectionData* selection_data, std::vector<GURL>* urls) {
- gchar** uris = gtk_selection_data_get_uris(selection_data);
- if (!uris)
- return false;
-
- for (size_t i = 0; uris[i] != NULL; ++i) {
- GURL url(uris[i]);
- if (url.is_valid())
- urls->push_back(url);
- }
-
- g_strfreev(uris);
- return true;
-}
-
-bool ExtractNetscapeURL(GtkSelectionData* selection_data,
- GURL* url,
- base::string16* title) {
- if (!selection_data || gtk_selection_data_get_length(selection_data) <= 0)
- return false;
-
- // Find the first '\n' in the data. It is the separator between the url and
- // the title.
- std::string data(
- reinterpret_cast<const char*>(
- gtk_selection_data_get_data(selection_data)),
- gtk_selection_data_get_length(selection_data));
- std::string::size_type newline = data.find('\n');
- if (newline == std::string::npos)
- return false;
-
- GURL gurl(data.substr(0, newline));
- if (!gurl.is_valid())
- return false;
-
- *url = gurl;
- *title = base::UTF8ToUTF16(data.substr(newline + 1));
- return true;
-}
-
-} // namespace ui

Powered by Google App Engine
This is Rietveld 408576698