| Index: ui/base/clipboard/clipboard_mac.mm
|
| diff --git a/ui/base/clipboard/clipboard_mac.mm b/ui/base/clipboard/clipboard_mac.mm
|
| index 88a9ff17802ba36264fc6a8a0f4027ae3400d1c7..63c1edf7cf5de8579b8912b73e7323c9ff45d9f7 100644
|
| --- a/ui/base/clipboard/clipboard_mac.mm
|
| +++ b/ui/base/clipboard/clipboard_mac.mm
|
| @@ -2,7 +2,7 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| -#include "ui/base/clipboard/clipboard.h"
|
| +#include "ui/base/clipboard/clipboard_mac.h"
|
|
|
| #import <Cocoa/Cocoa.h>
|
|
|
| @@ -165,16 +165,22 @@ const Clipboard::FormatType& Clipboard::GetPepperCustomDataFormatType() {
|
| return type;
|
| }
|
|
|
| -// Clipboard implementation.
|
| -Clipboard::Clipboard() {
|
| +// Clipboard factory method.
|
| +// static
|
| +Clipboard* Clipboard::Create() {
|
| + return new ClipboardMac;
|
| +}
|
| +
|
| +// ClipboardMac implementation.
|
| +ClipboardMac::ClipboardMac() {
|
| DCHECK(CalledOnValidThread());
|
| }
|
|
|
| -Clipboard::~Clipboard() {
|
| +ClipboardMac::~ClipboardMac() {
|
| DCHECK(CalledOnValidThread());
|
| }
|
|
|
| -uint64 Clipboard::GetSequenceNumber(ClipboardType type) {
|
| +uint64 ClipboardMac::GetSequenceNumber(ClipboardType type) {
|
| DCHECK(CalledOnValidThread());
|
| DCHECK_EQ(type, CLIPBOARD_TYPE_COPY_PASTE);
|
|
|
| @@ -182,8 +188,8 @@ uint64 Clipboard::GetSequenceNumber(ClipboardType type) {
|
| return [pb changeCount];
|
| }
|
|
|
| -bool Clipboard::IsFormatAvailable(const FormatType& format,
|
| - ClipboardType type) const {
|
| +bool ClipboardMac::IsFormatAvailable(const FormatType& format,
|
| + ClipboardType type) const {
|
| DCHECK(CalledOnValidThread());
|
| DCHECK_EQ(type, CLIPBOARD_TYPE_COPY_PASTE);
|
|
|
| @@ -199,7 +205,7 @@ bool Clipboard::IsFormatAvailable(const FormatType& format,
|
| return [types containsObject:format.ToNSString()];
|
| }
|
|
|
| -void Clipboard::Clear(ClipboardType type) {
|
| +void ClipboardMac::Clear(ClipboardType type) {
|
| DCHECK(CalledOnValidThread());
|
| DCHECK_EQ(type, CLIPBOARD_TYPE_COPY_PASTE);
|
|
|
| @@ -207,9 +213,9 @@ void Clipboard::Clear(ClipboardType type) {
|
| [pb declareTypes:[NSArray array] owner:nil];
|
| }
|
|
|
| -void Clipboard::ReadAvailableTypes(ClipboardType type,
|
| - std::vector<base::string16>* types,
|
| - bool* contains_filenames) const {
|
| +void ClipboardMac::ReadAvailableTypes(ClipboardType type,
|
| + std::vector<base::string16>* types,
|
| + bool* contains_filenames) const {
|
| DCHECK(CalledOnValidThread());
|
| types->clear();
|
| if (IsFormatAvailable(Clipboard::GetPlainTextFormatType(), type))
|
| @@ -230,7 +236,7 @@ void Clipboard::ReadAvailableTypes(ClipboardType type,
|
| }
|
| }
|
|
|
| -void Clipboard::ReadText(ClipboardType type, base::string16* result) const {
|
| +void ClipboardMac::ReadText(ClipboardType type, base::string16* result) const {
|
| DCHECK(CalledOnValidThread());
|
| DCHECK_EQ(type, CLIPBOARD_TYPE_COPY_PASTE);
|
| NSPasteboard* pb = GetPasteboard();
|
| @@ -239,7 +245,8 @@ void Clipboard::ReadText(ClipboardType type, base::string16* result) const {
|
| *result = base::SysNSStringToUTF16(contents);
|
| }
|
|
|
| -void Clipboard::ReadAsciiText(ClipboardType type, std::string* result) const {
|
| +void ClipboardMac::ReadAsciiText(ClipboardType type,
|
| + std::string* result) const {
|
| DCHECK(CalledOnValidThread());
|
| DCHECK_EQ(type, CLIPBOARD_TYPE_COPY_PASTE);
|
| NSPasteboard* pb = GetPasteboard();
|
| @@ -251,11 +258,11 @@ void Clipboard::ReadAsciiText(ClipboardType type, std::string* result) const {
|
| result->assign([contents UTF8String]);
|
| }
|
|
|
| -void Clipboard::ReadHTML(ClipboardType type,
|
| - base::string16* markup,
|
| - std::string* src_url,
|
| - uint32* fragment_start,
|
| - uint32* fragment_end) const {
|
| +void ClipboardMac::ReadHTML(ClipboardType type,
|
| + base::string16* markup,
|
| + std::string* src_url,
|
| + uint32* fragment_start,
|
| + uint32* fragment_end) const {
|
| DCHECK(CalledOnValidThread());
|
| DCHECK_EQ(type, CLIPBOARD_TYPE_COPY_PASTE);
|
|
|
| @@ -282,14 +289,14 @@ void Clipboard::ReadHTML(ClipboardType type,
|
| *fragment_end = static_cast<uint32>(markup->length());
|
| }
|
|
|
| -void Clipboard::ReadRTF(ClipboardType type, std::string* result) const {
|
| +void ClipboardMac::ReadRTF(ClipboardType type, std::string* result) const {
|
| DCHECK(CalledOnValidThread());
|
| DCHECK_EQ(type, CLIPBOARD_TYPE_COPY_PASTE);
|
|
|
| return ReadData(GetRtfFormatType(), result);
|
| }
|
|
|
| -SkBitmap Clipboard::ReadImage(ClipboardType type) const {
|
| +SkBitmap ClipboardMac::ReadImage(ClipboardType type) const {
|
| DCHECK(CalledOnValidThread());
|
| DCHECK_EQ(type, CLIPBOARD_TYPE_COPY_PASTE);
|
|
|
| @@ -307,9 +314,9 @@ SkBitmap Clipboard::ReadImage(ClipboardType type) const {
|
| return bitmap;
|
| }
|
|
|
| -void Clipboard::ReadCustomData(ClipboardType clipboard_type,
|
| - const base::string16& type,
|
| - base::string16* result) const {
|
| +void ClipboardMac::ReadCustomData(ClipboardType clipboard_type,
|
| + const base::string16& type,
|
| + base::string16* result) const {
|
| DCHECK(CalledOnValidThread());
|
| DCHECK_EQ(clipboard_type, CLIPBOARD_TYPE_COPY_PASTE);
|
|
|
| @@ -321,7 +328,7 @@ void Clipboard::ReadCustomData(ClipboardType clipboard_type,
|
| }
|
| }
|
|
|
| -void Clipboard::ReadBookmark(base::string16* title, std::string* url) const {
|
| +void ClipboardMac::ReadBookmark(base::string16* title, std::string* url) const {
|
| DCHECK(CalledOnValidThread());
|
| NSPasteboard* pb = GetPasteboard();
|
|
|
| @@ -339,7 +346,8 @@ void Clipboard::ReadBookmark(base::string16* title, std::string* url) const {
|
| }
|
| }
|
|
|
| -void Clipboard::ReadData(const FormatType& format, std::string* result) const {
|
| +void ClipboardMac::ReadData(const FormatType& format,
|
| + std::string* result) const {
|
| DCHECK(CalledOnValidThread());
|
| NSPasteboard* pb = GetPasteboard();
|
| NSData* data = [pb dataForType:format.ToNSString()];
|
| @@ -347,35 +355,35 @@ void Clipboard::ReadData(const FormatType& format, std::string* result) const {
|
| result->assign(static_cast<const char*>([data bytes]), [data length]);
|
| }
|
|
|
| -void Clipboard::WriteObjects(ClipboardType type, const ObjectMap& objects) {
|
| +void ClipboardMac::WriteObjects(ClipboardType type, const ObjectMap& objects) {
|
| DCHECK(CalledOnValidThread());
|
| DCHECK_EQ(type, CLIPBOARD_TYPE_COPY_PASTE);
|
|
|
| NSPasteboard* pb = GetPasteboard();
|
| [pb declareTypes:[NSArray array] owner:nil];
|
|
|
| - for (ObjectMap::const_iterator iter = objects.begin();
|
| - iter != objects.end(); ++iter) {
|
| + for (ObjectMap::const_iterator iter = objects.begin(); iter != objects.end();
|
| + ++iter) {
|
| DispatchObject(static_cast<ObjectType>(iter->first), iter->second);
|
| }
|
| }
|
|
|
| -void Clipboard::WriteText(const char* text_data, size_t text_len) {
|
| +void ClipboardMac::WriteText(const char* text_data, size_t text_len) {
|
| std::string text_str(text_data, text_len);
|
| - NSString *text = base::SysUTF8ToNSString(text_str);
|
| + NSString* text = base::SysUTF8ToNSString(text_str);
|
| NSPasteboard* pb = GetPasteboard();
|
| [pb addTypes:[NSArray arrayWithObject:NSStringPboardType] owner:nil];
|
| [pb setString:text forType:NSStringPboardType];
|
| }
|
|
|
| -void Clipboard::WriteHTML(const char* markup_data,
|
| - size_t markup_len,
|
| - const char* url_data,
|
| - size_t url_len) {
|
| +void ClipboardMac::WriteHTML(const char* markup_data,
|
| + size_t markup_len,
|
| + const char* url_data,
|
| + size_t url_len) {
|
| // We need to mark it as utf-8. (see crbug.com/11957)
|
| std::string html_fragment_str("<meta charset='utf-8'>");
|
| html_fragment_str.append(markup_data, markup_len);
|
| - NSString *html_fragment = base::SysUTF8ToNSString(html_fragment_str);
|
| + NSString* html_fragment = base::SysUTF8ToNSString(html_fragment_str);
|
|
|
| // TODO(avi): url_data?
|
| NSPasteboard* pb = GetPasteboard();
|
| @@ -383,18 +391,18 @@ void Clipboard::WriteHTML(const char* markup_data,
|
| [pb setString:html_fragment forType:NSHTMLPboardType];
|
| }
|
|
|
| -void Clipboard::WriteRTF(const char* rtf_data, size_t data_len) {
|
| +void ClipboardMac::WriteRTF(const char* rtf_data, size_t data_len) {
|
| WriteData(GetRtfFormatType(), rtf_data, data_len);
|
| }
|
|
|
| -void Clipboard::WriteBookmark(const char* title_data,
|
| - size_t title_len,
|
| - const char* url_data,
|
| - size_t url_len) {
|
| +void ClipboardMac::WriteBookmark(const char* title_data,
|
| + size_t title_len,
|
| + const char* url_data,
|
| + size_t url_len) {
|
| std::string title_str(title_data, title_len);
|
| - NSString *title = base::SysUTF8ToNSString(title_str);
|
| + NSString* title = base::SysUTF8ToNSString(title_str);
|
| std::string url_str(url_data, url_len);
|
| - NSString *url = base::SysUTF8ToNSString(url_str);
|
| + NSString* url = base::SysUTF8ToNSString(url_str);
|
|
|
| // TODO(playmobil): In the Windows version of this function, an HTML
|
| // representation of the bookmark is also added to the clipboard, to support
|
| @@ -404,31 +412,29 @@ void Clipboard::WriteBookmark(const char* title_data,
|
|
|
| NSPasteboard* pb = GetPasteboard();
|
| // passing UTIs into the pasteboard methods is valid >= 10.5
|
| - [pb addTypes:[NSArray arrayWithObjects:NSURLPboardType,
|
| - kUTTypeURLName,
|
| - nil]
|
| + [pb addTypes:[NSArray arrayWithObjects:NSURLPboardType, kUTTypeURLName, nil]
|
| owner:nil];
|
| [nsurl writeToPasteboard:pb];
|
| [pb setString:title forType:kUTTypeURLName];
|
| }
|
|
|
| -void Clipboard::WriteBitmap(const SkBitmap& bitmap) {
|
| +void ClipboardMac::WriteBitmap(const SkBitmap& bitmap) {
|
| NSImage* image = gfx::SkBitmapToNSImageWithColorSpace(
|
| bitmap, base::mac::GetSystemColorSpace());
|
| // An API to ask the NSImage to write itself to the clipboard comes in 10.6 :(
|
| // For now, spit out the image as a TIFF.
|
| NSPasteboard* pb = GetPasteboard();
|
| [pb addTypes:[NSArray arrayWithObject:NSTIFFPboardType] owner:nil];
|
| - NSData *tiff_data = [image TIFFRepresentation];
|
| + NSData* tiff_data = [image TIFFRepresentation];
|
| LOG_IF(ERROR, tiff_data == NULL) << "Failed to allocate image for clipboard";
|
| if (tiff_data) {
|
| [pb setData:tiff_data forType:NSTIFFPboardType];
|
| }
|
| }
|
|
|
| -void Clipboard::WriteData(const FormatType& format,
|
| - const char* data_data,
|
| - size_t data_len) {
|
| +void ClipboardMac::WriteData(const FormatType& format,
|
| + const char* data_data,
|
| + size_t data_len) {
|
| NSPasteboard* pb = GetPasteboard();
|
| [pb addTypes:[NSArray arrayWithObject:format.ToNSString()] owner:nil];
|
| [pb setData:[NSData dataWithBytes:data_data length:data_len]
|
| @@ -437,7 +443,7 @@ void Clipboard::WriteData(const FormatType& format,
|
|
|
| // Write an extra flavor that signifies WebKit was the last to modify the
|
| // pasteboard. This flavor has no data.
|
| -void Clipboard::WriteWebSmartPaste() {
|
| +void ClipboardMac::WriteWebSmartPaste() {
|
| NSPasteboard* pb = GetPasteboard();
|
| NSString* format = GetWebKitSmartPasteFormatType().ToNSString();
|
| [pb addTypes:[NSArray arrayWithObject:format] owner:nil];
|
|
|