REGRESSION(r69850) Loading apple.com/startpage in WebKit on Windows gets a bad request.
authorbweinstein@apple.com <bweinstein@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 16 Oct 2010 00:50:13 +0000 (00:50 +0000)
committerbweinstein@apple.com <bweinstein@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 16 Oct 2010 00:50:13 +0000 (00:50 +0000)
https://bugs.webkit.org/show_bug.cgi?id=47753
<rdar://problem/8558242>

Reviewed by Sam Weinig.

WebCore:

r69850 switched over to a different way of concatenating WebCore strings, but ran into an issue
where some Windows calls were returning null terminated strings, and this breaks the new
method of concatenation.

GetLocaleInfo returns a null-terminated string, but WebCore strings are non-null terminated,
so once we create our WebCore string, we want to trim off the null terminating character before
we return the localeInfo.

Test: fast/dom/navigator-userAgent.html

* platform/win/Language.cpp:
(WebCore::localeInfo):

WebKit/win:

VerQueryValue returns a null terminated string, but we need to strip off the null terminating character
when we turn it into a WebCore string, or else concatenation using this string will break.

* WebView.cpp:

LayoutTests:

Add a test to make sure that the user agent has some important parts, and is fully formed.
This test tests that the user agent has Mozilla, AppleWebKit, and KHML, like Gecko. If the
user agent has all of these components, the string concatenation worked correctly, and this
bug is fixed.

* fast/dom/navigator-userAgent-expected.txt: Added.
* fast/dom/navigator-userAgent.html: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@69900 268f45cc-cd09-0410-ab3c-d52691b4dbfc

LayoutTests/ChangeLog
LayoutTests/fast/dom/navigator-userAgent-expected.txt [new file with mode: 0644]
LayoutTests/fast/dom/navigator-userAgent.html [new file with mode: 0644]
WebCore/ChangeLog
WebCore/platform/win/Language.cpp
WebKit/win/ChangeLog
WebKit/win/WebView.cpp

index df55e78..fe18637 100644 (file)
@@ -1,3 +1,19 @@
+2010-10-15  Brian Weinstein  <bweinstein@apple.com>
+
+        Reviewed by Sam Weinig.
+
+        REGRESSION(r69850) Loading apple.com/startpage in WebKit on Windows gets a bad request.
+        https://bugs.webkit.org/show_bug.cgi?id=47753
+        <rdar://problem/8558242>
+        
+        Add a test to make sure that the user agent has some important parts, and is fully formed.
+        This test tests that the user agent has Mozilla, AppleWebKit, and KHML, like Gecko. If the
+        user agent has all of these components, the string concatenation worked correctly, and this
+        bug is fixed.
+
+        * fast/dom/navigator-userAgent-expected.txt: Added.
+        * fast/dom/navigator-userAgent.html: Added.
+
 2010-10-15  Mike Lawther  <mikelawther@chromium.org>
 
         Reviewed by James Robinson.
diff --git a/LayoutTests/fast/dom/navigator-userAgent-expected.txt b/LayoutTests/fast/dom/navigator-userAgent-expected.txt
new file mode 100644 (file)
index 0000000..78572f2
--- /dev/null
@@ -0,0 +1,5 @@
+Tests for bug 47753: REGRESSION(r69850) Loading apple.com/startpage in WebKit on Windows gets a bad request.
+
+User Agent should contain Mozilla: true
+User Agent should contain AppleWebKit: true
+User Agent should contain KHTML, like Gecko: true
diff --git a/LayoutTests/fast/dom/navigator-userAgent.html b/LayoutTests/fast/dom/navigator-userAgent.html
new file mode 100644 (file)
index 0000000..c89a305
--- /dev/null
@@ -0,0 +1,16 @@
+<html>\r
+<body>\r
+<p>Tests for <a href="https://bugs.webkit.org/show_bug.cgi?id=47753">bug 47753</a>: \r
+REGRESSION(r69850) Loading apple.com/startpage in WebKit on Windows gets a bad request.</p>\r
+<script>\r
+    if (window.layoutTestController)\r
+        layoutTestController.dumpAsText();\r
+\r
+    var userAgent = navigator.userAgent;\r
+\r
+    document.write("User Agent should contain Mozilla: " + (userAgent.indexOf("Mozilla") >= 0) + "<br>");\r
+    document.write("User Agent should contain AppleWebKit: " + (userAgent.indexOf("AppleWebKit") >= 0) + "<br>");\r
+    document.write("User Agent should contain KHTML, like Gecko: " + (userAgent.indexOf("KHTML, like Gecko") >= 0));\r
+</script>\r
+</body>\r
+</html>\r
index 259c17f..89a0fd4 100644 (file)
@@ -1,3 +1,24 @@
+2010-10-15  Brian Weinstein  <bweinstein@apple.com>
+
+        Reviewed by Sam Weinig.
+
+        REGRESSION(r69850) Loading apple.com/startpage in WebKit on Windows gets a bad request.
+        https://bugs.webkit.org/show_bug.cgi?id=47753
+        <rdar://problem/8558242>
+        
+        r69850 switched over to a different way of concatenating WebCore strings, but ran into an issue
+        where some Windows calls were returning null terminated strings, and this breaks the new
+        method of concatenation.
+        
+        GetLocaleInfo returns a null-terminated string, but WebCore strings are non-null terminated,
+        so once we create our WebCore string, we want to trim off the null terminating character before
+        we return the localeInfo.
+
+        Test: fast/dom/navigator-userAgent.html
+
+        * platform/win/Language.cpp:
+        (WebCore::localeInfo):
+
 2010-10-15  Alexey Proskuryakov  <ap@apple.com>
 
         Trying to fix crashes on Leopard buildbot.
index 1915549..e0fd206 100644 (file)
@@ -44,6 +44,7 @@ static String localeInfo(LCTYPE localeType, const String& fallback)
     if (localeName.isEmpty())
         return fallback;
 
+    localeName.truncate(localeName.length() - 1);
     return localeName;
 }
 
index cfc05d3..44b0222 100644 (file)
@@ -1,3 +1,16 @@
+2010-10-15  Brian Weinstein  <bweinstein@apple.com>
+
+        Reviewed by Sam Weinig.
+
+        REGRESSION(r69850) Loading apple.com/startpage in WebKit on Windows gets a bad request.
+        https://bugs.webkit.org/show_bug.cgi?id=47753
+        <rdar://problem/8558242>
+        
+        VerQueryValue returns a null terminated string, but we need to strip off the null terminating character
+        when we turn it into a WebCore string, or else concatenation using this string will break.
+
+        * WebView.cpp:
+
 2010-10-15  Jessie Berlin  <jberlin@apple.com>
 
         Windows build fix. Unreviewed.
index fe062f3..b57e06a 100644 (file)
@@ -2350,7 +2350,7 @@ static String webKitVersion()
     UINT productVersionLength;
     if (!VerQueryValue(data, (LPTSTR)(LPCTSTR)key, (void**)&productVersion, &productVersionLength))
         goto exit;
-    versionStr = String(productVersion, productVersionLength);
+    versionStr = String(productVersion, productVersionLength - 1);
 
 exit:
     if (data)