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

Side by Side Diff: ui/base/clipboard/clipboard_aurax11.cc

Issue 8801038: Make Clipboard::FormatType an opaque handle type. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Windows compile fixes. Created 9 years 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
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 #include "ui/base/clipboard/clipboard.h" 5 #include "ui/base/clipboard/clipboard.h"
6 6
7 #include "base/basictypes.h"
7 #include "base/logging.h" 8 #include "base/logging.h"
8 #include "base/utf_string_conversions.h" 9 #include "base/utf_string_conversions.h"
9 #include "third_party/skia/include/core/SkBitmap.h" 10 #include "third_party/skia/include/core/SkBitmap.h"
10 #include "ui/gfx/linux_util.h" 11 #include "ui/gfx/linux_util.h"
11 #include "ui/gfx/size.h" 12 #include "ui/gfx/size.h"
12 13
13 namespace ui { 14 namespace ui {
14 15
15 namespace { 16 namespace {
16 const char kMimeTypeBitmap[] = "image/bmp"; 17 const char kMimeTypeBitmap[] = "image/bmp";
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
128 129
129 } // namespace 130 } // namespace
130 131
131 // TODO(varunjain): Complete implementation: 132 // TODO(varunjain): Complete implementation:
132 // 1. Handle different types of BUFFERs. 133 // 1. Handle different types of BUFFERs.
133 // 2. Do we need to care about concurrency here? Can there be multiple instances 134 // 2. Do we need to care about concurrency here? Can there be multiple instances
134 // of ui::Clipboard? Ask oshima. 135 // of ui::Clipboard? Ask oshima.
135 // 3. Implement File types. 136 // 3. Implement File types.
136 // 4. Handle conversion between types. 137 // 4. Handle conversion between types.
137 138
139 Clipboard::FormatType::FormatType() {
140 }
141
142 Clipboard::FormatType::FormatType(const std::string& native_format)
143 : data_(native_format) {
144 }
145
146 Clipboard::FormatType::~FormatType() {
147 }
148
149 std::string Clipboard::FormatType::Serialize() const {
150 return data_;
151 }
152
153 // static
154 Clipboard::FormatType Clipboard::FormatType::Deserialize(
155 const std::string& serialization) {
156 return FormatType(serialization);
157 }
158
159 bool Clipboard::FormatType::Equals(const FormatType& other) const {
160 return data_ == other.data_;
161 }
162
138 Clipboard::Clipboard() { 163 Clipboard::Clipboard() {
139 // Make sure clipboard is created. 164 // Make sure clipboard is created.
140 GetClipboardData(); 165 GetClipboardData();
141 } 166 }
142 167
143 Clipboard::~Clipboard() { 168 Clipboard::~Clipboard() {
144 } 169 }
145 170
146 void Clipboard::WriteObjects(const ObjectMap& objects) { 171 void Clipboard::WriteObjects(const ObjectMap& objects) {
147 // We need to overwrite previous data. Probably best to just delete 172 // We need to overwrite previous data. Probably best to just delete
148 // everything and start fresh. 173 // everything and start fresh.
149 DeleteClipboardData(); 174 DeleteClipboardData();
150 for (ObjectMap::const_iterator iter = objects.begin(); 175 for (ObjectMap::const_iterator iter = objects.begin();
151 iter != objects.end(); ++iter) { 176 iter != objects.end(); ++iter) {
152 DispatchObject(static_cast<ObjectType>(iter->first), iter->second); 177 DispatchObject(static_cast<ObjectType>(iter->first), iter->second);
153 } 178 }
154 } 179 }
155 180
156 bool Clipboard::IsFormatAvailable(const FormatType& format, 181 bool Clipboard::IsFormatAvailable(const FormatType& format,
157 Buffer buffer) const { 182 Buffer buffer) const {
158 ClipboardData* data = GetClipboardData(); 183 ClipboardData* data = GetClipboardData();
159 if (GetPlainTextFormatType() == format) 184 if (GetPlainTextFormatType().Equals(format))
160 return !data->text().empty(); 185 return !data->text().empty();
161 else if (GetHtmlFormatType() == format) 186 else if (GetHtmlFormatType().Equals(format))
162 return !data->markup_data().empty() || !data->url().empty(); 187 return !data->markup_data().empty() || !data->url().empty();
163 else if (GetBitmapFormatType() == format) 188 else if (GetBitmapFormatType().Equals(format))
164 return !!data->bitmap_data(); 189 return !!data->bitmap_data();
165 else if (GetWebKitSmartPasteFormatType() == format) 190 else if (GetWebKitSmartPasteFormatType().Equals(format))
166 return data->web_smart_paste(); 191 return data->web_smart_paste();
167 else if (data->custom_data_format() == format) 192 else if (data->custom_data_format() == format.ToString())
168 return true; 193 return true;
169 return false; 194 return false;
170 } 195 }
171 196
172 bool Clipboard::IsFormatAvailableByString(const std::string& format,
173 Buffer buffer) const {
174 return IsFormatAvailable(format, buffer);
175 }
176
177 void Clipboard::ReadAvailableTypes(Buffer buffer, std::vector<string16>* types, 197 void Clipboard::ReadAvailableTypes(Buffer buffer, std::vector<string16>* types,
178 bool* contains_filenames) const { 198 bool* contains_filenames) const {
179 if (!types || !contains_filenames) { 199 if (!types || !contains_filenames) {
180 NOTREACHED(); 200 NOTREACHED();
181 return; 201 return;
182 } 202 }
183 203
184 types->clear(); 204 types->clear();
185 if (IsFormatAvailable(GetPlainTextFormatType(), buffer)) 205 if (IsFormatAvailable(GetPlainTextFormatType(), buffer))
186 types->push_back(UTF8ToUTF16(GetPlainTextFormatType())); 206 types->push_back(UTF8ToUTF16(GetPlainTextFormatType().ToString()));
187 if (IsFormatAvailable(GetHtmlFormatType(), buffer)) 207 if (IsFormatAvailable(GetHtmlFormatType(), buffer))
188 types->push_back(UTF8ToUTF16(GetHtmlFormatType())); 208 types->push_back(UTF8ToUTF16(GetHtmlFormatType().ToString()));
189 if (IsFormatAvailable(GetBitmapFormatType(), buffer)) 209 if (IsFormatAvailable(GetBitmapFormatType(), buffer))
190 types->push_back(UTF8ToUTF16(GetBitmapFormatType())); 210 types->push_back(UTF8ToUTF16(GetBitmapFormatType().ToString()));
191 if (IsFormatAvailable(GetWebKitSmartPasteFormatType(), buffer))
192 types->push_back(UTF8ToUTF16(GetWebKitSmartPasteFormatType()));
193 *contains_filenames = false; 211 *contains_filenames = false;
194 } 212 }
195 213
196 void Clipboard::ReadText(Buffer buffer, string16* result) const { 214 void Clipboard::ReadText(Buffer buffer, string16* result) const {
197 *result = UTF8ToUTF16(GetClipboardData()->text()); 215 *result = UTF8ToUTF16(GetClipboardData()->text());
198 } 216 }
199 217
200 void Clipboard::ReadAsciiText(Buffer buffer, std::string* result) const { 218 void Clipboard::ReadAsciiText(Buffer buffer, std::string* result) const {
201 *result = GetClipboardData()->text(); 219 *result = GetClipboardData()->text();
202 } 220 }
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
255 } 273 }
256 274
257 void Clipboard::ReadFile(FilePath* file) const { 275 void Clipboard::ReadFile(FilePath* file) const {
258 NOTIMPLEMENTED(); 276 NOTIMPLEMENTED();
259 } 277 }
260 278
261 void Clipboard::ReadFiles(std::vector<FilePath>* files) const { 279 void Clipboard::ReadFiles(std::vector<FilePath>* files) const {
262 NOTIMPLEMENTED(); 280 NOTIMPLEMENTED();
263 } 281 }
264 282
265 void Clipboard::ReadData(const std::string& format, std::string* result) const { 283 void Clipboard::ReadData(const FormatType& format, std::string* result) const {
266 result->clear(); 284 result->clear();
267 ClipboardData* data = GetClipboardData(); 285 ClipboardData* data = GetClipboardData();
268 if (data->custom_data_format() == format) 286 if (data->custom_data_format() == format.ToString())
269 *result = std::string(data->custom_data_data(), data->custom_data_len()); 287 *result = std::string(data->custom_data_data(), data->custom_data_len());
270 } 288 }
271 289
272 uint64 Clipboard::GetSequenceNumber(Buffer buffer) { 290 uint64 Clipboard::GetSequenceNumber(Buffer buffer) {
273 NOTIMPLEMENTED(); 291 NOTIMPLEMENTED();
274 return 0; 292 return 0;
275 } 293 }
276 294
277 void Clipboard::WriteText(const char* text_data, size_t text_len) { 295 void Clipboard::WriteText(const char* text_data, size_t text_len) {
278 GetClipboardData()->set_text(std::string(text_data, text_len)); 296 GetClipboardData()->set_text(std::string(text_data, text_len));
(...skipping 16 matching lines...) Expand all
295 } 313 }
296 314
297 void Clipboard::WriteWebSmartPaste() { 315 void Clipboard::WriteWebSmartPaste() {
298 GetClipboardData()->set_web_smart_paste(true); 316 GetClipboardData()->set_web_smart_paste(true);
299 } 317 }
300 318
301 void Clipboard::WriteBitmap(const char* pixel_data, const char* size_data) { 319 void Clipboard::WriteBitmap(const char* pixel_data, const char* size_data) {
302 GetClipboardData()->SetBitmapData(pixel_data, size_data); 320 GetClipboardData()->SetBitmapData(pixel_data, size_data);
303 } 321 }
304 322
305 void Clipboard::WriteData(const char* format_name, size_t format_len, 323 void Clipboard::WriteData(const FormatType& format,
306 const char* data_data, size_t data_len) { 324 const char* data_data,
307 GetClipboardData()->SetCustomData(std::string(format_name, format_len), 325 size_t data_len) {
308 data_data, data_len); 326 GetClipboardData()->SetCustomData(format.ToString(), data_data, data_len);
309 } 327 }
310 328
311 // static 329 // static
312 Clipboard::FormatType Clipboard::GetPlainTextFormatType() { 330 Clipboard::FormatType Clipboard::GetFormatType(
313 return std::string(kMimeTypeText); 331 const std::string& format_string) {
332 return FormatType::Deserialize(format_string);
314 } 333 }
315 334
316 // static 335 // static
317 Clipboard::FormatType Clipboard::GetPlainTextWFormatType() { 336 const Clipboard::FormatType& Clipboard::GetPlainTextFormatType() {
337 CR_DEFINE_STATIC_LOCAL(FormatType, type, (kMimeTypeText));
338 return type;
339 }
340
341 // static
342 const Clipboard::FormatType& Clipboard::GetPlainTextWFormatType() {
318 return GetPlainTextFormatType(); 343 return GetPlainTextFormatType();
319 } 344 }
320 345
321 // static 346 // static
322 Clipboard::FormatType Clipboard::GetHtmlFormatType() { 347 const Clipboard::FormatType& Clipboard::GetHtmlFormatType() {
323 return std::string(kMimeTypeHTML); 348 CR_DEFINE_STATIC_LOCAL(FormatType, type, (kMimeTypeHTML));
349 return type;
324 } 350 }
325 351
326 // static 352 // static
327 Clipboard::FormatType Clipboard::GetBitmapFormatType() { 353 const Clipboard::FormatType& Clipboard::GetBitmapFormatType() {
328 return std::string(kMimeTypeBitmap); 354 CR_DEFINE_STATIC_LOCAL(FormatType, type, (kMimeTypeBitmap));
355 return type;
329 } 356 }
330 357
331 // static 358 // static
332 Clipboard::FormatType Clipboard::GetWebKitSmartPasteFormatType() { 359 const Clipboard::FormatType& Clipboard::GetWebKitSmartPasteFormatType() {
333 return std::string(kMimeTypeWebkitSmartPaste); 360 CR_DEFINE_STATIC_LOCAL(FormatType, type, (kMimeTypeWebkitSmartPaste));
361 return type;
334 } 362 }
335 363
336 // static 364 // static
337 Clipboard::FormatType Clipboard::GetWebCustomDataFormatType() { 365 const Clipboard::FormatType& Clipboard::GetWebCustomDataFormatType() {
338 return std::string(kMimeTypeWebCustomData); 366 CR_DEFINE_STATIC_LOCAL(FormatType, type, (kMimeTypeWebCustomData));
367 return type;
339 } 368 }
340 369
341 } // namespace ui 370 } // namespace ui
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698