OLD | NEW |
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 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 BASE_CLIPBOARD_H_ | 5 #ifndef BASE_CLIPBOARD_H_ |
6 #define BASE_CLIPBOARD_H_ | 6 #define BASE_CLIPBOARD_H_ |
7 | 7 |
8 #include <map> | 8 #include <map> |
9 #include <string> | 9 #include <string> |
10 #include <vector> | 10 #include <vector> |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
67 // CBF_BITMAP pixels byte array | 67 // CBF_BITMAP pixels byte array |
68 // size gfx::Size struct | 68 // size gfx::Size struct |
69 // CBF_SMBITMAP shared_mem shared memory handle | 69 // CBF_SMBITMAP shared_mem shared memory handle |
70 // size gfx::Size struct | 70 // size gfx::Size struct |
71 // CBF_DATA format char array | 71 // CBF_DATA format char array |
72 // data byte array | 72 // data byte array |
73 typedef std::vector<char> ObjectMapParam; | 73 typedef std::vector<char> ObjectMapParam; |
74 typedef std::vector<ObjectMapParam> ObjectMapParams; | 74 typedef std::vector<ObjectMapParam> ObjectMapParams; |
75 typedef std::map<int /* ObjectType */, ObjectMapParams> ObjectMap; | 75 typedef std::map<int /* ObjectType */, ObjectMapParams> ObjectMap; |
76 | 76 |
| 77 // Buffer designates which clipboard the action should be applied to. |
| 78 // Only platforms that use the X Window System support the selection |
| 79 // buffer. Furthermore we currently only use a buffer other than the |
| 80 // standard buffer when reading from the clipboard so only those |
| 81 // functions accept a buffer parameter. |
| 82 enum Buffer { |
| 83 BUFFER_STANDARD, |
| 84 #if defined(OS_LINUX) |
| 85 BUFFER_SELECTION, |
| 86 #endif |
| 87 }; |
| 88 |
| 89 static bool IsValidBuffer(int32 buffer) { |
| 90 switch (buffer) { |
| 91 case BUFFER_STANDARD: |
| 92 return true; |
| 93 #if defined(OS_LINUX) |
| 94 case BUFFER_SELECTION: |
| 95 return true; |
| 96 #endif |
| 97 } |
| 98 return false; |
| 99 } |
| 100 |
| 101 static Buffer FromInt(int32 buffer) { |
| 102 return static_cast<Buffer>(buffer); |
| 103 } |
| 104 |
77 Clipboard(); | 105 Clipboard(); |
78 ~Clipboard(); | 106 ~Clipboard(); |
79 | 107 |
80 // Write a bunch of objects to the system clipboard. Copies are made of the | 108 // Write a bunch of objects to the system clipboard. Copies are made of the |
81 // contents of |objects|. On Windows they are copied to the system clipboard. | 109 // contents of |objects|. On Windows they are copied to the system clipboard. |
82 // On linux they are copied into a structure owned by the Clipboard object and | 110 // On linux they are copied into a structure owned by the Clipboard object and |
83 // kept until the system clipboard is set again. | 111 // kept until the system clipboard is set again. |
84 void WriteObjects(const ObjectMap& objects); | 112 void WriteObjects(const ObjectMap& objects); |
85 | 113 |
86 // Behaves as above. If there is some shared memory handle passed as one of | 114 // Behaves as above. If there is some shared memory handle passed as one of |
87 // the objects, it came from the process designated by |process|. This will | 115 // the objects, it came from the process designated by |process|. This will |
88 // assist in turning it into a shared memory region that the current process | 116 // assist in turning it into a shared memory region that the current process |
89 // can use. | 117 // can use. |
90 void WriteObjects(const ObjectMap& objects, base::ProcessHandle process); | 118 void WriteObjects(const ObjectMap& objects, base::ProcessHandle process); |
91 | 119 |
92 // Tests whether the clipboard contains a certain format | 120 // Tests whether the clipboard contains a certain format |
93 bool IsFormatAvailable(const FormatType& format) const; | 121 bool IsFormatAvailable(const FormatType& format, Buffer buffer) const; |
94 | 122 |
95 // As above, but instead of interpreting |format| by some platform-specific | 123 // As above, but instead of interpreting |format| by some platform-specific |
96 // definition, interpret it as a literal MIME type. | 124 // definition, interpret it as a literal MIME type. |
97 bool IsFormatAvailableByString(const std::string& format) const; | 125 bool IsFormatAvailableByString(const std::string& format, |
| 126 Buffer buffer) const; |
98 | 127 |
99 // Reads UNICODE text from the clipboard, if available. | 128 // Reads UNICODE text from the clipboard, if available. |
100 void ReadText(string16* result) const; | 129 void ReadText(Buffer buffer, string16* result) const; |
101 | 130 |
102 // Reads ASCII text from the clipboard, if available. | 131 // Reads ASCII text from the clipboard, if available. |
103 void ReadAsciiText(std::string* result) const; | 132 void ReadAsciiText(Buffer buffer, std::string* result) const; |
104 | 133 |
105 // Reads HTML from the clipboard, if available. | 134 // Reads HTML from the clipboard, if available. |
106 void ReadHTML(string16* markup, std::string* src_url) const; | 135 void ReadHTML(Buffer buffer, string16* markup, std::string* src_url) const; |
107 | 136 |
108 // Reads a bookmark from the clipboard, if available. | 137 // Reads a bookmark from the clipboard, if available. |
109 void ReadBookmark(string16* title, std::string* url) const; | 138 void ReadBookmark(string16* title, std::string* url) const; |
110 | 139 |
111 // Reads a file or group of files from the clipboard, if available, into the | 140 // Reads a file or group of files from the clipboard, if available, into the |
112 // out parameter. | 141 // out parameter. |
113 void ReadFile(FilePath* file) const; | 142 void ReadFile(FilePath* file) const; |
114 void ReadFiles(std::vector<FilePath>* files) const; | 143 void ReadFiles(std::vector<FilePath>* files) const; |
115 | 144 |
116 // Reads raw data from the clipboard with the given format type. Stores result | 145 // Reads raw data from the clipboard with the given format type. Stores result |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
206 // SetGtkClipboard function replaces whatever is on the system clipboard with | 235 // SetGtkClipboard function replaces whatever is on the system clipboard with |
207 // the contents of |clipboard_data_|. | 236 // the contents of |clipboard_data_|. |
208 // The Write* functions make a deep copy of the data passed to them an store | 237 // The Write* functions make a deep copy of the data passed to them an store |
209 // it in |clipboard_data_|. | 238 // it in |clipboard_data_|. |
210 | 239 |
211 // Write changes to gtk clipboard. | 240 // Write changes to gtk clipboard. |
212 void SetGtkClipboard(); | 241 void SetGtkClipboard(); |
213 // Insert a mapping into clipboard_data_. | 242 // Insert a mapping into clipboard_data_. |
214 void InsertMapping(const char* key, char* data, size_t data_len); | 243 void InsertMapping(const char* key, char* data, size_t data_len); |
215 | 244 |
| 245 // find the gtk clipboard for the passed buffer enum |
| 246 GtkClipboard* LookupBackingClipboard(Buffer clipboard) const; |
| 247 |
216 TargetMap* clipboard_data_; | 248 TargetMap* clipboard_data_; |
217 GtkClipboard* clipboard_; | 249 GtkClipboard* clipboard_; |
| 250 GtkClipboard* primary_selection_; |
218 #endif | 251 #endif |
219 | 252 |
220 DISALLOW_COPY_AND_ASSIGN(Clipboard); | 253 DISALLOW_COPY_AND_ASSIGN(Clipboard); |
221 }; | 254 }; |
222 | 255 |
223 #endif // BASE_CLIPBOARD_H_ | 256 #endif // BASE_CLIPBOARD_H_ |
OLD | NEW |