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

Side by Side Diff: app/os_exchange_data.h

Issue 113321: Stubs out OSExchangeData for views on gtk. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 7 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | app/os_exchange_data.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef APP_OS_EXCHANGE_DATA_H_ 5 #ifndef APP_OS_EXCHANGE_DATA_H_
6 #define APP_OS_EXCHANGE_DATA_H_ 6 #define APP_OS_EXCHANGE_DATA_H_
7 7
8 #include "build/build_config.h"
9
10 #if defined(OS_WIN)
8 #include <atlbase.h> 11 #include <atlbase.h>
9 #include <objidl.h> 12 #include <objidl.h>
13 #endif
10 #include <vector> 14 #include <vector>
11 15
12 #include "base/basictypes.h" 16 #include "base/basictypes.h"
13 17
14 class GURL; 18 class GURL;
15 class Pickle; 19 class Pickle;
16 20
17 /////////////////////////////////////////////////////////////////////////////// 21 ///////////////////////////////////////////////////////////////////////////////
18 // 22 //
19 // OSExchangeData 23 // OSExchangeData
20 // An object that holds interchange data to be sent out to OS services like 24 // An object that holds interchange data to be sent out to OS services like
21 // clipboard, drag and drop, etc. This object exposes an API that clients can 25 // clipboard, drag and drop, etc. This object exposes an API that clients can
22 // use to specify raw data and its high level type. This object takes care of 26 // use to specify raw data and its high level type. This object takes care of
23 // translating that into something the OS can understand. 27 // translating that into something the OS can understand.
24 // 28 //
25 /////////////////////////////////////////////////////////////////////////////// 29 ///////////////////////////////////////////////////////////////////////////////
30 #if defined(OS_WIN)
26 class OSExchangeData : public IDataObject { 31 class OSExchangeData : public IDataObject {
32 #else
33 class OSExchangeData {
34 #endif
27 public: 35 public:
36 #if defined(OS_WIN)
28 // Returns true if source has plain text that is a valid url. 37 // Returns true if source has plain text that is a valid url.
29 static bool HasPlainTextURL(IDataObject* source); 38 static bool HasPlainTextURL(IDataObject* source);
30 39
31 // Returns true if source has plain text that is a valid URL and sets url to 40 // Returns true if source has plain text that is a valid URL and sets url to
32 // that url. 41 // that url.
33 static bool GetPlainTextURL(IDataObject* source, GURL* url); 42 static bool GetPlainTextURL(IDataObject* source, GURL* url);
34 43
44 explicit OSExchangeData(IDataObject* source);
45 #endif
46
35 OSExchangeData(); 47 OSExchangeData();
36 OSExchangeData(IDataObject* source);
37 virtual ~OSExchangeData(); 48 virtual ~OSExchangeData();
38 49
39 // These functions add data to the OSExchangeData object of various Chrome 50 // These functions add data to the OSExchangeData object of various Chrome
40 // types. The OSExchangeData object takes care of translating the data into 51 // types. The OSExchangeData object takes care of translating the data into
41 // a format suitable for exchange with the OS. 52 // a format suitable for exchange with the OS.
42 // NOTE WELL: Typically, a data object like this will contain only one of the 53 // NOTE WELL: Typically, a data object like this will contain only one of the
43 // following types of data. In cases where more data is held, the 54 // following types of data. In cases where more data is held, the
44 // order in which these functions are called is _important_! 55 // order in which these functions are called is _important_!
45 // ---> The order types are added to an OSExchangeData object controls 56 // ---> The order types are added to an OSExchangeData object controls
46 // the order of enumeration in our IEnumFORMATETC implementation! 57 // the order of enumeration in our IEnumFORMATETC implementation!
47 // This comes into play when selecting the best (most preferable) 58 // This comes into play when selecting the best (most preferable)
48 // data type for insertion into a DropTarget. 59 // data type for insertion into a DropTarget.
49 void SetString(const std::wstring& data); 60 void SetString(const std::wstring& data);
50 // A URL can have an optional title in some exchange formats. 61 // A URL can have an optional title in some exchange formats.
51 void SetURL(const GURL& url, const std::wstring& title); 62 void SetURL(const GURL& url, const std::wstring& title);
52 // A full path to a file 63 // A full path to a file
53 void SetFilename(const std::wstring& full_path); 64 void SetFilename(const std::wstring& full_path);
65 #if defined(OS_WIN)
54 // Adds pickled data of the specified format. 66 // Adds pickled data of the specified format.
55 void SetPickledData(CLIPFORMAT format, const Pickle& data); 67 void SetPickledData(CLIPFORMAT format, const Pickle& data);
68 #endif
56 // Adds the bytes of a file (CFSTR_FILECONTENTS and CFSTR_FILEDESCRIPTOR). 69 // Adds the bytes of a file (CFSTR_FILECONTENTS and CFSTR_FILEDESCRIPTOR).
57 void SetFileContents(const std::wstring& filename, 70 void SetFileContents(const std::wstring& filename,
58 const std::string& file_contents); 71 const std::string& file_contents);
59 // Adds a snippet of HTML. |html| is just raw html but this sets both 72 // Adds a snippet of HTML. |html| is just raw html but this sets both
60 // text/html and CF_HTML. 73 // text/html and CF_HTML.
61 void SetHtml(const std::wstring& html, const GURL& base_url); 74 void SetHtml(const std::wstring& html, const GURL& base_url);
62 75
63 // These functions retrieve data of the specified type. If data exists, the 76 // These functions retrieve data of the specified type. If data exists, the
64 // functions return and the result is in the out parameter. If the data does 77 // functions return and the result is in the out parameter. If the data does
65 // not exist, the out parameter is not touched. The out parameter cannot be 78 // not exist, the out parameter is not touched. The out parameter cannot be
66 // NULL. 79 // NULL.
67 bool GetString(std::wstring* data) const; 80 bool GetString(std::wstring* data) const;
68 bool GetURLAndTitle(GURL* url, std::wstring* title) const; 81 bool GetURLAndTitle(GURL* url, std::wstring* title) const;
69 // Return the path of a file, if available. 82 // Return the path of a file, if available.
70 bool GetFilename(std::wstring* full_path) const; 83 bool GetFilename(std::wstring* full_path) const;
84 #if defined(OS_WIN)
71 bool GetPickledData(CLIPFORMAT format, Pickle* data) const; 85 bool GetPickledData(CLIPFORMAT format, Pickle* data) const;
86 #endif
72 bool GetFileContents(std::wstring* filename, 87 bool GetFileContents(std::wstring* filename,
73 std::string* file_contents) const; 88 std::string* file_contents) const;
74 bool GetHtml(std::wstring* html, GURL* base_url) const; 89 bool GetHtml(std::wstring* html, GURL* base_url) const;
75 90
76 // Test whether or not data of certain types is present, without actually 91 // Test whether or not data of certain types is present, without actually
77 // returning anything. 92 // returning anything.
78 bool HasString() const; 93 bool HasString() const;
79 bool HasURL() const; 94 bool HasURL() const;
80 bool HasURLTitle() const; 95 bool HasURLTitle() const;
81 bool HasFile() const; 96 bool HasFile() const;
97 #if defined(OS_WIN)
82 bool HasFormat(CLIPFORMAT format) const; 98 bool HasFormat(CLIPFORMAT format) const;
83 99
84 // IDataObject implementation: 100 // IDataObject implementation:
85 HRESULT __stdcall GetData(FORMATETC* format_etc, STGMEDIUM* medium); 101 HRESULT __stdcall GetData(FORMATETC* format_etc, STGMEDIUM* medium);
86 HRESULT __stdcall GetDataHere(FORMATETC* format_etc, STGMEDIUM* medium); 102 HRESULT __stdcall GetDataHere(FORMATETC* format_etc, STGMEDIUM* medium);
87 HRESULT __stdcall QueryGetData(FORMATETC* format_etc); 103 HRESULT __stdcall QueryGetData(FORMATETC* format_etc);
88 HRESULT __stdcall GetCanonicalFormatEtc( 104 HRESULT __stdcall GetCanonicalFormatEtc(
89 FORMATETC* format_etc, FORMATETC* result); 105 FORMATETC* format_etc, FORMATETC* result);
90 HRESULT __stdcall SetData( 106 HRESULT __stdcall SetData(
91 FORMATETC* format_etc, STGMEDIUM* medium, BOOL should_release); 107 FORMATETC* format_etc, STGMEDIUM* medium, BOOL should_release);
92 HRESULT __stdcall EnumFormatEtc( 108 HRESULT __stdcall EnumFormatEtc(
93 DWORD direction, IEnumFORMATETC** enumerator); 109 DWORD direction, IEnumFORMATETC** enumerator);
94 HRESULT __stdcall DAdvise( 110 HRESULT __stdcall DAdvise(
95 FORMATETC* format_etc, DWORD advf, IAdviseSink* sink, DWORD* connection); 111 FORMATETC* format_etc, DWORD advf, IAdviseSink* sink, DWORD* connection);
96 HRESULT __stdcall DUnadvise(DWORD connection); 112 HRESULT __stdcall DUnadvise(DWORD connection);
97 HRESULT __stdcall EnumDAdvise(IEnumSTATDATA** enumerator); 113 HRESULT __stdcall EnumDAdvise(IEnumSTATDATA** enumerator);
98 114
99 // IUnknown implementation: 115 // IUnknown implementation:
100 HRESULT __stdcall QueryInterface(const IID& iid, void** object); 116 HRESULT __stdcall QueryInterface(const IID& iid, void** object);
101 ULONG __stdcall AddRef(); 117 ULONG __stdcall AddRef();
102 ULONG __stdcall Release(); 118 ULONG __stdcall Release();
119 #endif
103 120
104 private: 121 private:
122 #if defined(OS_WIN)
105 // FormatEtcEnumerator only likes us for our StoredDataMap typedef. 123 // FormatEtcEnumerator only likes us for our StoredDataMap typedef.
106 friend class FormatEtcEnumerator; 124 friend class FormatEtcEnumerator;
107 125
108 // Our internal representation of stored data & type info. 126 // Our internal representation of stored data & type info.
109 struct StoredDataInfo { 127 struct StoredDataInfo {
110 FORMATETC format_etc; 128 FORMATETC format_etc;
111 STGMEDIUM* medium; 129 STGMEDIUM* medium;
112 bool owns_medium; 130 bool owns_medium;
113 131
114 StoredDataInfo(CLIPFORMAT cf, STGMEDIUM* a_medium) { 132 StoredDataInfo(CLIPFORMAT cf, STGMEDIUM* a_medium) {
(...skipping 15 matching lines...) Expand all
130 } 148 }
131 } 149 }
132 }; 150 };
133 151
134 typedef std::vector<StoredDataInfo*> StoredData; 152 typedef std::vector<StoredDataInfo*> StoredData;
135 StoredData contents_; 153 StoredData contents_;
136 154
137 CComPtr<IDataObject> source_object_; 155 CComPtr<IDataObject> source_object_;
138 156
139 LONG ref_count_; 157 LONG ref_count_;
158 #endif
140 159
141 DISALLOW_EVIL_CONSTRUCTORS(OSExchangeData); 160 DISALLOW_COPY_AND_ASSIGN(OSExchangeData);
142 }; 161 };
143 162
144 #endif // #ifndef APP_OS_EXCHANGE_DATA_H_ 163 #endif // #ifndef APP_OS_EXCHANGE_DATA_H_
OLDNEW
« no previous file with comments | « no previous file | app/os_exchange_data.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698