Index: ui/base/clipboard/clipboard_aurax11.cc |
diff --git a/ui/base/clipboard/clipboard_aurax11.cc b/ui/base/clipboard/clipboard_aurax11.cc |
index 4e16aefe855ddf4a0ae51a7f0e9e6754bdfb1230..5782d85bf7201e30f9b9523008427b847b019c58 100644 |
--- a/ui/base/clipboard/clipboard_aurax11.cc |
+++ b/ui/base/clipboard/clipboard_aurax11.cc |
@@ -4,6 +4,7 @@ |
#include "ui/base/clipboard/clipboard.h" |
+#include "base/basictypes.h" |
#include "base/logging.h" |
#include "base/utf_string_conversions.h" |
#include "third_party/skia/include/core/SkBitmap.h" |
@@ -135,6 +136,30 @@ void DeleteClipboardData() { |
// 3. Implement File types. |
// 4. Handle conversion between types. |
+Clipboard::FormatType::FormatType() { |
+} |
+ |
+Clipboard::FormatType::FormatType(const std::string& native_format) |
+ : data_(native_format) { |
+} |
+ |
+Clipboard::FormatType::~FormatType() { |
+} |
+ |
+std::string Clipboard::FormatType::Serialize() const { |
+ return data_; |
+} |
+ |
+// static |
+Clipboard::FormatType Clipboard::FormatType::Deserialize( |
+ const std::string& serialization) { |
+ return FormatType(serialization); |
+} |
+ |
+bool Clipboard::FormatType::Equals(const FormatType& other) const { |
+ return data_ == other.data_; |
+} |
+ |
Clipboard::Clipboard() { |
// Make sure clipboard is created. |
GetClipboardData(); |
@@ -156,24 +181,19 @@ void Clipboard::WriteObjects(const ObjectMap& objects) { |
bool Clipboard::IsFormatAvailable(const FormatType& format, |
Buffer buffer) const { |
ClipboardData* data = GetClipboardData(); |
- if (GetPlainTextFormatType() == format) |
+ if (GetPlainTextFormatType().Equals(format)) |
return !data->text().empty(); |
- else if (GetHtmlFormatType() == format) |
+ else if (GetHtmlFormatType().Equals(format)) |
return !data->markup_data().empty() || !data->url().empty(); |
- else if (GetBitmapFormatType() == format) |
+ else if (GetBitmapFormatType().Equals(format)) |
return !!data->bitmap_data(); |
- else if (GetWebKitSmartPasteFormatType() == format) |
+ else if (GetWebKitSmartPasteFormatType().Equals(format)) |
return data->web_smart_paste(); |
- else if (data->custom_data_format() == format) |
+ else if (data->custom_data_format() == format.ToString()) |
return true; |
return false; |
} |
-bool Clipboard::IsFormatAvailableByString(const std::string& format, |
- Buffer buffer) const { |
- return IsFormatAvailable(format, buffer); |
-} |
- |
void Clipboard::ReadAvailableTypes(Buffer buffer, std::vector<string16>* types, |
bool* contains_filenames) const { |
if (!types || !contains_filenames) { |
@@ -183,13 +203,11 @@ void Clipboard::ReadAvailableTypes(Buffer buffer, std::vector<string16>* types, |
types->clear(); |
if (IsFormatAvailable(GetPlainTextFormatType(), buffer)) |
- types->push_back(UTF8ToUTF16(GetPlainTextFormatType())); |
+ types->push_back(UTF8ToUTF16(GetPlainTextFormatType().ToString())); |
if (IsFormatAvailable(GetHtmlFormatType(), buffer)) |
- types->push_back(UTF8ToUTF16(GetHtmlFormatType())); |
+ types->push_back(UTF8ToUTF16(GetHtmlFormatType().ToString())); |
if (IsFormatAvailable(GetBitmapFormatType(), buffer)) |
- types->push_back(UTF8ToUTF16(GetBitmapFormatType())); |
- if (IsFormatAvailable(GetWebKitSmartPasteFormatType(), buffer)) |
- types->push_back(UTF8ToUTF16(GetWebKitSmartPasteFormatType())); |
+ types->push_back(UTF8ToUTF16(GetBitmapFormatType().ToString())); |
*contains_filenames = false; |
} |
@@ -262,10 +280,10 @@ void Clipboard::ReadFiles(std::vector<FilePath>* files) const { |
NOTIMPLEMENTED(); |
} |
-void Clipboard::ReadData(const std::string& format, std::string* result) const { |
+void Clipboard::ReadData(const FormatType& format, std::string* result) const { |
result->clear(); |
ClipboardData* data = GetClipboardData(); |
- if (data->custom_data_format() == format) |
+ if (data->custom_data_format() == format.ToString()) |
*result = std::string(data->custom_data_data(), data->custom_data_len()); |
} |
@@ -302,40 +320,51 @@ void Clipboard::WriteBitmap(const char* pixel_data, const char* size_data) { |
GetClipboardData()->SetBitmapData(pixel_data, size_data); |
} |
-void Clipboard::WriteData(const char* format_name, size_t format_len, |
- const char* data_data, size_t data_len) { |
- GetClipboardData()->SetCustomData(std::string(format_name, format_len), |
- data_data, data_len); |
+void Clipboard::WriteData(const FormatType& format, |
+ const char* data_data, |
+ size_t data_len) { |
+ GetClipboardData()->SetCustomData(format.ToString(), data_data, data_len); |
+} |
+ |
+// static |
+Clipboard::FormatType Clipboard::GetFormatType( |
+ const std::string& format_string) { |
+ return FormatType::Deserialize(format_string); |
} |
// static |
-Clipboard::FormatType Clipboard::GetPlainTextFormatType() { |
- return std::string(kMimeTypeText); |
+const Clipboard::FormatType& Clipboard::GetPlainTextFormatType() { |
+ CR_DEFINE_STATIC_LOCAL(FormatType, type, (kMimeTypeText)); |
+ return type; |
} |
// static |
-Clipboard::FormatType Clipboard::GetPlainTextWFormatType() { |
+const Clipboard::FormatType& Clipboard::GetPlainTextWFormatType() { |
return GetPlainTextFormatType(); |
} |
// static |
-Clipboard::FormatType Clipboard::GetHtmlFormatType() { |
- return std::string(kMimeTypeHTML); |
+const Clipboard::FormatType& Clipboard::GetHtmlFormatType() { |
+ CR_DEFINE_STATIC_LOCAL(FormatType, type, (kMimeTypeHTML)); |
+ return type; |
} |
// static |
-Clipboard::FormatType Clipboard::GetBitmapFormatType() { |
- return std::string(kMimeTypeBitmap); |
+const Clipboard::FormatType& Clipboard::GetBitmapFormatType() { |
+ CR_DEFINE_STATIC_LOCAL(FormatType, type, (kMimeTypeBitmap)); |
+ return type; |
} |
// static |
-Clipboard::FormatType Clipboard::GetWebKitSmartPasteFormatType() { |
- return std::string(kMimeTypeWebkitSmartPaste); |
+const Clipboard::FormatType& Clipboard::GetWebKitSmartPasteFormatType() { |
+ CR_DEFINE_STATIC_LOCAL(FormatType, type, (kMimeTypeWebkitSmartPaste)); |
+ return type; |
} |
// static |
-Clipboard::FormatType Clipboard::GetWebCustomDataFormatType() { |
- return std::string(kMimeTypeWebCustomData); |
+const Clipboard::FormatType& Clipboard::GetWebCustomDataFormatType() { |
+ CR_DEFINE_STATIC_LOCAL(FormatType, type, (kMimeTypeWebCustomData)); |
+ return type; |
} |
} // namespace ui |