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

Unified Diff: app/os_exchange_data_provider_gtk.cc

Issue 6200005: Move OSExchangeData from src/app to src/ui/base/dragdrop... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 years, 11 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
« no previous file with comments | « app/os_exchange_data_provider_gtk.h ('k') | app/os_exchange_data_provider_win.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: app/os_exchange_data_provider_gtk.cc
===================================================================
--- app/os_exchange_data_provider_gtk.cc (revision 71050)
+++ app/os_exchange_data_provider_gtk.cc (working copy)
@@ -1,244 +0,0 @@
-// Copyright (c) 2010 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 "app/os_exchange_data_provider_gtk.h"
-
-#include <algorithm>
-
-#include "app/gtk_dnd_util.h"
-#include "base/file_path.h"
-#include "base/utf_string_conversions.h"
-#include "net/base/net_util.h"
-
-OSExchangeDataProviderGtk::OSExchangeDataProviderGtk(
- int known_formats,
- const std::set<GdkAtom>& known_custom_formats)
- : known_formats_(known_formats),
- known_custom_formats_(known_custom_formats),
- formats_(0),
- drag_image_(NULL) {
-}
-
-OSExchangeDataProviderGtk::OSExchangeDataProviderGtk()
- : known_formats_(0),
- formats_(0),
- drag_image_(NULL) {
-}
-
-OSExchangeDataProviderGtk::~OSExchangeDataProviderGtk() {
- if (drag_image_)
- g_object_unref(drag_image_);
-}
-
-bool OSExchangeDataProviderGtk::HasDataForAllFormats(
- int formats,
- const std::set<GdkAtom>& custom_formats) const {
- if ((formats_ & formats) != formats)
- return false;
- for (std::set<GdkAtom>::iterator i = custom_formats.begin();
- i != custom_formats.end(); ++i) {
- if (pickle_data_.find(*i) == pickle_data_.end())
- return false;
- }
- return true;
-}
-
-GtkTargetList* OSExchangeDataProviderGtk::GetTargetList() const {
- GtkTargetList* targets = gtk_target_list_new(NULL, 0);
-
- if ((formats_ & OSExchangeData::STRING) != 0)
- gtk_target_list_add_text_targets(targets, OSExchangeData::STRING);
-
- if ((formats_ & OSExchangeData::URL) != 0) {
- gtk_target_list_add_uri_targets(targets, OSExchangeData::URL);
- gtk_target_list_add(
- targets,
- gtk_dnd_util::GetAtomForTarget(gtk_dnd_util::CHROME_NAMED_URL),
- 0,
- OSExchangeData::URL);
- }
-
- if ((formats_ & OSExchangeData::FILE_NAME) != 0)
- gtk_target_list_add_uri_targets(targets, OSExchangeData::FILE_NAME);
-
- for (PickleData::const_iterator i = pickle_data_.begin();
- i != pickle_data_.end(); ++i) {
- gtk_target_list_add(targets, i->first, 0, OSExchangeData::PICKLED_DATA);
- }
-
- return targets;
-}
-
-void OSExchangeDataProviderGtk::WriteFormatToSelection(
- int format,
- GtkSelectionData* selection) const {
- if ((format & OSExchangeData::STRING) != 0) {
- gtk_selection_data_set_text(
- selection,
- reinterpret_cast<const gchar*>(string_.c_str()),
- -1);
- }
-
- if ((format & OSExchangeData::URL) != 0) {
- // TODO: this should be pulled out of TabContentsDragSource into a common
- // place.
- Pickle pickle;
- pickle.WriteString(UTF16ToUTF8(title_));
- pickle.WriteString(url_.spec());
- gtk_selection_data_set(
- selection,
- gtk_dnd_util::GetAtomForTarget(gtk_dnd_util::CHROME_NAMED_URL),
- 8,
- reinterpret_cast<const guchar*>(pickle.data()),
- pickle.size());
-
- gchar* uri_array[2];
- uri_array[0] = strdup(url_.spec().c_str());
- uri_array[1] = NULL;
- gtk_selection_data_set_uris(selection, uri_array);
- free(uri_array[0]);
- }
-
- if ((format & OSExchangeData::FILE_NAME) != 0) {
- gchar* uri_array[2];
- uri_array[0] =
- strdup(net::FilePathToFileURL(FilePath(filename_)).spec().c_str());
- uri_array[1] = NULL;
- gtk_selection_data_set_uris(selection, uri_array);
- free(uri_array[0]);
- }
-
- if ((format & OSExchangeData::PICKLED_DATA) != 0) {
- for (PickleData::const_iterator i = pickle_data_.begin();
- i != pickle_data_.end(); ++i) {
- const Pickle& data = i->second;
- gtk_selection_data_set(
- selection,
- i->first,
- 8,
- reinterpret_cast<const guchar*>(data.data()),
- data.size());
- }
- }
-}
-
-void OSExchangeDataProviderGtk::SetString(const std::wstring& data) {
- string_ = WideToUTF16Hack(data);
- formats_ |= OSExchangeData::STRING;
-}
-
-void OSExchangeDataProviderGtk::SetURL(const GURL& url,
- const std::wstring& title) {
- url_ = url;
- title_ = WideToUTF16Hack(title);
- formats_ |= OSExchangeData::URL;
-}
-
-void OSExchangeDataProviderGtk::SetFilename(const std::wstring& full_path) {
- filename_ = WideToUTF8(full_path);
- formats_ |= OSExchangeData::FILE_NAME;
-}
-
-void OSExchangeDataProviderGtk::SetPickledData(GdkAtom format,
- const Pickle& data) {
- pickle_data_[format] = data;
- formats_ |= OSExchangeData::PICKLED_DATA;
-}
-
-bool OSExchangeDataProviderGtk::GetString(std::wstring* data) const {
- if ((formats_ & OSExchangeData::STRING) == 0)
- return false;
- *data = UTF16ToWideHack(string_);
- return true;
-}
-
-bool OSExchangeDataProviderGtk::GetURLAndTitle(GURL* url,
- std::wstring* title) const {
- if ((formats_ & OSExchangeData::URL) == 0) {
- title->clear();
- return GetPlainTextURL(url);
- }
-
- if (!url_.is_valid())
- return false;
-
- *url = url_;
- *title = UTF16ToWideHack(title_);
- return true;
-}
-
-bool OSExchangeDataProviderGtk::GetFilename(std::wstring* full_path) const {
- if ((formats_ & OSExchangeData::FILE_NAME) == 0)
- return false;
- *full_path = UTF8ToWide(filename_);
- return true;
-}
-
-bool OSExchangeDataProviderGtk::GetPickledData(GdkAtom format,
- Pickle* data) const {
- PickleData::const_iterator i = pickle_data_.find(format);
- if (i == pickle_data_.end())
- return false;
-
- *data = i->second;
- return true;
-}
-
-bool OSExchangeDataProviderGtk::HasString() const {
- return (known_formats_ & OSExchangeData::STRING) != 0 ||
- (formats_ & OSExchangeData::STRING) != 0;
-}
-
-bool OSExchangeDataProviderGtk::HasURL() const {
- if ((known_formats_ & OSExchangeData::URL) != 0 ||
- (formats_ & OSExchangeData::URL) != 0) {
- return true;
- }
- // No URL, see if we have plain text that can be parsed as a URL.
- return GetPlainTextURL(NULL);
-}
-
-bool OSExchangeDataProviderGtk::HasFile() const {
- return (known_formats_ & OSExchangeData::FILE_NAME) != 0 ||
- (formats_ & OSExchangeData::FILE_NAME) != 0;
- }
-
-bool OSExchangeDataProviderGtk::HasCustomFormat(GdkAtom format) const {
- return known_custom_formats_.find(format) != known_custom_formats_.end() ||
- pickle_data_.find(format) != pickle_data_.end();
-}
-
-bool OSExchangeDataProviderGtk::GetPlainTextURL(GURL* url) const {
- if ((formats_ & OSExchangeData::STRING) == 0)
- return false;
-
- GURL test_url(string_);
- if (!test_url.is_valid())
- return false;
-
- if (url)
- *url = test_url;
- return true;
-}
-
-void OSExchangeDataProviderGtk::SetDragImage(GdkPixbuf* drag_image,
- const gfx::Point& cursor_offset) {
- if (drag_image_)
- g_object_unref(drag_image_);
- g_object_ref(drag_image);
- drag_image_ = drag_image;
- cursor_offset_ = cursor_offset;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-// OSExchangeData, public:
-
-// static
-OSExchangeData::Provider* OSExchangeData::CreateProvider() {
- return new OSExchangeDataProviderGtk();
-}
-
-GdkAtom OSExchangeData::RegisterCustomFormat(const std::string& type) {
- return gdk_atom_intern(type.c_str(), false);
-}
« no previous file with comments | « app/os_exchange_data_provider_gtk.h ('k') | app/os_exchange_data_provider_win.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698