diff options
author | ben@chromium.org <ben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-01-12 19:00:48 +0000 |
---|---|---|
committer | ben@chromium.org <ben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-01-12 19:00:48 +0000 |
commit | 41d2e4af3daa1d1ca8f8cbfa6788604a4c9913b9 (patch) | |
tree | fa82bb18c231744e72ffd334217be1e256c9e849 /app/os_exchange_data.h | |
parent | 356a50ef463bb52fdd9d5700ca11b4b83d4809bc (diff) | |
download | chromium_src-41d2e4af3daa1d1ca8f8cbfa6788604a4c9913b9.zip chromium_src-41d2e4af3daa1d1ca8f8cbfa6788604a4c9913b9.tar.gz chromium_src-41d2e4af3daa1d1ca8f8cbfa6788604a4c9913b9.tar.bz2 |
Move OSExchangeData from src/app to src/ui/base/dragdrop
BUG=none
TEST=none
TBR=brettw
Review URL: http://codereview.chromium.org/6200005
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@71205 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'app/os_exchange_data.h')
-rw-r--r-- | app/os_exchange_data.h | 195 |
1 files changed, 0 insertions, 195 deletions
diff --git a/app/os_exchange_data.h b/app/os_exchange_data.h deleted file mode 100644 index e2b06cc..0000000 --- a/app/os_exchange_data.h +++ /dev/null @@ -1,195 +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. - -#ifndef APP_OS_EXCHANGE_DATA_H_ -#define APP_OS_EXCHANGE_DATA_H_ -#pragma once - -#include "build/build_config.h" - -#include <set> -#include <string> - -#if defined(OS_WIN) -#include <objidl.h> -#elif !defined(OS_MACOSX) -#include <gtk/gtk.h> -#endif - -#include "app/download_file_interface.h" -#include "base/basictypes.h" -#include "base/file_path.h" -#include "base/scoped_ptr.h" - -class GURL; -class Pickle; - -/////////////////////////////////////////////////////////////////////////////// -// -// OSExchangeData -// An object that holds interchange data to be sent out to OS services like -// clipboard, drag and drop, etc. This object exposes an API that clients can -// use to specify raw data and its high level type. This object takes care of -// translating that into something the OS can understand. -// -/////////////////////////////////////////////////////////////////////////////// - -// NOTE: Support for html and file contents is required by TabContentViewWin. -// TabContentsViewGtk uses a different class to handle drag support that does -// not use OSExchangeData. As such, file contents and html support is only -// compiled on windows. -class OSExchangeData { - public: - // CustomFormats are used for non-standard data types. For example, bookmark - // nodes are written using a CustomFormat. -#if defined(OS_WIN) - typedef CLIPFORMAT CustomFormat; -#elif !defined(OS_MACOSX) - typedef GdkAtom CustomFormat; -#endif - - // Enumeration of the known formats. - enum Format { - STRING = 1 << 0, - URL = 1 << 1, - FILE_NAME = 1 << 2, - PICKLED_DATA = 1 << 3, -#if defined(OS_WIN) - FILE_CONTENTS = 1 << 4, - HTML = 1 << 5, -#endif - }; - - // Encapsulates the info about a file to be downloaded. - struct DownloadFileInfo { - DownloadFileInfo(const FilePath& filename, - DownloadFileProvider* downloader); - ~DownloadFileInfo(); - - FilePath filename; - scoped_refptr<DownloadFileProvider> downloader; - }; - - // Provider defines the platform specific part of OSExchangeData that - // interacts with the native system. - class Provider { - public: - Provider() {} - virtual ~Provider() {} - - virtual void SetString(const std::wstring& data) = 0; - virtual void SetURL(const GURL& url, const std::wstring& title) = 0; - virtual void SetFilename(const std::wstring& full_path) = 0; - virtual void SetPickledData(CustomFormat format, const Pickle& data) = 0; - - virtual bool GetString(std::wstring* data) const = 0; - virtual bool GetURLAndTitle(GURL* url, std::wstring* title) const = 0; - virtual bool GetFilename(std::wstring* full_path) const = 0; - virtual bool GetPickledData(CustomFormat format, Pickle* data) const = 0; - - virtual bool HasString() const = 0; - virtual bool HasURL() const = 0; - virtual bool HasFile() const = 0; - virtual bool HasCustomFormat( - OSExchangeData::CustomFormat format) const = 0; - -#if defined(OS_WIN) - virtual void SetFileContents(const std::wstring& filename, - const std::string& file_contents) = 0; - virtual void SetHtml(const std::wstring& html, const GURL& base_url) = 0; - virtual bool GetFileContents(std::wstring* filename, - std::string* file_contents) const = 0; - virtual bool GetHtml(std::wstring* html, GURL* base_url) const = 0; - virtual bool HasFileContents() const = 0; - virtual bool HasHtml() const = 0; - virtual void SetDownloadFileInfo(const DownloadFileInfo& download) = 0; -#endif - }; - - OSExchangeData(); - // Creates an OSExchangeData with the specified provider. OSExchangeData - // takes ownership of the supplied provider. - explicit OSExchangeData(Provider* provider); - - ~OSExchangeData(); - - // Registers the specific string as a possible format for data. - static CustomFormat RegisterCustomFormat(const std::string& type); - - // Returns the Provider, which actually stores and manages the data. - const Provider& provider() const { return *provider_; } - Provider& provider() { return *provider_; } - - // These functions add data to the OSExchangeData object of various Chrome - // types. The OSExchangeData object takes care of translating the data into - // a format suitable for exchange with the OS. - // NOTE WELL: Typically, a data object like this will contain only one of the - // following types of data. In cases where more data is held, the - // order in which these functions are called is _important_! - // ---> The order types are added to an OSExchangeData object controls - // the order of enumeration in our IEnumFORMATETC implementation! - // This comes into play when selecting the best (most preferable) - // data type for insertion into a DropTarget. - void SetString(const std::wstring& data); - // A URL can have an optional title in some exchange formats. - void SetURL(const GURL& url, const std::wstring& title); - // A full path to a file. - // TODO: convert to Filepath. - void SetFilename(const std::wstring& full_path); - // Adds pickled data of the specified format. - void SetPickledData(CustomFormat format, const Pickle& data); - - // These functions retrieve data of the specified type. If data exists, the - // functions return and the result is in the out parameter. If the data does - // not exist, the out parameter is not touched. The out parameter cannot be - // NULL. - bool GetString(std::wstring* data) const; - bool GetURLAndTitle(GURL* url, std::wstring* title) const; - // Return the path of a file, if available. - bool GetFilename(std::wstring* full_path) const; - bool GetPickledData(CustomFormat format, Pickle* data) const; - - // Test whether or not data of certain types is present, without actually - // returning anything. - bool HasString() const; - bool HasURL() const; - bool HasFile() const; - bool HasCustomFormat(CustomFormat format) const; - - // Returns true if this OSExchangeData has data for ALL the formats in - // |formats| and ALL the custom formats in |custom_formats|. - bool HasAllFormats(int formats, - const std::set<CustomFormat>& custom_formats) const; - - // Returns true if this OSExchangeData has data in any of the formats in - // |formats| or any custom format in |custom_formats|. - bool HasAnyFormat(int formats, - const std::set<CustomFormat>& custom_formats) const; - -#if defined(OS_WIN) - // Adds the bytes of a file (CFSTR_FILECONTENTS and CFSTR_FILEDESCRIPTOR). - void SetFileContents(const std::wstring& filename, - const std::string& file_contents); - // Adds a snippet of HTML. |html| is just raw html but this sets both - // text/html and CF_HTML. - void SetHtml(const std::wstring& html, const GURL& base_url); - bool GetFileContents(std::wstring* filename, - std::string* file_contents) const; - bool GetHtml(std::wstring* html, GURL* base_url) const; - - // Adds a download file with full path (CF_HDROP). - void SetDownloadFileInfo(const DownloadFileInfo& download); -#endif - - private: - // Creates the platform specific Provider. - static Provider* CreateProvider(); - - // Provides the actual data. - scoped_ptr<Provider> provider_; - - DISALLOW_COPY_AND_ASSIGN(OSExchangeData); -}; - -#endif // APP_OS_EXCHANGE_DATA_H_ |