WebKit Bugzilla
New
Browse
Search+
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
[patch]
Patch
0001-Move-complexity-from-DataTransferItemsChromium-and-D.patch (text/plain), 25.39 KB, created by
Igor Trindade Oliveira
on 2011-04-25 15:15:16 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Igor Trindade Oliveira
Created:
2011-04-25 15:15:16 PDT
Size:
25.39 KB
patch
obsolete
>From d420c50c7f2ae23ca63b2b53561ec12c44e12f4a Mon Sep 17 00:00:00 2001 >From: Igor Oliveira <igor.oliveira@openbossa.org> >Date: Wed, 20 Apr 2011 11:47:02 -0400 >Subject: [PATCH] Move complexity from DataTransferItemsChromium and DataTransferItemChromium for base class > >--- > Source/WebCore/Android.mk | 1 + > Source/WebCore/CMakeLists.txt | 1 + > Source/WebCore/ChangeLog | 42 ++++++++ > Source/WebCore/GNUmakefile.list.am | 1 + > Source/WebCore/WebCore.gypi | 1 + > Source/WebCore/WebCore.pro | 1 + > Source/WebCore/WebCore.vcproj/WebCore.vcproj | 52 ++++++++++ > Source/WebCore/WebCore.xcodeproj/project.pbxproj | 4 + > Source/WebCore/dom/DataTransferItem.cpp | 31 ++++++ > Source/WebCore/dom/DataTransferItem.h | 18 +++- > Source/WebCore/dom/DataTransferItems.cpp | 104 ++++++++++++++++++++ > Source/WebCore/dom/DataTransferItems.h | 22 +++- > .../platform/chromium/DataTransferItemChromium.cpp | 36 +++---- > .../platform/chromium/DataTransferItemChromium.h | 6 - > .../chromium/DataTransferItemsChromium.cpp | 54 +---------- > .../platform/chromium/DataTransferItemsChromium.h | 12 --- > 16 files changed, 285 insertions(+), 101 deletions(-) > create mode 100644 Source/WebCore/dom/DataTransferItems.cpp > >diff --git a/Source/WebCore/Android.mk b/Source/WebCore/Android.mk >index 9d6d06a..4bb93c9 100644 >--- a/Source/WebCore/Android.mk >+++ b/Source/WebCore/Android.mk >@@ -114,6 +114,7 @@ LOCAL_SRC_FILES := $(LOCAL_SRC_FILES) \ > dom/DOMImplementation.cpp \ > dom/DOMStringList.cpp \ > dom/DataTransferItem.cpp \ >+ dom/DataTransferItems.cpp \ > dom/DecodedDataDocumentParser.cpp \ > dom/DeviceMotionController.cpp \ > dom/DeviceMotionData.cpp \ >diff --git a/Source/WebCore/CMakeLists.txt b/Source/WebCore/CMakeLists.txt >index d828088..b41a76f 100644 >--- a/Source/WebCore/CMakeLists.txt >+++ b/Source/WebCore/CMakeLists.txt >@@ -1450,6 +1450,7 @@ IF (ENABLE_DATA_TRANSFER_ITEMS) > ) > LIST(APPEND WebCore_SOURCES > dom/DataTransferItem.cpp >+ dom/DataTransferItems.cpp > dom/StringCallback.cpp > ) > ENDIF () >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index 4904b32..7680a78 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,45 @@ >+2011-04-25 Igor Oliveira <igor.oliveira@openbossa.org> >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Move complexity from DataTransferItemsChromium and DataTransferItemChromium for base class >+ https://bugs.webkit.org/show_bug.cgi?id=59028 >+ >+ The DataTransferItemsChromium and DataTransferItemChromium code can be reused by other platforms. >+ Moving the code for base class we can reduce the efforts to support DataTransferItems >+ element in different platforms. >+ >+ * Android.mk: >+ * CMakeLists.txt: >+ * GNUmakefile.list.am: >+ * WebCore.gypi: >+ * WebCore.pro: >+ * WebCore.vcproj/WebCore.vcproj: >+ * WebCore.xcodeproj/project.pbxproj: >+ * dom/DataTransferItem.cpp: >+ (WebCore::DataTransferItem::DataTransferItem): >+ (WebCore::DataTransferItem::owner): >+ (WebCore::DataTransferItem::kind): >+ (WebCore::DataTransferItem::type): >+ * dom/DataTransferItem.h: >+ * dom/DataTransferItems.cpp: Copied from Source/WebCore/platform/chromium/DataTransferItemsChromium.cpp. >+ (WebCore::DataTransferItems::DataTransferItems): >+ (WebCore::DataTransferItems::length): >+ (WebCore::DataTransferItems::item): >+ (WebCore::DataTransferItems::deleteItem): >+ (WebCore::DataTransferItems::clear): >+ (WebCore::DataTransferItems::add): >+ * dom/DataTransferItems.h: >+ * platform/chromium/DataTransferItemChromium.cpp: >+ (WebCore::DataTransferItem::create): >+ (WebCore::DataTransferItemChromium::DataTransferItemChromium): >+ (WebCore::DataTransferItemChromium::getAsString): >+ (WebCore::DataTransferItemChromium::getAsFile): >+ * platform/chromium/DataTransferItemChromium.h: >+ * platform/chromium/DataTransferItemsChromium.cpp: >+ (WebCore::DataTransferItemsChromium::DataTransferItemsChromium): >+ * platform/chromium/DataTransferItemsChromium.h: >+ > 2011-04-25 Steve Falkenburg <sfalken@apple.com> > > Reviewed by Brian Weinstein. >diff --git a/Source/WebCore/GNUmakefile.list.am b/Source/WebCore/GNUmakefile.list.am >index be6337d..4535264 100644 >--- a/Source/WebCore/GNUmakefile.list.am >+++ b/Source/WebCore/GNUmakefile.list.am >@@ -3987,6 +3987,7 @@ webcore_built_sources += \ > webcore_sources += \ > Source/WebCore/dom/DataTransferItem.cpp \ > Source/WebCore/dom/DataTransferItem.h \ >+ Source/WebCore/dom/DataTransferItems.cpp \ > Source/WebCore/dom/DataTransferItems.h \ > Source/WebCore/dom/StringCallback.cpp \ > Source/WebCore/dom/StringCallback.h >diff --git a/Source/WebCore/WebCore.gypi b/Source/WebCore/WebCore.gypi >index 6a6481e..178b0e5 100644 >--- a/Source/WebCore/WebCore.gypi >+++ b/Source/WebCore/WebCore.gypi >@@ -2433,6 +2433,7 @@ > 'dom/DOMStringMap.h', > 'dom/DataTransferItem.cpp', > 'dom/DataTransferItem.h', >+ 'dom/DataTransferItems.cpp', > 'dom/DataTransferItems.h', > 'dom/DatasetDOMStringMap.cpp', > 'dom/DatasetDOMStringMap.h', >diff --git a/Source/WebCore/WebCore.pro b/Source/WebCore/WebCore.pro >index 37b95f8..d653cb0 100644 >--- a/Source/WebCore/WebCore.pro >+++ b/Source/WebCore/WebCore.pro >@@ -2777,6 +2777,7 @@ contains(DEFINES, ENABLE_DATA_TRANSFER_ITEMS=1) { > dom/StringCallback.h > SOURCES += \ > dom/DataTransferItem.cpp \ >+ dom/DataTransferItems.cpp \ > dom/StringCallback.cpp > } > >diff --git a/Source/WebCore/WebCore.vcproj/WebCore.vcproj b/Source/WebCore/WebCore.vcproj/WebCore.vcproj >index 57a9b06..df55b13 100755 >--- a/Source/WebCore/WebCore.vcproj/WebCore.vcproj >+++ b/Source/WebCore/WebCore.vcproj/WebCore.vcproj >@@ -43178,6 +43178,58 @@ > </FileConfiguration> > </File> > <File >+ RelativePath="..\dom\DataTransferItems.cpp" >+ > >+ <FileConfiguration >+ Name="Debug|Win32" >+ ExcludedFromBuild="true" >+ > >+ <Tool >+ Name="VCCLCompilerTool" >+ /> >+ </FileConfiguration> >+ <FileConfiguration >+ Name="Release|Win32" >+ ExcludedFromBuild="true" >+ > >+ <Tool >+ Name="VCCLCompilerTool" >+ /> >+ </FileConfiguration> >+ <FileConfiguration >+ Name="Debug_Cairo_CFLite|Win32" >+ ExcludedFromBuild="true" >+ > >+ <Tool >+ Name="VCCLCompilerTool" >+ /> >+ </FileConfiguration> >+ <FileConfiguration >+ Name="Release_Cairo_CFLite|Win32" >+ ExcludedFromBuild="true" >+ > >+ <Tool >+ Name="VCCLCompilerTool" >+ /> >+ </FileConfiguration> >+ <FileConfiguration >+ Name="Debug_All|Win32" >+ ExcludedFromBuild="true" >+ > >+ <Tool >+ Name="VCCLCompilerTool" >+ /> >+ </FileConfiguration> >+ <FileConfiguration >+ Name="Production|Win32" >+ ExcludedFromBuild="true" >+ > >+ <Tool >+ Name="VCCLCompilerTool" >+ /> >+ </FileConfiguration> >+ </File> >+ <File > RelativePath="..\dom\DataTransferItem.h" > > > </File> >diff --git a/Source/WebCore/WebCore.xcodeproj/project.pbxproj b/Source/WebCore/WebCore.xcodeproj/project.pbxproj >index 641e90b..835df88 100644 >--- a/Source/WebCore/WebCore.xcodeproj/project.pbxproj >+++ b/Source/WebCore/WebCore.xcodeproj/project.pbxproj >@@ -1675,6 +1675,7 @@ > 77A17AA712F28B2A004E02F6 /* JSOESVertexArrayObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 77A17AA312F28B2A004E02F6 /* JSOESVertexArrayObject.h */; }; > 77EF62F312F9DB7400C77BD2 /* JSWebGLVertexArrayObjectOES.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 77EF62F112F9DB7400C77BD2 /* JSWebGLVertexArrayObjectOES.cpp */; }; > 77EF62F412F9DB7400C77BD2 /* JSWebGLVertexArrayObjectOES.h in Headers */ = {isa = PBXBuildFile; fileRef = 77EF62F212F9DB7400C77BD2 /* JSWebGLVertexArrayObjectOES.h */; }; >+ 781755861365A1B00093BE2E /* DataTransferItems.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 781755851365A1B00093BE2E /* DataTransferItems.cpp */; }; > 79AC9218109945C80021266E /* JSCompositionEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 79AC9216109945C80021266E /* JSCompositionEvent.cpp */; }; > 79AC9219109945C80021266E /* JSCompositionEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 79AC9217109945C80021266E /* JSCompositionEvent.h */; }; > 79F2F5A11091939A000D87CB /* CompositionEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 79F2F59E1091939A000D87CB /* CompositionEvent.cpp */; }; >@@ -8308,6 +8309,7 @@ > 77A17AA312F28B2A004E02F6 /* JSOESVertexArrayObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSOESVertexArrayObject.h; sourceTree = "<group>"; }; > 77EF62F112F9DB7400C77BD2 /* JSWebGLVertexArrayObjectOES.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWebGLVertexArrayObjectOES.cpp; sourceTree = "<group>"; }; > 77EF62F212F9DB7400C77BD2 /* JSWebGLVertexArrayObjectOES.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSWebGLVertexArrayObjectOES.h; sourceTree = "<group>"; }; >+ 781755851365A1B00093BE2E /* DataTransferItems.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DataTransferItems.cpp; path = dom/DataTransferItems.cpp; sourceTree = "<group>"; }; > 79AC9216109945C80021266E /* JSCompositionEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSCompositionEvent.cpp; sourceTree = "<group>"; }; > 79AC9217109945C80021266E /* JSCompositionEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSCompositionEvent.h; sourceTree = "<group>"; }; > 79F2F59E1091939A000D87CB /* CompositionEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CompositionEvent.cpp; sourceTree = "<group>"; }; >@@ -12735,6 +12737,7 @@ > 0867D691FE84028FC02AAC07 /* WebKit */ = { > isa = PBXGroup; > children = ( >+ 781755851365A1B00093BE2E /* DataTransferItems.cpp */, > 65C97AF208EA908800ACD273 /* config.h */, > EDEC98020AED7E170059137F /* WebCorePrefix.h */, > 9307061309E0CA8200B17FE4 /* DerivedSources.make */, >@@ -25802,6 +25805,7 @@ > 4358E8851360A33B00E4748C /* SVGFEDropShadowElement.cpp in Sources */, > 14E0BC56136148A8002AD12E /* JSDOMTokenListCustom.cpp in Sources */, > F3810C1B1365A49600ED6E33 /* InspectorWorkerAgent.cpp in Sources */, >+ 781755861365A1B00093BE2E /* DataTransferItems.cpp in Sources */, > ); > runOnlyForDeploymentPostprocessing = 0; > }; >diff --git a/Source/WebCore/dom/DataTransferItem.cpp b/Source/WebCore/dom/DataTransferItem.cpp >index 8eec869..78731d7 100644 >--- a/Source/WebCore/dom/DataTransferItem.cpp >+++ b/Source/WebCore/dom/DataTransferItem.cpp >@@ -31,6 +31,8 @@ > #include "config.h" > #include "DataTransferItem.h" > >+#include "Clipboard.h" >+ > #if ENABLE(DATA_TRANSFER_ITEMS) > > namespace WebCore { >@@ -38,6 +40,35 @@ namespace WebCore { > const char DataTransferItem::kindString[] = "string"; > const char DataTransferItem::kindFile[] = "file"; > >+DataTransferItem::DataTransferItem(RefPtr<Clipboard> owner, const String& kind, const String& type) >+ : m_owner(owner) >+ , m_kind(kind) >+ , m_type(type) >+{ >+} >+ >+Clipboard* DataTransferItem::owner() >+{ >+ return m_owner.get(); >+} >+ >+String DataTransferItem::kind() const >+{ >+ if (m_owner->policy() == ClipboardNumb) >+ return String(); >+ >+ return m_kind; >+} >+ >+String DataTransferItem::type() const >+{ >+ if (m_owner->policy() == ClipboardNumb) >+ return String(); >+ >+ return m_type; >+} >+ >+ > } // namespace WebCore > > #endif // ENABLE(DATA_TRANSFER_ITEMS) >diff --git a/Source/WebCore/dom/DataTransferItem.h b/Source/WebCore/dom/DataTransferItem.h >index d648c56..dcecd60 100644 >--- a/Source/WebCore/dom/DataTransferItem.h >+++ b/Source/WebCore/dom/DataTransferItem.h >@@ -33,6 +33,8 @@ > > #if ENABLE(DATA_TRANSFER_ITEMS) > >+#include "Clipboard.h" >+ > #include <wtf/Forward.h> > #include <wtf/RefCounted.h> > >@@ -40,19 +42,31 @@ namespace WebCore { > > class Blob; > class StringCallback; >+class ScriptExecutionContext; > > class DataTransferItem : public RefCounted<DataTransferItem> { > public: > ~DataTransferItem() {} > >+ static PassRefPtr<DataTransferItem> create(PassRefPtr<Clipboard> owner, ScriptExecutionContext*, const String& data, const String& type); >+ > static const char kindString[]; > static const char kindFile[]; > >- virtual String kind() const = 0; >- virtual String type() const = 0; >+ String kind() const; >+ String type() const; > > virtual void getAsString(PassRefPtr<StringCallback>) = 0; > virtual PassRefPtr<Blob> getAsFile() = 0; >+ >+protected: >+ DataTransferItem(RefPtr<Clipboard> owner, const String& kind, const String& type); >+ Clipboard* owner(); >+ >+private: >+ const RefPtr<Clipboard> m_owner; >+ const String m_kind; >+ const String m_type; > }; > > } // namespace WebCore >diff --git a/Source/WebCore/dom/DataTransferItems.cpp b/Source/WebCore/dom/DataTransferItems.cpp >new file mode 100644 >index 0000000..40e923f >--- /dev/null >+++ b/Source/WebCore/dom/DataTransferItems.cpp >@@ -0,0 +1,104 @@ >+/* >+ * Copyright (C) 2011 Google Inc. All rights reserved. >+ * Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies) >+ * >+ * Redistribution and use in source and binary forms, with or without >+ * modification, are permitted provided that the following conditions are >+ * met: >+ * >+ * * Redistributions of source code must retain the above copyright >+ * notice, this list of conditions and the following disclaimer. >+ * * Redistributions in binary form must reproduce the above >+ * copyright notice, this list of conditions and the following disclaimer >+ * in the documentation and/or other materials provided with the >+ * distribution. >+ * * Neither the name of Google Inc. nor the names of its >+ * contributors may be used to endorse or promote products derived from >+ * this software without specific prior written permission. >+ * >+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS >+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT >+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR >+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT >+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, >+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT >+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, >+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY >+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT >+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE >+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. >+ */ >+ >+#include "config.h" >+#include "DataTransferItems.h" >+ >+#include "DataTransferItem.h" >+#include "ExceptionCode.h" >+ >+#if ENABLE(DATA_TRANSFER_ITEMS) >+ >+namespace WebCore { >+ >+DataTransferItems::DataTransferItems(RefPtr<Clipboard> clipboard, ScriptExecutionContext* context) >+ : m_owner(clipboard) >+ , m_context(context) >+{ >+} >+ >+size_t DataTransferItems::length() const >+{ >+ if (m_owner->policy() == ClipboardNumb) >+ return 0; >+ >+ return m_items.size(); >+} >+ >+PassRefPtr<DataTransferItem> DataTransferItems::item(unsigned long index) >+{ >+ if (m_owner->policy() == ClipboardNumb || index >= length()) >+ return 0; >+ >+ return m_items[index]; >+} >+ >+void DataTransferItems::deleteItem(unsigned long index, ExceptionCode& ec) >+{ >+ if (m_owner->policy() != ClipboardWritable) { >+ ec = INVALID_STATE_ERR; >+ return; >+ } >+ >+ if (index >= length()) >+ return; >+ >+ m_items.remove(index); >+} >+ >+void DataTransferItems::clear() >+{ >+ if (m_owner->policy() != ClipboardWritable) >+ return; >+ >+ m_items.clear(); >+ >+} >+ >+void DataTransferItems::add(const String& data, const String& type, ExceptionCode& ec) >+{ >+ if (m_owner->policy() != ClipboardWritable) >+ return; >+ >+ // Only one 'string' item with a given type is allowed in the collection. >+ for (size_t i = 0; i < m_items.size(); ++i) { >+ if (m_items[i]->type() == type && m_items[i]->kind() == DataTransferItem::kindString) { >+ ec = INVALID_STATE_ERR; >+ return; >+ } >+ } >+ >+ m_items.append(DataTransferItem::create(m_owner, m_context, data, type)); >+} >+ >+} >+ >+#endif >diff --git a/Source/WebCore/dom/DataTransferItems.h b/Source/WebCore/dom/DataTransferItems.h >index 0873384..dc6b2bd 100644 >--- a/Source/WebCore/dom/DataTransferItems.h >+++ b/Source/WebCore/dom/DataTransferItems.h >@@ -33,12 +33,13 @@ > > #if ENABLE(DATA_TRANSFER_ITEMS) > >+#include "DataTransferItem.h" > #include <wtf/Forward.h> > #include <wtf/RefCounted.h> > > namespace WebCore { > >-class DataTransferItem; >+class Clipboard; > > typedef int ExceptionCode; > >@@ -46,12 +47,21 @@ class DataTransferItems : public RefCounted<DataTransferItems> { > public: > ~DataTransferItems() {} > >- virtual unsigned long length() const = 0; >- virtual PassRefPtr<DataTransferItem> item(unsigned long index) const = 0; >- virtual void deleteItem(unsigned long index, ExceptionCode&) = 0; >- virtual void clear() = 0; >+ virtual size_t length() const; >+ virtual PassRefPtr<DataTransferItem> item(unsigned long index); >+ virtual void deleteItem(unsigned long index, ExceptionCode&); >+ virtual void clear(); >+ virtual void add(const String& data, const String& type, ExceptionCode&); >+ >+protected: >+ DataTransferItems(RefPtr<Clipboard>, ScriptExecutionContext*); >+ >+protected: >+ RefPtr<Clipboard> m_owner; >+ // Indirectly owned by our parent. >+ ScriptExecutionContext* m_context; >+ Vector<RefPtr<DataTransferItem> > m_items; > >- virtual void add(const String& data, const String& type, ExceptionCode&) = 0; > }; > > } // namespace WebCore >diff --git a/Source/WebCore/platform/chromium/DataTransferItemChromium.cpp b/Source/WebCore/platform/chromium/DataTransferItemChromium.cpp >index 24b498e..9cd2ac9 100644 >--- a/Source/WebCore/platform/chromium/DataTransferItemChromium.cpp >+++ b/Source/WebCore/platform/chromium/DataTransferItemChromium.cpp >@@ -57,34 +57,26 @@ PassRefPtr<DataTransferItemChromium> DataTransferItemChromium::create(PassRefPtr > return adoptRef(new DataTransferItemChromium(owner, context, InternalSource, DataTransferItem::kindString, type, data)); > } > >+PassRefPtr<DataTransferItem> DataTransferItem::create(PassRefPtr<Clipboard> owner, >+ ScriptExecutionContext* context, >+ const String& data, >+ const String& type) >+{ >+ return DataTransferItemChromium::create(owner, context, data, type); >+} >+ > DataTransferItemChromium::DataTransferItemChromium(PassRefPtr<Clipboard> owner, ScriptExecutionContext* context, DataSource source, const String& kind, const String& type, const String& data) >- : m_owner(owner) >+ : DataTransferItem(owner, kind, type) > , m_context(context) > , m_source(source) >- , m_kind(kind) >- , m_type(type) > , m_data(data) > { > } > >-String DataTransferItemChromium::kind() const >-{ >- if (m_owner->policy() == ClipboardNumb) >- return String(); >- return m_kind; >-} >- >-String DataTransferItemChromium::type() const >-{ >- if (m_owner->policy() == ClipboardNumb) >- return String(); >- return m_type; >-} >- > void DataTransferItemChromium::getAsString(PassRefPtr<StringCallback> callback) > { >- if ((m_owner->policy() != ClipboardReadable && m_owner->policy() != ClipboardWritable) >- || m_kind != kindString) >+ if ((owner()->policy() != ClipboardReadable && owner()->policy() != ClipboardWritable) >+ || kind() != kindString) > return; > if (m_source == InternalSource) { > callback->scheduleCallback(m_context, m_data); >@@ -93,11 +85,11 @@ void DataTransferItemChromium::getAsString(PassRefPtr<StringCallback> callback) > > ASSERT(m_source == PasteboardSource); > // This is ugly but there's no real alternative. >- if (m_type == mimeTypeTextPlain) { >+ if (type() == mimeTypeTextPlain) { > callback->scheduleCallback(m_context, PlatformBridge::clipboardReadPlainText(PasteboardPrivate::StandardBuffer)); > return; > } >- if (m_type == mimeTypeTextHTML) { >+ if (type() == mimeTypeTextHTML) { > String html; > KURL ignoredSourceURL; > PlatformBridge::clipboardReadHTML(PasteboardPrivate::StandardBuffer, &html, &ignoredSourceURL); >@@ -113,7 +105,7 @@ PassRefPtr<Blob> DataTransferItemChromium::getAsFile() > return 0; > > ASSERT(m_source == PasteboardSource); >- if (m_type == mimeTypeImagePng) { >+ if (type() == mimeTypeImagePng) { > // FIXME: This is pretty inefficient. We copy the data from the browser > // to the renderer. We then place it in a blob in WebKit, which > // registers it and copies it *back* to the browser. When a consumer >diff --git a/Source/WebCore/platform/chromium/DataTransferItemChromium.h b/Source/WebCore/platform/chromium/DataTransferItemChromium.h >index 66be96e..144e40f 100644 >--- a/Source/WebCore/platform/chromium/DataTransferItemChromium.h >+++ b/Source/WebCore/platform/chromium/DataTransferItemChromium.h >@@ -47,9 +47,6 @@ public: > static PassRefPtr<DataTransferItemChromium> createFromPasteboard(PassRefPtr<Clipboard> owner, ScriptExecutionContext*, const String& type); > static PassRefPtr<DataTransferItemChromium> create(PassRefPtr<Clipboard> owner, ScriptExecutionContext*, const String& data, const String& type); > >- virtual String kind() const; >- virtual String type() const; >- > virtual void getAsString(PassRefPtr<StringCallback>); > virtual PassRefPtr<Blob> getAsFile(); > >@@ -61,11 +58,8 @@ private: > > DataTransferItemChromium(PassRefPtr<Clipboard> owner, ScriptExecutionContext*, DataSource, const String& kind, const String& type, const String& data); > >- const RefPtr<Clipboard> m_owner; > ScriptExecutionContext* m_context; > const DataSource m_source; >- const String m_kind; >- const String m_type; > const String m_data; > }; > >diff --git a/Source/WebCore/platform/chromium/DataTransferItemsChromium.cpp b/Source/WebCore/platform/chromium/DataTransferItemsChromium.cpp >index 418b8b5..c684ccc 100644 >--- a/Source/WebCore/platform/chromium/DataTransferItemsChromium.cpp >+++ b/Source/WebCore/platform/chromium/DataTransferItemsChromium.cpp >@@ -45,62 +45,10 @@ PassRefPtr<DataTransferItemsChromium> DataTransferItemsChromium::create(PassRefP > } > > DataTransferItemsChromium::DataTransferItemsChromium(PassRefPtr<Clipboard> owner, ScriptExecutionContext* context) >- : m_owner(owner) >- , m_context(context) >+ : DataTransferItems(owner, context) > { > } > >-unsigned long DataTransferItemsChromium::length() const >-{ >- if (m_owner->policy() == ClipboardNumb) >- return 0; >- return m_items.size(); >-} >- >-PassRefPtr<DataTransferItem> DataTransferItemsChromium::item(unsigned long index) const >-{ >- if (m_owner->policy() == ClipboardNumb || index >= length()) >- return 0; >- return m_items[index]; >-} >- >-void DataTransferItemsChromium::deleteItem(unsigned long index, ExceptionCode& ec) >-{ >- if (m_owner->policy() != ClipboardWritable) { >- ec = INVALID_STATE_ERR; >- return; >- } >- >- if (index >= length()) >- return; >- >- m_items.remove(index); >-} >- >-void DataTransferItemsChromium::clear() >-{ >- if (m_owner->policy() != ClipboardWritable) >- return; >- >- m_items.clear(); >-} >- >-void DataTransferItemsChromium::add(const String& data, const String& type, ExceptionCode& ec) >-{ >- if (m_owner->policy() != ClipboardWritable) >- return; >- >- // Only one 'string' item with a given type is allowed in the collection. >- for (size_t i = 0; i < m_items.size(); ++i) { >- if (m_items[i]->type() == type && m_items[i]->kind() == DataTransferItem::kindString) { >- ec = INVALID_STATE_ERR; >- return; >- } >- } >- >- m_items.append(DataTransferItemChromium::create(m_owner, m_context, data, type)); >-} >- > void DataTransferItemsChromium::addPasteboardItem(const String& type) > { > m_items.append(DataTransferItemChromium::createFromPasteboard(m_owner, m_context, type)); >diff --git a/Source/WebCore/platform/chromium/DataTransferItemsChromium.h b/Source/WebCore/platform/chromium/DataTransferItemsChromium.h >index 51c4fdb..d099a22 100644 >--- a/Source/WebCore/platform/chromium/DataTransferItemsChromium.h >+++ b/Source/WebCore/platform/chromium/DataTransferItemsChromium.h >@@ -49,24 +49,12 @@ class DataTransferItemsChromium : public DataTransferItems { > public: > static PassRefPtr<DataTransferItemsChromium> create(PassRefPtr<Clipboard>, ScriptExecutionContext*); > >- virtual unsigned long length() const; >- virtual PassRefPtr<DataTransferItem> item(unsigned long index) const; >- virtual void deleteItem(unsigned long index, ExceptionCode&); >- virtual void clear(); >- >- virtual void add(const String& data, const String& type, ExceptionCode&); >- > private: > friend class ClipboardChromium; > > DataTransferItemsChromium(PassRefPtr<Clipboard>, ScriptExecutionContext*); > > virtual void addPasteboardItem(const String& type); >- >- RefPtr<Clipboard> m_owner; >- // Indirectly owned by our parent. >- ScriptExecutionContext* m_context; >- Vector<RefPtr<DataTransferItemChromium> > m_items; > }; > > } // namespace WebCore >-- >1.7.1 >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 59028
:
90509
|
90594
|
90600
|
90939
|
90946
| 90954