Index: ui/base/clipboard/clipboard_mac.mm |
diff --git a/ui/base/clipboard/clipboard_mac.mm b/ui/base/clipboard/clipboard_mac.mm |
index ebeb90752c08b968382e056d537aecd955976ea1..f156a63d02aeb7ed8bc8064e5bca61478e1d807a 100644 |
--- a/ui/base/clipboard/clipboard_mac.mm |
+++ b/ui/base/clipboard/clipboard_mac.mm |
@@ -153,6 +153,17 @@ void Clipboard::WriteBitmap(const char* pixel_data, const char* size_data) { |
} |
} |
+void Clipboard::WriteData(const char* format_name, size_t format_len, |
+ const char* data_data, size_t data_len) { |
+ NSPasteboard* pb = GetPasteboard(); |
+ NSString* format = [[NSString alloc] initWithBytes:format_name |
+ length:format_len |
+ encoding:NSUTF8StringEncoding]; |
+ [pb addTypes:[NSArray arrayWithObject:format] owner:nil]; |
+ [pb setData:[NSData dataWithBytes:data_data length:data_len] |
+ forType:format]; |
+} |
+ |
// Write an extra flavor that signifies WebKit was the last to modify the |
// pasteboard. This flavor has no data. |
void Clipboard::WriteWebSmartPaste() { |
@@ -170,7 +181,7 @@ uint64 Clipboard::GetSequenceNumber(Buffer buffer) { |
} |
bool Clipboard::IsFormatAvailable(const Clipboard::FormatType& format, |
- Clipboard::Buffer buffer) const { |
+ Buffer buffer) const { |
DCHECK_EQ(buffer, BUFFER_STANDARD); |
NSString* format_ns = base::SysUTF8ToNSString(format); |
@@ -186,6 +197,17 @@ bool Clipboard::IsFormatAvailable(const Clipboard::FormatType& format, |
return [types containsObject:format_ns]; |
} |
+bool Clipboard::IsFormatAvailableByString(const std::string& format, |
+ Buffer buffer) const { |
+ DCHECK_EQ(buffer, BUFFER_STANDARD); |
+ NSString* format_ns = base::SysUTF8ToNSString(format); |
+ |
+ NSPasteboard* pb = GetPasteboard(); |
+ NSArray* types = [pb types]; |
+ |
+ return [types containsObject:format_ns]; |
+} |
+ |
void Clipboard::ReadAvailableTypes(Clipboard::Buffer buffer, |
std::vector<string16>* types, |
bool* contains_filenames) const { |
@@ -342,6 +364,13 @@ void Clipboard::ReadFiles(std::vector<FilePath>* files) const { |
} |
} |
+void Clipboard::ReadData(const std::string& format, std::string* result) const { |
+ NSPasteboard* pb = GetPasteboard(); |
+ NSData* data = [pb dataForType:base::SysUTF8ToNSString(format)]; |
+ if ([data length]) |
+ result->assign(reinterpret_cast<const char*>([data bytes]), [data length]); |
tony
2011/12/05 18:56:09
Nit: I think you can static_cast here.
dcheng
2011/12/05 19:53:03
Done.
|
+} |
+ |
// static |
Clipboard::FormatType Clipboard::GetUrlFormatType() { |
return base::SysNSStringToUTF8(NSURLPboardType); |