Changeset 84857 in webkit
- Timestamp:
- Apr 25, 2011 5:31:36 PM (13 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 15 edited
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/Android.mk
r84522 r84857 115 115 dom/DOMStringList.cpp \ 116 116 dom/DataTransferItem.cpp \ 117 dom/DataTransferItems.cpp \ 117 118 dom/DecodedDataDocumentParser.cpp \ 118 119 dom/DeviceMotionController.cpp \ -
trunk/Source/WebCore/CMakeLists.txt
r84832 r84857 1450 1450 LIST(APPEND WebCore_SOURCES 1451 1451 dom/DataTransferItem.cpp 1452 dom/DataTransferItems.cpp 1452 1453 dom/StringCallback.cpp 1453 1454 ) -
trunk/Source/WebCore/ChangeLog
r84856 r84857 1 2011-04-25 Igor Oliveira <igor.oliveira@openbossa.org> 2 3 Reviewed by Tony Chang. 4 5 Move complexity from DataTransferItemsChromium and DataTransferItemChromium for base class 6 https://bugs.webkit.org/show_bug.cgi?id=59028 7 8 The DataTransferItemsChromium and DataTransferItemChromium code can be reused by other platforms. 9 Moving the code for base class we can reduce the efforts to support DataTransferItems 10 element in different platforms. 11 12 * Android.mk: 13 * CMakeLists.txt: 14 * GNUmakefile.list.am: 15 * WebCore.gypi: 16 * WebCore.pro: 17 * WebCore.vcproj/WebCore.vcproj: 18 * WebCore.xcodeproj/project.pbxproj: 19 * dom/DataTransferItem.cpp: 20 (WebCore::DataTransferItem::DataTransferItem): 21 (WebCore::DataTransferItem::owner): 22 (WebCore::DataTransferItem::kind): 23 (WebCore::DataTransferItem::type): 24 * dom/DataTransferItem.h: 25 * dom/DataTransferItems.cpp: Copied from Source/WebCore/platform/chromium/DataTransferItemsChromium.cpp. 26 (WebCore::DataTransferItems::DataTransferItems): 27 (WebCore::DataTransferItems::length): 28 (WebCore::DataTransferItems::item): 29 (WebCore::DataTransferItems::deleteItem): 30 (WebCore::DataTransferItems::clear): 31 (WebCore::DataTransferItems::add): 32 * dom/DataTransferItems.h: 33 * platform/chromium/DataTransferItemChromium.cpp: 34 (WebCore::DataTransferItem::create): 35 (WebCore::DataTransferItemChromium::DataTransferItemChromium): 36 (WebCore::DataTransferItemChromium::getAsString): 37 (WebCore::DataTransferItemChromium::getAsFile): 38 * platform/chromium/DataTransferItemChromium.h: 39 * platform/chromium/DataTransferItemsChromium.cpp: 40 (WebCore::DataTransferItemsChromium::DataTransferItemsChromium): 41 * platform/chromium/DataTransferItemsChromium.h: 42 1 43 2011-04-25 Chris Marrin <cmarrin@apple.com> 2 44 -
trunk/Source/WebCore/GNUmakefile.list.am
r84832 r84857 3986 3986 Source/WebCore/dom/DataTransferItem.cpp \ 3987 3987 Source/WebCore/dom/DataTransferItem.h \ 3988 Source/WebCore/dom/DataTransferItems.cpp \ 3988 3989 Source/WebCore/dom/DataTransferItems.h \ 3989 3990 Source/WebCore/dom/StringCallback.cpp \ -
trunk/Source/WebCore/WebCore.gypi
r84832 r84857 2434 2434 'dom/DataTransferItem.cpp', 2435 2435 'dom/DataTransferItem.h', 2436 'dom/DataTransferItems.cpp', 2436 2437 'dom/DataTransferItems.h', 2437 2438 'dom/DatasetDOMStringMap.cpp', -
trunk/Source/WebCore/WebCore.pro
r84832 r84857 2777 2777 SOURCES += \ 2778 2778 dom/DataTransferItem.cpp \ 2779 dom/DataTransferItems.cpp \ 2779 2780 dom/StringCallback.cpp 2780 2781 } -
trunk/Source/WebCore/WebCore.vcproj/WebCore.vcproj
r84832 r84857 43171 43171 </File> 43172 43172 <File 43173 RelativePath="..\dom\DataTransferItems.cpp" 43174 > 43175 <FileConfiguration 43176 Name="Debug|Win32" 43177 ExcludedFromBuild="true" 43178 > 43179 <Tool 43180 Name="VCCLCompilerTool" 43181 /> 43182 </FileConfiguration> 43183 <FileConfiguration 43184 Name="Release|Win32" 43185 ExcludedFromBuild="true" 43186 > 43187 <Tool 43188 Name="VCCLCompilerTool" 43189 /> 43190 </FileConfiguration> 43191 <FileConfiguration 43192 Name="Debug_Cairo_CFLite|Win32" 43193 ExcludedFromBuild="true" 43194 > 43195 <Tool 43196 Name="VCCLCompilerTool" 43197 /> 43198 </FileConfiguration> 43199 <FileConfiguration 43200 Name="Release_Cairo_CFLite|Win32" 43201 ExcludedFromBuild="true" 43202 > 43203 <Tool 43204 Name="VCCLCompilerTool" 43205 /> 43206 </FileConfiguration> 43207 <FileConfiguration 43208 Name="Debug_All|Win32" 43209 ExcludedFromBuild="true" 43210 > 43211 <Tool 43212 Name="VCCLCompilerTool" 43213 /> 43214 </FileConfiguration> 43215 <FileConfiguration 43216 Name="Production|Win32" 43217 ExcludedFromBuild="true" 43218 > 43219 <Tool 43220 Name="VCCLCompilerTool" 43221 /> 43222 </FileConfiguration> 43223 </File> 43224 <File 43173 43225 RelativePath="..\dom\DataTransferItem.h" 43174 43226 > -
trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj
r84832 r84857 1674 1674 77EF62F312F9DB7400C77BD2 /* JSWebGLVertexArrayObjectOES.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 77EF62F112F9DB7400C77BD2 /* JSWebGLVertexArrayObjectOES.cpp */; }; 1675 1675 77EF62F412F9DB7400C77BD2 /* JSWebGLVertexArrayObjectOES.h in Headers */ = {isa = PBXBuildFile; fileRef = 77EF62F212F9DB7400C77BD2 /* JSWebGLVertexArrayObjectOES.h */; }; 1676 781755861365A1B00093BE2E /* DataTransferItems.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 781755851365A1B00093BE2E /* DataTransferItems.cpp */; }; 1676 1677 79AC9218109945C80021266E /* JSCompositionEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 79AC9216109945C80021266E /* JSCompositionEvent.cpp */; }; 1677 1678 79AC9219109945C80021266E /* JSCompositionEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 79AC9217109945C80021266E /* JSCompositionEvent.h */; }; … … 8305 8306 77EF62F112F9DB7400C77BD2 /* JSWebGLVertexArrayObjectOES.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWebGLVertexArrayObjectOES.cpp; sourceTree = "<group>"; }; 8306 8307 77EF62F212F9DB7400C77BD2 /* JSWebGLVertexArrayObjectOES.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSWebGLVertexArrayObjectOES.h; sourceTree = "<group>"; }; 8308 781755851365A1B00093BE2E /* DataTransferItems.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DataTransferItems.cpp; path = dom/DataTransferItems.cpp; sourceTree = "<group>"; }; 8307 8309 79AC9216109945C80021266E /* JSCompositionEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSCompositionEvent.cpp; sourceTree = "<group>"; }; 8308 8310 79AC9217109945C80021266E /* JSCompositionEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSCompositionEvent.h; sourceTree = "<group>"; }; … … 12732 12734 isa = PBXGroup; 12733 12735 children = ( 12736 781755851365A1B00093BE2E /* DataTransferItems.cpp */, 12734 12737 65C97AF208EA908800ACD273 /* config.h */, 12735 12738 EDEC98020AED7E170059137F /* WebCorePrefix.h */, … … 25795 25798 14E0BC56136148A8002AD12E /* JSDOMTokenListCustom.cpp in Sources */, 25796 25799 F3810C1B1365A49600ED6E33 /* InspectorWorkerAgent.cpp in Sources */, 25800 781755861365A1B00093BE2E /* DataTransferItems.cpp in Sources */, 25797 25801 ); 25798 25802 runOnlyForDeploymentPostprocessing = 0; -
trunk/Source/WebCore/dom/DataTransferItem.cpp
r80536 r84857 32 32 #include "DataTransferItem.h" 33 33 34 #include "Clipboard.h" 35 34 36 #if ENABLE(DATA_TRANSFER_ITEMS) 35 37 … … 39 41 const char DataTransferItem::kindFile[] = "file"; 40 42 43 DataTransferItem::DataTransferItem(RefPtr<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() const 56 { 57 if (m_owner->policy() == ClipboardNumb) 58 return String(); 59 60 return m_kind; 61 } 62 63 String DataTransferItem::type() const 64 { 65 if (m_owner->policy() == ClipboardNumb) 66 return String(); 67 68 return m_type; 69 } 70 71 41 72 } // namespace WebCore 42 73 -
trunk/Source/WebCore/dom/DataTransferItem.h
r83494 r84857 34 34 #if ENABLE(DATA_TRANSFER_ITEMS) 35 35 36 #include "Clipboard.h" 37 36 38 #include <wtf/Forward.h> 37 39 #include <wtf/RefCounted.h> … … 41 43 class Blob; 42 44 class StringCallback; 45 class ScriptExecutionContext; 43 46 44 47 class DataTransferItem : public RefCounted<DataTransferItem> { … … 46 49 ~DataTransferItem() {} 47 50 51 static PassRefPtr<DataTransferItem> create(PassRefPtr<Clipboard> owner, ScriptExecutionContext*, const String& data, const String& type); 52 48 53 static const char kindString[]; 49 54 static const char kindFile[]; 50 55 51 virtual String kind() const = 0;52 virtual String type() const = 0;56 String kind() const; 57 String type() const; 53 58 54 59 virtual void getAsString(PassRefPtr<StringCallback>) = 0; 55 60 virtual PassRefPtr<Blob> getAsFile() = 0; 61 62 protected: 63 DataTransferItem(RefPtr<Clipboard> owner, const String& kind, const String& type); 64 Clipboard* owner(); 65 66 private: 67 const RefPtr<Clipboard> m_owner; 68 const String m_kind; 69 const String m_type; 56 70 }; 57 71 -
trunk/Source/WebCore/dom/DataTransferItems.cpp
r84856 r84857 1 1 /* 2 2 * Copyright (C) 2011 Google Inc. All rights reserved. 3 * Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies) 3 4 * 4 5 * Redistribution and use in source and binary forms, with or without … … 30 31 31 32 #include "config.h" 32 #include "DataTransferItemsChromium.h" 33 #include "DataTransferItems.h" 34 35 #include "DataTransferItem.h" 36 #include "ExceptionCode.h" 33 37 34 38 #if ENABLE(DATA_TRANSFER_ITEMS) 35 39 36 #include "Clipboard.h"37 #include "DataTransferItemChromium.h"38 #include "ExceptionCode.h"39 40 40 namespace WebCore { 41 41 42 PassRefPtr<DataTransferItemsChromium> DataTransferItemsChromium::create(PassRefPtr<Clipboard> owner, ScriptExecutionContext* context) 43 { 44 return adoptRef(new DataTransferItemsChromium(owner, context)); 45 } 46 47 DataTransferItemsChromium::DataTransferItemsChromium(PassRefPtr<Clipboard> owner, ScriptExecutionContext* context) 48 : m_owner(owner) 42 DataTransferItems::DataTransferItems(RefPtr<Clipboard> clipboard, ScriptExecutionContext* context) 43 : m_owner(clipboard) 49 44 , m_context(context) 50 45 { 51 46 } 52 47 53 unsigned long DataTransferItemsChromium::length() const48 size_t DataTransferItems::length() const 54 49 { 55 50 if (m_owner->policy() == ClipboardNumb) 56 51 return 0; 52 57 53 return m_items.size(); 58 54 } 59 55 60 PassRefPtr<DataTransferItem> DataTransferItems Chromium::item(unsigned long index) const56 PassRefPtr<DataTransferItem> DataTransferItems::item(unsigned long index) 61 57 { 62 58 if (m_owner->policy() == ClipboardNumb || index >= length()) 63 59 return 0; 60 64 61 return m_items[index]; 65 62 } 66 63 67 void DataTransferItems Chromium::deleteItem(unsigned long index, ExceptionCode& ec)64 void DataTransferItems::deleteItem(unsigned long index, ExceptionCode& ec) 68 65 { 69 66 if (m_owner->policy() != ClipboardWritable) { … … 78 75 } 79 76 80 void DataTransferItems Chromium::clear()77 void DataTransferItems::clear() 81 78 { 82 79 if (m_owner->policy() != ClipboardWritable) … … 84 81 85 82 m_items.clear(); 83 86 84 } 87 85 88 void DataTransferItems Chromium::add(const String& data, const String& type, ExceptionCode& ec)86 void DataTransferItems::add(const String& data, const String& type, ExceptionCode& ec) 89 87 { 90 88 if (m_owner->policy() != ClipboardWritable) … … 99 97 } 100 98 101 m_items.append(DataTransferItem Chromium::create(m_owner, m_context, data, type));99 m_items.append(DataTransferItem::create(m_owner, m_context, data, type)); 102 100 } 103 101 104 void DataTransferItemsChromium::addPasteboardItem(const String& type)105 {106 m_items.append(DataTransferItemChromium::createFromPasteboard(m_owner, m_context, type));107 102 } 108 103 109 } // namespace WebCore 110 111 #endif // ENABLE(DATA_TRANSFER_ITEMS) 104 #endif -
trunk/Source/WebCore/dom/DataTransferItems.h
r80536 r84857 34 34 #if ENABLE(DATA_TRANSFER_ITEMS) 35 35 36 #include "DataTransferItem.h" 36 37 #include <wtf/Forward.h> 37 38 #include <wtf/RefCounted.h> … … 39 40 namespace WebCore { 40 41 41 class DataTransferItem;42 class Clipboard; 42 43 43 44 typedef int ExceptionCode; … … 47 48 ~DataTransferItems() {} 48 49 49 virtual unsigned long length() const = 0; 50 virtual PassRefPtr<DataTransferItem> item(unsigned long index) const = 0; 51 virtual void deleteItem(unsigned long index, ExceptionCode&) = 0; 52 virtual void clear() = 0; 50 virtual size_t length() const; 51 virtual PassRefPtr<DataTransferItem> item(unsigned long index); 52 virtual void deleteItem(unsigned long index, ExceptionCode&); 53 virtual void clear(); 54 virtual void add(const String& data, const String& type, ExceptionCode&); 53 55 54 virtual void add(const String& data, const String& type, ExceptionCode&) = 0; 56 protected: 57 DataTransferItems(RefPtr<Clipboard>, ScriptExecutionContext*); 58 59 protected: 60 RefPtr<Clipboard> m_owner; 61 // Indirectly owned by our parent. 62 ScriptExecutionContext* m_context; 63 Vector<RefPtr<DataTransferItem> > m_items; 64 55 65 }; 56 66 -
trunk/Source/WebCore/platform/chromium/DataTransferItemChromium.cpp
r83494 r84857 58 58 } 59 59 60 PassRefPtr<DataTransferItem> DataTransferItem::create(PassRefPtr<Clipboard> owner, 61 ScriptExecutionContext* context, 62 const String& data, 63 const String& type) 64 { 65 return DataTransferItemChromium::create(owner, context, data, type); 66 } 67 60 68 DataTransferItemChromium::DataTransferItemChromium(PassRefPtr<Clipboard> owner, ScriptExecutionContext* context, DataSource source, const String& kind, const String& type, const String& data) 61 : m_owner(owner)69 : DataTransferItem(owner, kind, type) 62 70 , m_context(context) 63 71 , m_source(source) 64 , m_kind(kind)65 , m_type(type)66 72 , m_data(data) 67 73 { 68 74 } 69 75 70 String DataTransferItemChromium::kind() const71 {72 if (m_owner->policy() == ClipboardNumb)73 return String();74 return m_kind;75 }76 77 String DataTransferItemChromium::type() const78 {79 if (m_owner->policy() == ClipboardNumb)80 return String();81 return m_type;82 }83 84 76 void DataTransferItemChromium::getAsString(PassRefPtr<StringCallback> callback) 85 77 { 86 if (( m_owner->policy() != ClipboardReadable && m_owner->policy() != ClipboardWritable)87 || m_kind!= kindString)78 if ((owner()->policy() != ClipboardReadable && owner()->policy() != ClipboardWritable) 79 || kind() != kindString) 88 80 return; 89 81 if (m_source == InternalSource) { … … 94 86 ASSERT(m_source == PasteboardSource); 95 87 // This is ugly but there's no real alternative. 96 if ( m_type== mimeTypeTextPlain) {88 if (type() == mimeTypeTextPlain) { 97 89 callback->scheduleCallback(m_context, PlatformBridge::clipboardReadPlainText(PasteboardPrivate::StandardBuffer)); 98 90 return; 99 91 } 100 if ( m_type== mimeTypeTextHTML) {92 if (type() == mimeTypeTextHTML) { 101 93 String html; 102 94 KURL ignoredSourceURL; … … 114 106 115 107 ASSERT(m_source == PasteboardSource); 116 if ( m_type== mimeTypeImagePng) {108 if (type() == mimeTypeImagePng) { 117 109 // FIXME: This is pretty inefficient. We copy the data from the browser 118 110 // to the renderer. We then place it in a blob in WebKit, which -
trunk/Source/WebCore/platform/chromium/DataTransferItemChromium.h
r83494 r84857 48 48 static PassRefPtr<DataTransferItemChromium> create(PassRefPtr<Clipboard> owner, ScriptExecutionContext*, const String& data, const String& type); 49 49 50 virtual String kind() const;51 virtual String type() const;52 53 50 virtual void getAsString(PassRefPtr<StringCallback>); 54 51 virtual PassRefPtr<Blob> getAsFile(); … … 62 59 DataTransferItemChromium(PassRefPtr<Clipboard> owner, ScriptExecutionContext*, DataSource, const String& kind, const String& type, const String& data); 63 60 64 const RefPtr<Clipboard> m_owner;65 61 ScriptExecutionContext* m_context; 66 62 const DataSource m_source; 67 const String m_kind;68 const String m_type;69 63 const String m_data; 70 64 }; -
trunk/Source/WebCore/platform/chromium/DataTransferItemsChromium.cpp
r81620 r84857 46 46 47 47 DataTransferItemsChromium::DataTransferItemsChromium(PassRefPtr<Clipboard> owner, ScriptExecutionContext* context) 48 : m_owner(owner) 49 , m_context(context) 48 : DataTransferItems(owner, context) 50 49 { 51 }52 53 unsigned long DataTransferItemsChromium::length() const54 {55 if (m_owner->policy() == ClipboardNumb)56 return 0;57 return m_items.size();58 }59 60 PassRefPtr<DataTransferItem> DataTransferItemsChromium::item(unsigned long index) const61 {62 if (m_owner->policy() == ClipboardNumb || index >= length())63 return 0;64 return m_items[index];65 }66 67 void DataTransferItemsChromium::deleteItem(unsigned long index, ExceptionCode& ec)68 {69 if (m_owner->policy() != ClipboardWritable) {70 ec = INVALID_STATE_ERR;71 return;72 }73 74 if (index >= length())75 return;76 77 m_items.remove(index);78 }79 80 void DataTransferItemsChromium::clear()81 {82 if (m_owner->policy() != ClipboardWritable)83 return;84 85 m_items.clear();86 }87 88 void DataTransferItemsChromium::add(const String& data, const String& type, ExceptionCode& ec)89 {90 if (m_owner->policy() != ClipboardWritable)91 return;92 93 // Only one 'string' item with a given type is allowed in the collection.94 for (size_t i = 0; i < m_items.size(); ++i) {95 if (m_items[i]->type() == type && m_items[i]->kind() == DataTransferItem::kindString) {96 ec = INVALID_STATE_ERR;97 return;98 }99 }100 101 m_items.append(DataTransferItemChromium::create(m_owner, m_context, data, type));102 50 } 103 51 -
trunk/Source/WebCore/platform/chromium/DataTransferItemsChromium.h
r81620 r84857 50 50 static PassRefPtr<DataTransferItemsChromium> create(PassRefPtr<Clipboard>, ScriptExecutionContext*); 51 51 52 virtual unsigned long length() const;53 virtual PassRefPtr<DataTransferItem> item(unsigned long index) const;54 virtual void deleteItem(unsigned long index, ExceptionCode&);55 virtual void clear();56 57 virtual void add(const String& data, const String& type, ExceptionCode&);58 59 52 private: 60 53 friend class ClipboardChromium; … … 63 56 64 57 virtual void addPasteboardItem(const String& type); 65 66 RefPtr<Clipboard> m_owner;67 // Indirectly owned by our parent.68 ScriptExecutionContext* m_context;69 Vector<RefPtr<DataTransferItemChromium> > m_items;70 58 }; 71 59
Note: See TracChangeset
for help on using the changeset viewer.