Title: [108001] trunk
Revision
108001
Author
mhahnenb...@apple.com
Date
2012-02-16 16:54:37 -0800 (Thu, 16 Feb 2012)

Log Message

Fix the broken viewport tests
https://bugs.webkit.org/show_bug.cgi?id=78774

Reviewed by Kenneth Rohde Christiansen.

Source/_javascript_Core: 

* _javascript_Core.vcproj/_javascript_Core/_javascript_Core.def:
* wtf/text/WTFString.cpp:
(WTF):
(WTF::toDoubleType): Template-ized to allow other functions to specify whether they
want to allow trailing junk or not when calling strtod.
(WTF::charactersToDouble):
(WTF::charactersToFloat):
(WTF::charactersToFloatIgnoringJunk): Created new version of charactersToFloat that allows 
trailing junk.
* wtf/text/WTFString.h:
(WTF):

Source/WebCore: 

No new tests.

* dom/ViewportArguments.cpp:
(WebCore::numericPrefix): Changed to use the new charactersToFloatWithJunk function(s).

LayoutTests: 

* platform/gtk/Skipped: Undoing tests skipped due to earlier breakage.
* platform/qt/Skipped: Ditto.

Modified Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (108000 => 108001)


--- trunk/LayoutTests/ChangeLog	2012-02-17 00:49:42 UTC (rev 108000)
+++ trunk/LayoutTests/ChangeLog	2012-02-17 00:54:37 UTC (rev 108001)
@@ -1,3 +1,13 @@
+2012-02-16  Mark Hahnenberg  <mhahnenb...@apple.com>
+
+        Fix the broken viewport tests
+        https://bugs.webkit.org/show_bug.cgi?id=78774
+
+        Reviewed by Kenneth Rohde Christiansen.
+
+        * platform/gtk/Skipped: Undoing tests skipped due to earlier breakage.
+        * platform/qt/Skipped: Ditto.
+
 2012-02-16  Alexei Svitkine  <asvitk...@chromium.org>
 
         [chromium] Disable mock scrollbars for rubber-banding tests

Modified: trunk/LayoutTests/platform/gtk/Skipped (108000 => 108001)


--- trunk/LayoutTests/platform/gtk/Skipped	2012-02-17 00:49:42 UTC (rev 108000)
+++ trunk/LayoutTests/platform/gtk/Skipped	2012-02-17 00:54:37 UTC (rev 108001)
@@ -1614,12 +1614,6 @@
 fast/mutation/end-of-task-delivery.html
 fast/mutation/inline-event-listener.html
 
-# Replace old strtod with new strtod (REGRESSION caused by r107625)
-# https://bugs.webkit.org/show_bug.cgi?id=68044
-fast/viewport/viewport-67.html
-fast/viewport/viewport-68.html
-fast/viewport/viewport-warnings-5.html
-
 # Let MemoryCache reuse cached XHRs (REGRESSION caused by r107672)
 # https://bugs.webkit.org/show_bug.cgi?id=76564
 fast/workers/worker-crash-with-invalid-location.html

Modified: trunk/LayoutTests/platform/qt/Skipped (108000 => 108001)


--- trunk/LayoutTests/platform/qt/Skipped	2012-02-17 00:49:42 UTC (rev 108000)
+++ trunk/LayoutTests/platform/qt/Skipped	2012-02-17 00:54:37 UTC (rev 108001)
@@ -2617,12 +2617,6 @@
 # Fails on most platforms, probably failing due to an earlier test.
 http/tests/inspector/inspect-element.html
 
-# Replace old strtod with new strtod (REGRESSION caused by r107625)
-# https://bugs.webkit.org/show_bug.cgi?id=68044
-fast/viewport/viewport-67.html
-fast/viewport/viewport-68.html
-fast/viewport/viewport-warnings-5.html
-
 # [Qt] http/tests/navigation/https-in-page-cache.html fails
 # https://bugs.webkit.org/show_bug.cgi?id=78597
 http/tests/navigation/https-in-page-cache.html

Modified: trunk/Source/_javascript_Core/ChangeLog (108000 => 108001)


--- trunk/Source/_javascript_Core/ChangeLog	2012-02-17 00:49:42 UTC (rev 108000)
+++ trunk/Source/_javascript_Core/ChangeLog	2012-02-17 00:54:37 UTC (rev 108001)
@@ -1,3 +1,22 @@
+2012-02-16  Mark Hahnenberg  <mhahnenb...@apple.com>
+
+        Fix the broken viewport tests
+        https://bugs.webkit.org/show_bug.cgi?id=78774
+
+        Reviewed by Kenneth Rohde Christiansen.
+
+        * _javascript_Core.vcproj/_javascript_Core/_javascript_Core.def:
+        * wtf/text/WTFString.cpp:
+        (WTF):
+        (WTF::toDoubleType): Template-ized to allow other functions to specify whether they
+        want to allow trailing junk or not when calling strtod.
+        (WTF::charactersToDouble):
+        (WTF::charactersToFloat):
+        (WTF::charactersToFloatIgnoringJunk): Created new version of charactersToFloat that allows 
+        trailing junk.
+        * wtf/text/WTFString.h:
+        (WTF):
+
 2012-02-16  Oliver Hunt  <oli...@apple.com>
 
         Implement Error.stack

Modified: trunk/Source/_javascript_Core/_javascript_Core.vcproj/_javascript_Core/_javascript_Core.def (108000 => 108001)


--- trunk/Source/_javascript_Core/_javascript_Core.vcproj/_javascript_Core/_javascript_Core.def	2012-02-17 00:49:42 UTC (rev 108000)
+++ trunk/Source/_javascript_Core/_javascript_Core.vcproj/_javascript_Core/_javascript_Core.def	2012-02-17 00:54:37 UTC (rev 108001)
@@ -1,5 +1,6 @@
 EXPORTS
 
+    ??$strtod@$00@WTF@@YANPBDPAPAD@Z
     ??$strtod@$0A@@WTF@@YANPBDPAPAD@Z
     ??0ArrayBufferView@WTF@@IAE@V?$PassRefPtr@VArrayBuffer@WTF@@@1@I@Z
     ??0CString@WTF@@QAE@PBD@Z

Modified: trunk/Source/_javascript_Core/wtf/text/WTFString.cpp (108000 => 108001)


--- trunk/Source/_javascript_Core/wtf/text/WTFString.cpp	2012-02-17 00:49:42 UTC (rev 108000)
+++ trunk/Source/_javascript_Core/wtf/text/WTFString.cpp	2012-02-17 00:54:37 UTC (rev 108001)
@@ -1036,7 +1036,7 @@
     return toIntegralType<intptr_t, UChar>(data, lengthOfCharactersAsInteger<UChar>(data, length), ok, 10);
 }
 
-template <typename CharType>
+template <typename CharType, WTF::AllowTrailingJunkTag allowTrailingJunk>
 static inline double toDoubleType(const CharType* data, size_t length, bool* ok, bool* didReadNumber)
 {
     if (!length) {
@@ -1053,7 +1053,7 @@
     bytes[length] = '\0';
     char* start = bytes.data();
     char* end;
-    double val = WTF::strtod<WTF::DisallowTrailingJunk>(start, &end);
+    double val = WTF::strtod<allowTrailingJunk>(start, &end);
     if (ok)
         *ok = (end == 0 || *end == '\0') && !isnan(val);
     if (didReadNumber)
@@ -1063,26 +1063,38 @@
 
 double charactersToDouble(const LChar* data, size_t length, bool* ok, bool* didReadNumber)
 {
-    return toDoubleType<LChar>(data, length, ok, didReadNumber);
+    return toDoubleType<LChar, WTF::DisallowTrailingJunk>(data, length, ok, didReadNumber);
 }
 
 double charactersToDouble(const UChar* data, size_t length, bool* ok, bool* didReadNumber)
 {
-    return toDoubleType<UChar>(data, length, ok, didReadNumber);
+    return toDoubleType<UChar, WTF::DisallowTrailingJunk>(data, length, ok, didReadNumber);
 }
 
 float charactersToFloat(const LChar* data, size_t length, bool* ok, bool* didReadNumber)
 {
     // FIXME: This will return ok even when the string fits into a double but not a float.
-    return static_cast<float>(toDoubleType<LChar>(data, length, ok, didReadNumber));
+    return static_cast<float>(toDoubleType<LChar, WTF::DisallowTrailingJunk>(data, length, ok, didReadNumber));
 }
 
 float charactersToFloat(const UChar* data, size_t length, bool* ok, bool* didReadNumber)
 {
     // FIXME: This will return ok even when the string fits into a double but not a float.
-    return static_cast<float>(toDoubleType<UChar>(data, length, ok, didReadNumber));
+    return static_cast<float>(toDoubleType<UChar, WTF::DisallowTrailingJunk>(data, length, ok, didReadNumber));
 }
 
+float charactersToFloatIgnoringJunk(const LChar* data, size_t length, bool* ok, bool* didReadNumber)
+{
+    // FIXME: This will return ok even when the string fits into a double but not a float.
+    return static_cast<float>(toDoubleType<LChar, WTF::AllowTrailingJunk>(data, length, ok, didReadNumber));
+}
+
+float charactersToFloatIgnoringJunk(const UChar* data, size_t length, bool* ok, bool* didReadNumber)
+{
+    // FIXME: This will return ok even when the string fits into a double but not a float.
+    return static_cast<float>(toDoubleType<UChar, WTF::AllowTrailingJunk>(data, length, ok, didReadNumber));
+}
+
 const String& emptyString()
 {
     DEFINE_STATIC_LOCAL(String, emptyString, (StringImpl::empty()));

Modified: trunk/Source/_javascript_Core/wtf/text/WTFString.h (108000 => 108001)


--- trunk/Source/_javascript_Core/wtf/text/WTFString.h	2012-02-17 00:49:42 UTC (rev 108000)
+++ trunk/Source/_javascript_Core/wtf/text/WTFString.h	2012-02-17 00:54:37 UTC (rev 108001)
@@ -87,7 +87,9 @@
 WTF_EXPORT_PRIVATE double charactersToDouble(const LChar*, size_t, bool* ok = 0, bool* didReadNumber = 0);
 WTF_EXPORT_PRIVATE double charactersToDouble(const UChar*, size_t, bool* ok = 0, bool* didReadNumber = 0);
 float charactersToFloat(const LChar*, size_t, bool* ok = 0, bool* didReadNumber = 0);
+WTF_EXPORT_PRIVATE float charactersToFloatIgnoringJunk(const LChar*, size_t, bool* ok = 0, bool* didReadNumber = 0);
 WTF_EXPORT_PRIVATE float charactersToFloat(const UChar*, size_t, bool* ok = 0, bool* didReadNumber = 0);
+WTF_EXPORT_PRIVATE float charactersToFloatIgnoringJunk(const UChar*, size_t, bool* ok = 0, bool* didReadNumber = 0);
 
 enum FloatConversionFlags {
     ShouldRoundSignificantFigures = 1 << 0,

Modified: trunk/Source/WebCore/ChangeLog (108000 => 108001)


--- trunk/Source/WebCore/ChangeLog	2012-02-17 00:49:42 UTC (rev 108000)
+++ trunk/Source/WebCore/ChangeLog	2012-02-17 00:54:37 UTC (rev 108001)
@@ -1,3 +1,15 @@
+2012-02-16  Mark Hahnenberg  <mhahnenb...@apple.com>
+
+        Fix the broken viewport tests
+        https://bugs.webkit.org/show_bug.cgi?id=78774
+
+        Reviewed by Kenneth Rohde Christiansen.
+
+        No new tests.
+
+        * dom/ViewportArguments.cpp:
+        (WebCore::numericPrefix): Changed to use the new charactersToFloatWithJunk function(s).
+
 2012-02-16  Cris Neckar  <c...@chromium.org>
 
         Very large strings could cause the new quoted string to wrap.

Modified: trunk/Source/WebCore/dom/ViewportArguments.cpp (108000 => 108001)


--- trunk/Source/WebCore/dom/ViewportArguments.cpp	2012-02-17 00:49:42 UTC (rev 108000)
+++ trunk/Source/WebCore/dom/ViewportArguments.cpp	2012-02-17 00:54:37 UTC (rev 108001)
@@ -212,7 +212,11 @@
     // and we should check if the valueString prefix was a number.
 
     bool didReadNumber;
-    float value = valueString.toFloat(ok, &didReadNumber);
+    float value;
+    if (valueString.is8Bit())
+        value = WTF::charactersToFloatIgnoringJunk(valueString.characters8(), valueString.length(), ok, &didReadNumber);
+    else
+        value = WTF::charactersToFloatIgnoringJunk(valueString.characters16(), valueString.length(), ok, &didReadNumber);
     if (!*ok) {
         if (!didReadNumber) {
             ASSERT(!value);
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to