summaryrefslogtreecommitdiffstats
path: root/webkit/port/platform/win
diff options
context:
space:
mode:
Diffstat (limited to 'webkit/port/platform/win')
-rw-r--r--webkit/port/platform/win/ClipboardUtilitiesWin.cpp323
-rw-r--r--webkit/port/platform/win/ClipboardUtilitiesWin.h72
-rw-r--r--webkit/port/platform/win/PasteboardWin.cpp224
3 files changed, 0 insertions, 619 deletions
diff --git a/webkit/port/platform/win/ClipboardUtilitiesWin.cpp b/webkit/port/platform/win/ClipboardUtilitiesWin.cpp
deleted file mode 100644
index f23c2fe..0000000
--- a/webkit/port/platform/win/ClipboardUtilitiesWin.cpp
+++ /dev/null
@@ -1,323 +0,0 @@
-/*
- * Copyright (C) 2007 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "config.h"
-#include "ClipboardUtilitiesWin.h"
-
-#include "KURL.h"
-#include "CString.h"
-#include "DocumentFragment.h"
-#include "markup.h"
-#include "PlatformString.h"
-#include "TextEncoding.h"
-#include <shlobj.h>
-#include <shlwapi.h>
-#include <shellapi.h>
-#include <wininet.h> // for INTERNET_MAX_URL_LENGTH
-
-#include "base/clipboard_util.h"
-
-namespace WebCore {
-
-FORMATETC* cfHDropFormat()
-{
- static FORMATETC urlFormat = {CF_HDROP, 0, DVASPECT_CONTENT, -1, TYMED_HGLOBAL};
- return &urlFormat;
-}
-
-//Firefox text/html
-static FORMATETC* texthtmlFormat()
-{
- static UINT cf = RegisterClipboardFormat(L"text/html");
- static FORMATETC texthtmlFormat = {cf, 0, DVASPECT_CONTENT, -1, TYMED_HGLOBAL};
- return &texthtmlFormat;
-}
-
-HGLOBAL createGlobalData(const KURL& url, const String& title)
-{
- String mutableURL(url.string());
- String mutableTitle(title);
- SIZE_T size = mutableURL.length() + mutableTitle.length() + 2; // +1 for "\n" and +1 for null terminator
- HGLOBAL cbData = ::GlobalAlloc(GPTR, size * sizeof(UChar));
-
- if (cbData) {
- PWSTR buffer = (PWSTR)::GlobalLock(cbData);
- swprintf_s(buffer, size, L"%s\n%s", mutableURL.charactersWithNullTermination(), mutableTitle.isNull() ? L"" : mutableTitle.charactersWithNullTermination());
- ::GlobalUnlock(cbData);
- }
- return cbData;
-}
-
-HGLOBAL createGlobalData(const String& str)
-{
- HGLOBAL globalData = ::GlobalAlloc(GPTR, (str.length() + 1) * sizeof(UChar));
- if (!globalData)
- return 0;
- UChar* buffer = static_cast<UChar*>(::GlobalLock(globalData));
- memcpy(buffer, str.characters(), str.length() * sizeof(UChar));
- buffer[str.length()] = 0;
- ::GlobalUnlock(globalData);
- return globalData;
-}
-
-HGLOBAL createGlobalData(const Vector<char>& vector)
-{
- HGLOBAL globalData = ::GlobalAlloc(GPTR, vector.size() + 1);
- if (!globalData)
- return 0;
- char* buffer = static_cast<char*>(::GlobalLock(globalData));
- memcpy(buffer, vector.data(), vector.size());
- buffer[vector.size()] = 0;
- ::GlobalUnlock(globalData);
- return globalData;
-}
-
-static void append(Vector<char>& vector, const char* string)
-{
- vector.append(string, strlen(string));
-}
-
-static void append(Vector<char>& vector, const CString& string)
-{
- vector.append(string.data(), string.length());
-}
-
-// Documentation for the CF_HTML format is available at http://msdn.microsoft.com/workshop/networking/clipboard/htmlclipboard.asp
-void markupToCF_HTML(const String& markup, const String& srcURL, Vector<char>& result)
-{
- if (markup.isEmpty())
- return;
-
- #define MAX_DIGITS 10
- #define MAKE_NUMBER_FORMAT_1(digits) MAKE_NUMBER_FORMAT_2(digits)
- #define MAKE_NUMBER_FORMAT_2(digits) "%0" #digits "u"
- #define NUMBER_FORMAT MAKE_NUMBER_FORMAT_1(MAX_DIGITS)
-
- const char* header = "Version:0.9\n"
- "StartHTML:" NUMBER_FORMAT "\n"
- "EndHTML:" NUMBER_FORMAT "\n"
- "StartFragment:" NUMBER_FORMAT "\n"
- "EndFragment:" NUMBER_FORMAT "\n";
- const char* sourceURLPrefix = "SourceURL:";
-
- const char* startMarkup = "<HTML>\n<BODY>\n<!--StartFragment-->\n";
- const char* endMarkup = "\n<!--EndFragment-->\n</BODY>\n</HTML>";
-
- CString sourceURLUTF8 = srcURL == blankURL() ? "" : srcURL.utf8();
- CString markupUTF8 = markup.utf8();
-
- // calculate offsets
- unsigned startHTMLOffset = strlen(header) - strlen(NUMBER_FORMAT) * 4 + MAX_DIGITS * 4;
- if (sourceURLUTF8.length())
- startHTMLOffset += strlen(sourceURLPrefix) + sourceURLUTF8.length() + 1;
- unsigned startFragmentOffset = startHTMLOffset + strlen(startMarkup);
- unsigned endFragmentOffset = startFragmentOffset + markupUTF8.length();
- unsigned endHTMLOffset = endFragmentOffset + strlen(endMarkup);
-
- append(result, String::format(header, startHTMLOffset, endHTMLOffset, startFragmentOffset, endFragmentOffset).utf8());
- if (sourceURLUTF8.length()) {
- append(result, sourceURLPrefix);
- append(result, sourceURLUTF8);
- result.append('\n');
- }
- append(result, startMarkup);
- append(result, markupUTF8);
- append(result, endMarkup);
-
- #undef MAX_DIGITS
- #undef MAKE_NUMBER_FORMAT_1
- #undef MAKE_NUMBER_FORMAT_2
- #undef NUMBER_FORMAT
-}
-
-String urlToMarkup(const KURL& url, const String& title)
-{
- String markup("<a href=\"");
- markup.append(url.string());
- markup.append("\">");
- markup.append(title);
- markup.append("</a>");
- return markup;
-}
-
-String urlToImageMarkup(const KURL& url, const String& altStr) {
- String markup("<img src=\"");
- markup.append(url.string());
- markup.append("\"");
- if (!altStr.isEmpty()) {
- markup.append(" alt=\"");
- // TODO(dglazkov): escape string
- markup.append(altStr);
- markup.append("\"");
- }
- markup.append("/>");
- return markup;
-}
-
-void replaceNewlinesWithWindowsStyleNewlines(String& str)
-{
- static const UChar Newline = '\n';
- static const char* const WindowsNewline("\r\n");
- str.replace(Newline, WindowsNewline);
-}
-
-void replaceNBSPWithSpace(String& str)
-{
- static const UChar NonBreakingSpaceCharacter = 0xA0;
- static const UChar SpaceCharacter = ' ';
- str.replace(NonBreakingSpaceCharacter, SpaceCharacter);
-}
-
-FORMATETC* urlWFormat()
-{
- static UINT cf = RegisterClipboardFormat(L"UniformResourceLocatorW");
- static FORMATETC urlFormat = {cf, 0, DVASPECT_CONTENT, -1, TYMED_HGLOBAL};
- return &urlFormat;
-}
-
-FORMATETC* urlFormat()
-{
- static UINT cf = RegisterClipboardFormat(L"UniformResourceLocator");
- static FORMATETC urlFormat = {cf, 0, DVASPECT_CONTENT, -1, TYMED_HGLOBAL};
- return &urlFormat;
-}
-
-FORMATETC* plainTextFormat()
-{
- static FORMATETC textFormat = {CF_TEXT, 0, DVASPECT_CONTENT, -1, TYMED_HGLOBAL};
- return &textFormat;
-}
-
-FORMATETC* plainTextWFormat()
-{
- static FORMATETC textFormat = {CF_UNICODETEXT, 0, DVASPECT_CONTENT, -1, TYMED_HGLOBAL};
- return &textFormat;
-}
-
-FORMATETC* filenameWFormat()
-{
- static UINT cf = RegisterClipboardFormat(L"FileNameW");
- static FORMATETC urlFormat = {cf, 0, DVASPECT_CONTENT, -1, TYMED_HGLOBAL};
- return &urlFormat;
-}
-
-FORMATETC* filenameFormat()
-{
- static UINT cf = RegisterClipboardFormat(L"FileName");
- static FORMATETC urlFormat = {cf, 0, DVASPECT_CONTENT, -1, TYMED_HGLOBAL};
- return &urlFormat;
-}
-
-//MSIE HTML Format
-FORMATETC* htmlFormat()
-{
- static UINT cf = RegisterClipboardFormat(L"HTML Format");
- static FORMATETC htmlFormat = {cf, 0, DVASPECT_CONTENT, -1, TYMED_HGLOBAL};
- return &htmlFormat;
-}
-
-FORMATETC* smartPasteFormat()
-{
- static UINT cf = RegisterClipboardFormat(L"WebKit Smart Paste Format");
- static FORMATETC htmlFormat = {cf, 0, DVASPECT_CONTENT, -1, TYMED_HGLOBAL};
- return &htmlFormat;
-}
-
-PassRefPtr<DocumentFragment> fragmentFromFilenames(Document*, const IDataObject*)
-{
- //FIXME: We should be able to create fragments from files
- return 0;
-}
-
-bool containsFilenames(const IDataObject*)
-{
- //FIXME: We'll want to update this once we can produce fragments from files
- return false;
-}
-
-//Convert a String containing CF_HTML formatted text to a DocumentFragment
-PassRefPtr<DocumentFragment> fragmentFromCF_HTML(Document* doc, const String& cf_html)
-{
- // obtain baseURL if present
- String srcURLStr("sourceURL:");
- String srcURL;
- unsigned lineStart = cf_html.find(srcURLStr, 0, false);
- if (lineStart != -1) {
- unsigned srcEnd = cf_html.find("\n", lineStart, false);
- unsigned srcStart = lineStart+srcURLStr.length();
- String rawSrcURL = cf_html.substring(srcStart, srcEnd-srcStart);
- replaceNBSPWithSpace(rawSrcURL);
- srcURL = rawSrcURL.stripWhiteSpace();
- }
-
- // find the markup between "<!--StartFragment -->" and "<!--EndFragment -->", accounting for browser quirks
- unsigned markupStart = cf_html.find("<html", 0, false);
- unsigned tagStart = cf_html.find("startfragment", markupStart, false);
- unsigned fragmentStart = cf_html.find('>', tagStart) + 1;
- unsigned tagEnd = cf_html.find("endfragment", fragmentStart, false);
- unsigned fragmentEnd = cf_html.reverseFind('<', tagEnd);
- String markup = cf_html.substring(fragmentStart, fragmentEnd - fragmentStart).stripWhiteSpace();
-
- return createFragmentFromMarkup(doc, markup, srcURL);
-}
-
-
-PassRefPtr<DocumentFragment> fragmentFromHTML(Document* doc, IDataObject* data)
-{
- if (!doc || !data)
- return 0;
-
- STGMEDIUM store;
- String html;
- String srcURL;
- if (SUCCEEDED(data->GetData(ClipboardUtil::GetHtmlFormat(), &store))) {
- //MS HTML Format parsing
- char* data = (char*)GlobalLock(store.hGlobal);
- SIZE_T dataSize = ::GlobalSize(store.hGlobal);
- String cf_html(UTF8Encoding().decode(data, dataSize));
- GlobalUnlock(store.hGlobal);
- ReleaseStgMedium(&store);
- if (PassRefPtr<DocumentFragment> fragment = fragmentFromCF_HTML(doc, cf_html))
- return fragment;
- }
- if (SUCCEEDED(data->GetData(ClipboardUtil::GetTextHtmlFormat(), &store))) {
- //raw html
- UChar* data = (UChar*)GlobalLock(store.hGlobal);
- html = String(data);
- GlobalUnlock(store.hGlobal);
- ReleaseStgMedium(&store);
- return createFragmentFromMarkup(doc, html, srcURL);
- }
-
- return 0;
-}
-
-bool containsHTML(IDataObject* data)
-{
- return SUCCEEDED(data->QueryGetData(ClipboardUtil::GetTextHtmlFormat())) ||
- SUCCEEDED(data->QueryGetData(ClipboardUtil::GetHtmlFormat()));
-}
-
-} // namespace WebCore
diff --git a/webkit/port/platform/win/ClipboardUtilitiesWin.h b/webkit/port/platform/win/ClipboardUtilitiesWin.h
deleted file mode 100644
index a7669ad..0000000
--- a/webkit/port/platform/win/ClipboardUtilitiesWin.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright (C) 2007 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef ClipboardUtilitiesWin_h
-#define ClipboardUtilitiesWin_h
-
-#include "DocumentFragment.h"
-#include <wtf/RefPtr.h>
-#include <wtf/Vector.h>
-
-#include <windows.h>
-#include <objidl.h>
-
-namespace WebCore {
-
-class Document;
-class KURL;
-class String;
-
-HGLOBAL createGlobalData(const String&);
-HGLOBAL createGlobalData(const Vector<char>&);
-HGLOBAL createGlobalData(const KURL& url, const String& title);
-
-FORMATETC* urlWFormat();
-FORMATETC* urlFormat();
-FORMATETC* plainTextWFormat();
-FORMATETC* plainTextFormat();
-FORMATETC* filenameWFormat();
-FORMATETC* filenameFormat();
-FORMATETC* htmlFormat();
-FORMATETC* cfHDropFormat();
-FORMATETC* smartPasteFormat();
-
-void markupToCF_HTML(const String& markup, const String& srcURL, Vector<char>& result);
-String urlToMarkup(const KURL& url, const String& title);
-String urlToImageMarkup(const KURL& url, const String& altStr);
-
-void replaceNewlinesWithWindowsStyleNewlines(String& str);
-void replaceNBSPWithSpace(String& str);
-
-bool containsFilenames(const IDataObject*);
-bool containsHTML(IDataObject* data);
-
-PassRefPtr<DocumentFragment> fragmentFromFilenames(Document*, const IDataObject*);
-PassRefPtr<DocumentFragment> fragmentFromHTML(Document* doc, IDataObject* data);
-PassRefPtr<DocumentFragment> fragmentFromCF_HTML(Document* doc, const String& cf_html);
-
-} // namespace WebCore
-
-#endif // ClipboardUtilitiesWin_h
diff --git a/webkit/port/platform/win/PasteboardWin.cpp b/webkit/port/platform/win/PasteboardWin.cpp
deleted file mode 100644
index 3063dc9..0000000
--- a/webkit/port/platform/win/PasteboardWin.cpp
+++ /dev/null
@@ -1,224 +0,0 @@
-/*
- * Copyright (C) 2006, 2007 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "config.h"
-#include "Pasteboard.h"
-
-#include "ClipboardUtilitiesWin.h"
-#include "CString.h"
-#include "DocumentFragment.h"
-#include "Document.h"
-#include "Element.h"
-#include "Frame.h"
-#include "HitTestResult.h"
-#include "Image.h"
-#include "KURL.h"
-#include "NativeImageSkia.h"
-#include "NotImplemented.h"
-#include "Page.h"
-#include "Range.h"
-#include "RenderImage.h"
-#include "TextEncoding.h"
-#include "markup.h"
-
-#include "base/clipboard_util.h"
-#include "webkit/glue/glue_util.h"
-#include "webkit/glue/scoped_clipboard_writer_glue.h"
-#include "webkit/glue/webkit_glue.h"
-
-namespace WebCore {
-
-static UINT HTMLClipboardFormat = 0;
-static UINT BookmarkClipboardFormat = 0;
-static UINT WebSmartPasteFormat = 0;
-
-Pasteboard* Pasteboard::generalPasteboard()
-{
- static Pasteboard* pasteboard = new Pasteboard;
- return pasteboard;
-}
-
-Pasteboard::Pasteboard()
-{
- HTMLClipboardFormat = ClipboardUtil::GetHtmlFormat()->cfFormat;
-
- BookmarkClipboardFormat = ClipboardUtil::GetUrlWFormat()->cfFormat;
-
- WebSmartPasteFormat = ClipboardUtil::GetWebKitSmartPasteFormat()->cfFormat;
-}
-
-void Pasteboard::clear()
-{
- // The ScopedClipboardWriter class takes care of clearing the clipboard's
- // previous contents.
-}
-
-void Pasteboard::writeSelection(Range* selectedRange, bool canSmartCopyOrDelete, Frame* frame)
-{
- ScopedClipboardWriterGlue scw(webkit_glue::ClipboardGetClipboard());
-
- ExceptionCode ec = 0;
- scw.WriteHTML(
- webkit_glue::StringToStdWString(
- createMarkup(selectedRange, 0, AnnotateForInterchange)),
- GURL(webkit_glue::StringToStdWString(
- selectedRange->startContainer(ec)->document()->url())).spec());
-
- // Put plain string on the pasteboard. CF_UNICODETEXT covers CF_TEXT as well
- String str = frame->selectedText();
- replaceNewlinesWithWindowsStyleNewlines(str);
- replaceNBSPWithSpace(str);
- scw.WriteText(webkit_glue::StringToStdWString(str));
-
- if (canSmartCopyOrDelete)
- scw.WriteWebSmartPaste();
-}
-
-void Pasteboard::writeURL(const KURL& url, const String& titleStr, Frame* frame)
-{
- ASSERT(!url.isEmpty());
-
- String title(titleStr);
- if (title.isEmpty()) {
- title = url.lastPathComponent();
- if (title.isEmpty())
- title = url.host();
- }
-
- ScopedClipboardWriterGlue scw(webkit_glue::ClipboardGetClipboard());
-
- // write to clipboard in format com.apple.safari.bookmarkdata to be able to paste into the bookmarks view with appropriate title
- scw.WriteBookmark(webkit_glue::StringToStdWString(titleStr),
- webkit_glue::KURLToGURL(url).spec());
-
- // write to clipboard in format CF_HTML to be able to paste into contenteditable areas as a link
- std::wstring link(webkit_glue::StringToStdWString(urlToMarkup(url, title)));
- scw.WriteHTML(link, GURL().spec());
-
- // bare-bones CF_UNICODETEXT support
- std::wstring spec(webkit_glue::StringToStdWString(url));
- scw.WriteText(spec);
-}
-
-void Pasteboard::writeImage(Node* node, const KURL& url, const String& title)
-{
- ASSERT(node && node->renderer() && node->renderer()->isImage());
- RenderImage* renderer = static_cast<RenderImage*>(node->renderer());
- CachedImage* cachedImage = static_cast<CachedImage*>(renderer->cachedImage());
- ASSERT(cachedImage);
- Image* image = cachedImage->image();
- ASSERT(image);
-
- NativeImageSkia* bitmap = image->nativeImageForCurrentFrame();
- ScopedClipboardWriterGlue scw(webkit_glue::ClipboardGetClipboard());
-
- if (bitmap)
- scw.WriteBitmap(*bitmap);
- if (!url.isEmpty()) {
- // write to clipboard in format com.apple.safari.bookmarkdata to be able to paste into the bookmarks view with appropriate title
- scw.WriteBookmark(webkit_glue::StringToStdWString(title),
- webkit_glue::KURLToGURL(url).spec());
-
- // write to clipboard in format CF_HTML to be able to paste into contenteditable areas as a an image
- std::wstring markup(webkit_glue::StringToStdWString(urlToImageMarkup(url, title)));
- scw.WriteHTML(markup, GURL().spec());
-
- // bare-bones CF_UNICODETEXT support
- std::wstring spec(webkit_glue::StringToStdWString(url.string()));
- scw.WriteText(spec);
- }
-}
-
-bool Pasteboard::canSmartReplace()
-{
- return webkit_glue::ClipboardIsFormatAvailable(WebSmartPasteFormat);
-}
-
-String Pasteboard::plainText(Frame* frame)
-{
- if (webkit_glue::ClipboardIsFormatAvailable(CF_UNICODETEXT)) {
- std::wstring text;
- webkit_glue::ClipboardReadText(&text);
- if (!text.empty())
- return webkit_glue::StdWStringToString(text);
- }
-
- if (webkit_glue::ClipboardIsFormatAvailable(CF_TEXT)) {
- std::string text;
- webkit_glue::ClipboardReadAsciiText(&text);
- if (!text.empty())
- return webkit_glue::StdStringToString(text);
- }
-
- return String();
-}
-
-PassRefPtr<DocumentFragment> Pasteboard::documentFragment(Frame* frame, PassRefPtr<Range> context, bool allowPlainText, bool& chosePlainText)
-{
- chosePlainText = false;
-
- if (webkit_glue::ClipboardIsFormatAvailable(HTMLClipboardFormat)) {
- std::wstring markup;
- GURL src_url;
- webkit_glue::ClipboardReadHTML(&markup, &src_url);
-
- PassRefPtr<DocumentFragment> fragment =
- createFragmentFromMarkup(frame->document(),
- webkit_glue::StdWStringToString(markup),
- webkit_glue::StdStringToString(src_url.spec()));
-
- if (fragment)
- return fragment;
- }
-
- if (allowPlainText &&
- webkit_glue::ClipboardIsFormatAvailable(CF_UNICODETEXT)) {
-
- chosePlainText = true;
- std::wstring markup;
- webkit_glue::ClipboardReadText(&markup);
- RefPtr<DocumentFragment> fragment =
- createFragmentFromText(context.get(),
- webkit_glue::StdWStringToString(markup));
-
- if (fragment)
- return fragment.release();
- }
-
- if (allowPlainText && webkit_glue::ClipboardIsFormatAvailable(CF_TEXT)) {
- chosePlainText = true;
- std::string markup;
- webkit_glue::ClipboardReadAsciiText(&markup);
- RefPtr<DocumentFragment> fragment =
- createFragmentFromText(context.get(),
- webkit_glue::StdStringToString(markup));
- if (fragment)
- return fragment.release();
- }
-
- return 0;
-}
-
-} // namespace WebCore