#include "config.h"
#include "Editor.h"
#include "ClipboardUtilitiesWin.h"
#include "DocumentFragment.h"
#include "Frame.h"
#include "FrameSelection.h"
#include "Pasteboard.h"
#include "windows.h"
namespace WebCore {
void Editor::pasteWithPasteboard(Pasteboard* pasteboard, bool allowPlainText, MailBlockquoteHandling mailBlockquoteHandling)
{
RefPtr<Range> range = selectedRange();
if (!range)
return;
bool chosePlainText;
RefPtr<DocumentFragment> fragment = pasteboard->documentFragment(m_frame, *range, allowPlainText, chosePlainText);
if (fragment && shouldInsertFragment(fragment, range, EditorInsertActionPasted))
pasteAsFragment(fragment, canSmartReplaceWithPasteboard(*pasteboard), chosePlainText, mailBlockquoteHandling);
}
template <typename PlatformDragData>
static PassRefPtr<DocumentFragment> createFragmentFromPlatformData(PlatformDragData& platformDragData, Frame& frame)
{
if (containsFilenames(&platformDragData)) {
if (PassRefPtr<DocumentFragment> fragment = fragmentFromFilenames(frame.document(), &platformDragData))
return fragment;
}
if (containsHTML(&platformDragData)) {
if (PassRefPtr<DocumentFragment> fragment = fragmentFromHTML(frame.document(), &platformDragData))
return fragment;
}
return nullptr;
}
PassRefPtr<DocumentFragment> Editor::webContentFromPasteboard(Pasteboard& pasteboard, Range&, bool , bool& )
{
if (COMPtr<IDataObject> platformDragData = pasteboard.dataObject())
return createFragmentFromPlatformData(*platformDragData, m_frame);
return createFragmentFromPlatformData(pasteboard.dragDataMap(), m_frame);
}
}