2009-03-23 Darin Adler <darin@apple.com>
authordarin@apple.com <darin@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 23 Mar 2009 19:05:48 +0000 (19:05 +0000)
committerdarin@apple.com <darin@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 23 Mar 2009 19:05:48 +0000 (19:05 +0000)
        Reviewed by Antti Koivisto.

        Based on a patch by Nico Weber <nicolasweber@gmx.de>

        Bug 24755: LayoutTests/http/tests/misc/url-in-utf16le.html regression
        https://bugs.webkit.org/show_bug.cgi?id=24755

        * platform/text/TextEncoding.cpp:
        (WebCore::TextEncoding::isUTF7Encoding): Added. Checks if the current encoding
        is UTF7 without loading extended codecs.
        (WebCore::TextEncoding::encodingForFormSubmission): Use isUTF7Encoding() instead
        of comparing with UTF7Encoding(). Eliminate the explicit check of
        noExtendedTextEncodingNameUsed() because that's now handled by the functions
        that this function calls instead.

        * platform/text/TextEncoding.h: Added isUTF7Encoding function.
        Also tweaked formatting a bit.

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

WebCore/ChangeLog
WebCore/platform/text/TextEncoding.cpp
WebCore/platform/text/TextEncoding.h

index 3541c24..6184335 100644 (file)
@@ -1,3 +1,23 @@
+2009-03-23  Darin Adler  <darin@apple.com>
+
+        Reviewed by Antti Koivisto.
+
+        Based on a patch by Nico Weber <nicolasweber@gmx.de>
+
+        Bug 24755: LayoutTests/http/tests/misc/url-in-utf16le.html regression
+        https://bugs.webkit.org/show_bug.cgi?id=24755
+
+        * platform/text/TextEncoding.cpp:
+        (WebCore::TextEncoding::isUTF7Encoding): Added. Checks if the current encoding
+        is UTF7 without loading extended codecs.
+        (WebCore::TextEncoding::encodingForFormSubmission): Use isUTF7Encoding() instead
+        of comparing with UTF7Encoding(). Eliminate the explicit check of
+        noExtendedTextEncodingNameUsed() because that's now handled by the functions
+        that this function calls instead.
+
+        * platform/text/TextEncoding.h: Added isUTF7Encoding function.
+        Also tweaked formatting a bit.
+
 2009-03-20  Peter Kasting  <pkasting@google.com>
 
         Reviewed by Darin Fisher.
index a756f18..ed58412 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2004, 2006, 2007, 2008 Apple Inc. All rights reserved.
+ * Copyright (C) 2004, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
  * Copyright (C) 2006 Alexey Proskuryakov <ap@nypop.com>
  *
  * Redistribution and use in source and binary forms, with or without
@@ -166,12 +166,21 @@ bool TextEncoding::isNonByteBasedEncoding() const
 {
     if (noExtendedTextEncodingNameUsed()) {
         return *this == UTF16LittleEndianEncoding()
-               || *this == UTF16BigEndianEncoding();
+            || *this == UTF16BigEndianEncoding();
     }
+
     return *this == UTF16LittleEndianEncoding()
-           || *this == UTF16BigEndianEncoding()
-           || *this == UTF32BigEndianEncoding()
-           || *this == UTF32LittleEndianEncoding();
+        || *this == UTF16BigEndianEncoding()
+        || *this == UTF32BigEndianEncoding()
+        || *this == UTF32LittleEndianEncoding();
+}
+
+bool TextEncoding::isUTF7Encoding() const
+{
+    if (noExtendedTextEncodingNameUsed())
+        return false;
+
+    return *this == UTF7Encoding();
 }
 
 const TextEncoding& TextEncoding::closestByteBasedEquivalent() const
@@ -188,9 +197,7 @@ const TextEncoding& TextEncoding::closestByteBasedEquivalent() const
 // but it's fraught with problems and we'd rather steer clear of it.
 const TextEncoding& TextEncoding::encodingForFormSubmission() const
 {
-    if (noExtendedTextEncodingNameUsed())
-        return *this;
-    if (isNonByteBasedEncoding() || *this == UTF7Encoding())
+    if (isNonByteBasedEncoding() || isUTF7Encoding())
         return UTF8Encoding();
     return *this;
 }
index b2bb816..b3909f7 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2004, 2006 Apple Computer, Inc.  All rights reserved.
+ * Copyright (C) 2004, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -45,12 +45,14 @@ namespace WebCore {
         bool usesVisualOrdering() const;
         bool isJapanese() const;
         
-        PassRefPtr<StringImpl> displayString(PassRefPtr<StringImpl> str) const {
+        PassRefPtr<StringImpl> displayString(PassRefPtr<StringImpl> str) const
+        {
             if (m_backslashAsCurrencySymbol == '\\' || !str)
                 return str;
             return str->replace('\\', m_backslashAsCurrencySymbol);
         }
-        void displayBuffer(UChar* characters, unsigned len) const {
+        void displayBuffer(UChar* characters, unsigned len) const
+        {
             if (m_backslashAsCurrencySymbol == '\\')
                 return;
             for (unsigned i = 0; i < len; ++i) {
@@ -72,10 +74,11 @@ namespace WebCore {
 
     private:
         UChar backslashAsCurrencySymbol() const;
+        bool isNonByteBasedEncoding() const;
+        bool isUTF7Encoding() const;
 
         const char* m_name;
         UChar m_backslashAsCurrencySymbol;
-        bool isNonByteBasedEncoding() const;
     };
 
     inline bool operator==(const TextEncoding& a, const TextEncoding& b) { return a.name() == b.name(); }