| Index: chrome/common/os_exchange_data.h
|
| ===================================================================
|
| --- chrome/common/os_exchange_data.h (revision 15365)
|
| +++ chrome/common/os_exchange_data.h (working copy)
|
| @@ -1,144 +0,0 @@
|
| -// Copyright (c) 2006-2008 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 CHROME_COMMON_OS_EXCHANGE_DATA_H__
|
| -#define CHROME_COMMON_OS_EXCHANGE_DATA_H__
|
| -
|
| -#include <atlbase.h>
|
| -#include <objidl.h>
|
| -#include <vector>
|
| -
|
| -#include "base/basictypes.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.
|
| -//
|
| -///////////////////////////////////////////////////////////////////////////////
|
| -class OSExchangeData : public IDataObject {
|
| - public:
|
| - // Returns true if source has plain text that is a valid url.
|
| - static bool HasPlainTextURL(IDataObject* source);
|
| -
|
| - // Returns true if source has plain text that is a valid URL and sets url to
|
| - // that url.
|
| - static bool GetPlainTextURL(IDataObject* source, GURL* url);
|
| -
|
| - OSExchangeData();
|
| - OSExchangeData(IDataObject* source);
|
| - virtual ~OSExchangeData();
|
| -
|
| - // 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
|
| - void SetFilename(const std::wstring& full_path);
|
| - // Adds pickled data of the specified format.
|
| - void SetPickledData(CLIPFORMAT format, const Pickle& data);
|
| - // 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);
|
| -
|
| - // 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(CLIPFORMAT format, Pickle* data) const;
|
| - bool GetFileContents(std::wstring* filename,
|
| - std::string* file_contents) const;
|
| - bool GetHtml(std::wstring* html, GURL* base_url) const;
|
| -
|
| - // Test whether or not data of certain types is present, without actually
|
| - // returning anything.
|
| - bool HasString() const;
|
| - bool HasURL() const;
|
| - bool HasURLTitle() const;
|
| - bool HasFile() const;
|
| - bool HasFormat(CLIPFORMAT format) const;
|
| -
|
| - // IDataObject implementation:
|
| - HRESULT __stdcall GetData(FORMATETC* format_etc, STGMEDIUM* medium);
|
| - HRESULT __stdcall GetDataHere(FORMATETC* format_etc, STGMEDIUM* medium);
|
| - HRESULT __stdcall QueryGetData(FORMATETC* format_etc);
|
| - HRESULT __stdcall GetCanonicalFormatEtc(
|
| - FORMATETC* format_etc, FORMATETC* result);
|
| - HRESULT __stdcall SetData(
|
| - FORMATETC* format_etc, STGMEDIUM* medium, BOOL should_release);
|
| - HRESULT __stdcall EnumFormatEtc(
|
| - DWORD direction, IEnumFORMATETC** enumerator);
|
| - HRESULT __stdcall DAdvise(
|
| - FORMATETC* format_etc, DWORD advf, IAdviseSink* sink, DWORD* connection);
|
| - HRESULT __stdcall DUnadvise(DWORD connection);
|
| - HRESULT __stdcall EnumDAdvise(IEnumSTATDATA** enumerator);
|
| -
|
| - // IUnknown implementation:
|
| - HRESULT __stdcall QueryInterface(const IID& iid, void** object);
|
| - ULONG __stdcall AddRef();
|
| - ULONG __stdcall Release();
|
| -
|
| - private:
|
| - // FormatEtcEnumerator only likes us for our StoredDataMap typedef.
|
| - friend class FormatEtcEnumerator;
|
| -
|
| - // Our internal representation of stored data & type info.
|
| - struct StoredDataInfo {
|
| - FORMATETC format_etc;
|
| - STGMEDIUM* medium;
|
| - bool owns_medium;
|
| -
|
| - StoredDataInfo(CLIPFORMAT cf, STGMEDIUM* a_medium) {
|
| - format_etc.cfFormat = cf;
|
| - format_etc.dwAspect = DVASPECT_CONTENT;
|
| - format_etc.lindex = -1;
|
| - format_etc.ptd = NULL;
|
| - format_etc.tymed = a_medium->tymed;
|
| -
|
| - owns_medium = true;
|
| -
|
| - medium = a_medium;
|
| - }
|
| -
|
| - ~StoredDataInfo() {
|
| - if (owns_medium) {
|
| - ReleaseStgMedium(medium);
|
| - delete medium;
|
| - }
|
| - }
|
| - };
|
| -
|
| - typedef std::vector<StoredDataInfo*> StoredData;
|
| - StoredData contents_;
|
| -
|
| - CComPtr<IDataObject> source_object_;
|
| -
|
| - LONG ref_count_;
|
| -
|
| - DISALLOW_EVIL_CONSTRUCTORS(OSExchangeData);
|
| -};
|
| -
|
| -#endif // #ifndef CHROME_COMMON_OS_EXCHANGE_DATA_H__
|
|
|