Title: [109176] trunk
Revision
109176
Author
[email protected]
Date
2012-02-28 17:31:55 -0800 (Tue, 28 Feb 2012)

Log Message

Clipboard::getData should return an empty string instead of undefined
https://bugs.webkit.org/show_bug.cgi?id=79712

Reviewed by Tony Chang.

Source/WebCore:

Per the spec, an empty string should be returned when there is no data for the given typestring.

Test: fast/events/dataTransfer-getData-returns-empty-string.html

* bindings/js/JSClipboardCustom.cpp:
* bindings/v8/custom/V8ClipboardCustom.cpp:
* dom/Clipboard.h:
(Clipboard):
* dom/Clipboard.idl:
* platform/blackberry/ClipboardBlackBerry.cpp:
(WebCore::ClipboardBlackBerry::getData):
* platform/blackberry/ClipboardBlackBerry.h:
(ClipboardBlackBerry):
* platform/chromium/ClipboardChromium.cpp:
(WebCore::ClipboardChromium::getData):
* platform/chromium/ClipboardChromium.h:
(ClipboardChromium):
* platform/efl/ClipboardEfl.cpp:
(WebCore::ClipboardEfl::getData):
* platform/efl/ClipboardEfl.h:
(ClipboardEfl):
* platform/gtk/ClipboardGtk.cpp:
(WebCore::ClipboardGtk::getData):
* platform/gtk/ClipboardGtk.h:
(ClipboardGtk):
* platform/mac/ClipboardMac.h:
(ClipboardMac):
* platform/mac/ClipboardMac.mm:
(WebCore::ClipboardMac::getData):
* platform/qt/ClipboardQt.cpp:
(WebCore::ClipboardQt::getData):
* platform/qt/ClipboardQt.h:
(ClipboardQt):
* platform/win/ClipboardUtilitiesWin.cpp:
(WebCore::getFullCFHTML):
(WebCore::getURL):
(WebCore::getPlainText):
(WebCore::getTextHTML):
(WebCore::getCFHTML):
(WebCore::fragmentFromHTML):
* platform/win/ClipboardUtilitiesWin.h:
(WebCore):
* platform/win/ClipboardWin.cpp:
(WebCore::ClipboardWin::getData):
* platform/win/ClipboardWin.h:
(ClipboardWin):
* platform/wx/ClipboardWx.cpp:
(WebCore::ClipboardWx::getData):
* platform/wx/ClipboardWx.h:
(ClipboardWx):

LayoutTests:

* fast/events/dataTransfer-getData-returns-empty-string-expected.txt: Added.
* fast/events/dataTransfer-getData-returns-empty-string.html: Added.
* http/tests/local/drag-over-remote-content-expected.txt:
* http/tests/security/drag-over-remote-content-iframe-expected.txt:
* http/tests/security/drag-over-remote-content-iframe.html:

Modified Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (109175 => 109176)


--- trunk/LayoutTests/ChangeLog	2012-02-29 01:28:06 UTC (rev 109175)
+++ trunk/LayoutTests/ChangeLog	2012-02-29 01:31:55 UTC (rev 109176)
@@ -1,3 +1,16 @@
+2012-02-28  Daniel Cheng  <[email protected]>
+
+        Clipboard::getData should return an empty string instead of undefined
+        https://bugs.webkit.org/show_bug.cgi?id=79712
+
+        Reviewed by Tony Chang.
+
+        * fast/events/dataTransfer-getData-returns-empty-string-expected.txt: Added.
+        * fast/events/dataTransfer-getData-returns-empty-string.html: Added.
+        * http/tests/local/drag-over-remote-content-expected.txt:
+        * http/tests/security/drag-over-remote-content-iframe-expected.txt:
+        * http/tests/security/drag-over-remote-content-iframe.html:
+
 2012-02-28  Adam Klein  <[email protected]>
 
         Unreviewed gardening, mark another compositing test as flaky.

Modified: trunk/LayoutTests/http/tests/local/drag-over-remote-content-expected.txt (109175 => 109176)


--- trunk/LayoutTests/http/tests/local/drag-over-remote-content-expected.txt	2012-02-29 01:28:06 UTC (rev 109175)
+++ trunk/LayoutTests/http/tests/local/drag-over-remote-content-expected.txt	2012-02-29 01:31:55 UTC (rev 109176)
@@ -7,5 +7,5 @@
 
 To test, drag Abe's image into this light blue div.
 
-PASS: ondragover saw a URL of 'undefined'
+PASS: ondragover saw a URL of ''
 

Modified: trunk/LayoutTests/http/tests/security/drag-over-remote-content-iframe-expected.txt (109175 => 109176)


--- trunk/LayoutTests/http/tests/security/drag-over-remote-content-iframe-expected.txt	2012-02-29 01:28:06 UTC (rev 109175)
+++ trunk/LayoutTests/http/tests/security/drag-over-remote-content-iframe-expected.txt	2012-02-29 01:31:55 UTC (rev 109176)
@@ -4,5 +4,5 @@
 
 To test, drag Abe's image into this light blue div.
 
-PASS: ondragover saw a URL of 'undefined'
+PASS: ondragover saw a URL of ''
 

Modified: trunk/LayoutTests/http/tests/security/drag-over-remote-content-iframe.html (109175 => 109176)


--- trunk/LayoutTests/http/tests/security/drag-over-remote-content-iframe.html	2012-02-29 01:28:06 UTC (rev 109175)
+++ trunk/LayoutTests/http/tests/security/drag-over-remote-content-iframe.html	2012-02-29 01:31:55 UTC (rev 109176)
@@ -17,8 +17,8 @@
 
     dragTarget._ondragover_ = function() {
         var url = ""
-        var result = url ="" undefined
-            ? "PASS: ondragover saw a URL of 'undefined'"
+        var result = url ="" ''
+            ? "PASS: ondragover saw a URL of ''"
             : "FAIL: ondragover saw a URL of '" + url + "'";
         log(result);
         event.preventDefault();

Modified: trunk/Source/WebCore/ChangeLog (109175 => 109176)


--- trunk/Source/WebCore/ChangeLog	2012-02-29 01:28:06 UTC (rev 109175)
+++ trunk/Source/WebCore/ChangeLog	2012-02-29 01:31:55 UTC (rev 109176)
@@ -1,3 +1,61 @@
+2012-02-28  Daniel Cheng  <[email protected]>
+
+        Clipboard::getData should return an empty string instead of undefined
+        https://bugs.webkit.org/show_bug.cgi?id=79712
+
+        Reviewed by Tony Chang.
+
+        Per the spec, an empty string should be returned when there is no data for the given typestring.
+
+        Test: fast/events/dataTransfer-getData-returns-empty-string.html
+
+        * bindings/js/JSClipboardCustom.cpp:
+        * bindings/v8/custom/V8ClipboardCustom.cpp:
+        * dom/Clipboard.h:
+        (Clipboard):
+        * dom/Clipboard.idl:
+        * platform/blackberry/ClipboardBlackBerry.cpp:
+        (WebCore::ClipboardBlackBerry::getData):
+        * platform/blackberry/ClipboardBlackBerry.h:
+        (ClipboardBlackBerry):
+        * platform/chromium/ClipboardChromium.cpp:
+        (WebCore::ClipboardChromium::getData):
+        * platform/chromium/ClipboardChromium.h:
+        (ClipboardChromium):
+        * platform/efl/ClipboardEfl.cpp:
+        (WebCore::ClipboardEfl::getData):
+        * platform/efl/ClipboardEfl.h:
+        (ClipboardEfl):
+        * platform/gtk/ClipboardGtk.cpp:
+        (WebCore::ClipboardGtk::getData):
+        * platform/gtk/ClipboardGtk.h:
+        (ClipboardGtk):
+        * platform/mac/ClipboardMac.h:
+        (ClipboardMac):
+        * platform/mac/ClipboardMac.mm:
+        (WebCore::ClipboardMac::getData):
+        * platform/qt/ClipboardQt.cpp:
+        (WebCore::ClipboardQt::getData):
+        * platform/qt/ClipboardQt.h:
+        (ClipboardQt):
+        * platform/win/ClipboardUtilitiesWin.cpp:
+        (WebCore::getFullCFHTML):
+        (WebCore::getURL):
+        (WebCore::getPlainText):
+        (WebCore::getTextHTML):
+        (WebCore::getCFHTML):
+        (WebCore::fragmentFromHTML):
+        * platform/win/ClipboardUtilitiesWin.h:
+        (WebCore):
+        * platform/win/ClipboardWin.cpp:
+        (WebCore::ClipboardWin::getData):
+        * platform/win/ClipboardWin.h:
+        (ClipboardWin):
+        * platform/wx/ClipboardWx.cpp:
+        (WebCore::ClipboardWx::getData):
+        * platform/wx/ClipboardWx.h:
+        (ClipboardWx):
+
 2012-02-28  Kenichi Ishibashi  <[email protected]>
 
         [Chromium] Uninitialized value in LocaleToScriptCodeForFontSelection

Modified: trunk/Source/WebCore/bindings/js/JSClipboardCustom.cpp (109175 => 109176)


--- trunk/Source/WebCore/bindings/js/JSClipboardCustom.cpp	2012-02-29 01:28:06 UTC (rev 109175)
+++ trunk/Source/WebCore/bindings/js/JSClipboardCustom.cpp	2012-02-29 01:31:55 UTC (rev 109176)
@@ -66,22 +66,6 @@
     return throwError(exec, createSyntaxError(exec, "clearData: Invalid number of arguments"));
 }
 
-JSValue JSClipboard::getData(ExecState* exec)
-{
-    // FIXME: It does not match the rest of the JS bindings to throw on invalid number of arguments.
-    if (exec->argumentCount() != 1)
-        return throwError(exec, createSyntaxError(exec, "getData: Invalid number of arguments"));
-
-    Clipboard* clipboard = impl();
-
-    bool success;
-    String result = clipboard->getData(ustringToString(exec->argument(0).toString(exec)->value(exec)), success);
-    if (!success)
-        return jsUndefined();
-
-    return jsString(exec, result);
-}
-
 JSValue JSClipboard::setDragImage(ExecState* exec)
 {
     Clipboard* clipboard = impl();

Modified: trunk/Source/WebCore/bindings/v8/custom/V8ClipboardCustom.cpp (109175 => 109176)


--- trunk/Source/WebCore/bindings/v8/custom/V8ClipboardCustom.cpp	2012-02-29 01:28:06 UTC (rev 109175)
+++ trunk/Source/WebCore/bindings/v8/custom/V8ClipboardCustom.cpp	2012-02-29 01:31:55 UTC (rev 109176)
@@ -62,22 +62,6 @@
     return v8::Undefined();
 }
 
-v8::Handle<v8::Value> V8Clipboard::getDataCallback(const v8::Arguments& args)
-{
-    INC_STATS("DOM.Clipboard.getData()");
-    Clipboard* clipboard = V8Clipboard::toNative(args.Holder());
-
-    if (args.Length() != 1)
-        return throwError("getData: Invalid number of arguments", V8Proxy::SyntaxError);
-
-    bool success;
-    String result = clipboard->getData(toWebCoreString(args[0]), success);
-    if (success)
-        return v8String(result);
-
-    return v8::Undefined();
-}
-
 v8::Handle<v8::Value> V8Clipboard::setDragImageCallback(const v8::Arguments& args)
 {
     INC_STATS("DOM.Clipboard.setDragImage()");

Modified: trunk/Source/WebCore/dom/Clipboard.h (109175 => 109176)


--- trunk/Source/WebCore/dom/Clipboard.h	2012-02-29 01:28:06 UTC (rev 109175)
+++ trunk/Source/WebCore/dom/Clipboard.h	2012-02-29 01:31:55 UTC (rev 109176)
@@ -63,7 +63,7 @@
     
         virtual void clearData(const String& type) = 0;
         virtual void clearAllData() = 0;
-        virtual String getData(const String& type, bool& success) const = 0;
+        virtual String getData(const String& type) const = 0;
         virtual bool setData(const String& type, const String& data) = 0;
     
         // extensions beyond IE's API

Modified: trunk/Source/WebCore/dom/Clipboard.idl (109175 => 109176)


--- trunk/Source/WebCore/dom/Clipboard.idl	2012-02-29 01:28:06 UTC (rev 109175)
+++ trunk/Source/WebCore/dom/Clipboard.idl	2012-02-29 01:31:55 UTC (rev 109176)
@@ -36,8 +36,7 @@
 
         [Custom] void clearData(in [Optional] DOMString type)
             raises(DOMException);
-        [Custom] void getData(in DOMString type)
-            raises(DOMException);
+        DOMString getData(in DOMString type);
         boolean setData(in DOMString type, in DOMString data);
         [Custom] void setDragImage(in HTMLImageElement image, in long x, in long y)
             raises(DOMException);

Modified: trunk/Source/WebCore/platform/blackberry/ClipboardBlackBerry.cpp (109175 => 109176)


--- trunk/Source/WebCore/platform/blackberry/ClipboardBlackBerry.cpp	2012-02-29 01:28:06 UTC (rev 109175)
+++ trunk/Source/WebCore/platform/blackberry/ClipboardBlackBerry.cpp	2012-02-29 01:31:55 UTC (rev 109176)
@@ -56,9 +56,8 @@
     BlackBerry::Platform::Clipboard::clearClipboard();
 }
 
-String ClipboardBlackBerry::getData(const String& type, bool& success) const
+String ClipboardBlackBerry::getData(const String& type) const
 {
-    success = true;
     return String::fromUTF8(BlackBerry::Platform::Clipboard::readClipboardByType(type.utf8().data()).c_str());
 }
 

Modified: trunk/Source/WebCore/platform/blackberry/ClipboardBlackBerry.h (109175 => 109176)


--- trunk/Source/WebCore/platform/blackberry/ClipboardBlackBerry.h	2012-02-29 01:28:06 UTC (rev 109175)
+++ trunk/Source/WebCore/platform/blackberry/ClipboardBlackBerry.h	2012-02-29 01:31:55 UTC (rev 109176)
@@ -32,7 +32,7 @@
 
     void clearData(const String& type);
     void clearAllData();
-    String getData(const String& type, bool& success) const;
+    String getData(const String& type) const;
     bool setData(const String& type, const String& data);
 
     // extensions beyond IE's API

Modified: trunk/Source/WebCore/platform/chromium/ClipboardChromium.cpp (109175 => 109176)


--- trunk/Source/WebCore/platform/chromium/ClipboardChromium.cpp	2012-02-29 01:28:06 UTC (rev 109175)
+++ trunk/Source/WebCore/platform/chromium/ClipboardChromium.cpp	2012-02-29 01:31:55 UTC (rev 109176)
@@ -263,16 +263,16 @@
     m_dataObject->clearAll();
 }
 
-String ClipboardChromium::getData(const String& type, bool& success) const
+String ClipboardChromium::getData(const String& type) const
 {
-    success = false;
+    bool ignoredSuccess = false;
     if (policy() != ClipboardReadable || !m_dataObject)
         return String();
 
     if (isForCopyAndPaste() && platformClipboardChanged())
         return String();
 
-    return m_dataObject->getData(normalizeType(type), success);
+    return m_dataObject->getData(normalizeType(type), ignoredSuccess);
 }
 
 bool ClipboardChromium::setData(const String& type, const String& data)

Modified: trunk/Source/WebCore/platform/chromium/ClipboardChromium.h (109175 => 109176)


--- trunk/Source/WebCore/platform/chromium/ClipboardChromium.h	2012-02-29 01:28:06 UTC (rev 109175)
+++ trunk/Source/WebCore/platform/chromium/ClipboardChromium.h	2012-02-29 01:31:55 UTC (rev 109176)
@@ -58,7 +58,7 @@
 
         virtual void clearData(const String& type);
         void clearAllData();
-        String getData(const String& type, bool& success) const;
+        String getData(const String& type) const;
         bool setData(const String& type, const String& data);
         bool platformClipboardChanged() const;
 

Modified: trunk/Source/WebCore/platform/efl/ClipboardEfl.cpp (109175 => 109176)


--- trunk/Source/WebCore/platform/efl/ClipboardEfl.cpp	2012-02-29 01:28:06 UTC (rev 109175)
+++ trunk/Source/WebCore/platform/efl/ClipboardEfl.cpp	2012-02-29 01:31:55 UTC (rev 109176)
@@ -65,10 +65,9 @@
     notImplemented();
 }
 
-String ClipboardEfl::getData(const String&, bool &success) const
+String ClipboardEfl::getData(const String&) const
 {
     notImplemented();
-    success = false;
     return String();
 }
 

Modified: trunk/Source/WebCore/platform/efl/ClipboardEfl.h (109175 => 109176)


--- trunk/Source/WebCore/platform/efl/ClipboardEfl.h	2012-02-29 01:28:06 UTC (rev 109175)
+++ trunk/Source/WebCore/platform/efl/ClipboardEfl.h	2012-02-29 01:31:55 UTC (rev 109176)
@@ -36,7 +36,7 @@
 
     void clearData(const String&);
     void clearAllData();
-    String getData(const String&, bool&) const;
+    String getData(const String&) const;
     bool setData(const String&, const String&);
 
     PassRefPtr<DOMStringList> types() const;

Modified: trunk/Source/WebCore/platform/gtk/ClipboardGtk.cpp (109175 => 109176)


--- trunk/Source/WebCore/platform/gtk/ClipboardGtk.cpp	2012-02-29 01:28:06 UTC (rev 109175)
+++ trunk/Source/WebCore/platform/gtk/ClipboardGtk.cpp	2012-02-29 01:31:55 UTC (rev 109176)
@@ -143,13 +143,8 @@
         PasteboardHelper::defaultPasteboardHelper()->writeClipboardContents(m_clipboard);
 }
 
-String ClipboardGtk::getData(const String& typeString, bool& success) const
+String ClipboardGtk::getData(const String& typeString) const
 {
-    success = true; // According to http://www.whatwg.org/specs/web-apps/current-work/multipage/dnd.html
-    // "The getData(format) method must return the data that is associated with the type format converted
-    // to ASCII lowercase, if any, and must return the empty string otherwise." Since success == false 
-    // results in an 'undefined' return value, we always want to return success == true. This parameter
-    // should eventually be removed.
     if (policy() != ClipboardReadable || !m_dataObject)
         return String();
 

Modified: trunk/Source/WebCore/platform/gtk/ClipboardGtk.h (109175 => 109176)


--- trunk/Source/WebCore/platform/gtk/ClipboardGtk.h	2012-02-29 01:28:06 UTC (rev 109175)
+++ trunk/Source/WebCore/platform/gtk/ClipboardGtk.h	2012-02-29 01:31:55 UTC (rev 109176)
@@ -54,7 +54,7 @@
 
         void clearData(const String&);
         void clearAllData();
-        String getData(const String&, bool&) const;
+        String getData(const String&) const;
         bool setData(const String&, const String&);
 
         virtual PassRefPtr<DOMStringList> types() const;

Modified: trunk/Source/WebCore/platform/mac/ClipboardMac.h (109175 => 109176)


--- trunk/Source/WebCore/platform/mac/ClipboardMac.h	2012-02-29 01:28:06 UTC (rev 109175)
+++ trunk/Source/WebCore/platform/mac/ClipboardMac.h	2012-02-29 01:31:55 UTC (rev 109176)
@@ -49,7 +49,7 @@
     
     void clearData(const String& type);
     void clearAllData();
-    String getData(const String& type, bool& success) const;
+    String getData(const String& type) const;
     bool setData(const String& type, const String& data);
     
     virtual bool hasData();

Modified: trunk/Source/WebCore/platform/mac/ClipboardMac.mm (109175 => 109176)


--- trunk/Source/WebCore/platform/mac/ClipboardMac.mm	2012-02-29 01:28:06 UTC (rev 109175)
+++ trunk/Source/WebCore/platform/mac/ClipboardMac.mm	2012-02-29 01:31:55 UTC (rev 109176)
@@ -212,9 +212,8 @@
     return Vector<String>();
 }
 
-String ClipboardMac::getData(const String& type, bool& success) const
+String ClipboardMac::getData(const String& type) const
 {
-    success = false;
     if (policy() != ClipboardReadable)
         return String();
 
@@ -236,7 +235,6 @@
     // Enforce changeCount ourselves for security.  We check after reading instead of before to be
     // sure it doesn't change between our testing the change count and accessing the data.
     if (!cocoaValue.isEmpty() && m_changeCount == platformStrategies()->pasteboardStrategy()->changeCount(m_pasteboardName)) {
-        success = true;
         return cocoaValue;
     }
 

Modified: trunk/Source/WebCore/platform/qt/ClipboardQt.cpp (109175 => 109176)


--- trunk/Source/WebCore/platform/qt/ClipboardQt.cpp	2012-02-29 01:28:06 UTC (rev 109175)
+++ trunk/Source/WebCore/platform/qt/ClipboardQt.cpp	2012-02-29 01:31:55 UTC (rev 109176)
@@ -144,28 +144,21 @@
     m_writableData = 0;
 }
 
-String ClipboardQt::getData(const String& type, bool& success) const
+String ClipboardQt::getData(const String& type) const
 {
 
-    if (policy() != ClipboardReadable) {
-        success = false;
+    if (policy() != ClipboardReadable)
         return String();
-    }
 
-    if (isHtmlMimeType(type) && m_readableData->hasHtml()) {
-        success = true;
+    if (isHtmlMimeType(type) && m_readableData->hasHtml())
         return m_readableData->html();
-    }
 
-    if (isTextMimeType(type) && m_readableData->hasText()) {
-        success = true;
+    if (isTextMimeType(type) && m_readableData->hasText())
         return m_readableData->text();
-    }
 
     ASSERT(m_readableData);
     QByteArray rawData = m_readableData->data(type);
     QString data = ""
-    success = !data.isEmpty();
     return data;
 }
 

Modified: trunk/Source/WebCore/platform/qt/ClipboardQt.h (109175 => 109176)


--- trunk/Source/WebCore/platform/qt/ClipboardQt.h	2012-02-29 01:28:06 UTC (rev 109175)
+++ trunk/Source/WebCore/platform/qt/ClipboardQt.h	2012-02-29 01:31:55 UTC (rev 109176)
@@ -53,7 +53,7 @@
 
     void clearData(const String& type);
     void clearAllData();
-    String getData(const String& type, bool& success) const;
+    String getData(const String& type) const;
     bool setData(const String& type, const String& data);
 
     // extensions beyond IE's API

Modified: trunk/Source/WebCore/platform/win/ClipboardUtilitiesWin.cpp (109175 => 109176)


--- trunk/Source/WebCore/platform/win/ClipboardUtilitiesWin.cpp	2012-02-29 01:28:06 UTC (rev 109175)
+++ trunk/Source/WebCore/platform/win/ClipboardUtilitiesWin.cpp	2012-02-29 01:31:55 UTC (rev 109176)
@@ -208,7 +208,7 @@
     return globalData;
 }
 
-static String getFullCFHTML(IDataObject* data, bool& success)
+static String getFullCFHTML(IDataObject* data)
 {
     STGMEDIUM store;
     if (SUCCEEDED(data->GetData(htmlFormat(), &store))) {
@@ -218,10 +218,8 @@
         String cfhtml(UTF8Encoding().decode(data, dataSize));
         GlobalUnlock(store.hGlobal);
         ReleaseStgMedium(&store);
-        success = true;
         return cfhtml;
     }
-    success = false;
     return String();
 }
 
@@ -447,27 +445,25 @@
     dataObject->SetData(fileContentFormatZero(), &medium, TRUE);
 }
 
-String getURL(IDataObject* dataObject, DragData::FilenameConversionPolicy filenamePolicy, bool& success, String* title)
+String getURL(IDataObject* dataObject, DragData::FilenameConversionPolicy filenamePolicy, String* title)
 {
     STGMEDIUM store;
     String url;
-    success = false;
     if (getWebLocData(dataObject, url, title))
-        success = true;
-    else if (SUCCEEDED(dataObject->GetData(urlWFormat(), &store))) {
+        return url;
+
+    if (SUCCEEDED(dataObject->GetData(urlWFormat(), &store))) {
         // URL using Unicode
         UChar* data = ""
         url = "" title);
         GlobalUnlock(store.hGlobal);
         ReleaseStgMedium(&store);
-        success = true;
     } else if (SUCCEEDED(dataObject->GetData(urlFormat(), &store))) {
         // URL using ASCII
         char* data = ""
         url = "" title);
         GlobalUnlock(store.hGlobal);
         ReleaseStgMedium(&store);
-        success = true;
     }
 #if USE(CF)
     else if (filenamePolicy == DragData::ConvertFilenames) {
@@ -476,11 +472,8 @@
             wchar_t* data = ""
             if (data && data[0] && (PathFileExists(data) || PathIsUNC(data))) {
                 RetainPtr<CFStringRef> pathAsCFString(AdoptCF, CFStringCreateWithCharacters(kCFAllocatorDefault, (const UniChar*)data, wcslen(data)));
-                if (urlFromPath(pathAsCFString.get(), url)) {
-                    if (title)
-                        *title = url;
-                    success = true;
-                }
+                if (urlFromPath(pathAsCFString.get(), url) && title)
+                    *title = url;
             }
             GlobalUnlock(store.hGlobal);
             ReleaseStgMedium(&store);
@@ -489,11 +482,8 @@
             char* data = ""
             if (data && data[0] && (PathFileExistsA(data) || PathIsUNCA(data))) {
                 RetainPtr<CFStringRef> pathAsCFString(AdoptCF, CFStringCreateWithCString(kCFAllocatorDefault, data, kCFStringEncodingASCII));
-                if (urlFromPath(pathAsCFString.get(), url)) {
-                    if (title)
-                        *title = url;
-                    success = true;
-                }
+                if (urlFromPath(pathAsCFString.get(), url) && title)
+                    *title = url;
             }
             GlobalUnlock(store.hGlobal);
             ReleaseStgMedium(&store);
@@ -530,31 +520,27 @@
     return url;
 }
 
-String getPlainText(IDataObject* dataObject, bool& success)
+String getPlainText(IDataObject* dataObject)
 {
     STGMEDIUM store;
     String text;
-    success = false;
     if (SUCCEEDED(dataObject->GetData(plainTextWFormat(), &store))) {
         // Unicode text
         UChar* data = ""
         text = String(data);
         GlobalUnlock(store.hGlobal);
         ReleaseStgMedium(&store);
-        success = true;
     } else if (SUCCEEDED(dataObject->GetData(plainTextFormat(), &store))) {
         // ASCII text
         char* data = ""
         text = String(data);
         GlobalUnlock(store.hGlobal);
         ReleaseStgMedium(&store);
-        success = true;
     } else {
         // FIXME: Originally, we called getURL() here because dragging and dropping files doesn't
         // populate the drag with text data. Per https://bugs.webkit.org/show_bug.cgi?id=38826, this
         // is undesirable, so maybe this line can be removed.
-        text = getURL(dataObject, DragData::DoNotConvertFilenames, success);
-        success = true;
+        text = getURL(dataObject, DragData::DoNotConvertFilenames);
     }
     return text;
 }
@@ -570,17 +556,15 @@
     return getURL(data, DragData::DoNotConvertFilenames);
 }
 
-String getTextHTML(IDataObject* data, bool& success)
+String getTextHTML(IDataObject* data)
 {
     STGMEDIUM store;
     String html;
-    success = false;
     if (SUCCEEDED(data->GetData(texthtmlFormat(), &store))) {
         UChar* data = ""
         html = String(data);
         GlobalUnlock(store.hGlobal);
         ReleaseStgMedium(&store);
-        success = true;
     }
     return html;
 }
@@ -592,10 +576,10 @@
     return text;
 }
 
-String getCFHTML(IDataObject* data, bool& success)
+String getCFHTML(IDataObject* data)
 {
-    String cfhtml = getFullCFHTML(data, success);
-    if (success)
+    String cfhtml = getFullCFHTML(data);
+    if (!cfhtml.isEmpty())
         return extractMarkupFromCFHTML(cfhtml);
     return String();
 }
@@ -655,16 +639,15 @@
     if (!doc || !data)
         return 0;
 
-    bool success = false;
-    String cfhtml = getFullCFHTML(data, success);
-    if (success) {
+    String cfhtml = getFullCFHTML(data);
+    if (!cfhtml.isEmpty()) {
         if (RefPtr<DocumentFragment> fragment = fragmentFromCFHTML(doc, cfhtml))
             return fragment.release();
     }
 
-    String html = getTextHTML(data, success);
+    String html = getTextHTML(data);
     String srcURL;
-    if (success)
+    if (!html.isEmpty())
         return createFragmentFromMarkup(doc, html, srcURL, FragmentScriptingNotAllowed);
 
     return 0;

Modified: trunk/Source/WebCore/platform/win/ClipboardUtilitiesWin.h (109175 => 109176)


--- trunk/Source/WebCore/platform/win/ClipboardUtilitiesWin.h	2012-02-29 01:28:06 UTC (rev 109175)
+++ trunk/Source/WebCore/platform/win/ClipboardUtilitiesWin.h	2012-02-29 01:31:55 UTC (rev 109176)
@@ -67,13 +67,13 @@
 PassRefPtr<DocumentFragment> fragmentFromHTML(Document*, const DragDataMap*);
 PassRefPtr<DocumentFragment> fragmentFromCFHTML(Document*, const String& cfhtml);
 
-String getURL(IDataObject*, DragData::FilenameConversionPolicy, bool& success, String* title = 0);
+String getURL(IDataObject*, DragData::FilenameConversionPolicy, String* title = 0);
 String getURL(const DragDataMap*, DragData::FilenameConversionPolicy, String* title = 0);
-String getPlainText(IDataObject*, bool& success);
+String getPlainText(IDataObject*);
 String getPlainText(const DragDataMap*);
-String getTextHTML(IDataObject*, bool& success);
+String getTextHTML(IDataObject*);
 String getTextHTML(const DragDataMap*);
-String getCFHTML(IDataObject*, bool& success);
+String getCFHTML(IDataObject*);
 String getCFHTML(const DragDataMap*);
 
 void getClipboardData(IDataObject*, FORMATETC* fetc, Vector<String>& dataStrings);

Modified: trunk/Source/WebCore/platform/win/ClipboardWin.cpp (109175 => 109176)


--- trunk/Source/WebCore/platform/win/ClipboardWin.cpp	2012-02-29 01:28:06 UTC (rev 109175)
+++ trunk/Source/WebCore/platform/win/ClipboardWin.cpp	2012-02-29 01:31:55 UTC (rev 109176)
@@ -436,22 +436,21 @@
     m_dataObject = m_writableDataObject;
 }
 
-String ClipboardWin::getData(const String& type, bool& success) const
+String ClipboardWin::getData(const String& type) const
 {     
-    success = false;
     if (policy() != ClipboardReadable || (!m_dataObject && m_dragDataMap.isEmpty()))
         return "";
 
     ClipboardDataType dataType = clipboardTypeFromMIMEType(type);
     if (dataType == ClipboardDataTypeText)
-        return m_dataObject ? getPlainText(m_dataObject.get(), success) : getPlainText(&m_dragDataMap);
+        return m_dataObject ? getPlainText(m_dataObject.get()) : getPlainText(&m_dragDataMap);
     if (dataType == ClipboardDataTypeURL)
-        return m_dataObject ? getURL(m_dataObject.get(), DragData::DoNotConvertFilenames, success) : getURL(&m_dragDataMap, DragData::DoNotConvertFilenames);
+        return m_dataObject ? getURL(m_dataObject.get(), DragData::DoNotConvertFilenames) : getURL(&m_dragDataMap, DragData::DoNotConvertFilenames);
     else if (dataType == ClipboardDataTypeTextHTML) {
-        String data = "" ? getTextHTML(m_dataObject.get(), success) : getTextHTML(&m_dragDataMap);
-        if (success)
+        String data = "" ? getTextHTML(m_dataObject.get()) : getTextHTML(&m_dragDataMap);
+        if (!data.isEmpty())
             return data;
-        return m_dataObject ? getCFHTML(m_dataObject.get(), success) : getCFHTML(&m_dragDataMap);
+        return m_dataObject ? getCFHTML(m_dataObject.get()) : getCFHTML(&m_dragDataMap);
     }
     
     return "";

Modified: trunk/Source/WebCore/platform/win/ClipboardWin.h (109175 => 109176)


--- trunk/Source/WebCore/platform/win/ClipboardWin.h	2012-02-29 01:28:06 UTC (rev 109175)
+++ trunk/Source/WebCore/platform/win/ClipboardWin.h	2012-02-29 01:31:55 UTC (rev 109176)
@@ -60,7 +60,7 @@
 
     void clearData(const String& type);
     void clearAllData();
-    String getData(const String& type, bool& success) const;
+    String getData(const String& type) const;
     bool setData(const String& type, const String& data);
 
     // extensions beyond IE's API

Modified: trunk/Source/WebCore/platform/win/DragDataWin.cpp (109175 => 109176)


--- trunk/Source/WebCore/platform/win/DragDataWin.cpp	2012-02-29 01:28:06 UTC (rev 109175)
+++ trunk/Source/WebCore/platform/win/DragDataWin.cpp	2012-02-29 01:31:55 UTC (rev 109176)
@@ -101,8 +101,7 @@
 
 String DragData::asURL(Frame*, FilenameConversionPolicy filenamePolicy, String* title) const
 {
-    bool success;
-    return (m_platformDragData) ? getURL(m_platformDragData, filenamePolicy, success, title) : getURL(&m_dragDataMap, filenamePolicy, title);
+    return (m_platformDragData) ? getURL(m_platformDragData, filenamePolicy, title) : getURL(&m_dragDataMap, filenamePolicy, title);
 }
 
 bool DragData::containsFiles() const
@@ -155,8 +154,7 @@
 
 String DragData::asPlainText(Frame*) const
 {
-    bool success;
-    return (m_platformDragData) ? getPlainText(m_platformDragData, success) : getPlainText(&m_dragDataMap);
+    return (m_platformDragData) ? getPlainText(m_platformDragData) : getPlainText(&m_dragDataMap);
 }
 
 bool DragData::containsColor() const

Modified: trunk/Source/WebCore/platform/wx/ClipboardWx.cpp (109175 => 109176)


--- trunk/Source/WebCore/platform/wx/ClipboardWx.cpp	2012-02-29 01:28:06 UTC (rev 109175)
+++ trunk/Source/WebCore/platform/wx/ClipboardWx.cpp	2012-02-29 01:31:55 UTC (rev 109176)
@@ -58,7 +58,7 @@
     Pasteboard::generalPasteboard()->clear();
 }
 
-String ClipboardWx::getData(const String& type, bool& success) const 
+String ClipboardWx::getData(const String& type) const 
 {
     notImplemented();
     return ""; 

Modified: trunk/Source/WebCore/platform/wx/ClipboardWx.h (109175 => 109176)


--- trunk/Source/WebCore/platform/wx/ClipboardWx.h	2012-02-29 01:28:06 UTC (rev 109175)
+++ trunk/Source/WebCore/platform/wx/ClipboardWx.h	2012-02-29 01:31:55 UTC (rev 109176)
@@ -42,7 +42,7 @@
 
         void clearData(const String& type);
         void clearAllData();
-        String getData(const String& type, bool& success) const;
+        String getData(const String& type) const;
         bool setData(const String& type, const String& data);
     
         // extensions beyond IE's API
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to