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);