Commit 3f031829 authored by dcheng@chromium.org's avatar dcheng@chromium.org

Implement WebClipboard::writeDataObject.

BUG=22660
TEST=manual. Need to make another WebKit patch to enable this functionality.

Review URL: http://codereview.chromium.org/8591034

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@110757 0039d316-1c4b-4281-b951-d872f2087c98
parent 1bdf4c59
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
#include "net/base/escape.h" #include "net/base/escape.h"
#include "third_party/skia/include/core/SkBitmap.h" #include "third_party/skia/include/core/SkBitmap.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebData.h" #include "third_party/WebKit/Source/WebKit/chromium/public/WebData.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebDragData.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebImage.h" #include "third_party/WebKit/Source/WebKit/chromium/public/WebImage.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebSize.h" #include "third_party/WebKit/Source/WebKit/chromium/public/WebSize.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebString.h" #include "third_party/WebKit/Source/WebKit/chromium/public/WebString.h"
...@@ -26,6 +27,7 @@ ...@@ -26,6 +27,7 @@
using WebKit::WebClipboard; using WebKit::WebClipboard;
using WebKit::WebData; using WebKit::WebData;
using WebKit::WebDragData;
using WebKit::WebImage; using WebKit::WebImage;
using WebKit::WebString; using WebKit::WebString;
using WebKit::WebURL; using WebKit::WebURL;
...@@ -220,6 +222,17 @@ void WebClipboardImpl::writeImage( ...@@ -220,6 +222,17 @@ void WebClipboardImpl::writeImage(
} }
} }
void WebClipboardImpl::writeDataObject(const WebDragData& data) {
// TODO(dcheng): This actually results in a double clear of the clipboard.
// Once in WebKit, and once here when the clipboard writer goes out of scope.
// The same is true of the other WebClipboard::write* methods.
ScopedClipboardWriterGlue scw(ClipboardGetClipboard());
// TODO(dcheng): Properly support text/uri-list here.
scw.WriteText(data.plainText());
scw.WriteHTML(data.htmlText(), "");
}
bool WebClipboardImpl::ConvertBufferType(Buffer buffer, bool WebClipboardImpl::ConvertBufferType(Buffer buffer,
ui::Clipboard::Buffer* result) { ui::Clipboard::Buffer* result) {
switch (buffer) { switch (buffer) {
......
...@@ -47,6 +47,7 @@ class WebClipboardImpl : public WebKit::WebClipboard { ...@@ -47,6 +47,7 @@ class WebClipboardImpl : public WebKit::WebClipboard {
const WebKit::WebImage& image, const WebKit::WebImage& image,
const WebKit::WebURL& source_url, const WebKit::WebURL& source_url,
const WebKit::WebString& title); const WebKit::WebString& title);
virtual void writeDataObject(const WebKit::WebDragData& data);
private: private:
bool ConvertBufferType(Buffer, ui::Clipboard::Buffer*); bool ConvertBufferType(Buffer, ui::Clipboard::Buffer*);
......
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
#include "base/string_util.h" #include "base/string_util.h"
#include "net/base/escape.h" #include "net/base/escape.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebCommon.h" #include "third_party/WebKit/Source/WebKit/chromium/public/WebCommon.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebDragData.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebImage.h" #include "third_party/WebKit/Source/WebKit/chromium/public/WebImage.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebURL.h" #include "third_party/WebKit/Source/WebKit/chromium/public/WebURL.h"
#include "webkit/glue/webclipboard_impl.h" #include "webkit/glue/webclipboard_impl.h"
...@@ -158,3 +159,10 @@ void MockWebClipboardImpl::writeImage(const WebKit::WebImage& image, ...@@ -158,3 +159,10 @@ void MockWebClipboardImpl::writeImage(const WebKit::WebImage& image,
m_writeSmartPaste = false; m_writeSmartPaste = false;
} }
} }
void MockWebClipboardImpl::writeDataObject(const WebKit::WebDragData& data) {
m_htmlText = data.htmlText();
m_plainText = data.plainText();
m_image.reset();
m_writeSmartPaste = false;
}
...@@ -18,28 +18,28 @@ class MockWebClipboardImpl : public WebKit::WebClipboard { ...@@ -18,28 +18,28 @@ class MockWebClipboardImpl : public WebKit::WebClipboard {
MockWebClipboardImpl(); MockWebClipboardImpl();
~MockWebClipboardImpl(); ~MockWebClipboardImpl();
virtual bool isFormatAvailable(WebKit::WebClipboard::Format, virtual bool isFormatAvailable(WebKit::WebClipboard::Format format,
WebKit::WebClipboard::Buffer); WebKit::WebClipboard::Buffer buffer);
virtual WebKit::WebVector<WebKit::WebString> readAvailableTypes( virtual WebKit::WebVector<WebKit::WebString> readAvailableTypes(
WebKit::WebClipboard::Buffer, bool* containsFilenames); WebKit::WebClipboard::Buffer buffer, bool* containsFilenames);
virtual WebKit::WebString readPlainText(WebKit::WebClipboard::Buffer); virtual WebKit::WebString readPlainText(WebKit::WebClipboard::Buffer buffer);
virtual WebKit::WebString readHTML(WebKit::WebClipboard::Buffer, virtual WebKit::WebString readHTML(WebKit::WebClipboard::Buffer buffer,
WebKit::WebURL*, WebKit::WebURL* url,
unsigned* fragmentStart, unsigned* fragmentStart,
unsigned* fragmentEnd); unsigned* fragmentEnd);
virtual WebKit::WebData readImage(WebKit::WebClipboard::Buffer); virtual WebKit::WebData readImage(WebKit::WebClipboard::Buffer);
virtual void writePlainText(const WebKit::WebString& plain_text); virtual void writePlainText(const WebKit::WebString& plain_text);
virtual void writeHTML( virtual void writeHTML(
const WebKit::WebString& htmlText, const WebKit::WebURL&, const WebKit::WebString& htmlText, const WebKit::WebURL& url,
const WebKit::WebString& plainText, bool writeSmartPaste); const WebKit::WebString& plainText, bool writeSmartPaste);
virtual void writeURL( virtual void writeURL(
const WebKit::WebURL&, const WebKit::WebString& title); const WebKit::WebURL& url, const WebKit::WebString& title);
virtual void writeImage( virtual void writeImage(
const WebKit::WebImage&, const WebKit::WebURL&, const WebKit::WebImage& image, const WebKit::WebURL& url,
const WebKit::WebString& title); const WebKit::WebString& title);
virtual void writeDataObject(const WebKit::WebDragData& data);
private: private:
WebKit::WebString m_plainText; WebKit::WebString m_plainText;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment