WebCore:
authordarin@apple.com <darin@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 12 Oct 2008 22:38:23 +0000 (22:38 +0000)
committerdarin@apple.com <darin@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 12 Oct 2008 22:38:23 +0000 (22:38 +0000)
2008-10-12  Jungshik Shin  <jshin@chromium.org>

        Reviewed by Darin Adler.

        Treat x-user-defined as windows-1252 for html files with meta charset
        declaration to be compatible with Indian web sites.
        ( https://bugs.webkit.org/show_bug.cgi?id=18270 )

        Test: fast/encoding/charset-xuser-defined.html

        * loader/TextResourceDecoder.cpp:
        (WebCore::TextResourceDecoder::setEncoding):

LayoutTests:

2008-10-12  Jungshik Shin  <jshin@chromium.org>

        Reviewed by Darin Adler.

        Treat x-user-defined as windows-1252 for html files with meta charset
        declaration to be compatible with Indian web sites.
        ( https://bugs.webkit.org/show_bug.cgi?id=18270 )

        * fast/encoding/charset-xuser-defined-expected.txt: Added.
        * fast/encoding/charset-xuser-defined.html: Added.

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

LayoutTests/ChangeLog
LayoutTests/fast/encoding/charset-xuser-defined-expected.txt [new file with mode: 0644]
LayoutTests/fast/encoding/charset-xuser-defined.html [new file with mode: 0644]
WebCore/ChangeLog
WebCore/loader/TextResourceDecoder.cpp

index 3472374..9b67385 100644 (file)
@@ -1,3 +1,14 @@
+2008-10-12  Jungshik Shin  <jshin@chromium.org>
+
+        Reviewed by Darin Adler.
+
+        Treat x-user-defined as windows-1252 for html files with meta charset
+        declaration to be compatible with Indian web sites.
+        ( https://bugs.webkit.org/show_bug.cgi?id=18270 )
+
+        * fast/encoding/charset-xuser-defined-expected.txt: Added.
+        * fast/encoding/charset-xuser-defined.html: Added.
+
 2008-10-12  Darin Adler  <darin@apple.com>
 
         Reviewed by Dan Bernstein.
diff --git a/LayoutTests/fast/encoding/charset-xuser-defined-expected.txt b/LayoutTests/fast/encoding/charset-xuser-defined-expected.txt
new file mode 100644 (file)
index 0000000..b5ff20b
--- /dev/null
@@ -0,0 +1,4 @@
+Test bugzilla bug 18270 (Interpreting x-user-defined as windows-1252 when declared in meta tag). Two lines below should be identical.
+
+€ ‚ƒ„…†‡ˆ‰Š‹Œ Ž ‘’“”•–—˜™š›œ žŸ ¡¢£¤¥¦§¨©ª«¬ ®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ
+€ ‚ƒ„…†‡ˆ‰Š‹Œ Ž ‘’“”•–—˜™š›œ žŸ ¡¢£¤¥¦§¨©ª«¬ ®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ
diff --git a/LayoutTests/fast/encoding/charset-xuser-defined.html b/LayoutTests/fast/encoding/charset-xuser-defined.html
new file mode 100644 (file)
index 0000000..45d7c50
--- /dev/null
@@ -0,0 +1,17 @@
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=x-user-defined">
+<title>x-user-defined (bug </title>
+</head>
+<body>
+<script>
+if (window.layoutTestController)
+    layoutTestController.dumpAsText();
+</script>
+<p>Test <a href="http://bugs.webkit.org/show_bug.cgi?id=18270">bugzilla bug 18270</a> (Interpreting x-user-defined as windows-1252 when
+declared in meta tag). Two lines below should be identical.</p>
+
+\80 \82\83\84\85\86\87\88\89\8a\8b\8c \8e  \91\92\93\94\95\96\97\98\99\9a\9b\9c \9e\9f ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ<br />
+&#x20ac; &#x201a;&#x0192;&#x201e;&#x2026;&#x2020;&#x2021;&#x02c6;&#x2030;&#x0160;&#x2039;&#x0152; &#x017d;  &#x2018;&#x2019;&#x201c;&#x201d;&#x2022;&#x2013;&#x2014;&#x02dc;&#x2122;&#x0161;&#x203a;&#x0153; &#x017e;&#x0178;&#x00a0;&#x00a1;&#x00a2;&#x00a3;&#x00a4;&#x00a5;&#x00a6;&#x00a7;&#x00a8;&#x00a9;&#x00aa;&#x00ab;&#x00ac;&#x00ad;&#x00ae;&#x00af;&#x00b0;&#x00b1;&#x00b2;&#x00b3;&#x00b4;&#x00b5;&#x00b6;&#x00b7;&#x00b8;&#x00b9;&#x00ba;&#x00bb;&#x00bc;&#x00bd;&#x00be;&#x00bf;&#x00c0;&#x00c1;&#x00c2;&#x00c3;&#x00c4;&#x00c5;&#x00c6;&#x00c7;&#x00c8;&#x00c9;&#x00ca;&#x00cb;&#x00cc;&#x00cd;&#x00ce;&#x00cf;&#x00d0;&#x00d1;&#x00d2;&#x00d3;&#x00d4;&#x00d5;&#x00d6;&#x00d7;&#x00d8;&#x00d9;&#x00da;&#x00db;&#x00dc;&#x00dd;&#x00de;&#x00df;&#x00e0;&#x00e1;&#x00e2;&#x00e3;&#x00e4;&#x00e5;&#x00e6;&#x00e7;&#x00e8;&#x00e9;&#x00ea;&#x00eb;&#x00ec;&#x00ed;&#x00ee;&#x00ef;&#x00f0;&#x00f1;&#x00f2;&#x00f3;&#x00f4;&#x00f5;&#x00f6;&#x00f7;&#x00f8;&#x00f9;&#x00fa;&#x00fb;&#x00fc;&#x00fd;&#x00fe;&#x00ff;
+</body>
+</html>
index 8180990..f73e4b7 100644 (file)
@@ -1,3 +1,16 @@
+2008-10-12  Jungshik Shin  <jshin@chromium.org>
+
+        Reviewed by Darin Adler.
+
+        Treat x-user-defined as windows-1252 for html files with meta charset
+        declaration to be compatible with Indian web sites.
+        ( https://bugs.webkit.org/show_bug.cgi?id=18270 )
+
+        Test: fast/encoding/charset-xuser-defined.html
+
+        * loader/TextResourceDecoder.cpp:
+        (WebCore::TextResourceDecoder::setEncoding):
+
 2008-10-12  Sam Weinig  <sam@webkit.org>
 
         Reviewed by Dan Bernstein.
index 979ee95..a8ccfdf 100644 (file)
@@ -340,7 +340,11 @@ void TextResourceDecoder::setEncoding(const TextEncoding& encoding, EncodingSour
     if (!encoding.isValid())
         return;
 
-    if (source == EncodingFromMetaTag || source == EncodingFromXMLHeader || source == EncodingFromCSSCharset)        
+    // When encoding comes from meta tag (i.e. it cannot be XML files sent via XHR),
+    // treat x-user-defined as windows-1252 (bug 18270)
+    if (source == EncodingFromMetaTag && strcasecmp(encoding.name(), "x-user-defined") == 0)
+        m_decoder.reset("windows-1252"); 
+    else if (source == EncodingFromMetaTag || source == EncodingFromXMLHeader || source == EncodingFromCSSCharset)        
         m_decoder.reset(encoding.closest8BitEquivalent());
     else
         m_decoder.reset(encoding);