Changeset 105648 in webkit
- Timestamp:
- Jan 23, 2012, 3:35:44 PM (15 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 1 deleted
- 19 edited
-
CMakeLists.txt (modified) (1 diff)
-
ChangeLog (modified) (1 diff)
-
GNUmakefile.list.am (modified) (1 diff)
-
Target.pri (modified) (1 diff)
-
WebCore.gypi (modified) (1 diff)
-
WebCore.vcproj/WebCore.vcproj (modified) (1 diff)
-
WebCore.xcodeproj/project.pbxproj (modified) (4 diffs)
-
dom/DataTransferItem.cpp (modified) (2 diffs)
-
dom/DataTransferItem.h (modified) (1 diff)
-
dom/DataTransferItemList.cpp (deleted)
-
dom/DataTransferItemList.h (modified) (1 diff)
-
platform/chromium/ClipboardChromium.cpp (modified) (1 diff)
-
platform/chromium/DataTransferItemChromium.cpp (modified) (6 diffs)
-
platform/chromium/DataTransferItemChromium.h (modified) (2 diffs)
-
platform/chromium/DataTransferItemListChromium.cpp (modified) (1 diff)
-
platform/chromium/DataTransferItemListChromium.h (modified) (2 diffs)
-
platform/qt/DataTransferItemListQt.cpp (modified) (1 diff)
-
platform/qt/DataTransferItemListQt.h (modified) (2 diffs)
-
platform/qt/DataTransferItemQt.cpp (modified) (5 diffs)
-
platform/qt/DataTransferItemQt.h (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/CMakeLists.txt
r105642 r105648 1499 1499 LIST(APPEND WebCore_SOURCES 1500 1500 dom/DataTransferItem.cpp 1501 dom/DataTransferItemList.cpp1502 1501 dom/StringCallback.cpp 1503 1502 ) -
trunk/Source/WebCore/ChangeLog
r105645 r105648 1 2012-01-23 Daniel Cheng <dcheng@chromium.org> 2 3 Convert DataTransferItem/DataTransferItemList back into an interface class 4 https://bugs.webkit.org/show_bug.cgi?id=76856 5 6 When Qt implemented the DataTransferItemList, a lot of logic was moved into the shared 7 classes since Chromium/Qt happened to implement it the same way. Now that I want to do some 8 refactoring/cleanup work to better implement DataTransferItemList in Chromium, we won't 9 share the same data anymore so it doesn't make sense to keep that code in a common location. 10 11 Reviewed by David Levin. 12 13 Covered by existing tests. 14 15 * CMakeLists.txt: 16 * GNUmakefile.list.am: 17 * Target.pri: 18 * WebCore.gypi: 19 * WebCore.vcproj/WebCore.vcproj: 20 * WebCore.xcodeproj/project.pbxproj: 21 * dom/DataTransferItem.cpp: 22 * dom/DataTransferItem.h: 23 * dom/DataTransferItemList.cpp: Removed. 24 * dom/DataTransferItemList.h: 25 * platform/chromium/ClipboardChromium.cpp: 26 (WebCore::ClipboardChromium::mayUpdateItems): 27 * platform/chromium/DataTransferItemChromium.cpp: 28 (WebCore::DataTransferItemChromium::create): 29 (WebCore::DataTransferItemChromium::DataTransferItemChromium): 30 (WebCore::DataTransferItemChromium::getAsString): 31 (WebCore::DataTransferItemChromium::getAsFile): 32 (WebCore::DataTransferItemChromium::clipboardChromium): 33 * platform/chromium/DataTransferItemChromium.h: 34 (WebCore::DataTransferItemChromium::kind): 35 (WebCore::DataTransferItemChromium::type): 36 * platform/chromium/DataTransferItemListChromium.cpp: 37 (WebCore::DataTransferItemListChromium::DataTransferItemListChromium): 38 * platform/chromium/DataTransferItemListChromium.h: 39 * platform/qt/DataTransferItemListQt.cpp: 40 (WebCore::DataTransferItemListQt::DataTransferItemListQt): 41 (WebCore::DataTransferItemListQt::length): 42 (WebCore::DataTransferItemListQt::item): 43 (WebCore::DataTransferItemListQt::deleteItem): 44 (WebCore::DataTransferItemListQt::clear): 45 (WebCore::DataTransferItemListQt::add): 46 * platform/qt/DataTransferItemListQt.h: 47 * platform/qt/DataTransferItemQt.cpp: 48 (WebCore::DataTransferItemQt::create): 49 (WebCore::DataTransferItemQt::DataTransferItemQt): 50 (WebCore::DataTransferItemQt::getAsString): 51 (WebCore::DataTransferItemQt::getAsFile): 52 * platform/qt/DataTransferItemQt.h: 53 (WebCore::DataTransferItemQt::kind): 54 (WebCore::DataTransferItemQt::type): 55 1 56 2012-01-23 Andreas Kling <awesomekling@apple.com> 2 57 -
trunk/Source/WebCore/GNUmakefile.list.am
r105642 r105648 4663 4663 Source/WebCore/dom/DataTransferItem.cpp \ 4664 4664 Source/WebCore/dom/DataTransferItem.h \ 4665 Source/WebCore/dom/DataTransferItemList.cpp \4666 4665 Source/WebCore/dom/DataTransferItemList.h \ 4667 4666 Source/WebCore/dom/StringCallback.cpp \ -
trunk/Source/WebCore/Target.pri
r105642 r105648 3015 3015 SOURCES += \ 3016 3016 dom/DataTransferItem.cpp \ 3017 dom/DataTransferItemList.cpp \3018 3017 dom/StringCallback.cpp \ 3019 3018 platform/qt/DataTransferItemQt.cpp \ -
trunk/Source/WebCore/WebCore.gypi
r105642 r105648 5357 5357 'dom/DataTransferItem.cpp', 5358 5358 'dom/DataTransferItem.h', 5359 'dom/DataTransferItemList.cpp',5360 5359 'dom/DataTransferItemList.h', 5361 5360 'dom/DatasetDOMStringMap.cpp', -
trunk/Source/WebCore/WebCore.vcproj/WebCore.vcproj
r105642 r105648 46799 46799 </File> 46800 46800 <File 46801 RelativePath="..\dom\DataTransferItemList.cpp"46802 >46803 <FileConfiguration46804 Name="Debug|Win32"46805 ExcludedFromBuild="true"46806 >46807 <Tool46808 Name="VCCLCompilerTool"46809 />46810 </FileConfiguration>46811 <FileConfiguration46812 Name="Release|Win32"46813 ExcludedFromBuild="true"46814 >46815 <Tool46816 Name="VCCLCompilerTool"46817 />46818 </FileConfiguration>46819 <FileConfiguration46820 Name="Debug_Cairo_CFLite|Win32"46821 ExcludedFromBuild="true"46822 >46823 <Tool46824 Name="VCCLCompilerTool"46825 />46826 </FileConfiguration>46827 <FileConfiguration46828 Name="Release_Cairo_CFLite|Win32"46829 ExcludedFromBuild="true"46830 >46831 <Tool46832 Name="VCCLCompilerTool"46833 />46834 </FileConfiguration>46835 <FileConfiguration46836 Name="Debug_All|Win32"46837 ExcludedFromBuild="true"46838 >46839 <Tool46840 Name="VCCLCompilerTool"46841 />46842 </FileConfiguration>46843 <FileConfiguration46844 Name="Production|Win32"46845 ExcludedFromBuild="true"46846 >46847 <Tool46848 Name="VCCLCompilerTool"46849 />46850 </FileConfiguration>46851 </File>46852 <File46853 46801 RelativePath="..\dom\DataTransferItemList.h" 46854 46802 > -
trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj
r105642 r105648 1847 1847 77EF62F312F9DB7400C77BD2 /* JSWebGLVertexArrayObjectOES.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 77EF62F112F9DB7400C77BD2 /* JSWebGLVertexArrayObjectOES.cpp */; }; 1848 1848 77EF62F412F9DB7400C77BD2 /* JSWebGLVertexArrayObjectOES.h in Headers */ = {isa = PBXBuildFile; fileRef = 77EF62F212F9DB7400C77BD2 /* JSWebGLVertexArrayObjectOES.h */; }; 1849 781755861365A1B00093BE2E /* DataTransferItemList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 781755851365A1B00093BE2E /* DataTransferItemList.cpp */; };1850 1849 79AC9218109945C80021266E /* JSCompositionEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 79AC9216109945C80021266E /* JSCompositionEvent.cpp */; }; 1851 1850 79AC9219109945C80021266E /* JSCompositionEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 79AC9217109945C80021266E /* JSCompositionEvent.h */; }; … … 8707 8706 77EF62F112F9DB7400C77BD2 /* JSWebGLVertexArrayObjectOES.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWebGLVertexArrayObjectOES.cpp; sourceTree = "<group>"; }; 8708 8707 77EF62F212F9DB7400C77BD2 /* JSWebGLVertexArrayObjectOES.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSWebGLVertexArrayObjectOES.h; sourceTree = "<group>"; }; 8709 781755851365A1B00093BE2E /* DataTransferItemList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DataTransferItemList.cpp; sourceTree = "<group>"; };8710 8708 79AC9216109945C80021266E /* JSCompositionEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSCompositionEvent.cpp; sourceTree = "<group>"; }; 8711 8709 79AC9217109945C80021266E /* JSCompositionEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSCompositionEvent.h; sourceTree = "<group>"; }; … … 20360 20358 81AC5997131636E60009A7E0 /* DataTransferItem.h */, 20361 20359 81AC5AE81316392E0009A7E0 /* DataTransferItem.idl */, 20362 781755851365A1B00093BE2E /* DataTransferItemList.cpp */,20363 20360 81AC5998131636E60009A7E0 /* DataTransferItemList.h */, 20364 20361 81AC5AE91316392E0009A7E0 /* DataTransferItemList.idl */, … … 24671 24668 BC64641D11D7F416006455B0 /* DatasetDOMStringMap.cpp in Sources */, 24672 24669 815E6167132587AA00B622B0 /* DataTransferItem.cpp in Sources */, 24673 781755861365A1B00093BE2E /* DataTransferItemList.cpp in Sources */,24674 24670 2E97CCEA12939CB800C5C8FF /* DataView.cpp in Sources */, 24675 24671 A5732B0A136A161D005C8D7C /* DateComponents.cpp in Sources */, -
trunk/Source/WebCore/dom/DataTransferItem.cpp
r95901 r105648 32 32 #include "DataTransferItem.h" 33 33 34 #include "Clipboard.h"35 36 34 #if ENABLE(DATA_TRANSFER_ITEMS) 37 35 … … 41 39 const char DataTransferItem::kindFile[] = "file"; 42 40 43 DataTransferItem::DataTransferItem(PassRefPtr<Clipboard> owner, const String& kind, const String& type)44 : m_owner(owner)45 , m_kind(kind)46 , m_type(type)47 {48 }49 50 Clipboard* DataTransferItem::owner()51 {52 return m_owner.get();53 }54 55 String DataTransferItem::kind() const56 {57 if (m_owner->policy() == ClipboardNumb)58 return String();59 60 return m_kind;61 }62 63 String DataTransferItem::type() const64 {65 if (m_owner->policy() == ClipboardNumb)66 return String();67 68 return m_type;69 }70 71 72 41 } // namespace WebCore 73 42 -
trunk/Source/WebCore/dom/DataTransferItem.h
r105506 r105648 50 50 virtual ~DataTransferItem() { } 51 51 52 static PassRefPtr<DataTransferItem> create(PassRefPtr<Clipboard> owner, ScriptExecutionContext*, const String& data, const String& type);53 static PassRefPtr<DataTransferItem> create(PassRefPtr<Clipboard> owner, ScriptExecutionContext*, PassRefPtr<File>);54 55 52 static const char kindString[]; 56 53 static const char kindFile[]; 57 54 58 String kind() const;59 String type() const;55 virtual String kind() const = 0; 56 virtual String type() const = 0; 60 57 61 virtual void getAsString(PassRefPtr<StringCallback>) = 0; 62 virtual PassRefPtr<Blob> getAsFile() = 0; 63 64 protected: 65 DataTransferItem(PassRefPtr<Clipboard> owner, const String& kind, const String& type); 66 Clipboard* owner(); 67 68 private: 69 friend class DataTransferItemList; 70 71 const RefPtr<Clipboard> m_owner; 72 const String m_kind; 73 const String m_type; 58 virtual void getAsString(PassRefPtr<StringCallback>) const = 0; 59 virtual PassRefPtr<Blob> getAsFile() const = 0; 74 60 }; 75 61 -
trunk/Source/WebCore/dom/DataTransferItemList.h
r105506 r105648 49 49 virtual ~DataTransferItemList() { } 50 50 51 virtual size_t length(); 52 virtual PassRefPtr<DataTransferItem> item(unsigned long index); 53 // FIXME: Implement V8DataTransferItemList::indexedPropertyDeleter to get this called. 54 virtual void deleteItem(unsigned long index, ExceptionCode&); 55 virtual void clear(); 56 virtual void add(const String& data, const String& type, ExceptionCode&); 57 virtual void add(PassRefPtr<File>); 58 59 protected: 60 DataTransferItemList(PassRefPtr<Clipboard>, ScriptExecutionContext*); 61 62 protected: 63 RefPtr<Clipboard> m_owner; 64 // Indirectly owned by our parent. 65 ScriptExecutionContext* m_context; 66 Vector<RefPtr<DataTransferItem> > m_items; 67 51 virtual size_t length() = 0; 52 virtual PassRefPtr<DataTransferItem> item(unsigned long index) = 0; 53 virtual void deleteItem(unsigned long index, ExceptionCode&) = 0; 54 virtual void clear() = 0; 55 virtual void add(const String& data, const String& type, ExceptionCode&) = 0; 56 virtual void add(PassRefPtr<File>) = 0; 68 57 }; 69 58 -
trunk/Source/WebCore/platform/chromium/ClipboardChromium.cpp
r105506 r105648 376 376 String plainText = m_dataObject->getData(mimeTypeTextPlain, success); 377 377 if (success) 378 items.append(DataTransferItem ::create(this, scriptExecutionContext, plainText, mimeTypeTextPlain));378 items.append(DataTransferItemChromium::create(this, scriptExecutionContext, plainText, mimeTypeTextPlain)); 379 379 380 380 success = false; 381 381 String htmlText = m_dataObject->getData(mimeTypeTextHTML, success); 382 382 if (success) 383 items.append(DataTransferItem ::create(this, scriptExecutionContext, htmlText, mimeTypeTextHTML));383 items.append(DataTransferItemChromium::create(this, scriptExecutionContext, htmlText, mimeTypeTextHTML)); 384 384 385 385 if (m_dataObject->containsFilenames()) { 386 386 const Vector<String>& filenames = m_dataObject->filenames(); 387 387 for (Vector<String>::const_iterator it = filenames.begin(); it != filenames.end(); ++it) 388 items.append(DataTransferItem ::create(this, scriptExecutionContext, File::create(*it)));388 items.append(DataTransferItemChromium::create(this, scriptExecutionContext, File::create(*it))); 389 389 } 390 390 m_dragStorageUpdated = false; -
trunk/Source/WebCore/platform/chromium/DataTransferItemChromium.cpp
r105506 r105648 54 54 } 55 55 56 PassRefPtr<DataTransferItem > DataTransferItem::create(PassRefPtr<Clipboard> owner,57 ScriptExecutionContext* context,58 const String& data,59 const String& type)56 PassRefPtr<DataTransferItemChromium> DataTransferItemChromium::create(PassRefPtr<Clipboard> owner, 57 ScriptExecutionContext* context, 58 const String& data, 59 const String& type) 60 60 { 61 61 return adoptRef(new DataTransferItemChromium(owner, context, DataTransferItemChromium::InternalSource, kindString, type, data)); 62 62 } 63 63 64 PassRefPtr<DataTransferItem > DataTransferItem::create(PassRefPtr<Clipboard> owner,65 ScriptExecutionContext* context,66 PassRefPtr<File> file)64 PassRefPtr<DataTransferItemChromium> DataTransferItemChromium::create(PassRefPtr<Clipboard> owner, 65 ScriptExecutionContext* context, 66 PassRefPtr<File> file) 67 67 { 68 68 return adoptRef(new DataTransferItemChromium(owner, context, DataTransferItemChromium::InternalSource, file)); … … 70 70 71 71 DataTransferItemChromium::DataTransferItemChromium(PassRefPtr<Clipboard> owner, ScriptExecutionContext* context, DataSource source, const String& kind, const String& type, const String& data) 72 : DataTransferItem(owner, kind, type) 73 , m_context(context) 72 : m_context(context) 73 , m_owner(owner) 74 , m_kind(kind) 75 , m_type(type) 74 76 , m_source(source) 75 77 , m_data(data) … … 78 80 79 81 DataTransferItemChromium::DataTransferItemChromium(PassRefPtr<Clipboard> owner, ScriptExecutionContext* context, DataSource source, PassRefPtr<File> file) 80 : DataTransferItem(owner, DataTransferItem::kindFile, file.get() ? file->type() : String()) 81 , m_context(context) 82 : m_context(context) 83 , m_owner(owner) 84 , m_kind(kindFile) 85 , m_type(file.get() ? file->type() : String()) 82 86 , m_source(source) 83 87 , m_file(file) … … 85 89 } 86 90 87 void DataTransferItemChromium::getAsString(PassRefPtr<StringCallback> callback) 91 void DataTransferItemChromium::getAsString(PassRefPtr<StringCallback> callback) const 88 92 { 89 if (( owner()->policy() != ClipboardReadable && owner()->policy() != ClipboardWritable)93 if ((m_owner->policy() != ClipboardReadable && m_owner->policy() != ClipboardWritable) 90 94 || kind() != kindString) 91 95 return; … … 117 121 } 118 122 119 PassRefPtr<Blob> DataTransferItemChromium::getAsFile() 123 PassRefPtr<Blob> DataTransferItemChromium::getAsFile() const 120 124 { 121 125 if (kind() != kindFile || clipboardChromium()->storageHasUpdated()) … … 147 151 } 148 152 149 ClipboardChromium* DataTransferItemChromium::clipboardChromium() 153 ClipboardChromium* DataTransferItemChromium::clipboardChromium() const 150 154 { 151 return static_cast<ClipboardChromium*>( owner());155 return static_cast<ClipboardChromium*>(m_owner.get()); 152 156 } 153 157 -
trunk/Source/WebCore/platform/chromium/DataTransferItemChromium.h
r105506 r105648 47 47 class DataTransferItemChromium : public DataTransferItem { 48 48 public: 49 static PassRefPtr<DataTransferItemChromium> create(PassRefPtr<Clipboard> owner, ScriptExecutionContext*, const String& data, const String& type); 50 static PassRefPtr<DataTransferItemChromium> create(PassRefPtr<Clipboard> owner, ScriptExecutionContext*, PassRefPtr<File>); 49 51 static PassRefPtr<DataTransferItemChromium> createFromPasteboard(PassRefPtr<Clipboard> owner, ScriptExecutionContext*, const String& type); 50 52 51 virtual void getAsString(PassRefPtr<StringCallback>); 52 virtual PassRefPtr<Blob> getAsFile(); 53 virtual String kind() const { return m_kind; } 54 virtual String type() const { return m_type; } 55 virtual void getAsString(PassRefPtr<StringCallback>) const; 56 virtual PassRefPtr<Blob> getAsFile() const; 53 57 54 58 private: 59 friend class DataTransferItemListChromium; 60 55 61 enum DataSource { 56 62 PasteboardSource, … … 58 64 }; 59 65 60 friend class DataTransferItem;61 62 66 DataTransferItemChromium(PassRefPtr<Clipboard> owner, ScriptExecutionContext*, DataSource, const String& kind, const String& type, const String& data); 63 67 DataTransferItemChromium(PassRefPtr<Clipboard> owner, ScriptExecutionContext*, DataSource, PassRefPtr<File>); 64 68 65 ClipboardChromium* clipboardChromium() ;69 ClipboardChromium* clipboardChromium() const; 66 70 67 71 ScriptExecutionContext* m_context; 72 const RefPtr<Clipboard> m_owner; 73 const String m_kind; 74 const String m_type; 68 75 const DataSource m_source; 69 76 const String m_data; -
trunk/Source/WebCore/platform/chromium/DataTransferItemListChromium.cpp
r105506 r105648 54 54 55 55 DataTransferItemListChromium::DataTransferItemListChromium(PassRefPtr<Clipboard> owner, ScriptExecutionContext* context) 56 : DataTransferItemList(owner, context) 56 : m_owner(owner) 57 , m_context(context) 57 58 { 58 59 } -
trunk/Source/WebCore/platform/chromium/DataTransferItemListChromium.h
r105506 r105648 51 51 static PassRefPtr<DataTransferItemListChromium> create(PassRefPtr<Clipboard>, ScriptExecutionContext*); 52 52 53 // DataTransferItemList overrides.54 53 virtual size_t length(); 55 54 virtual PassRefPtr<DataTransferItem> item(unsigned long index); 55 // FIXME: Implement V8DataTransferItemList::indexedPropertyDeleter to get this called. 56 56 virtual void deleteItem(unsigned long index, ExceptionCode&); 57 57 virtual void clear(); … … 62 62 DataTransferItemListChromium(PassRefPtr<Clipboard>, ScriptExecutionContext*); 63 63 ClipboardChromium* clipboardChromium() const; 64 65 RefPtr<Clipboard> m_owner; 66 // Indirectly owned by our parent. 67 ScriptExecutionContext* m_context; 68 Vector<RefPtr<DataTransferItem> > m_items; 64 69 }; 65 70 -
trunk/Source/WebCore/platform/qt/DataTransferItemListQt.cpp
r98821 r105648 41 41 42 42 DataTransferItemListQt::DataTransferItemListQt(PassRefPtr<Clipboard> owner, ScriptExecutionContext* context) 43 : DataTransferItemList(owner, context) 43 : m_owner(clipboard) 44 , m_context(context) 44 45 { 46 } 47 48 size_t DataTransferItemListQt::length() 49 { 50 if (m_owner->policy() == ClipboardNumb) 51 return 0; 52 53 return m_items.size(); 54 } 55 56 PassRefPtr<DataTransferItem> DataTransferItemListQt::item(unsigned long index) 57 { 58 if (m_owner->policy() == ClipboardNumb || index >= length()) 59 return 0; 60 61 return m_items[index]; 62 } 63 64 void DataTransferItemListQt::deleteItem(unsigned long index, ExceptionCode& ec) 65 { 66 if (m_owner->policy() != ClipboardWritable) { 67 ec = INVALID_STATE_ERR; 68 return; 69 } 70 71 if (index >= length()) 72 return; 73 74 m_items.remove(index); 75 } 76 77 void DataTransferItemListQt::clear() 78 { 79 if (m_owner->policy() != ClipboardWritable) 80 return; 81 82 m_items.clear(); 83 84 } 85 86 void DataTransferItemListQt::add(const String& data, const String& type, ExceptionCode& ec) 87 { 88 if (m_owner->policy() != ClipboardWritable) 89 return; 90 91 // Only one 'string' item with a given type is allowed in the collection. 92 for (size_t i = 0; i < m_items.size(); ++i) { 93 if (m_items[i]->type() == type && m_items[i]->kind() == DataTransferItem::kindString) { 94 ec = NOT_SUPPORTED_ERR; 95 return; 96 } 97 } 98 99 m_items.append(DataTransferItem::create(m_owner, m_context, data, type)); 100 } 101 102 void DataTransferItemListQt::add(PassRefPtr<File> file) 103 { 104 if (m_owner->policy() != ClipboardWritable || !file) 105 return; 106 107 m_items.append(DataTransferItem::create(m_owner, m_context, file)); 45 108 } 46 109 -
trunk/Source/WebCore/platform/qt/DataTransferItemListQt.h
r98821 r105648 43 43 static PassRefPtr<DataTransferItemListQt> create(PassRefPtr<Clipboard>, ScriptExecutionContext*); 44 44 45 virtual size_t length(); 46 virtual PassRefPtr<DataTransferItem> item(unsigned long index); 47 virtual void deleteItem(unsigned long index, ExceptionCode&); 48 virtual void clear(); 49 virtual void add(const String& data, const String& type, ExceptionCode&); 50 virtual void add(PassRefPtr<File>); 51 52 45 53 friend class ClipboardQt; 46 54 private: … … 48 56 49 57 virtual void addPasteboardItem(const String& type); 58 59 RefPtr<Clipboard> m_owner; 60 // Indirectly owned by our parent. 61 ScriptExecutionContext* m_context; 62 Vector<RefPtr<DataTransferItem> > m_items; 50 63 }; 51 64 -
trunk/Source/WebCore/platform/qt/DataTransferItemQt.cpp
r105506 r105648 42 42 namespace WebCore { 43 43 44 PassRefPtr<DataTransferItem > DataTransferItem::create(PassRefPtr<Clipboard> owner,45 ScriptExecutionContext* context,46 const String& data,47 const String& type)44 PassRefPtr<DataTransferItemQt> DataTransferItemQt::create(PassRefPtr<Clipboard> owner, 45 ScriptExecutionContext* context, 46 const String& data, 47 const String& type) 48 48 { 49 49 return adoptRef(new DataTransferItemQt(owner, context, DataTransferItemQt::InternalSource, kindString, type, data)); 50 50 } 51 51 52 PassRefPtr<DataTransferItem > DataTransferItem::create(PassRefPtr<Clipboard> owner,53 ScriptExecutionContext* context,54 PassRefPtr<File> file)52 PassRefPtr<DataTransferItemQt> DataTransferItemQt::create(PassRefPtr<Clipboard> owner, 53 ScriptExecutionContext* context, 54 PassRefPtr<File> file) 55 55 { 56 56 return adoptRef(new DataTransferItemQt(owner, context, DataTransferItemQt::InternalSource, file)); … … 72 72 const String& kind, const String& type, 73 73 const String& data) 74 : DataTransferItem(owner, kind, type)74 : m_owner(owner) 75 75 , m_context(context) 76 , m_kind(kind) 77 , m_type(type) 76 78 , m_dataSource(source) 77 79 , m_data(data) … … 83 85 DataSource source, 84 86 PassRefPtr<File> file) 85 : DataTransferItem(owner, DataTransferItem::kindFile, file.get() ? file->type() : "")87 : m_owner(owner) 86 88 , m_context(context) 89 , m_kind(kindFile) 90 , m_type(file.get() ? file->type() : ""); 87 91 , m_source(source) 88 92 , m_file(file) … … 90 94 } 91 95 92 void DataTransferItemQt::getAsString(PassRefPtr<StringCallback> callback) 96 void DataTransferItemQt::getAsString(PassRefPtr<StringCallback> callback) const 93 97 { 94 98 if ((owner()->policy() != ClipboardReadable && owner()->policy() != ClipboardWritable) … … 118 122 } 119 123 120 PassRefPtr<Blob> DataTransferItemQt::getAsFile() 124 PassRefPtr<Blob> DataTransferItemQt::getAsFile() const 121 125 { 122 126 if (kind() == kindFile && m_dataSource == InternalSource) -
trunk/Source/WebCore/platform/qt/DataTransferItemQt.h
r105506 r105648 40 40 class DataTransferItemQt : public DataTransferItem { 41 41 public: 42 static PassRefPtr<DataTransferItemQt> create(PassRefPtr<Clipboard> owner, ScriptExecutionContext*, const String& data, const String& type); 43 static PassRefPtr<DataTransferItemQt> create(PassRefPtr<Clipboard> owner, ScriptExecutionContext*, PassRefPtr<File>); 42 44 static PassRefPtr<DataTransferItemQt> createFromPasteboard(PassRefPtr<Clipboard> owner, 43 45 ScriptExecutionContext*, 44 46 const String&); 45 virtual void getAsString(PassRefPtr<StringCallback>); 46 virtual PassRefPtr<Blob> getAsFile(); 47 48 virtual String kind() const { return m_kind; } 49 virtual String type() const { return m_type; } 50 virtual void getAsString(PassRefPtr<StringCallback>) const; 51 virtual PassRefPtr<Blob> getAsFile() const; 47 52 48 53 private: 54 friend class DataTransferItemListQt; 55 49 56 enum DataSource { 50 57 PasteboardSource, 51 58 InternalSource 52 59 }; 53 54 friend class DataTransferItem;55 60 56 61 DataTransferItemQt(PassRefPtr<Clipboard> owner, … … 63 68 PassRefPtr<File>); 64 69 70 const RefPtr<Clipboard> m_owner; 65 71 ScriptExecutionContext* m_context; 72 const String m_kind; 73 const String m_type; 66 74 const DataSource m_dataSource; 67 75 const String m_data;
Note:
See TracChangeset
for help on using the changeset viewer.