Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 UI_BASE_CLIPBOARD_CLIPBOARD_H_ | 5 #ifndef UI_BASE_CLIPBOARD_CLIPBOARD_H_ |
| 6 #define UI_BASE_CLIPBOARD_CLIPBOARD_H_ | 6 #define UI_BASE_CLIPBOARD_CLIPBOARD_H_ |
| 7 #pragma once | 7 #pragma once |
| 8 | 8 |
| 9 #include <map> | 9 #include <map> |
| 10 #include <string> | 10 #include <string> |
| (...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 123 // object containing the bitmap data. | 123 // object containing the bitmap data. |
| 124 // size gfx::Size struct | 124 // size gfx::Size struct |
| 125 // CBF_DATA format char array | 125 // CBF_DATA format char array |
| 126 // data byte array | 126 // data byte array |
| 127 typedef std::vector<char> ObjectMapParam; | 127 typedef std::vector<char> ObjectMapParam; |
| 128 typedef std::vector<ObjectMapParam> ObjectMapParams; | 128 typedef std::vector<ObjectMapParam> ObjectMapParams; |
| 129 typedef std::map<int /* ObjectType */, ObjectMapParams> ObjectMap; | 129 typedef std::map<int /* ObjectType */, ObjectMapParams> ObjectMap; |
| 130 | 130 |
| 131 // Buffer designates which clipboard the action should be applied to. | 131 // Buffer designates which clipboard the action should be applied to. |
| 132 // Only platforms that use the X Window System support the selection | 132 // Only platforms that use the X Window System support the selection |
| 133 // buffer. Furthermore we currently only use a buffer other than the | 133 // buffer. |
| 134 // standard buffer when reading from the clipboard so only those | |
| 135 // functions accept a buffer parameter. | |
| 136 enum Buffer { | 134 enum Buffer { |
| 137 BUFFER_STANDARD, | 135 BUFFER_STANDARD, |
| 138 BUFFER_SELECTION, | 136 BUFFER_SELECTION, |
| 139 }; | 137 }; |
| 140 | 138 |
| 141 static bool IsValidBuffer(int32 buffer) { | 139 static bool IsValidBuffer(int32 buffer) { |
| 142 switch (buffer) { | 140 switch (buffer) { |
| 143 case BUFFER_STANDARD: | 141 case BUFFER_STANDARD: |
| 144 return true; | 142 return true; |
| 145 #if defined(USE_X11) && !defined(USE_AURA) | 143 #if defined(USE_X11) && !defined(USE_AURA) |
| 146 case BUFFER_SELECTION: | 144 case BUFFER_SELECTION: |
| 147 return true; | 145 return true; |
| 148 #endif | 146 #endif |
| 149 } | 147 } |
| 150 return false; | 148 return false; |
| 151 } | 149 } |
| 152 | 150 |
| 153 static Buffer FromInt(int32 buffer) { | 151 static Buffer FromInt(int32 buffer) { |
| 154 return static_cast<Buffer>(buffer); | 152 return static_cast<Buffer>(buffer); |
| 155 } | 153 } |
| 156 | 154 |
| 157 Clipboard(); | 155 Clipboard(); |
| 158 ~Clipboard(); | 156 ~Clipboard(); |
| 159 | 157 |
| 160 // Write a bunch of objects to the system clipboard. Copies are made of the | 158 // Write a bunch of objects to the system clipboard. Copies are made of the |
| 161 // contents of |objects|. On Windows they are copied to the system clipboard. | 159 // contents of |objects|. On Windows they are copied to the system clipboard. |
| 162 // On linux they are copied into a structure owned by the Clipboard object and | 160 // On linux they are copied into a structure owned by the Clipboard object and |
| 163 // kept until the system clipboard is set again. | 161 // kept until the system clipboard is set again. |
| 164 void WriteObjects(const ObjectMap& objects); | 162 void WriteObjects(Buffer buffer, const ObjectMap& objects); |
| 165 | 163 |
| 166 // On Linux/BSD, we need to know when the clipboard is set to a URL. Most | 164 // On Linux/BSD, we need to know when the clipboard is set to a URL. Most |
| 167 // platforms don't care. | 165 // platforms don't care. |
| 168 #if defined(OS_WIN) || defined(OS_MACOSX) || defined(USE_AURA) | 166 #if defined(OS_WIN) || defined(OS_MACOSX) || defined(USE_AURA) |
| 169 void DidWriteURL(const std::string& utf8_text) {} | 167 void DidWriteURL(Buffer buffer, const std::string& utf8_text) {} |
|
dcheng
2012/02/03 21:53:58
It seems like we don't need the buffer parameter s
peter1
2012/02/04 00:54:46
We need to check in DidWriteURL that the write was
dcheng
2012/02/04 01:11:05
Right, but this is only called from ScopedClipboar
peter1
2012/02/04 02:05:43
I see. Well, I don't think it matters too much wh
| |
| 170 #else // !defined(OS_WIN) && !defined(OS_MACOSX) | 168 #else // !defined(OS_WIN) && !defined(OS_MACOSX) |
| 171 void DidWriteURL(const std::string& utf8_text); | 169 void DidWriteURL(Buffer buffer, const std::string& utf8_text); |
| 172 #endif | 170 #endif |
| 173 | 171 |
| 174 // Returns a sequence number which uniquely identifies clipboard state. | 172 // Returns a sequence number which uniquely identifies clipboard state. |
| 175 // This can be used to version the data on the clipboard and determine | 173 // This can be used to version the data on the clipboard and determine |
| 176 // whether it has changed. | 174 // whether it has changed. |
| 177 uint64 GetSequenceNumber(Buffer buffer); | 175 uint64 GetSequenceNumber(Buffer buffer); |
| 178 | 176 |
| 179 // Tests whether the clipboard contains a certain format | 177 // Tests whether the clipboard contains a certain format |
| 180 bool IsFormatAvailable(const FormatType& format, Buffer buffer) const; | 178 bool IsFormatAvailable(const FormatType& format, Buffer buffer) const; |
| 181 | 179 |
| (...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 304 // of data we intend to put on the clipboard on clipboard_data_ as | 302 // of data we intend to put on the clipboard on clipboard_data_ as |
| 305 // WriteObjects is running, and then at the end call SetGtkClipboard | 303 // WriteObjects is running, and then at the end call SetGtkClipboard |
| 306 // which replaces whatever is on the system clipboard with the | 304 // which replaces whatever is on the system clipboard with the |
| 307 // contents of clipboard_data_. | 305 // contents of clipboard_data_. |
| 308 | 306 |
| 309 public: | 307 public: |
| 310 typedef std::map<std::string, std::pair<char*, size_t> > TargetMap; | 308 typedef std::map<std::string, std::pair<char*, size_t> > TargetMap; |
| 311 | 309 |
| 312 private: | 310 private: |
| 313 // Write changes to gtk clipboard. | 311 // Write changes to gtk clipboard. |
| 314 void SetGtkClipboard(); | 312 void SetGtkClipboard(Buffer buffer); |
| 315 // Insert a mapping into clipboard_data_. | 313 // Insert a mapping into clipboard_data_. |
| 316 void InsertMapping(const char* key, char* data, size_t data_len); | 314 void InsertMapping(const char* key, char* data, size_t data_len); |
| 317 | 315 |
| 318 // Find the gtk clipboard for the passed buffer enum. | 316 // Find the gtk clipboard for the passed buffer enum. |
| 319 GtkClipboard* LookupBackingClipboard(Buffer clipboard) const; | 317 GtkClipboard* LookupBackingClipboard(Buffer clipboard) const; |
| 320 | 318 |
| 321 TargetMap* clipboard_data_; | 319 TargetMap* clipboard_data_; |
| 322 GtkClipboard* clipboard_; | 320 GtkClipboard* clipboard_; |
| 323 GtkClipboard* primary_selection_; | 321 GtkClipboard* primary_selection_; |
| 324 #endif | 322 #endif |
| 325 | 323 |
| 326 // MIME type constants. | 324 // MIME type constants. |
| 327 static const char kMimeTypeText[]; | 325 static const char kMimeTypeText[]; |
| 328 static const char kMimeTypeHTML[]; | 326 static const char kMimeTypeHTML[]; |
| 329 static const char kMimeTypePNG[]; | 327 static const char kMimeTypePNG[]; |
| 330 | 328 |
| 331 DISALLOW_COPY_AND_ASSIGN(Clipboard); | 329 DISALLOW_COPY_AND_ASSIGN(Clipboard); |
| 332 }; | 330 }; |
| 333 | 331 |
| 334 } // namespace ui | 332 } // namespace ui |
| 335 | 333 |
| 336 #endif // UI_BASE_CLIPBOARD_CLIPBOARD_H_ | 334 #endif // UI_BASE_CLIPBOARD_CLIPBOARD_H_ |
| OLD | NEW |