Changeset 107894 in webkit
- Timestamp:
- Feb 15, 2012 11:26:18 PM (12 years ago)
- Location:
- trunk
- Files:
-
- 1 added
- 32 edited
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r107893 r107894 1 2012-02-15 Daniel Cheng <dcheng@chromium.org> 2 3 dataTransfer.types (HTML5 drag & drop) should return DOMStringList 4 https://bugs.webkit.org/show_bug.cgi?id=30416 5 6 Reviewed by Eric Seidel. 7 8 Add a test to document the fact that many dataTransfer attributes aren't live and return a 9 different object each time they're accessed. Also update tests to use contains() instead of 10 indexOf(). 11 12 * editing/pasteboard/clipboard-customData.html: 13 * editing/pasteboard/onpaste-text-html-types.html: 14 * fast/events/drag-and-drop-dataTransfer-types-nocrash.html: 15 * fast/events/drag-customData.html: 16 * fast/events/drag-dataTransfer-live-attributes-expected.txt: Added. 17 * fast/events/drag-dataTransfer-live-attributes.html: Copied from LayoutTests/fast/events/drag-customData.html. 18 * http/tests/local/fileapi/resources/setup-file-input-element-for-drag.js: 19 * http/tests/security/clipboard/script-tests/clipboard-file-access.js: 20 (checkForEventTransferType): 21 1 22 2012-02-15 Bear Travis <betravis@adobe.com> 2 23 -
trunk/LayoutTests/editing/pasteboard/clipboard-customData.html
r101828 r107894 18 18 function paste(event) { 19 19 var failed = false; 20 if ( event.clipboardData.types.indexOf('text/plain') < 021 || event.clipboardData.types.indexOf('custom-data') < 0)20 if (!event.clipboardData.types.contains('text/plain') 21 || !event.clipboardData.types.contains('custom-data')) 22 22 failed = true; 23 23 if (event.clipboardData.getData('text') != 'sample' -
trunk/LayoutTests/editing/pasteboard/onpaste-text-html-types.html
r81522 r107894 9 9 { 10 10 var types = ev.clipboardData.types; 11 if (types.indexOf('text/plain') >= 0 && 12 types.indexOf('text/html') >= 0) 11 if (types.contains('text/plain') && types.contains('text/html')) 13 12 document.getElementById("results").innerHTML = "PASS"; 14 13 } -
trunk/LayoutTests/fast/events/drag-and-drop-dataTransfer-types-nocrash.html
r98407 r107894 85 85 event = e; 86 86 var formatTypes = e.dataTransfer.types; // This line causes the crash. 87 if (event.dataTransfer.types. indexOf(FORMAT_TYPE) == -1)87 if (event.dataTransfer.types.contains(FORMAT_TYPE) == -1) 88 88 testFailed('event.dataTransfer.types should contain format "' + FORMAT_TYPE + '", but it does not.'); 89 89 else -
trunk/LayoutTests/fast/events/drag-customData.html
r101828 r107894 33 33 function drop(event) { 34 34 var failed = false; 35 if ( event.dataTransfer.types.indexOf('text/plain') < 036 || event.dataTransfer.types.indexOf('custom-data') < 0)35 if (!event.dataTransfer.types.contains('text/plain') 36 || !event.dataTransfer.types.contains('custom-data')) 37 37 failed = true; 38 38 if (event.dataTransfer.getData('text') != 'sample' -
trunk/LayoutTests/fast/events/drag-dataTransfer-live-attributes.html
r107893 r107894 15 15 </style> 16 16 <script> 17 var failed; 18 17 19 function log(str) 18 20 { … … 21 23 result.appendChild(document.createElement('br')); 22 24 } 23 function dragstart(event) { 25 function dragstart(event) 26 { 27 failed = false; 24 28 event.dataTransfer.setData('text', 'sample'); 25 event.dataTransfer.setData('custom-data', 'hello world'); 29 if (event.dataTransfer.types != event.dataTransfer.types) { 30 failed = true; 31 log('types != types'); 32 } 33 if (event.dataTransfer.files != event.dataTransfer.files) { 34 failed = true; 35 log('files != files'); 36 } 37 if (event.dataTransfer.items != event.dataTransfer.items) { 38 failed = true; 39 log('items != items'); 40 } 26 41 } 27 function dragenter(event) { 42 function dragenter(event) 43 { 28 44 event.preventDefault(); 29 45 } 30 function dragover(event) { 46 function dragover(event) 47 { 31 48 event.preventDefault(); 32 49 } 33 function drop(event) { 34 var failed = false; 35 if (event.dataTransfer.types.indexOf('text/plain') < 0 36 || event.dataTransfer.types.indexOf('custom-data') < 0) 50 function drop(event) 51 { 52 if (!event.dataTransfer.types.contains('text/plain')) 37 53 failed = true; 38 if (event.dataTransfer.getData('text') != 'sample' 39 || event.dataTransfer.getData('custom-data') != 'hello world') 54 if (event.dataTransfer.getData('text') != 'sample') 40 55 failed = true; 41 56 log(failed ? 'FAILURE' : 'SUCCESS'); … … 63 78 </head> 64 79 <body> 65 <p>T o manually test, drag 'Drag Me' to 'Drop Here' and drop. The word 'SUCCESS' should appear.80 <p>This is a test that various dataTransfer attributes are live and return the same object when accessed multiple times. To manually test, drag 'Drag Me' to 'Drop Here' and drop. The word 'SUCCESS' should appear. 66 81 <div draggable="true" id="drag" ondragstart="dragstart(event)">Drag Me</div> 67 82 <div id="drop" ondragenter="dragenter(event)" ondragover="dragover(event)" ondrop="drop(event)">Drop Here</div> -
trunk/LayoutTests/http/tests/local/fileapi/resources/setup-file-input-element-for-drag.js
r72340 r107894 17 17 var fileInputDropCallback = null; 18 18 fileInput.addEventListener("drop", function() { 19 if (event.dataTransfer.types. indexOf("Files") != -1&& event.dataTransfer.files.length == 1)19 if (event.dataTransfer.types.contains("Files") && event.dataTransfer.files.length == 1) 20 20 testPassed("event.dataTransfer contains a File object on drop."); 21 21 else { -
trunk/LayoutTests/http/tests/security/clipboard/script-tests/clipboard-file-access.js
r59689 r107894 76 76 var passedCheck; 77 77 var message; 78 if (event.dataTransfer.types && event.dataTransfer.types. indexOf(typeString) != -1) {78 if (event.dataTransfer.types && event.dataTransfer.types.contains(typeString)) { 79 79 passedCheck = shouldContainType; 80 80 message = "event.dataTransfer.types contains " + typeString + "."; -
trunk/Source/WebCore/ChangeLog
r107893 r107894 1 2012-02-15 Daniel Cheng <dcheng@chromium.org> 2 3 dataTransfer.types (HTML5 drag & drop) should return DOMStringList 4 https://bugs.webkit.org/show_bug.cgi?id=30416 5 6 Reviewed by Eric Seidel. 7 8 This change breaks backwards compatibility; however, since Firefox only supported 9 event.dataTransfer.types.contains, sites already needed to check whether to use contains or 10 indexOf. Therefore, the net compatibility effect of this change should be minimal. 11 12 Test: fast/events/drag-dataTransfer-live-attributes.html 13 14 * bindings/js/JSClipboardCustom.cpp: 15 (WebCore): 16 * bindings/v8/custom/V8ClipboardCustom.cpp: 17 * dom/Clipboard.cpp: 18 (WebCore::Clipboard::hasStringOfType): 19 * dom/Clipboard.h: 20 (WebCore): 21 (Clipboard): 22 * dom/Clipboard.idl: 23 * platform/blackberry/ClipboardBlackBerry.cpp: 24 (WebCore::ClipboardBlackBerry::types): 25 * platform/blackberry/ClipboardBlackBerry.h: 26 (ClipboardBlackBerry): 27 * platform/chromium/ChromiumDataObject.cpp: 28 (WebCore::ChromiumDataObject::types): 29 * platform/chromium/ChromiumDataObject.h: 30 (ChromiumDataObject): 31 * platform/chromium/ClipboardChromium.cpp: 32 (WebCore::ClipboardChromium::types): 33 (WebCore::ClipboardChromium::mayUpdateItems): 34 * platform/chromium/ClipboardChromium.h: 35 (ClipboardChromium): 36 * platform/chromium/DragDataChromium.cpp: 37 (WebCore::containsHTML): 38 (WebCore::DragData::containsURL): 39 (WebCore::DragData::asURL): 40 (WebCore::DragData::containsPlainText): 41 (WebCore::DragData::canSmartReplace): 42 (WebCore::DragData::asFragment): 43 * platform/efl/ClipboardEfl.cpp: 44 (WebCore::ClipboardEfl::types): 45 * platform/efl/ClipboardEfl.h: 46 (ClipboardEfl): 47 * platform/gtk/ClipboardGtk.cpp: 48 (WebCore::ClipboardGtk::types): 49 * platform/gtk/ClipboardGtk.h: 50 (ClipboardGtk): 51 * platform/mac/ClipboardMac.h: 52 (ClipboardMac): 53 * platform/mac/ClipboardMac.mm: 54 (WebCore::addHTMLClipboardTypesForCocoaType): 55 (WebCore::ClipboardMac::types): 56 * platform/qt/ClipboardQt.cpp: 57 (WebCore::ClipboardQt::types): 58 * platform/qt/ClipboardQt.h: 59 (ClipboardQt): 60 * platform/win/ClipboardWin.cpp: 61 (WebCore::addMimeTypesForFormat): 62 (WebCore::ClipboardWin::types): 63 * platform/win/ClipboardWin.h: 64 (ClipboardWin): 65 * platform/wx/ClipboardWx.cpp: 66 (WebCore::ClipboardWx::types): 67 * platform/wx/ClipboardWx.h: 68 (ClipboardWx): 69 1 70 2012-02-15 Bear Travis <betravis@adobe.com> 2 71 -
trunk/Source/WebCore/bindings/js/JSClipboardCustom.cpp
r105698 r107894 48 48 49 49 using namespace HTMLNames; 50 51 JSValue JSClipboard::types(ExecState* exec) const52 {53 Clipboard* clipboard = impl();54 55 HashSet<String> types = clipboard->types();56 if (types.isEmpty())57 return jsNull();58 59 MarkedArgumentBuffer list;60 HashSet<String>::const_iterator end = types.end();61 for (HashSet<String>::const_iterator it = types.begin(); it != end; ++it)62 list.append(jsString(exec, stringToUString(*it)));63 return constructArray(exec, globalObject(), list);64 }65 50 66 51 JSValue JSClipboard::clearData(ExecState* exec) -
trunk/Source/WebCore/bindings/v8/custom/V8ClipboardCustom.cpp
r95901 r107894 44 44 45 45 namespace WebCore { 46 47 v8::Handle<v8::Value> V8Clipboard::typesAccessorGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info)48 {49 INC_STATS("DOM.Clipboard.types()");50 Clipboard* clipboard = V8Clipboard::toNative(info.Holder());51 52 HashSet<String> types = clipboard->types();53 if (types.isEmpty())54 return v8::Null();55 56 v8::Local<v8::Array> result = v8::Array::New(types.size());57 HashSet<String>::const_iterator end = types.end();58 int index = 0;59 for (HashSet<String>::const_iterator it = types.begin(); it != end; ++it, ++index)60 result->Set(v8::Integer::New(index), v8String(*it));61 62 return result;63 }64 46 65 47 v8::Handle<v8::Value> V8Clipboard::clearDataCallback(const v8::Arguments& args) -
trunk/Source/WebCore/dom/Clipboard.cpp
r106018 r107894 28 28 29 29 #include "CachedImage.h" 30 #include "DOMStringList.h" 30 31 #include "FileList.h" 31 32 #include "Frame.h" … … 148 149 return false; 149 150 150 return types() .contains(type);151 return types()->contains(type); 151 152 } 152 153 -
trunk/Source/WebCore/dom/Clipboard.h
r106884 r107894 34 34 namespace WebCore { 35 35 36 class DOMStringList; 36 37 class DataTransferItemList; 37 38 class DragData; … … 67 68 68 69 // extensions beyond IE's API 69 virtual HashSet<String> types() const = 0;70 virtual PassRefPtr<DOMStringList> types() const = 0; 70 71 virtual PassRefPtr<FileList> files() const = 0; 71 72 -
trunk/Source/WebCore/dom/Clipboard.idl
r107312 r107894 32 32 attribute [TreatReturnedNullStringAs=Undefined] DOMString dropEffect; 33 33 attribute [TreatReturnedNullStringAs=Undefined] DOMString effectAllowed; 34 readonly attribute [CustomGetter] Arraytypes;34 readonly attribute DOMStringList types; 35 35 readonly attribute FileList files; 36 36 -
trunk/Source/WebCore/platform/blackberry/ClipboardBlackBerry.cpp
r102739 r107894 20 20 #include "ClipboardBlackBerry.h" 21 21 22 #include "DOMStringList.h" 22 23 #include "FileList.h" 23 24 #include "NotImplemented.h" … … 73 74 } 74 75 75 HashSet<String> ClipboardBlackBerry::types() const76 PassRefPtr<DOMStringList> ClipboardBlackBerry::types() const 76 77 { 77 78 // We use hardcoded list here since there seems to be no API to get the list. 78 HashSet<String> ret;79 ret .add("text/plain");80 ret .add("text/html");81 ret .add("text/url");82 return ret ;79 RefPtr<DOMStringList> ret = DOMStringList::create(); 80 ret->append("text/plain"); 81 ret->append("text/html"); 82 ret->append("text/url"); 83 return ret.release(); 83 84 } 84 85 -
trunk/Source/WebCore/platform/blackberry/ClipboardBlackBerry.h
r102739 r107894 37 37 38 38 // extensions beyond IE's API 39 virtual HashSet<String> types() const;39 virtual PassRefPtr<DOMStringList> types() const; 40 40 virtual PassRefPtr<FileList> files() const; 41 41 virtual DragImageRef createDragImage(IntPoint&) const; -
trunk/Source/WebCore/platform/chromium/ChromiumDataObject.cpp
r105826 r107894 102 102 } 103 103 104 HashSet<String> ChromiumDataObject::types() const 105 { 104 PassRefPtr<DOMStringList> ChromiumDataObject::types() const 105 { 106 RefPtr<DOMStringList> results = DOMStringList::create(); 107 106 108 if (m_storageMode == Pasteboard) { 107 109 bool ignoredContainsFilenames; 108 return PlatformSupport::clipboardReadAvailableTypes(currentPasteboardBuffer(), 109 &ignoredContainsFilenames); 110 } 111 112 HashSet<String> results; 110 HashSet<String> hashedResults = PlatformSupport::clipboardReadAvailableTypes( 111 currentPasteboardBuffer(), &ignoredContainsFilenames); 112 for (HashSet<String>::const_iterator it = hashedResults.begin(); it != hashedResults.end(); ++it) 113 results->append(*it); 114 return results.release(); 115 } 113 116 114 117 if (!m_plainText.isEmpty()) { 115 results .add(mimeTypeText);116 results .add(mimeTypeTextPlain);118 results->append(mimeTypeText); 119 results->append(mimeTypeTextPlain); 117 120 } 118 121 119 122 if (!m_uriList.isEmpty()) 120 results .add(mimeTypeTextURIList);123 results->append(mimeTypeTextURIList); 121 124 122 125 if (!m_textHtml.isEmpty()) 123 results .add(mimeTypeTextHTML);126 results->append(mimeTypeTextHTML); 124 127 125 128 for (HashMap<String, String>::const_iterator::Keys it = m_customData.begin().keys(); 126 129 it != m_customData.end().keys(); ++it) { 127 results .add(*it);128 } 129 130 return results ;130 results->append(*it); 131 } 132 133 return results.release(); 131 134 } 132 135 -
trunk/Source/WebCore/platform/chromium/ChromiumDataObject.h
r105506 r107894 32 32 #define ChromiumDataObject_h 33 33 34 #include "DOMStringList.h" 34 35 #include "KURL.h" 35 36 #include "PlatformString.h" 36 37 #include "SharedBuffer.h" 37 38 #include <wtf/HashMap.h> 38 #include <wtf/HashSet.h>39 39 #include <wtf/RefPtr.h> 40 40 #include <wtf/Vector.h> … … 76 76 bool hasData() const; 77 77 78 HashSet<String> types() const;78 PassRefPtr<DOMStringList> types() const; 79 79 String getData(const String& type, bool& success) const; 80 80 bool setData(const String& type, const String& data); -
trunk/Source/WebCore/platform/chromium/ClipboardChromium.cpp
r105962 r107894 32 32 #include "ClipboardMimeTypes.h" 33 33 #include "ClipboardUtilitiesChromium.h" 34 #include "DOMStringList.h" 34 35 #include "DataTransferItemChromium.h" 35 36 #include "DataTransferItemListChromium.h" … … 290 291 291 292 // extensions beyond IE's API 292 HashSet<String> ClipboardChromium::types() const 293 { 294 HashSet<String> results; 293 PassRefPtr<DOMStringList> ClipboardChromium::types() const 294 { 295 295 if (policy() != ClipboardReadable && policy() != ClipboardTypesReadable) 296 return results;297 298 if (!m_dataObject) 299 return results;300 301 results = m_dataObject->types();296 return DOMStringList::create(); 297 298 if (!m_dataObject) 299 return DOMStringList::create(); 300 301 RefPtr<DOMStringList> results = m_dataObject->types(); 302 302 303 303 if (m_dataObject->containsFilenames()) 304 results .add(mimeTypeFiles);305 306 return results ;304 results->append(mimeTypeFiles); 305 306 return results.release(); 307 307 } 308 308 … … 519 519 if (isForCopyAndPaste() && policy() == ClipboardReadable) { 520 520 // Iterate through the types and add them. 521 HashSet<String> types = m_dataObject->types();522 for ( HashSet<String>::const_iterator it = types.begin(); it != types.end(); ++it)523 items.append(DataTransferItemChromium::createFromPasteboard(this, scriptExecutionContext, *it));521 RefPtr<DOMStringList> types = m_dataObject->types(); 522 for (size_t i = 0; i < types->length(); ++i) 523 items.append(DataTransferItemChromium::createFromPasteboard(this, scriptExecutionContext, types->item(i))); 524 524 return; 525 525 } -
trunk/Source/WebCore/platform/chromium/ClipboardChromium.h
r105962 r107894 64 64 65 65 // extensions beyond IE's API 66 virtual HashSet<String> types() const;66 virtual PassRefPtr<DOMStringList> types() const; 67 67 virtual PassRefPtr<FileList> files() const; 68 68 -
trunk/Source/WebCore/platform/chromium/DragDataChromium.cpp
r105826 r107894 46 46 static bool containsHTML(const ChromiumDataObject* dropData) 47 47 { 48 return dropData->types() .contains(mimeTypeTextHTML);48 return dropData->types()->contains(mimeTypeTextHTML); 49 49 } 50 50 51 51 bool DragData::containsURL(Frame*, FilenameConversionPolicy filenamePolicy) const 52 52 { 53 return m_platformDragData->types() .contains(mimeTypeTextURIList)53 return m_platformDragData->types()->contains(mimeTypeTextURIList) 54 54 || (filenamePolicy == ConvertFilenames && m_platformDragData->containsFilenames()); 55 55 } … … 58 58 { 59 59 String url; 60 if (m_platformDragData->types() .contains(mimeTypeTextURIList)) {60 if (m_platformDragData->types()->contains(mimeTypeTextURIList)) { 61 61 bool ignoredSuccess; 62 62 url = m_platformDragData->getData(mimeTypeURL, ignoredSuccess); … … 88 88 bool DragData::containsPlainText() const 89 89 { 90 return m_platformDragData->types() .contains(mimeTypeTextPlain);90 return m_platformDragData->types()->contains(mimeTypeTextPlain); 91 91 } 92 92 … … 109 109 // ClipboardWin::writeRange is called). For example, dragging a link 110 110 // should not result in a space being added. 111 return m_platformDragData->types() .contains(mimeTypeTextPlain)112 && !m_platformDragData->types() .contains(mimeTypeTextURIList);111 return m_platformDragData->types()->contains(mimeTypeTextPlain) 112 && !m_platformDragData->types()->contains(mimeTypeTextURIList); 113 113 } 114 114 … … 142 142 } 143 143 144 if (m_platformDragData->types() .contains(mimeTypeTextHTML)) {144 if (m_platformDragData->types()->contains(mimeTypeTextHTML)) { 145 145 bool ignoredSuccess; 146 146 RefPtr<DocumentFragment> fragment = createFragmentFromMarkup(frame->document(), -
trunk/Source/WebCore/platform/efl/ClipboardEfl.cpp
r103006 r107894 22 22 #include "ClipboardEfl.h" 23 23 24 #include "DOMStringList.h" 24 25 #include "DataTransferItemList.h" 25 26 #include "Editor.h" … … 78 79 } 79 80 80 HashSet<String> ClipboardEfl::types() const81 PassRefPtr<DOMStringList> ClipboardEfl::types() const 81 82 { 82 83 notImplemented(); 83 return HashSet<String>();84 return DOMStringList::create(); 84 85 } 85 86 -
trunk/Source/WebCore/platform/efl/ClipboardEfl.h
r103006 r107894 40 40 bool setData(const String&, const String&); 41 41 42 HashSet<String> types() const;42 PassRefPtr<DOMStringList> types() const; 43 43 virtual PassRefPtr<FileList> files() const; 44 44 -
trunk/Source/WebCore/platform/gtk/ClipboardGtk.cpp
r100817 r107894 19 19 20 20 #include "CachedImage.h" 21 #include "DOMStringList.h" 21 22 #include "DragData.h" 22 23 #include "Editor.h" … … 190 191 } 191 192 192 HashSet<String> ClipboardGtk::types() const193 PassRefPtr<DOMStringList> ClipboardGtk::types() const 193 194 { 194 195 if (policy() != ClipboardReadable && policy() != ClipboardTypesReadable) 195 return HashSet<String>();196 return DOMStringList::create(); 196 197 197 198 if (m_clipboard) 198 199 PasteboardHelper::defaultPasteboardHelper()->getClipboardContents(m_clipboard); 199 200 200 HashSet<String> types;201 RefPtr<DOMStringList> types = DOMStringList::create(); 201 202 if (m_dataObject->hasText()) { 202 types .add("text/plain");203 types .add("Text");204 types .add("text");203 types->append("text/plain"); 204 types->append("Text"); 205 types->append("text"); 205 206 } 206 207 207 208 if (m_dataObject->hasMarkup()) 208 types .add("text/html");209 types->append("text/html"); 209 210 210 211 if (m_dataObject->hasURIList()) { 211 types .add("text/uri-list");212 types .add("URL");212 types->append("text/uri-list"); 213 types->append("URL"); 213 214 } 214 215 215 216 if (m_dataObject->hasFilenames()) 216 types .add("Files");217 218 return types ;217 types->append("Files"); 218 219 return types.release(); 219 220 } 220 221 -
trunk/Source/WebCore/platform/gtk/ClipboardGtk.h
r99924 r107894 58 58 bool setData(const String&, const String&); 59 59 60 virtual HashSet<String> types() const;60 virtual PassRefPtr<DOMStringList> types() const; 61 61 virtual PassRefPtr<FileList> files() const; 62 62 -
trunk/Source/WebCore/platform/mac/ClipboardMac.h
r107844 r107894 57 57 58 58 // extensions beyond IE's API 59 virtual HashSet<String> types() const;59 virtual PassRefPtr<DOMStringList> types() const; 60 60 virtual PassRefPtr<FileList> files() const; 61 61 -
trunk/Source/WebCore/platform/mac/ClipboardMac.mm
r107844 r107894 28 28 29 29 #import "DOMElementInternal.h" 30 #import "DOMStringList.h" 30 31 #import "DragClient.h" 31 32 #import "DragController.h" … … 112 113 } 113 114 114 static void addHTMLClipboardTypesForCocoaType( HashSet<String>&resultTypes, const String& cocoaType, const String& pasteboardName)115 static void addHTMLClipboardTypesForCocoaType(DOMStringList* resultTypes, const String& cocoaType, const String& pasteboardName) 115 116 { 116 117 // UTI may not do these right, so make sure we get the right, predictable result 117 118 if (cocoaType == String(NSStringPboardType)) { 118 resultTypes .add("text/plain");119 resultTypes->append("text/plain"); 119 120 return; 120 121 } 121 122 if (cocoaType == String(NSURLPboardType)) { 122 resultTypes .add("text/uri-list");123 resultTypes->append("text/uri-list"); 123 124 return; 124 125 } … … 132 133 // It is unknown if NSFilenamesPboardType always implies NSURLPboardType in Cocoa, 133 134 // but NSFilenamesPboardType should imply both 'text/uri-list' and 'Files' 134 resultTypes .add("text/uri-list");135 resultTypes .add("Files");135 resultTypes->append("text/uri-list"); 136 resultTypes->append("Files"); 136 137 } 137 138 return; … … 139 140 String utiType = utiTypeFromCocoaType(cocoaType); 140 141 if (!utiType.isEmpty()) { 141 resultTypes .add(utiType);142 resultTypes->append(utiType); 142 143 return; 143 144 } 144 145 // No mapping, just pass the whole string though 145 resultTypes .add(cocoaType);146 resultTypes->append(cocoaType); 146 147 } 147 148 … … 284 285 } 285 286 286 HashSet<String> ClipboardMac::types() const287 PassRefPtr<DOMStringList> ClipboardMac::types() const 287 288 { 288 289 if (policy() != ClipboardReadable && policy() != ClipboardTypesReadable) 289 return HashSet<String>();290 return DOMStringList::create(); 290 291 291 292 Vector<String> types; … … 295 296 // sure it doesn't change between our testing the change count and accessing the data. 296 297 if (m_changeCount != platformStrategies()->pasteboardStrategy()->changeCount(m_pasteboardName)) 297 return HashSet<String>();298 299 HashSet<String> result;298 return DOMStringList::create(); 299 300 RefPtr<DOMStringList> result = DOMStringList::create(); 300 301 // FIXME: This loop could be split into two stages. One which adds all the HTML5 specified types 301 302 // and a second which adds all the extra types from the cocoa clipboard (which is Mac-only behavior). … … 304 305 continue; // skip this ancient type that gets auto-supplied by some system conversion 305 306 306 addHTMLClipboardTypesForCocoaType(result , types[i], m_pasteboardName);307 } 308 309 return result ;307 addHTMLClipboardTypesForCocoaType(result.get(), types[i], m_pasteboardName); 308 } 309 310 return result.release(); 310 311 } 311 312 -
trunk/Source/WebCore/platform/qt/ClipboardQt.cpp
r99924 r107894 31 31 32 32 #include "CachedImage.h" 33 #include "DOMStringList.h" 33 34 #include "DataTransferItemListQt.h" 34 35 #include "Document.h" … … 190 191 191 192 // extensions beyond IE's API 192 HashSet<String> ClipboardQt::types() const193 PassRefPtr<DOMStringList> ClipboardQt::types() const 193 194 { 194 195 if (policy() != ClipboardReadable && policy() != ClipboardTypesReadable) 195 return HashSet<String>();196 return DOMStringList::create(); 196 197 197 198 ASSERT(m_readableData); 198 HashSet<String> result;199 RefPtr<DOMStringList> result = DOMStringList::create(); 199 200 QStringList formats = m_readableData->formats(); 200 201 for (int i = 0; i < formats.count(); ++i) 201 result .add(formats.at(i));202 return result ;202 result->append(formats.at(i)); 203 return result.release(); 203 204 } 204 205 -
trunk/Source/WebCore/platform/qt/ClipboardQt.h
r98821 r107894 58 58 59 59 // extensions beyond IE's API 60 virtual HashSet<String> types() const;60 virtual PassRefPtr<DOMStringList> types() const; 61 61 virtual PassRefPtr<FileList> files() const; 62 62 -
trunk/Source/WebCore/platform/win/ClipboardWin.cpp
r102016 r107894 29 29 #include "CachedImage.h" 30 30 #include "ClipboardUtilitiesWin.h" 31 #include "DOMStringList.h" 31 32 #include "Document.h" 32 33 #include "DragData.h" … … 486 487 } 487 488 488 static void addMimeTypesForFormat( HashSet<String>&results, const FORMATETC& format)489 static void addMimeTypesForFormat(DOMStringList* results, const FORMATETC& format) 489 490 { 490 491 // URL and Text are provided for compatibility with IE's model 491 492 if (format.cfFormat == urlFormat()->cfFormat || format.cfFormat == urlWFormat()->cfFormat) { 492 results .add("URL");493 results .add("text/uri-list");493 results->append("URL"); 494 results->append("text/uri-list"); 494 495 } 495 496 496 497 if (format.cfFormat == plainTextWFormat()->cfFormat || format.cfFormat == plainTextFormat()->cfFormat) { 497 results .add("Text");498 results .add("text/plain");498 results->append("Text"); 499 results->append("text/plain"); 499 500 } 500 501 } 501 502 502 503 // extensions beyond IE's API 503 HashSet<String> ClipboardWin::types() const504 PassRefPtr<DOMStringList> ClipboardWin::types() const 504 505 { 505 HashSet<String> results;506 RefPtr<DOMStringList> results = DOMStringList::create(); 506 507 if (policy() != ClipboardReadable && policy() != ClipboardTypesReadable) 507 508 return results; … … 523 524 // IEnumFORMATETC::Next returns S_FALSE if there are no more items. 524 525 while (itr->Next(1, &data, 0) == S_OK) 525 addMimeTypesForFormat(results , data);526 addMimeTypesForFormat(results.get(), data); 526 527 } else { 527 528 for (DragDataMap::const_iterator it = m_dragDataMap.begin(); it != m_dragDataMap.end(); ++it) { 528 529 FORMATETC data; 529 530 data.cfFormat = (*it).first; 530 addMimeTypesForFormat(results , data);531 addMimeTypesForFormat(results.get(), data); 531 532 } 532 533 } 533 534 534 return results ;535 return results.release(); 535 536 } 536 537 -
trunk/Source/WebCore/platform/win/ClipboardWin.h
r97113 r107894 65 65 66 66 // extensions beyond IE's API 67 virtual HashSet<String> types() const;67 virtual PassRefPtr<DOMStringList> types() const; 68 68 virtual PassRefPtr<FileList> files() const; 69 69 -
trunk/Source/WebCore/platform/wx/ClipboardWx.cpp
r67973 r107894 27 27 #include "ClipboardWx.h" 28 28 29 #include "DOMStringList.h" 29 30 #include "FileList.h" 30 31 #include "HashTable.h" … … 71 72 72 73 // extensions beyond IE's API 73 HashSet<String> ClipboardWx::types() const74 PassRefPtr<DOMStringList> ClipboardWx::types() const 74 75 { 75 76 notImplemented(); 76 HashSet<String> result; 77 return result; 77 return DOMStringList::create(); 78 78 } 79 79 -
trunk/Source/WebCore/platform/wx/ClipboardWx.h
r67973 r107894 47 47 48 48 // extensions beyond IE's API 49 virtual HashSet<String> types() const;49 virtual PassRefPtr<DOMStringList> types() const; 50 50 virtual PassRefPtr<FileList> files() const; 51 51
Note: See TracChangeset
for help on using the changeset viewer.