Changeset 53410 in webkit


Ignore:
Timestamp:
Jan 18, 2010 9:20:01 AM (14 years ago)
Author:
Adam Roben
Message:

DataTransfer interface broken on Windows--types member is always undefined, and getData() does not work.

https://bugs.webkit.org/show_bug.cgi?id=30527

Patch by Daniel Cheng <dcheng@google.com> on 2010-01-18
Reviewed by Adam Roben.

WebCore:

  • platform/win/ClipboardWin.cpp:

(WebCore::addMimeTypesForFormat): pass FORMATETC as a const ref.
(WebCore::ClipboardWin::types): fix calls to IEnumFORMATETC.
(WebCore::ClipboardWin::hasData): fix calls to IEnumFORMATETC.

LayoutTests:

  • fast/events/drag-and-drop-dataTransfer-types-nocrash-expected.txt: Updated test expectations.
  • fast/events/drag-and-drop-dataTransfer-types-nocrash.html: Added test cases.
  • platform/win/Skipped: Re-enabled fast/events/drag-and-drop-dataTransfer-types-nocrash.html
Location:
trunk
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r53393 r53410  
     12010-01-18  Daniel Cheng  <dcheng@google.com>
     2
     3        Reviewed by Adam Roben
     4
     5        DataTransfer interface broken on Windows--types member is always
     6        undefined, and getData() does not work.
     7        https://bugs.webkit.org/show_bug.cgi?id=30527
     8
     9        * fast/events/drag-and-drop-dataTransfer-types-nocrash-expected.txt: Updated test expectations.
     10        * fast/events/drag-and-drop-dataTransfer-types-nocrash.html: Added test cases.
     11        * platform/win/Skipped: Re-enabled fast/events/drag-and-drop-dataTransfer-types-nocrash.html
     12
    1132010-01-17  Csaba Osztrogonác  <ossy@webkit.org>
    214
  • trunk/LayoutTests/fast/events/drag-and-drop-dataTransfer-types-nocrash-expected.txt

    r50532 r53410  
    55
    66PASS event.dataTransfer.types contains format "text/plain"
     7PASS event.dataTransfer.getData("text/plain") contains "Square"
    78
    89TEST COMPLETE
  • trunk/LayoutTests/fast/events/drag-and-drop-dataTransfer-types-nocrash.html

    r50532 r53410  
    9090        else
    9191            testPassed('event.dataTransfer.types contains format "' + FORMAT_TYPE + '"');
     92
     93        if (event.dataTransfer.getData(FORMAT_TYPE) != 'Square')
     94            testFailed('event.dataTransfer.getData("' + FORMAT_TYPE + '") should contain "Square", but it does not.');
     95        else
     96            testPassed('event.dataTransfer.getData("' + FORMAT_TYPE + '") contains "Square"');
    9297    }
    9398
  • trunk/LayoutTests/platform/win/Skipped

    r53289 r53410  
    109109fast/events/drag-in-frames.html
    110110fast/events/standalone-image-drag-to-editable.html
    111 
    112 # Event.dataTransfer.types does not behave correctly (https://bugs.webkit.org/show_bug.cgi?id=30527)
    113 fast/events/drag-and-drop-dataTransfer-types-nocrash.html
    114111
    115112# <rdar://problem/5643675> window.scrollTo scrolls a window with no scrollbars
  • trunk/WebCore/ChangeLog

    r53409 r53410  
     12010-01-18  Daniel Cheng  <dcheng@google.com>
     2
     3        Reviewed by Adam Roben.
     4
     5        DataTransfer interface broken on Windows--types member is always
     6        undefined, and getData() does not work.
     7        https://bugs.webkit.org/show_bug.cgi?id=30527
     8
     9        * platform/win/ClipboardWin.cpp:
     10        (WebCore::addMimeTypesForFormat): pass FORMATETC as a const ref.
     11        (WebCore::ClipboardWin::types): fix calls to IEnumFORMATETC.
     12        (WebCore::ClipboardWin::hasData): fix calls to IEnumFORMATETC.
     13
    1142010-01-18  Mikhail Naganov  <mnaganov@chromium.org>
    215
  • trunk/WebCore/platform/win/ClipboardWin.cpp

    r49810 r53410  
    535535}
    536536
    537 static void addMimeTypesForFormat(HashSet<String>& results, FORMATETC& format)
     537static void addMimeTypesForFormat(HashSet<String>& results, const FORMATETC& format)
    538538{
    539539    // URL and Text are provided for compatibility with IE's model
     
    561561    COMPtr<IEnumFORMATETC> itr;
    562562
    563     if (FAILED(m_dataObject->EnumFormatEtc(0, &itr)))
     563    if (FAILED(m_dataObject->EnumFormatEtc(DATADIR_GET, &itr)))
    564564        return results;
    565565
     
    569569    FORMATETC data;
    570570
    571     while (SUCCEEDED(itr->Next(1, &data, 0))) {
     571    // IEnumFORMATETC::Next returns S_FALSE if there are no more items.
     572    while (itr->Next(1, &data, 0) == S_OK) {
    572573        addMimeTypesForFormat(results, data);
    573574    }
     
    782783
    783784    COMPtr<IEnumFORMATETC> itr;
    784     if (FAILED(m_dataObject->EnumFormatEtc(0, &itr)))
     785    if (FAILED(m_dataObject->EnumFormatEtc(DATADIR_GET, &itr)))
    785786        return false;
    786787
     
    790791    FORMATETC data;
    791792
    792     if (SUCCEEDED(itr->Next(1, &data, 0))) {
     793    // IEnumFORMATETC::Next returns S_FALSE if there are no more items.
     794    if (itr->Next(1, &data, 0) == S_OK) {
    793795        // There is at least one item in the IDataObject
    794796        return true;
Note: See TracChangeset for help on using the changeset viewer.