Changeset 85648 in webkit


Ignore:
Timestamp:
May 3, 2011 1:29:58 PM (13 years ago)
Author:
commit-queue@webkit.org
Message:

2011-05-03 Igor Oliveira <igor.oliveira@openbossa.org>

Reviewed by Eric Seidel.

[Qt] Implement initial support to DataTransferItems
https://bugs.webkit.org/show_bug.cgi?id=58448

Remove data-transfer-items.html from Qt skipped tests and create an expected
result file for data-transfer-items.html test. The need to create a expected result
file is because the test presuppose that the type of the first element in
DataTransferItems list is a html but when Qt selects a data, it first copies a text
and then it copies the html, so for Qt expected test file the first element is a
text and the second one is a html.

  • platform/qt/Skipped:
  • platform/qt/editing/pasteboard/data-transfer-items-expected.txt: Added.

2011-05-03 Igor Oliveira <igor.oliveira@openbossa.org>

Reviewed by Eric Seidel.

[Qt] Implement initial support to DataTransferItems
https://bugs.webkit.org/show_bug.cgi?id=58448

Implement initial support to DataTransferItems. DataTransferItems are used to
hold data for drag and drop operations. DataTransferItems hold a list of
DataTransferItem objects each of which holds an item being dragged.

  • WebCore.pro:
  • dom/DataTransferItems.idl:
  • editing/qt/EditorQt.cpp: (WebCore::Editor::newGeneralClipboard):
  • page/qt/EventHandlerQt.cpp: (WebCore::EventHandler::createDraggingClipboard):
  • platform/chromium/DataTransferItemsChromium.h:
  • platform/qt/ClipboardQt.cpp: (WebCore::Clipboard::create): (WebCore::ClipboardQt::ClipboardQt): (WebCore::ClipboardQt::items):
  • platform/qt/ClipboardQt.h: (WebCore::ClipboardQt::create):
  • platform/qt/DataTransferItemQt.cpp: Added. (WebCore::DataTransferItem::create): (WebCore::DataTransferItemQt::createFromPasteboard): (WebCore::DataTransferItemQt::create): (WebCore::DataTransferItemQt::DataTransferItemQt): (WebCore::DataTransferItemQt::getAsString): (WebCore::DataTransferItemQt::getAsFile):
  • platform/qt/DataTransferItemQt.h: Added.
  • platform/qt/DataTransferItemsQt.cpp: Copied from Source/WebCore/editing/qt/EditorQt.cpp. (WebCore::DataTransferItemsQt::create): (WebCore::DataTransferItemsQt::DataTransferItemsQt): (WebCore::DataTransferItemsQt::addPasteboardItem):
  • platform/qt/DataTransferItemsQt.h: Copied from Source/WebCore/editing/qt/EditorQt.cpp.
Location:
trunk
Files:
3 added
9 edited
2 copied

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r85646 r85648  
     12011-05-03  Igor Oliveira  <igor.oliveira@openbossa.org>
     2
     3        Reviewed by Eric Seidel.
     4
     5        [Qt] Implement initial support to DataTransferItems
     6        https://bugs.webkit.org/show_bug.cgi?id=58448
     7
     8        Remove data-transfer-items.html from Qt skipped tests and create an expected
     9        result file for data-transfer-items.html test. The need to create a expected result
     10        file is because the test presuppose that the type of the first element in
     11        DataTransferItems list is a html but when Qt selects a data, it first copies a text
     12        and then it copies the html, so for Qt expected test file the first element is a
     13        text and the second one is a html.
     14
     15        * platform/qt/Skipped:
     16        * platform/qt/editing/pasteboard/data-transfer-items-expected.txt: Added.
     17
    1182011-05-03  Alpha Lam  <hclam@chromium.org>
    219
  • trunk/LayoutTests/platform/qt/Skipped

    r85528 r85648  
    113113# This port doesn't support v8 i18n extension.
    114114fast/js/i18n-bindings-locale.html
    115 
    116 # DataTransferItems is not yet implemented.
    117 editing/pasteboard/data-transfer-items.html
    118115
    119116# scalePage is currently Mac-specific WebKit API.
  • trunk/Source/WebCore/ChangeLog

    r85644 r85648  
     12011-05-03  Igor Oliveira  <igor.oliveira@openbossa.org>
     2
     3        Reviewed by Eric Seidel.
     4
     5        [Qt] Implement initial support to DataTransferItems
     6        https://bugs.webkit.org/show_bug.cgi?id=58448
     7
     8        Implement initial support to DataTransferItems. DataTransferItems are used to
     9        hold data for drag and drop operations. DataTransferItems hold a list of
     10        DataTransferItem objects each of which holds an item being dragged.
     11
     12        * WebCore.pro:
     13        * dom/DataTransferItems.idl:
     14        * editing/qt/EditorQt.cpp:
     15        (WebCore::Editor::newGeneralClipboard):
     16        * page/qt/EventHandlerQt.cpp:
     17        (WebCore::EventHandler::createDraggingClipboard):
     18        * platform/chromium/DataTransferItemsChromium.h:
     19        * platform/qt/ClipboardQt.cpp:
     20        (WebCore::Clipboard::create):
     21        (WebCore::ClipboardQt::ClipboardQt):
     22        (WebCore::ClipboardQt::items):
     23        * platform/qt/ClipboardQt.h:
     24        (WebCore::ClipboardQt::create):
     25        * platform/qt/DataTransferItemQt.cpp: Added.
     26        (WebCore::DataTransferItem::create):
     27        (WebCore::DataTransferItemQt::createFromPasteboard):
     28        (WebCore::DataTransferItemQt::create):
     29        (WebCore::DataTransferItemQt::DataTransferItemQt):
     30        (WebCore::DataTransferItemQt::getAsString):
     31        (WebCore::DataTransferItemQt::getAsFile):
     32        * platform/qt/DataTransferItemQt.h: Added.
     33        * platform/qt/DataTransferItemsQt.cpp: Copied from Source/WebCore/editing/qt/EditorQt.cpp.
     34        (WebCore::DataTransferItemsQt::create):
     35        (WebCore::DataTransferItemsQt::DataTransferItemsQt):
     36        (WebCore::DataTransferItemsQt::addPasteboardItem):
     37        * platform/qt/DataTransferItemsQt.h: Copied from Source/WebCore/editing/qt/EditorQt.cpp.
     38
    1392011-05-03  Julien Chaffraix  <jchaffraix@codeaurora.org>
    240
  • trunk/Source/WebCore/WebCore.pro

    r85382 r85648  
    27152715        dom/DataTransferItem.h \
    27162716        dom/DataTransferItems.h \
    2717         dom/StringCallback.h
     2717        dom/StringCallback.h \
     2718        platform/qt/DataTransferItemQt.h \
     2719        platform/qt/DataTransferItemsQt.h
    27182720    SOURCES += \
    27192721        dom/DataTransferItem.cpp \
    27202722        dom/DataTransferItems.cpp \
    2721         dom/StringCallback.cpp
     2723        dom/StringCallback.cpp \
     2724        platform/qt/DataTransferItemQt.cpp \
     2725        platform/qt/DataTransferItemsQt.cpp
    27222726}
    27232727
  • trunk/Source/WebCore/dom/DataTransferItems.idl

    r80536 r85648  
    3434        Conditional=DATA_TRANSFER_ITEMS,
    3535        HasIndexGetter,
     36#if defined(V8_BINDING) && V8_BINDING
    3637        CustomDeleteProperty,
     38#endif
    3739    ] DataTransferItems {
    3840        readonly attribute long length;
  • trunk/Source/WebCore/editing/qt/EditorQt.cpp

    r82944 r85648  
    4040namespace WebCore {
    4141
    42 PassRefPtr<Clipboard> Editor::newGeneralClipboard(ClipboardAccessPolicy policy, Frame*)
     42PassRefPtr<Clipboard> Editor::newGeneralClipboard(ClipboardAccessPolicy policy, Frame* frame)
    4343{
    44     return ClipboardQt::create(policy);
     44    return ClipboardQt::create(policy, frame);
    4545}
    4646
  • trunk/Source/WebCore/page/qt/EventHandlerQt.cpp

    r80172 r85648  
    101101PassRefPtr<Clipboard> EventHandler::createDraggingClipboard() const
    102102{
    103     return ClipboardQt::create(ClipboardWritable, Clipboard::DragAndDrop);
     103    return ClipboardQt::create(ClipboardWritable, m_frame, Clipboard::DragAndDrop);
    104104}
    105105
  • trunk/Source/WebCore/platform/qt/ClipboardQt.cpp

    r83338 r85648  
    3131
    3232#include "CachedImage.h"
     33#include "DataTransferItemsQt.h"
    3334#include "Document.h"
    3435#include "DragData.h"
     
    7172}
    7273
    73 PassRefPtr<Clipboard> Clipboard::create(ClipboardAccessPolicy policy, DragData* dragData, Frame*)
    74 {
    75     return ClipboardQt::create(policy, dragData->platformData());
    76 }
    77 
    78 ClipboardQt::ClipboardQt(ClipboardAccessPolicy policy, const QMimeData* readableClipboard)
     74PassRefPtr<Clipboard> Clipboard::create(ClipboardAccessPolicy policy, DragData* dragData, Frame* frame)
     75{
     76    return ClipboardQt::create(policy, dragData->platformData(), frame);
     77}
     78
     79ClipboardQt::ClipboardQt(ClipboardAccessPolicy policy, const QMimeData* readableClipboard, Frame* frame)
    7980    : Clipboard(policy, DragAndDrop)
    8081    , m_readableData(readableClipboard)
    8182    , m_writableData(0)
     83    , m_frame(frame)
    8284{
    8385    Q_ASSERT(policy == ClipboardReadable || policy == ClipboardTypesReadable);
    8486}
    8587
    86 ClipboardQt::ClipboardQt(ClipboardAccessPolicy policy, ClipboardType clipboardType)
     88ClipboardQt::ClipboardQt(ClipboardAccessPolicy policy, ClipboardType clipboardType, Frame* frame)
    8789    : Clipboard(policy, clipboardType)
    8890    , m_readableData(0)
    8991    , m_writableData(0)
     92    , m_frame(frame)
    9093{
    9194    Q_ASSERT(policy == ClipboardReadable || policy == ClipboardWritable || policy == ClipboardNumb);
     
    361364}
    362365
    363 }
     366#if ENABLE(DATA_TRANSFER_ITEMS)
     367PassRefPtr<DataTransferItems> ClipboardQt::items()
     368{
     369
     370    if (!m_frame && !m_frame->document())
     371        return 0;
     372
     373    RefPtr<DataTransferItemsQt> items = DataTransferItemsQt::create(this, m_frame->document()->scriptExecutionContext());
     374
     375    if (!m_readableData)
     376        return items;
     377
     378    if (isForCopyAndPaste() && policy() == ClipboardReadable) {
     379        const QStringList types = m_readableData->formats();
     380        for (int i = 0; i < types.count(); ++i)
     381            items->addPasteboardItem(types.at(i));
     382    }
     383    return items;
     384}
     385#endif
     386
     387}
  • trunk/Source/WebCore/platform/qt/ClipboardQt.h

    r77779 r85648  
    4242    WTF_MAKE_FAST_ALLOCATED;
    4343public:
    44     static PassRefPtr<ClipboardQt> create(ClipboardAccessPolicy policy, const QMimeData* readableClipboard)
     44    static PassRefPtr<ClipboardQt> create(ClipboardAccessPolicy policy, const QMimeData* readableClipboard, Frame* frame)
    4545    {
    46         return adoptRef(new ClipboardQt(policy, readableClipboard));
     46        return adoptRef(new ClipboardQt(policy, readableClipboard, frame));
    4747    }
    48     static PassRefPtr<ClipboardQt> create(ClipboardAccessPolicy policy, ClipboardType clipboardType = CopyAndPaste)
     48    static PassRefPtr<ClipboardQt> create(ClipboardAccessPolicy policy, Frame *frame, ClipboardType clipboardType = CopyAndPaste)
    4949    {
    50         return adoptRef(new ClipboardQt(policy, clipboardType));
     50        return adoptRef(new ClipboardQt(policy, clipboardType, frame));
    5151    }
    5252    virtual ~ClipboardQt();
     
    7575    void invalidateWritableData() { m_writableData = 0; }
    7676
     77#if ENABLE(DATA_TRANSFER_ITEMS)
     78    virtual PassRefPtr<DataTransferItems> items();
     79#endif
     80
    7781private:
    78     ClipboardQt(ClipboardAccessPolicy, const QMimeData* readableClipboard);
     82    ClipboardQt(ClipboardAccessPolicy, const QMimeData* readableClipboard, Frame*);
    7983
    8084    // Clipboard is writable so it will create its own QMimeData object
    81     ClipboardQt(ClipboardAccessPolicy, ClipboardType);
     85    ClipboardQt(ClipboardAccessPolicy, ClipboardType, Frame*);
    8286
    8387    void setDragImage(CachedImage*, Node*, const IntPoint& loc);
     
    8589    const QMimeData* m_readableData;
    8690    QMimeData* m_writableData;
     91    Frame* m_frame;
    8792};
    8893}
  • trunk/Source/WebCore/platform/qt/DataTransferItemsQt.cpp

    r85647 r85648  
    11/*
    2  * Copyright (C) 2006 Zack Rusin <zack@kde.org>
    3  * Copyright (C) 2006 Apple Inc. All rights reserved.
     2 * Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies)
    43 *
    54 * Redistribution and use in source and binary forms, with or without
     
    2625
    2726#include "config.h"
    28 #include "Editor.h"
     27#include "DataTransferItemsQt.h"
    2928
    30 #include "ClipboardAccessPolicy.h"
    31 #include "ClipboardQt.h"
    32 #include "Document.h"
    33 #include "Element.h"
    34 #include "SelectionController.h"
    35 #include "TextIterator.h"
    36 #include "VisibleSelection.h"
    37 #include "htmlediting.h"
    38 #include "visible_units.h"
     29#if ENABLE(DATA_TRANSFER_ITEMS)
     30
     31#include "Clipboard.h"
     32#include "DataTransferItemQt.h"
     33#include "ExceptionCode.h"
    3934
    4035namespace WebCore {
    4136
    42 PassRefPtr<Clipboard> Editor::newGeneralClipboard(ClipboardAccessPolicy policy, Frame*)
     37PassRefPtr<DataTransferItemsQt> DataTransferItemsQt::create(PassRefPtr<Clipboard> owner, ScriptExecutionContext* context)
    4338{
    44     return ClipboardQt::create(policy);
     39    return adoptRef(new DataTransferItemsQt(owner, context));
     40}
     41
     42DataTransferItemsQt::DataTransferItemsQt(PassRefPtr<Clipboard> owner, ScriptExecutionContext* context)
     43    : DataTransferItems(owner,  context)
     44{
     45}
     46
     47void DataTransferItemsQt::addPasteboardItem(const String& type)
     48{
     49    m_items.append(DataTransferItemQt::createFromPasteboard(m_owner, m_context, type));
    4550}
    4651
    4752} // namespace WebCore
     53
     54#endif // ENABLE(DATA_TRANSFER_ITEMS)
  • trunk/Source/WebCore/platform/qt/DataTransferItemsQt.h

    r85647 r85648  
    11/*
    2  * Copyright (C) 2006 Zack Rusin <zack@kde.org>
    3  * Copyright (C) 2006 Apple Inc. All rights reserved.
     2 * Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies)
    43 *
    54 * Redistribution and use in source and binary forms, with or without
     
    2524 */
    2625
    27 #include "config.h"
    28 #include "Editor.h"
     26#ifndef DataTransferItemsQt_h
     27#define DataTransferItemsQt_h
    2928
    30 #include "ClipboardAccessPolicy.h"
    31 #include "ClipboardQt.h"
    32 #include "Document.h"
    33 #include "Element.h"
    34 #include "SelectionController.h"
    35 #include "TextIterator.h"
    36 #include "VisibleSelection.h"
    37 #include "htmlediting.h"
    38 #include "visible_units.h"
     29#if ENABLE(DATA_TRANSFER_ITEMS)
     30
     31#include "DataTransferItems.h"
     32#include <wtf/RefPtr.h>
     33#include <wtf/Vector.h>
    3934
    4035namespace WebCore {
    4136
    42 PassRefPtr<Clipboard> Editor::newGeneralClipboard(ClipboardAccessPolicy policy, Frame*)
    43 {
    44     return ClipboardQt::create(policy);
     37class Clipboard;
     38class DataTransferItemQt;
     39class ScriptExecutionContext;
     40
     41class DataTransferItemsQt : public DataTransferItems {
     42public:
     43    static PassRefPtr<DataTransferItemsQt> create(PassRefPtr<Clipboard>, ScriptExecutionContext*);
     44
     45    friend class ClipboardQt;
     46private:
     47    DataTransferItemsQt(PassRefPtr<Clipboard>, ScriptExecutionContext*);
     48
     49    virtual void addPasteboardItem(const String& type);
     50};
     51
    4552}
    4653
    47 } // namespace WebCore
     54#endif // ENABLE(DATA_TRANSFER_ITEMS)
     55
     56#endif
Note: See TracChangeset for help on using the changeset viewer.