PassRefPtr<DocumentFragment> Pasteboard::documentFragment(Frame* frame, PassRefPtr<Range> context, bool allowPlainText, bool& chosePlainText) { chosePlainText = false; PasteboardPrivate::ClipboardBuffer buffer = m_selectionMode ? PasteboardPrivate::SelectionBuffer : PasteboardPrivate::StandardBuffer; if (PlatformSupport::clipboardIsFormatAvailable(PasteboardPrivate::HTMLFormat, buffer)) { String markup; KURL srcURL; unsigned fragmentStart = 0; unsigned fragmentEnd = 0; PlatformSupport::clipboardReadHTML(buffer, &markup, &srcURL, &fragmentStart, &fragmentEnd); if (!markup.isEmpty()) { RefPtr<DocumentFragment> fragment = createFragmentFromMarkupWithContext(frame->document(), markup, fragmentStart, fragmentEnd, srcURL, DisallowScriptingContent); if (fragment) return fragment.release(); } } if (allowPlainText) { String markup = PlatformSupport::clipboardReadPlainText(buffer); if (!markup.isEmpty()) { chosePlainText = true; RefPtr<DocumentFragment> fragment = createFragmentFromText(context.get(), markup); if (fragment) return fragment.release(); } } return 0; }
PassRefPtr<DocumentFragment> Pasteboard::documentFragment(Frame* frame, PassRefPtr<Range> context, bool allowPlainText, bool& chosePlainText) { chosePlainText = false; WebKit::WebClipboard::Buffer buffer = m_selectionMode ? WebKit::WebClipboard::BufferSelection : WebKit::WebClipboard::BufferStandard; if (WebKit::Platform::current()->clipboard()->isFormatAvailable(WebKit::WebClipboard::FormatHTML, buffer)) { WebKit::WebString markup; unsigned fragmentStart = 0; unsigned fragmentEnd = 0; WebKit::WebURL url; markup = WebKit::Platform::current()->clipboard()->readHTML(buffer, &url, &fragmentStart, &fragmentEnd); if (!markup.isEmpty()) { RefPtr<DocumentFragment> fragment = createFragmentFromMarkupWithContext(frame->document(), markup, fragmentStart, fragmentEnd, KURL(url), DisallowScriptingContent); if (fragment) return fragment.release(); } } if (allowPlainText) { String markup = WebKit::Platform::current()->clipboard()->readPlainText(buffer); if (!markup.isEmpty()) { chosePlainText = true; RefPtr<DocumentFragment> fragment = createFragmentFromText(context.get(), markup); if (fragment) return fragment.release(); } } return 0; }