Changeset 173686 in webkit


Ignore:
Timestamp:
Sep 16, 2014, 11:27:46 PM (11 years ago)
Author:
Carlos Garcia Campos
Message:

DragData should not depend on Clipboard, DocumentFragment, and Document
https://bugs.webkit.org/show_bug.cgi?id=21358

Reviewed by Darin Adler.

Source/WebCore:

Refactor DragData to not depend on Frame, DocumentFragment,
Document and Range. DragData::asFragment() has been moved to
DragController and implemented in the platform specific file.
DragData methods using Frame has been reworked in Mac to not use
Frame, since all other ports were ignoreing the frame parameter.

  • page/DragController.cpp:

(WebCore::DragController::documentFragmentFromDragData): Make it
a static member to be able to use createFragmentFromDragData().
(WebCore::DragController::performDragOperation): Update to
DragData API changes.
(WebCore::DragController::dispatchTextInputEventFor): Ditto.
(WebCore::DragController::concludeEditDrag): Ditto.
(WebCore::documentFragmentFromDragData): Deleted.

  • page/DragController.h:
  • page/efl/DragControllerEfl.cpp:

(WebCore::DragController::createFragmentFromDragData): Move
DragData::asFragment() implementation here.

  • page/gtk/DragControllerGtk.cpp:

(WebCore::DragController::dragOperation):
(WebCore::DragController::createFragmentFromDragData): Ditto.

  • page/mac/DragControllerMac.mm:

(WebCore::DragController::dragOperation):
(WebCore::DragController::createFragmentFromDragData): Ditto.

  • page/win/DragControllerWin.cpp:

(WebCore::DragController::createFragmentFromDragData): Ditto.

  • platform/DragData.h:
  • platform/efl/DragDataEfl.cpp:

(WebCore::DragData::asPlainText): Remove Frame parameter.
(WebCore::DragData::containsURL): Ditto.
(WebCore::DragData::asURL): Ditto.
(WebCore::DragData::asFragment): Deleted.

  • platform/gtk/DragDataGtk.cpp:

(WebCore::DragData::asPlainText): Remove Frame parameter.
(WebCore::DragData::containsCompatibleContent):
(WebCore::DragData::containsURL): Ditto.
(WebCore::DragData::asURL): Ditto.
(WebCore::DragData::asFragment): Deleted.

  • platform/mac/DragDataMac.mm:

(WebCore::DragData::asPlainText): Same implementation as the
Editor.
(WebCore::DragData::containsURL): Remove Frame parameter.
(WebCore::DragData::asURL): Use URLByCanonicalizingURL() instead
of using the Editor client.
(WebCore::DragData::asFragment): Deleted.

  • platform/win/DragDataWin.cpp:

(WebCore::DragData::containsURL): Remove Frame parameter.
(WebCore::DragData::asURL): Ditto.
(WebCore::DragData::asPlainText): Ditto.
(WebCore::DragData::containsCompatibleContent):
(WebCore::DragData::asFragment): Deleted.

Source/WebKit2:

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::performDragControllerAction): Update to API
change in DragData::asURL().

Location:
trunk/Source
Files:
15 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r173684 r173686  
     12014-09-16  Carlos Garcia Campos  <cgarcia@igalia.com>
     2
     3        DragData should not depend on Clipboard, DocumentFragment, and Document
     4        https://bugs.webkit.org/show_bug.cgi?id=21358
     5
     6        Reviewed by Darin Adler.
     7
     8        Refactor DragData to not depend on Frame, DocumentFragment,
     9        Document and Range. DragData::asFragment() has been moved to
     10        DragController and implemented in the platform specific file.
     11        DragData methods using Frame has been reworked in Mac to not use
     12        Frame, since all other ports were ignoreing the frame parameter.
     13
     14        * page/DragController.cpp:
     15        (WebCore::DragController::documentFragmentFromDragData): Make it
     16        a static member to be able to use createFragmentFromDragData().
     17        (WebCore::DragController::performDragOperation): Update to
     18        DragData API changes.
     19        (WebCore::DragController::dispatchTextInputEventFor): Ditto.
     20        (WebCore::DragController::concludeEditDrag): Ditto.
     21        (WebCore::documentFragmentFromDragData): Deleted.
     22        * page/DragController.h:
     23        * page/efl/DragControllerEfl.cpp:
     24        (WebCore::DragController::createFragmentFromDragData): Move
     25        DragData::asFragment() implementation here.
     26        * page/gtk/DragControllerGtk.cpp:
     27        (WebCore::DragController::dragOperation):
     28        (WebCore::DragController::createFragmentFromDragData): Ditto.
     29        * page/mac/DragControllerMac.mm:
     30        (WebCore::DragController::dragOperation):
     31        (WebCore::DragController::createFragmentFromDragData): Ditto.
     32        * page/win/DragControllerWin.cpp:
     33        (WebCore::DragController::createFragmentFromDragData): Ditto.
     34        * platform/DragData.h:
     35        * platform/efl/DragDataEfl.cpp:
     36        (WebCore::DragData::asPlainText): Remove Frame parameter.
     37        (WebCore::DragData::containsURL): Ditto.
     38        (WebCore::DragData::asURL): Ditto.
     39        (WebCore::DragData::asFragment): Deleted.
     40        * platform/gtk/DragDataGtk.cpp:
     41        (WebCore::DragData::asPlainText): Remove Frame parameter.
     42        (WebCore::DragData::containsCompatibleContent):
     43        (WebCore::DragData::containsURL): Ditto.
     44        (WebCore::DragData::asURL): Ditto.
     45        (WebCore::DragData::asFragment): Deleted.
     46        * platform/mac/DragDataMac.mm:
     47        (WebCore::DragData::asPlainText): Same implementation as the
     48        Editor.
     49        (WebCore::DragData::containsURL): Remove Frame parameter.
     50        (WebCore::DragData::asURL): Use URLByCanonicalizingURL() instead
     51        of using the Editor client.
     52        (WebCore::DragData::asFragment): Deleted.
     53        * platform/win/DragDataWin.cpp:
     54        (WebCore::DragData::containsURL): Remove Frame parameter.
     55        (WebCore::DragData::asURL): Ditto.
     56        (WebCore::DragData::asPlainText): Ditto.
     57        (WebCore::DragData::containsCompatibleContent):
     58        (WebCore::DragData::asFragment): Deleted.
     59
    1602014-09-16  Chris Dumez  <cdumez@apple.com>
    261
  • trunk/Source/WebCore/page/DragController.cpp

    r173664 r173686  
    115115}
    116116
    117 static PassRefPtr<DocumentFragment> documentFragmentFromDragData(DragData& dragData, Frame* frame, Range& context, bool allowPlainText, bool& chosePlainText)
     117PassRefPtr<DocumentFragment> DragController::documentFragmentFromDragData(DragData& dragData, Frame& frame, Range& context, bool allowPlainText, bool& chosePlainText)
    118118{
    119119    chosePlainText = false;
     
    121121    Document& document = context.ownerDocument();
    122122    if (dragData.containsCompatibleContent()) {
    123         if (PassRefPtr<DocumentFragment> fragment = dragData.asFragment(frame, context, allowPlainText, chosePlainText))
     123        if (PassRefPtr<DocumentFragment> fragment = createFragmentFromDragData(dragData, frame, context, allowPlainText, chosePlainText))
    124124            return fragment;
    125125
    126         if (dragData.containsURL(frame, DragData::DoNotConvertFilenames)) {
     126        if (dragData.containsURL(DragData::DoNotConvertFilenames)) {
    127127            String title;
    128             String url = dragData.asURL(frame, DragData::DoNotConvertFilenames, &title);
     128            String url = dragData.asURL(DragData::DoNotConvertFilenames, &title);
    129129            if (!url.isEmpty()) {
    130130                RefPtr<HTMLAnchorElement> anchor = HTMLAnchorElement::create(document);
     
    133133                    // Try the plain text first because the url might be normalized or escaped.
    134134                    if (dragData.containsPlainText())
    135                         title = dragData.asPlainText(frame);
     135                        title = dragData.asPlainText();
    136136                    if (title.isEmpty())
    137137                        title = url;
     
    147147    if (allowPlainText && dragData.containsPlainText()) {
    148148        chosePlainText = true;
    149         return createFragmentFromText(context, dragData.asPlainText(frame)).get();
     149        return createFragmentFromText(context, dragData.asPlainText()).get();
    150150    }
    151151
     
    235235
    236236    m_client.willPerformDragDestinationAction(DragDestinationActionLoad, dragData);
    237     m_page.mainFrame().loader().load(FrameLoadRequest(&m_page.mainFrame(), ResourceRequest(dragData.asURL(&m_page.mainFrame()))));
     237    m_page.mainFrame().loader().load(FrameLoadRequest(&m_page.mainFrame(), ResourceRequest(dragData.asURL())));
    238238    return true;
    239239}
     
    426426{
    427427    ASSERT(m_page.dragCaretController().hasCaret());
    428     String text = m_page.dragCaretController().isContentRichlyEditable() ? emptyString() : dragData.asPlainText(innerFrame);
     428    String text = m_page.dragCaretController().isContentRichlyEditable() ? emptyString() : dragData.asPlainText();
    429429    Node* target = innerFrame->editor().findEventTargetFrom(m_page.dragCaretController().caretPosition());
    430430    return target->dispatchEvent(TextEvent::createForDrop(innerFrame->document()->domWindow(), text), IGNORE_EXCEPTION);
     
    495495    if (dragIsMove(innerFrame->selection(), dragData) || dragCaret.isContentRichlyEditable()) {
    496496        bool chosePlainText = false;
    497         RefPtr<DocumentFragment> fragment = documentFragmentFromDragData(dragData, innerFrame.get(), *range, true, chosePlainText);
     497        RefPtr<DocumentFragment> fragment = documentFragmentFromDragData(dragData, *innerFrame, *range, true, chosePlainText);
    498498        if (!fragment || !innerFrame->editor().shouldInsertFragment(fragment, range, EditorInsertActionDropped)) {
    499499            return false;
     
    518518        }
    519519    } else {
    520         String text = dragData.asPlainText(innerFrame.get());
     520        String text = dragData.asPlainText();
    521521        if (text.isEmpty() || !innerFrame->editor().shouldInsertText(text, range.get(), EditorInsertActionDropped)) {
    522522            return false;
  • trunk/Source/WebCore/page/DragController.h

    r172814 r173686  
    3636    class DataTransfer;
    3737    class Document;
     38    class DocumentFragment;
    3839    class DragClient;
    3940    class DragData;
     
    4546    class Page;
    4647    class PlatformMouseEvent;
     48    class Range;
    4749
    4850    struct DragState;
     
    114116        void declareAndWriteDragImage(DataTransfer&, Element&, const URL&, const String& label);
    115117
     118        // FIXME: Move createFragmentFromDragData implementation to the Editor and make documentFragmentFromDragData a static function again.
     119        static PassRefPtr<DocumentFragment> documentFragmentFromDragData(DragData&, Frame&, Range&, bool allowPlainText, bool& chosePlainText);
     120        static PassRefPtr<DocumentFragment> createFragmentFromDragData(DragData&, Frame&, Range&, bool allowPlainText, bool& chosePlainText);
     121
    116122        Page& m_page;
    117123        DragClient& m_client;
  • trunk/Source/WebCore/page/efl/DragControllerEfl.cpp

    r166991 r173686  
    3030#include "DragController.h"
    3131
     32#include "Document.h"
     33#include "DocumentFragment.h"
    3234#include "DragData.h"
    3335#include "Frame.h"
     
    5153DragOperation DragController::dragOperation(DragData& dragData)
    5254{
    53     if (dragData.containsURL(0))
     55    if (dragData.containsURL())
    5456        return DragOperationCopy;
    5557
     
    7274}
    7375
     76PassRefPtr<DocumentFragment> DragController::createFragmentFromDragData(DragData&, Frame&, Range&, bool /*allowPlainText*/, bool& /*chosePlainText*/)
     77{
     78    return nullptr;
    7479}
     80
     81}
  • trunk/Source/WebCore/page/gtk/DragControllerGtk.cpp

    r166965 r173686  
    2727#include "DragController.h"
    2828
     29#include "DataObjectGtk.h"
    2930#include "DataTransfer.h"
     31#include "Document.h"
     32#include "DocumentFragment.h"
    3033#include "DragData.h"
    3134#include "Element.h"
     
    3437#include "Page.h"
    3538#include "Pasteboard.h"
     39#include "markup.h"
    3640
    3741namespace WebCore {
     
    5458{
    5559    // FIXME: This logic is incomplete
    56     if (dragData.containsURL(0))
     60    if (dragData.containsURL())
    5761        return DragOperationCopy;
    5862
     
    7579}
    7680
     81PassRefPtr<DocumentFragment> DragController::createFragmentFromDragData(DragData& dragData, Frame& frame, Range&, bool /*allowPlainText*/, bool& /*chosePlainText*/)
     82{
     83    if (!dragData.platformData()->hasMarkup() || !frame.document())
     84        return nullptr;
     85
     86    return createFragmentFromMarkup(*frame.document(), dragData.platformData()->markup(), "");
    7787}
     88
     89}
  • trunk/Source/WebCore/page/mac/DragControllerMac.mm

    r166965 r173686  
    3030
    3131#import "DataTransfer.h"
     32#import "Document.h"
     33#import "DocumentFragment.h"
    3234#import "DragClient.h"
    3335#import "DragData.h"
     36#import "Editor.h"
     37#import "EditorClient.h"
    3438#import "Element.h"
    3539#import "FrameView.h"
     
    3741#import "Page.h"
    3842#import "Pasteboard.h"
     43#import "Range.h"
    3944
    4045namespace WebCore {
     
    5560DragOperation DragController::dragOperation(DragData& dragData)
    5661{
    57     if ((dragData.flags() & DragApplicationIsModal) || !dragData.containsURL(&m_page.mainFrame()))
     62    if ((dragData.flags() & DragApplicationIsModal) || !dragData.containsURL())
    5863        return DragOperationNone;
    5964
     
    8893}
    8994
     95PassRefPtr<DocumentFragment> DragController::createFragmentFromDragData(DragData& dragData, Frame& frame, Range& context, bool allowPlainText, bool& chosePlainText)
     96{
     97    Pasteboard pasteboard(dragData.pasteboardName());
     98    return frame.editor().webContentFromPasteboard(pasteboard, context, allowPlainText, chosePlainText);
     99}
     100
    90101} // namespace WebCore
    91102
  • trunk/Source/WebCore/page/win/DragControllerWin.cpp

    r166965 r173686  
    2727#include "DragController.h"
    2828
     29#include "ClipboardUtilitiesWin.h"
    2930#include "DataTransfer.h"
     31#include "Document.h"
     32#include "DocumentFragment.h"
    3033#include "DragData.h"
    3134#include "Element.h"
     35#include "Frame.h"
    3236#include "FrameSelection.h"
    3337#include "Pasteboard.h"
     
    5155    //If this can be determined from within WebCore operationForDrag can be pulled into
    5256    //WebCore itself
    53     return dragData.containsURL(0) && !m_didInitiateDrag ? DragOperationCopy : DragOperationNone;
     57    return dragData.containsURL() && !m_didInitiateDrag ? DragOperationCopy : DragOperationNone;
    5458}
    5559
     
    8488}
    8589
     90template <typename PlatformDragData>
     91static PassRefPtr<DocumentFragment> createFragmentFromPlatformData(PlatformDragData* platformDragData, Frame& frame)
     92{
     93    if (containsFilenames(platformDragData)) {
     94        if (PassRefPtr<DocumentFragment> fragment = fragmentFromFilenames(frame.document(), platformDragData))
     95            return fragment;
     96    }
     97
     98    if (containsHTML(platformDragData)) {
     99        if (PassRefPtr<DocumentFragment> fragment = fragmentFromHTML(frame.document(), platformDragData))
     100            return fragment;
     101    }
     102    return nullptr;
    86103}
     104
     105PassRefPtr<DocumentFragment> DragController::createFragmentFromDragData(DragData& dragData, Frame& frame, Range&, bool /*allowPlainText*/, bool& /*chosePlainText*/)
     106{
     107    if (DragDataRef platformDragData = dragData.platformData())
     108        return createFragmentFromPlatformData(platformDragData, frame);
     109
     110    return createFragmentFromPlatformData(&dragData.dragDataMap(), frame);
     111}
     112
     113}
  • trunk/Source/WebCore/platform/DragData.h

    r172814 r173686  
    6161namespace WebCore {
    6262
    63 class Frame;
    64 class DocumentFragment;
    6563class URL;
    66 class Range;
    6764
    6865enum DragApplicationFlags {
     
    9693    DragDataRef platformData() const { return m_platformDragData; }
    9794    DragOperation draggingSourceOperationMask() const { return m_draggingSourceOperationMask; }
    98     bool containsURL(Frame*, FilenameConversionPolicy filenamePolicy = ConvertFilenames) const;
     95    bool containsURL(FilenameConversionPolicy = ConvertFilenames) const;
    9996    bool containsPlainText() const;
    10097    bool containsCompatibleContent() const;
    101     String asURL(Frame*, FilenameConversionPolicy filenamePolicy = ConvertFilenames, String* title = 0) const;
    102     String asPlainText(Frame*) const;
     98    String asURL(FilenameConversionPolicy = ConvertFilenames, String* title = nullptr) const;
     99    String asPlainText() const;
    103100    void asFilenames(Vector<String>&) const;
    104101    Color asColor() const;
    105     PassRefPtr<DocumentFragment> asFragment(Frame*, Range& context, bool allowPlainText, bool& chosePlainText) const;
    106102    bool canSmartReplace() const;
    107103    bool containsColor() const;
  • trunk/Source/WebCore/platform/efl/DragDataEfl.cpp

    r157058 r173686  
    2222#include "DragData.h"
    2323
    24 #include "Document.h"
    25 #include "DocumentFragment.h"
     24#include <wtf/text/WTFString.h>
    2625
    2726namespace WebCore {
     
    5655}
    5756
    58 String DragData::asPlainText(Frame*) const
     57String DragData::asPlainText() const
    5958{
    6059    return String();
     
    7170}
    7271
    73 bool DragData::containsURL(Frame*, FilenameConversionPolicy) const
     72bool DragData::containsURL(FilenameConversionPolicy) const
    7473{
    7574    return false;
    7675}
    7776
    78 String DragData::asURL(Frame*, FilenameConversionPolicy, String*) const
     77String DragData::asURL(FilenameConversionPolicy, String*) const
    7978{
    8079    return String();
    8180}
    8281
    83 PassRefPtr<DocumentFragment> DragData::asFragment(Frame*, Range&, bool, bool&) const
    84 {
    85     return 0;
    8682}
    87 
    88 }
  • trunk/Source/WebCore/platform/gtk/DragDataGtk.cpp

    r157058 r173686  
    1919
    2020#include "DataObjectGtk.h"
    21 #include "Document.h"
    22 #include "DocumentFragment.h"
    23 #include "Frame.h"
    24 #include "markup.h"
    2521
    2622namespace WebCore {
     
    5652}
    5753
    58 String DragData::asPlainText(Frame*) const
     54String DragData::asPlainText() const
    5955{
    6056    return m_platformDragData->text();
     
    6864bool DragData::containsCompatibleContent() const
    6965{
    70     return containsPlainText() || containsURL(0) || m_platformDragData->hasMarkup() || containsColor() || containsFiles();
     66    return containsPlainText() || containsURL() || m_platformDragData->hasMarkup() || containsColor() || containsFiles();
    7167}
    7268
    73 bool DragData::containsURL(Frame* frame, FilenameConversionPolicy filenamePolicy) const
     69bool DragData::containsURL(FilenameConversionPolicy filenamePolicy) const
    7470{
    75     return !asURL(frame, filenamePolicy).isEmpty();
     71    return !asURL(filenamePolicy).isEmpty();
    7672}
    7773
    78 String DragData::asURL(Frame*, FilenameConversionPolicy filenamePolicy, String* title) const
     74String DragData::asURL(FilenameConversionPolicy filenamePolicy, String* title) const
    7975{
    8076    if (!m_platformDragData->hasURL())
     
    9288}
    9389
    94 
    95 PassRefPtr<DocumentFragment> DragData::asFragment(Frame* frame, Range&, bool, bool&) const
    96 {
    97     if (!m_platformDragData->hasMarkup())
    98         return nullptr;
    99 
    100     if (!frame->document())
    101         return nullptr;
    102 
    103     return createFragmentFromMarkup(*frame->document(), m_platformDragData->markup(), "");
    10490}
    105 
    106 }
  • trunk/Source/WebCore/platform/mac/DragDataMac.mm

    r165676 r173686  
    2828
    2929#if ENABLE(DRAG_SUPPORT)
    30 #import "Document.h"
    31 #import "DocumentFragment.h"
    32 #import "DOMDocumentFragment.h"
    33 #import "DOMDocumentFragmentInternal.h"
    34 #import "Editor.h"
    35 #import "EditorClient.h"
    36 #import "Frame.h"
    3730#import "MIMETypeRegistry.h"
    3831#import "Pasteboard.h"
    3932#import "PasteboardStrategy.h"
    4033#import "PlatformStrategies.h"
    41 #import "Range.h"
     34#import "WebCoreNSURLExtras.h"
    4235
    4336namespace WebCore {
     
    108101}
    109102
    110 String DragData::asPlainText(Frame *frame) const
     103String DragData::asPlainText() const
    111104{
    112     return frame->editor().readPlainTextFromPasteboard(*Pasteboard::create(m_pasteboardName));
     105    Pasteboard pasteboard(m_pasteboardName);
     106    PasteboardPlainText text;
     107    pasteboard.read(text);
     108    String string = text.text;
     109
     110    // FIXME: It's not clear this is 100% correct since we know -[NSURL URLWithString:] does not handle
     111    // all the same cases we handle well in the URL code for creating an NSURL.
     112    if (text.isURL)
     113        return userVisibleString([NSURL URLWithString:string]);
     114
     115    // FIXME: WTF should offer a non-Mac-specific way to convert string to precomposed form so we can do it for all platforms.
     116    return [(NSString *)string precomposedStringWithCanonicalMapping];
    113117}
    114118
     
    135139}
    136140   
    137 bool DragData::containsURL(Frame* frame, FilenameConversionPolicy filenamePolicy) const
     141bool DragData::containsURL(FilenameConversionPolicy filenamePolicy) const
    138142{
    139     return !asURL(frame, filenamePolicy).isEmpty();
     143    return !asURL(filenamePolicy).isEmpty();
    140144}
    141145
    142 String DragData::asURL(Frame* frame, FilenameConversionPolicy, String* title) const
     146String DragData::asURL(FilenameConversionPolicy, String* title) const
    143147{
    144148    // FIXME: Use filenamePolicy.
     
    152156    Vector<String> types;
    153157    platformStrategies()->pasteboardStrategy()->getTypes(types, m_pasteboardName);
    154    
    155     // FIXME: using the editorClient to call into WebKit, for now, since
    156     // calling webkit_canonicalize from WebCore involves migrating a sizable amount of
    157     // helper code that should either be done in a separate patch or figured out in another way.
    158    
     158
    159159    if (types.contains(String(NSURLPboardType))) {
    160160        NSURL *URLFromPasteboard = [NSURL URLWithString:platformStrategies()->pasteboardStrategy()->stringForType(String(NSURLPboardType), m_pasteboardName)];
     
    162162        // Cannot drop other schemes unless <rdar://problem/10562662> and <rdar://problem/11187315> are fixed.
    163163        if ([scheme isEqualToString:@"http"] || [scheme isEqualToString:@"https"])
    164             return [frame->editor().client()->canonicalizeURL(URLFromPasteboard) absoluteString];
     164            return [URLByCanonicalizingURL(URLFromPasteboard) absoluteString];
    165165    }
    166166   
     
    172172        // FIXME: Should we allow only http family schemes, or anything non-local?
    173173        if ([scheme isEqualToString:@"http"] || [scheme isEqualToString:@"https"])
    174             return [frame->editor().client()->canonicalizeURL(URLFromPasteboard) absoluteString];
     174            return [URLByCanonicalizingURL(URLFromPasteboard) absoluteString];
    175175    }
    176176   
     
    182182            if ([[NSFileManager defaultManager] fileExistsAtPath:files[0] isDirectory:&isDirectory] && isDirectory)
    183183                return String();
    184             return [frame->editor().client()->canonicalizeURL([NSURL fileURLWithPath:files[0]]) absoluteString];
     184            return [URLByCanonicalizingURL([NSURL fileURLWithPath:files[0]]) absoluteString];
    185185        }
    186186    }
     
    189189}
    190190
    191 PassRefPtr<DocumentFragment> DragData::asFragment(Frame* frame, Range& range, bool allowPlainText, bool& chosePlainText) const
    192 {
    193     Pasteboard pasteboard(m_pasteboardName);
    194     return frame->editor().webContentFromPasteboard(pasteboard, range, allowPlainText, chosePlainText);
    195 }
    196    
    197191} // namespace WebCore
    198192
  • trunk/Source/WebCore/platform/win/ClipboardUtilitiesWin.h

    r165676 r173686  
    3434
    3535class Document;
     36class DocumentFragment;
    3637class URL;
    3738
  • trunk/Source/WebCore/platform/win/DragDataWin.cpp

    r165676 r173686  
    3030#include "COMPtr.h"
    3131#include "ClipboardUtilitiesWin.h"
    32 #include "Frame.h"
    33 #include "DocumentFragment.h"
    34 #include "Markup.h"
    35 #include "Range.h"
    3632#include "TextEncoding.h"
    3733#include <objidl.h>
     
    5753}
    5854
    59 bool DragData::containsURL(Frame*, FilenameConversionPolicy filenamePolicy) const
     55bool DragData::containsURL(FilenameConversionPolicy filenamePolicy) const
    6056{
    6157    if (m_platformDragData)
     
    10298}
    10399
    104 String DragData::asURL(Frame*, FilenameConversionPolicy filenamePolicy, String* title) const
     100String DragData::asURL(FilenameConversionPolicy filenamePolicy, String* title) const
    105101{
    106102    return (m_platformDragData) ? getURL(m_platformDragData, filenamePolicy, title) : getURL(&m_dragDataMap, filenamePolicy, title);
     
    182178}
    183179
    184 String DragData::asPlainText(Frame*) const
     180String DragData::asPlainText() const
    185181{
    186182    return (m_platformDragData) ? getPlainText(m_platformDragData) : getPlainText(&m_dragDataMap);
     
    201197bool DragData::containsCompatibleContent() const
    202198{
    203     return containsPlainText() || containsURL(0)
     199    return containsPlainText() || containsURL()
    204200        || ((m_platformDragData) ? (containsHTML(m_platformDragData) || containsFilenames(m_platformDragData))
    205201            : (containsHTML(&m_dragDataMap) || containsFilenames(&m_dragDataMap)))
     
    207203}
    208204
    209 PassRefPtr<DocumentFragment> DragData::asFragment(Frame* frame, Range&, bool, bool&) const
    210 {     
    211     /*
    212      * Order is richest format first. On OSX this is:
    213      * * Web Archive
    214      * * Filenames
    215      * * HTML
    216      * * RTF
    217      * * TIFF
    218      * * PICT
    219      */
    220      
    221     if (m_platformDragData) {
    222         if (containsFilenames(m_platformDragData)) {
    223             if (PassRefPtr<DocumentFragment> fragment = fragmentFromFilenames(frame->document(), m_platformDragData))
    224                 return fragment;
    225         }
    226 
    227         if (containsHTML(m_platformDragData)) {
    228             if (PassRefPtr<DocumentFragment> fragment = fragmentFromHTML(frame->document(), m_platformDragData))
    229                 return fragment;
    230         }
    231     } else {
    232         if (containsFilenames(&m_dragDataMap)) {
    233             if (PassRefPtr<DocumentFragment> fragment = fragmentFromFilenames(frame->document(), &m_dragDataMap))
    234                 return fragment;
    235         }
    236 
    237         if (containsHTML(&m_dragDataMap)) {
    238             if (PassRefPtr<DocumentFragment> fragment = fragmentFromHTML(frame->document(), &m_dragDataMap))
    239                 return fragment;
    240         }
    241     }
    242     return 0;
    243 }
    244 
    245205Color DragData::asColor() const
    246206{
  • trunk/Source/WebKit2/ChangeLog

    r173673 r173686  
     12014-09-16  Carlos Garcia Campos  <cgarcia@igalia.com>
     2
     3        DragData should not depend on Clipboard, DocumentFragment, and Document
     4        https://bugs.webkit.org/show_bug.cgi?id=21358
     5
     6        Reviewed by Darin Adler.
     7
     8        * UIProcess/WebPageProxy.cpp:
     9        (WebKit::WebPageProxy::performDragControllerAction): Update to API
     10        change in DragData::asURL().
     11
    1122014-09-16  Daniel Bates  <dabates@apple.com>
    213
  • trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp

    r173121 r173686  
    13701370    UNUSED_PARAM(sandboxExtensionsForUpload);
    13711371
    1372     String url = dragData.asURL(nullptr);
     1372    String url = dragData.asURL();
    13731373    if (!url.isEmpty())
    13741374        m_process->assumeReadAccessToBaseURL(url);
Note: See TracChangeset for help on using the changeset viewer.