| Index: app/os_exchange_data.h
|
| ===================================================================
|
| --- app/os_exchange_data.h (revision 71050)
|
| +++ app/os_exchange_data.h (working copy)
|
| @@ -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_
|
|
|