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

Unified Diff: webkit/glue/webclipboard_impl.cc

Issue 17420005: Move the following clipboard files from webkit\glue to webkit\renderer. These files now live in the… (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 7 years, 6 months 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 | « webkit/glue/webclipboard_impl.h ('k') | webkit/glue/webkit_glue.gypi » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webkit/glue/webclipboard_impl.cc
===================================================================
--- webkit/glue/webclipboard_impl.cc (revision 207553)
+++ webkit/glue/webclipboard_impl.cc (working copy)
@@ -1,278 +0,0 @@
-// Copyright (c) 2012 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 "base/logging.h"
-#include "base/pickle.h"
-#include "base/strings/string_util.h"
-#include "base/strings/utf_string_conversions.h"
-#include "googleurl/src/gurl.h"
-#include "net/base/escape.h"
-#include "third_party/WebKit/public/platform/WebData.h"
-#include "third_party/WebKit/public/platform/WebDragData.h"
-#include "third_party/WebKit/public/platform/WebImage.h"
-#include "third_party/WebKit/public/platform/WebSize.h"
-#include "third_party/WebKit/public/platform/WebString.h"
-#include "third_party/WebKit/public/platform/WebURL.h"
-#include "third_party/WebKit/public/platform/WebVector.h"
-#include "third_party/skia/include/core/SkBitmap.h"
-#include "ui/base/clipboard/clipboard.h"
-#include "ui/base/clipboard/custom_data_helper.h"
-#include "webkit/common/webdropdata.h"
-#include "webkit/glue/scoped_clipboard_writer_glue.h"
-#include "webkit/glue/webkit_glue.h"
-
-using WebKit::WebClipboard;
-using WebKit::WebData;
-using WebKit::WebDragData;
-using WebKit::WebImage;
-using WebKit::WebString;
-using WebKit::WebURL;
-using WebKit::WebVector;
-
-namespace webkit_glue {
-
-// Static
-std::string WebClipboardImpl::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(net::EscapeForHTML(UTF16ToUTF8(title)));
- markup.append("</a>");
- return markup;
-}
-
-// Static
-std::string WebClipboardImpl::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(net::EscapeForHTML(UTF16ToUTF8(title)));
- markup.append("\"");
- }
- markup.append("/>");
- return markup;
-}
-
-WebClipboardImpl::WebClipboardImpl(ClipboardClient* client)
- : client_(client) {
-}
-
-WebClipboardImpl::~WebClipboardImpl() {
-}
-
-uint64 WebClipboardImpl::getSequenceNumber() {
- return sequenceNumber(BufferStandard);
-}
-
-uint64 WebClipboardImpl::sequenceNumber(Buffer buffer) {
- ui::Clipboard::Buffer buffer_type;
- if (!ConvertBufferType(buffer, &buffer_type))
- return 0;
-
- return client_->GetSequenceNumber(buffer_type);
-}
-
-bool WebClipboardImpl::isFormatAvailable(Format format, Buffer buffer) {
- ui::Clipboard::Buffer buffer_type = ui::Clipboard::BUFFER_STANDARD;
-
- if (!ConvertBufferType(buffer, &buffer_type))
- return false;
-
- switch (format) {
- case FormatPlainText:
- return client_->IsFormatAvailable(ui::Clipboard::GetPlainTextFormatType(),
- buffer_type) ||
- client_->IsFormatAvailable(ui::Clipboard::GetPlainTextWFormatType(),
- buffer_type);
- case FormatHTML:
- return client_->IsFormatAvailable(ui::Clipboard::GetHtmlFormatType(),
- buffer_type);
- case FormatSmartPaste:
- return client_->IsFormatAvailable(
- ui::Clipboard::GetWebKitSmartPasteFormatType(), buffer_type);
- case FormatBookmark:
-#if defined(OS_WIN) || defined(OS_MACOSX)
- return client_->IsFormatAvailable(ui::Clipboard::GetUrlWFormatType(),
- buffer_type);
-#endif
- default:
- NOTREACHED();
- }
-
- return false;
-}
-
-WebVector<WebString> WebClipboardImpl::readAvailableTypes(
- Buffer buffer, bool* contains_filenames) {
- ui::Clipboard::Buffer buffer_type;
- std::vector<base::string16> types;
- if (ConvertBufferType(buffer, &buffer_type)) {
- client_->ReadAvailableTypes(buffer_type, &types, contains_filenames);
- }
- return types;
-}
-
-WebString WebClipboardImpl::readPlainText(Buffer buffer) {
- ui::Clipboard::Buffer buffer_type;
- if (!ConvertBufferType(buffer, &buffer_type))
- return WebString();
-
- if (client_->IsFormatAvailable(ui::Clipboard::GetPlainTextWFormatType(),
- buffer_type)) {
- base::string16 text;
- client_->ReadText(buffer_type, &text);
- if (!text.empty())
- return text;
- }
-
- if (client_->IsFormatAvailable(ui::Clipboard::GetPlainTextFormatType(),
- buffer_type)) {
- std::string text;
- client_->ReadAsciiText(buffer_type, &text);
- if (!text.empty())
- return ASCIIToUTF16(text);
- }
-
- return WebString();
-}
-
-WebString WebClipboardImpl::readHTML(Buffer buffer, WebURL* source_url,
- unsigned* fragment_start,
- unsigned* fragment_end) {
- ui::Clipboard::Buffer buffer_type;
- if (!ConvertBufferType(buffer, &buffer_type))
- return WebString();
-
- base::string16 html_stdstr;
- GURL gurl;
- client_->ReadHTML(buffer_type, &html_stdstr, &gurl,
- static_cast<uint32*>(fragment_start),
- static_cast<uint32*>(fragment_end));
- *source_url = gurl;
- return html_stdstr;
-}
-
-WebData WebClipboardImpl::readImage(Buffer buffer) {
- ui::Clipboard::Buffer buffer_type;
- if (!ConvertBufferType(buffer, &buffer_type))
- return WebData();
-
- std::string png_data;
- client_->ReadImage(buffer_type, &png_data);
- return WebData(png_data);
-}
-
-WebString WebClipboardImpl::readCustomData(Buffer buffer,
- const WebString& type) {
- ui::Clipboard::Buffer buffer_type;
- if (!ConvertBufferType(buffer, &buffer_type))
- return WebString();
-
- base::string16 data;
- client_->ReadCustomData(buffer_type, type, &data);
- return data;
-}
-
-void WebClipboardImpl::writeHTML(
- const WebString& html_text, const WebURL& source_url,
- const WebString& plain_text, bool write_smart_paste) {
- ScopedClipboardWriterGlue scw(client_);
- scw.WriteHTML(html_text, source_url.spec());
- scw.WriteText(plain_text);
-
- if (write_smart_paste)
- scw.WriteWebSmartPaste();
-}
-
-void WebClipboardImpl::writePlainText(const WebString& plain_text) {
- ScopedClipboardWriterGlue scw(client_);
- scw.WriteText(plain_text);
-}
-
-void WebClipboardImpl::writeURL(const WebURL& url, const WebString& title) {
- ScopedClipboardWriterGlue scw(client_);
-
- scw.WriteBookmark(title, url.spec());
- scw.WriteHTML(UTF8ToUTF16(URLToMarkup(url, title)), std::string());
- scw.WriteText(UTF8ToUTF16(std::string(url.spec())));
-}
-
-void WebClipboardImpl::writeImage(
- const WebImage& image, const WebURL& url, const WebString& title) {
- ScopedClipboardWriterGlue scw(client_);
-
- if (!image.isNull()) {
- const SkBitmap& bitmap = image.getSkBitmap();
- SkAutoLockPixels locked(bitmap);
- scw.WriteBitmapFromPixels(bitmap.getPixels(), image.size());
- }
-
- if (!url.isEmpty()) {
- scw.WriteBookmark(title, url.spec());
-#if !defined(OS_MACOSX)
- // When writing the image, we also write the image markup so that pasting
- // into rich text editors, such as Gmail, reveals the image. We also don't
- // want to call writeText(), since some applications (WordPad) don't pick
- // the image if there is also a text format on the clipboard.
- // We also don't want to write HTML on a Mac, since Mail.app prefers to use
- // the image markup over attaching the actual image. See
- // http://crbug.com/33016 for details.
- scw.WriteHTML(UTF8ToUTF16(URLToImageMarkup(url, title)), std::string());
-#endif
- }
-}
-
-void WebClipboardImpl::writeDataObject(const WebDragData& data) {
- ScopedClipboardWriterGlue scw(client_);
-
- WebDropData data_object(data);
- // TODO(dcheng): Properly support text/uri-list here.
- if (!data_object.text.is_null())
- scw.WriteText(data_object.text.string());
- if (!data_object.html.is_null())
- scw.WriteHTML(data_object.html.string(), std::string());
- // If there is no custom data, avoid calling WritePickledData. This ensures
- // that ScopedClipboardWriterGlue's dtor remains a no-op if the page didn't
- // modify the DataTransfer object, which is important to avoid stomping on
- // any clipboard contents written by extension functions such as
- // chrome.bookmarkManagerPrivate.copy.
- if (!data_object.custom_data.empty()) {
- Pickle pickle;
- ui::WriteCustomDataToPickle(data_object.custom_data, &pickle);
- scw.WritePickledData(pickle, ui::Clipboard::GetWebCustomDataFormatType());
- }
-}
-
-bool WebClipboardImpl::ConvertBufferType(Buffer buffer,
- ui::Clipboard::Buffer* result) {
- switch (buffer) {
- case BufferStandard:
- *result = ui::Clipboard::BUFFER_STANDARD;
- break;
- case BufferSelection:
-#if defined(USE_X11)
-#if defined(OS_CHROMEOS)
- // Chrome OS only supports the standard clipboard,
- // but not the X selection clipboad.
- return false;
-#else
- *result = ui::Clipboard::BUFFER_SELECTION;
- break;
-#endif
-#endif
- default:
- NOTREACHED();
- return false;
- }
- return true;
-}
-
-} // namespace webkit_glue
« no previous file with comments | « webkit/glue/webclipboard_impl.h ('k') | webkit/glue/webkit_glue.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698