| Index: webkit/glue/webclipboard_impl.cc
|
| ===================================================================
|
| --- webkit/glue/webclipboard_impl.cc (revision 0)
|
| +++ webkit/glue/webclipboard_impl.cc (revision 0)
|
| @@ -0,0 +1,134 @@
|
| +// Copyright (c) 2009 The Chromium Authors. All rights reserved. Use of this
|
| +// source code is governed by a BSD-style license that can be found in the
|
| +// LICENSE file.
|
| +
|
| +#include "webkit/glue/webclipboard_impl.h"
|
| +
|
| +#include "WebImage.h"
|
| +#include "WebString.h"
|
| +#include "WebURL.h"
|
| +
|
| +#include "base/clipboard.h"
|
| +#include "base/logging.h"
|
| +#include "base/string_util.h"
|
| +#include "googleurl/src/gurl.h"
|
| +#include "net/base/escape.h"
|
| +#include "webkit/glue/scoped_clipboard_writer_glue.h"
|
| +#include "webkit/glue/webkit_glue.h"
|
| +
|
| +using WebKit::WebClipboard;
|
| +using WebKit::WebImage;
|
| +using WebKit::WebString;
|
| +using WebKit::WebURL;
|
| +
|
| +namespace webkit_glue {
|
| +
|
| +static std::string URLToMarkup(const WebURL& url, const WebString& title) {
|
| + std::string markup("<a href=\"");
|
| + markup.append(url.spec());
|
| + markup.append("\">");
|
| + // TODO(darin): HTML escape this
|
| + markup.append(EscapeForHTML(UTF16ToUTF8(title)));
|
| + markup.append("</a>");
|
| + return markup;
|
| +}
|
| +
|
| +static std::string URLToImageMarkup(const WebURL& url,
|
| + const WebString& title) {
|
| + std::string markup("<img src=\"");
|
| + markup.append(url.spec());
|
| + markup.append("\"");
|
| + if (!title.isEmpty()) {
|
| + markup.append(" alt=\"");
|
| + markup.append(EscapeForHTML(UTF16ToUTF8(title)));
|
| + markup.append("\"");
|
| + }
|
| + markup.append("/>");
|
| + return markup;
|
| +}
|
| +
|
| +bool WebClipboardImpl::isFormatAvailable(Format format) {
|
| + Clipboard::FormatType format_type;
|
| +
|
| + switch (format) {
|
| + case FormatHTML:
|
| + format_type = Clipboard::GetHtmlFormatType();
|
| + break;
|
| + case FormatSmartPaste:
|
| + format_type = Clipboard::GetWebKitSmartPasteFormatType();
|
| + break;
|
| + case FormatBookmark:
|
| +#if defined(OS_WIN) || defined(OS_MACOSX)
|
| + format_type = Clipboard::GetUrlWFormatType();
|
| + break;
|
| +#endif
|
| + default:
|
| + NOTREACHED();
|
| + return false;
|
| + }
|
| +
|
| + return ClipboardIsFormatAvailable(format_type);
|
| +}
|
| +
|
| +WebString WebClipboardImpl::readPlainText() {
|
| + if (ClipboardIsFormatAvailable(Clipboard::GetPlainTextWFormatType())) {
|
| + std::wstring text;
|
| + ClipboardReadText(&text);
|
| + if (!text.empty())
|
| + return WideToUTF16(text);
|
| + }
|
| +
|
| + if (ClipboardIsFormatAvailable(Clipboard::GetPlainTextFormatType())) {
|
| + std::string text;
|
| + ClipboardReadAsciiText(&text);
|
| + if (!text.empty())
|
| + return UTF8ToUTF16(text);
|
| + }
|
| +
|
| + return WebString();
|
| +}
|
| +
|
| +WebString WebClipboardImpl::readHTML(WebURL* source_url) {
|
| + std::wstring html_stdstr;
|
| + GURL gurl;
|
| + ClipboardReadHTML(&html_stdstr, &gurl);
|
| + *source_url = gurl;
|
| + return WideToUTF16(html_stdstr);
|
| +}
|
| +
|
| +void WebClipboardImpl::writeHTML(
|
| + const WebString& html_text, const WebURL& source_url,
|
| + const WebString& plain_text, bool write_smart_paste) {
|
| + ScopedClipboardWriterGlue scw(ClipboardGetClipboard());
|
| + scw.WriteHTML(UTF16ToWide(html_text), source_url.spec());
|
| + scw.WriteText(UTF16ToWide(plain_text));
|
| +
|
| + if (write_smart_paste)
|
| + scw.WriteWebSmartPaste();
|
| +}
|
| +
|
| +void WebClipboardImpl::writeURL(const WebURL& url, const WebString& title) {
|
| + ScopedClipboardWriterGlue scw(ClipboardGetClipboard());
|
| +
|
| + scw.WriteBookmark(UTF16ToWide(title), url.spec());
|
| + scw.WriteHTML(UTF8ToWide(URLToMarkup(url, title)), "");
|
| + scw.WriteText(UTF8ToWide(url.spec()));
|
| +}
|
| +
|
| +void WebClipboardImpl::writeImage(
|
| + const WebImage& image, const WebURL& url, const WebString& title) {
|
| + ScopedClipboardWriterGlue scw(ClipboardGetClipboard());
|
| +
|
| +#if WEBKIT_USING(SKIA)
|
| + if (!image.isNull())
|
| + scw.WriteBitmapFromPixels(image.pixels(), image.size());
|
| +#endif
|
| +
|
| + if (!url.isEmpty()) {
|
| + scw.WriteBookmark(UTF16ToWide(title), url.spec());
|
| + scw.WriteHTML(UTF8ToWide(URLToImageMarkup(url, title)), "");
|
| + scw.WriteText(UTF8ToWide(url.spec()));
|
| + }
|
| +}
|
| +
|
| +} // namespace webkit_glue
|
|
|
| Property changes on: webkit\glue\webclipboard_impl.cc
|
| ___________________________________________________________________
|
| Added: svn:eol-style
|
| + LF
|
|
|
|
|