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

Unified 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: . 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/base/clipboard/clipboard.cc ('k') | ui/base/clipboard/clipboard_gtk.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
« no previous file with comments | « ui/base/clipboard/clipboard.cc ('k') | ui/base/clipboard/clipboard_gtk.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698