Title: [170029] trunk/Source
Revision
170029
Author
[email protected]
Date
2014-06-16 15:28:18 -0700 (Mon, 16 Jun 2014)

Log Message

Don't use AtomicString in HTTPHeaderMap
https://bugs.webkit.org/show_bug.cgi?id=133957
<rdar://problem/15256572>

Reviewed by Andreas Kling.

Source/WebCore:
Use the string data that comes from the generated HTTPHeaderNames.cpp file
for sharing header name data instead. In the future we can do something more fancy where
we'll hash the HTTPHeaderName enum directly, but this is good enough for now.

* Modules/websockets/WebSocketHandshake.cpp:
(WebCore::WebSocketHandshake::readHTTPHeaders):
* WebCore.exp.in:
* inspector/InspectorResourceAgent.cpp:
(WebCore::buildObjectForHeaders):
* loader/CrossOriginPreflightResultCache.cpp:
(WebCore::CrossOriginPreflightResultCacheItem::allowsCrossOriginHeaders):
* loader/appcache/ApplicationCacheStorage.cpp:
(WebCore::parseHeader):
* loader/cache/CachedResource.cpp:
(WebCore::shouldUpdateHeaderAfterRevalidation):
* platform/network/HTTPHeaderMap.cpp:
(WebCore::HTTPHeaderMap::copyData):
(WebCore::internHTTPHeaderNameString):
(WebCore::HTTPHeaderMap::get):
(WebCore::HTTPHeaderMap::set):
(WebCore::HTTPHeaderMap::add):
(WebCore::CaseFoldingCStringTranslator::hash): Deleted.
(WebCore::CaseFoldingCStringTranslator::equal): Deleted.
(WebCore::CaseFoldingCStringTranslator::translate): Deleted.
* platform/network/HTTPHeaderMap.h:
* platform/network/HTTPHeaderNames.in:
* platform/network/HTTPParsers.cpp:
(WebCore::parseHTTPHeader):
* platform/network/HTTPParsers.h:
* platform/network/ResourceRequestBase.cpp:
(WebCore::ResourceRequestBase::httpHeaderField):
(WebCore::ResourceRequestBase::setHTTPHeaderField):
(WebCore::ResourceRequestBase::addHTTPHeaderField):
* platform/network/ResourceRequestBase.h:
* platform/network/ResourceResponseBase.cpp:
(WebCore::ResourceResponseBase::httpHeaderField):
(WebCore::ResourceResponseBase::setHTTPHeaderField):
(WebCore::ResourceResponseBase::addHTTPHeaderField):
* platform/network/ResourceResponseBase.h:
* platform/network/mac/ResourceRequestMac.mm:
(WebCore::ResourceRequest::doUpdateResourceRequest):
* platform/network/mac/ResourceResponseMac.mm:
(WebCore::ResourceResponse::platformLazyInit):
* xml/XMLHttpRequest.cpp:
(WebCore::XMLHttpRequest::setRequestHeader):
(WebCore::XMLHttpRequest::setRequestHeaderInternal):
(WebCore::XMLHttpRequest::getRequestHeader):
(WebCore::XMLHttpRequest::getResponseHeader):
* xml/XMLHttpRequest.h:

Source/WebKit2:
Update for WebCore changes.

* Shared/WebCoreArgumentCoders.cpp:
(IPC::ArgumentCoder<HTTPHeaderMap>::decode):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (170028 => 170029)


--- trunk/Source/WebCore/ChangeLog	2014-06-16 21:44:16 UTC (rev 170028)
+++ trunk/Source/WebCore/ChangeLog	2014-06-16 22:28:18 UTC (rev 170029)
@@ -1,3 +1,61 @@
+2014-06-16  Anders Carlsson  <[email protected]>
+
+        Don't use AtomicString in HTTPHeaderMap
+        https://bugs.webkit.org/show_bug.cgi?id=133957
+        <rdar://problem/15256572>
+
+        Reviewed by Andreas Kling.
+
+        Use the string data that comes from the generated HTTPHeaderNames.cpp file
+        for sharing header name data instead. In the future we can do something more fancy where
+        we'll hash the HTTPHeaderName enum directly, but this is good enough for now.
+
+        * Modules/websockets/WebSocketHandshake.cpp:
+        (WebCore::WebSocketHandshake::readHTTPHeaders):
+        * WebCore.exp.in:
+        * inspector/InspectorResourceAgent.cpp:
+        (WebCore::buildObjectForHeaders):
+        * loader/CrossOriginPreflightResultCache.cpp:
+        (WebCore::CrossOriginPreflightResultCacheItem::allowsCrossOriginHeaders):
+        * loader/appcache/ApplicationCacheStorage.cpp:
+        (WebCore::parseHeader):
+        * loader/cache/CachedResource.cpp:
+        (WebCore::shouldUpdateHeaderAfterRevalidation):
+        * platform/network/HTTPHeaderMap.cpp:
+        (WebCore::HTTPHeaderMap::copyData):
+        (WebCore::internHTTPHeaderNameString):
+        (WebCore::HTTPHeaderMap::get):
+        (WebCore::HTTPHeaderMap::set):
+        (WebCore::HTTPHeaderMap::add):
+        (WebCore::CaseFoldingCStringTranslator::hash): Deleted.
+        (WebCore::CaseFoldingCStringTranslator::equal): Deleted.
+        (WebCore::CaseFoldingCStringTranslator::translate): Deleted.
+        * platform/network/HTTPHeaderMap.h:
+        * platform/network/HTTPHeaderNames.in:
+        * platform/network/HTTPParsers.cpp:
+        (WebCore::parseHTTPHeader):
+        * platform/network/HTTPParsers.h:
+        * platform/network/ResourceRequestBase.cpp:
+        (WebCore::ResourceRequestBase::httpHeaderField):
+        (WebCore::ResourceRequestBase::setHTTPHeaderField):
+        (WebCore::ResourceRequestBase::addHTTPHeaderField):
+        * platform/network/ResourceRequestBase.h:
+        * platform/network/ResourceResponseBase.cpp:
+        (WebCore::ResourceResponseBase::httpHeaderField):
+        (WebCore::ResourceResponseBase::setHTTPHeaderField):
+        (WebCore::ResourceResponseBase::addHTTPHeaderField):
+        * platform/network/ResourceResponseBase.h:
+        * platform/network/mac/ResourceRequestMac.mm:
+        (WebCore::ResourceRequest::doUpdateResourceRequest):
+        * platform/network/mac/ResourceResponseMac.mm:
+        (WebCore::ResourceResponse::platformLazyInit):
+        * xml/XMLHttpRequest.cpp:
+        (WebCore::XMLHttpRequest::setRequestHeader):
+        (WebCore::XMLHttpRequest::setRequestHeaderInternal):
+        (WebCore::XMLHttpRequest::getRequestHeader):
+        (WebCore::XMLHttpRequest::getResponseHeader):
+        * xml/XMLHttpRequest.h:
+
 2014-06-16  Chris Fleizach  <[email protected]>
 
         AX: Safari crashed once in WebCore::AccessibilityObject::ariaIsHidden

Modified: trunk/Source/WebCore/Modules/websockets/WebSocketHandshake.cpp (170028 => 170029)


--- trunk/Source/WebCore/Modules/websockets/WebSocketHandshake.cpp	2014-06-16 21:44:16 UTC (rev 170028)
+++ trunk/Source/WebCore/Modules/websockets/WebSocketHandshake.cpp	2014-06-16 22:28:18 UTC (rev 170029)
@@ -461,7 +461,7 @@
 
 const char* WebSocketHandshake::readHTTPHeaders(const char* start, const char* end)
 {
-    AtomicString name;
+    String name;
     String value;
     bool sawSecWebSocketExtensionsHeaderField = false;
     bool sawSecWebSocketAcceptHeaderField = false;

Modified: trunk/Source/WebCore/WebCore.exp.in (170028 => 170029)


--- trunk/Source/WebCore/WebCore.exp.in	2014-06-16 21:44:16 UTC (rev 170028)
+++ trunk/Source/WebCore/WebCore.exp.in	2014-06-16 22:28:18 UTC (rev 170029)
@@ -289,8 +289,7 @@
 __ZN7WebCore13GraphicsLayer8addChildEPS0_
 __ZN7WebCore13GraphicsLayerC2ERNS_19GraphicsLayerClientE
 __ZN7WebCore13GraphicsLayerD2Ev
-__ZN7WebCore13HTTPHeaderMap3addERKN3WTF12AtomicStringERKNS1_6StringE
-__ZN7WebCore13HTTPHeaderMap3setERKN3WTF12AtomicStringERKNS1_6StringE
+__ZN7WebCore13HTTPHeaderMap3setERKN3WTF6StringES4_
 __ZN7WebCore13HTTPHeaderMap6removeENS_14HTTPHeaderNameE
 __ZN7WebCore13HTTPHeaderMapC1Ev
 __ZN7WebCore13HTTPHeaderMapD1Ev
@@ -857,7 +856,7 @@
 __ZN7WebCore20ResourceResponseBase11setMimeTypeERKN3WTF6StringE
 __ZN7WebCore20ResourceResponseBase17setHTTPStatusCodeEi
 __ZN7WebCore20ResourceResponseBase17setHTTPStatusTextERKN3WTF6StringE
-__ZN7WebCore20ResourceResponseBase18setHTTPHeaderFieldERKN3WTF12AtomicStringERKNS1_6StringE
+__ZN7WebCore20ResourceResponseBase18setHTTPHeaderFieldERKN3WTF6StringES4_
 __ZN7WebCore20ResourceResponseBase19setTextEncodingNameERKN3WTF6StringE
 __ZN7WebCore20ResourceResponseBase20setSuggestedFilenameERKN3WTF6StringE
 __ZN7WebCore20ResourceResponseBase24setExpectedContentLengthEx
@@ -1609,7 +1608,7 @@
 __ZNK7WebCore13GraphicsLayer18getDebugBorderInfoERNS_5ColorERf
 __ZNK7WebCore13GraphicsLayer26backingStoreMemoryEstimateEv
 __ZNK7WebCore13HTTPHeaderMap3getENS_14HTTPHeaderNameE
-__ZNK7WebCore13HTTPHeaderMap3getERKN3WTF12AtomicStringE
+__ZNK7WebCore13HTTPHeaderMap3getERKN3WTF6StringE
 __ZNK7WebCore13HitTestResult10isLiveLinkEv
 __ZNK7WebCore13HitTestResult10isSelectedEv
 __ZNK7WebCore13HitTestResult11targetFrameEv

Modified: trunk/Source/WebCore/inspector/InspectorResourceAgent.cpp (170028 => 170029)


--- trunk/Source/WebCore/inspector/InspectorResourceAgent.cpp	2014-06-16 21:44:16 UTC (rev 170028)
+++ trunk/Source/WebCore/inspector/InspectorResourceAgent.cpp	2014-06-16 22:28:18 UTC (rev 170029)
@@ -197,7 +197,7 @@
     RefPtr<InspectorObject> headersObject = InspectorObject::create();
     
     for (const auto& header : headers)
-        headersObject->setString(header.key.string(), header.value);
+        headersObject->setString(header.key, header.value);
     return headersObject;
 }
 

Modified: trunk/Source/WebCore/loader/CrossOriginPreflightResultCache.cpp (170028 => 170029)


--- trunk/Source/WebCore/loader/CrossOriginPreflightResultCache.cpp	2014-06-16 21:44:16 UTC (rev 170028)
+++ trunk/Source/WebCore/loader/CrossOriginPreflightResultCache.cpp	2014-06-16 22:28:18 UTC (rev 170029)
@@ -128,7 +128,7 @@
 {
     for (const auto& header : requestHeaders) {
         if (!m_headers.contains(header.key) && !isOnAccessControlSimpleRequestHeaderWhitelist(header.key, header.value)) {
-            errorDescription = "Request header field " + header.key.string() + " is not allowed by Access-Control-Allow-Headers.";
+            errorDescription = "Request header field " + header.key + " is not allowed by Access-Control-Allow-Headers.";
             return false;
         }
     }

Modified: trunk/Source/WebCore/loader/appcache/ApplicationCacheStorage.cpp (170028 => 170029)


--- trunk/Source/WebCore/loader/appcache/ApplicationCacheStorage.cpp	2014-06-16 21:44:16 UTC (rev 170028)
+++ trunk/Source/WebCore/loader/appcache/ApplicationCacheStorage.cpp	2014-06-16 22:28:18 UTC (rev 170029)
@@ -1094,7 +1094,7 @@
     size_t pos = find(header, headerLength, ':');
     ASSERT(pos != notFound);
     
-    AtomicString headerName = AtomicString(header, pos);
+    String headerName = AtomicString(header, pos);
     String headerValue = String(header + pos + 1, headerLength - pos - 1);
     
     response.setHTTPHeaderField(headerName, headerValue);

Modified: trunk/Source/WebCore/loader/cache/CachedResource.cpp (170028 => 170029)


--- trunk/Source/WebCore/loader/cache/CachedResource.cpp	2014-06-16 21:44:16 UTC (rev 170028)
+++ trunk/Source/WebCore/loader/cache/CachedResource.cpp	2014-06-16 22:28:18 UTC (rev 170029)
@@ -92,7 +92,7 @@
     "x-webkit-"
 };
 
-static inline bool shouldUpdateHeaderAfterRevalidation(const AtomicString& header)
+static inline bool shouldUpdateHeaderAfterRevalidation(const String& header)
 {
     for (size_t i = 0; i < WTF_ARRAY_LENGTH(headersToIgnoreAfterRevalidation); i++) {
         if (equalIgnoringCase(header, headersToIgnoreAfterRevalidation[i]))

Modified: trunk/Source/WebCore/platform/network/HTTPHeaderMap.cpp (170028 => 170029)


--- trunk/Source/WebCore/platform/network/HTTPHeaderMap.cpp	2014-06-16 21:44:16 UTC (rev 170028)
+++ trunk/Source/WebCore/platform/network/HTTPHeaderMap.cpp	2014-06-16 22:28:18 UTC (rev 170029)
@@ -51,7 +51,7 @@
     data->reserveInitialCapacity(m_headers.size());
 
     for (const auto& header : *this)
-        data->uncheckedAppend(std::make_pair(header.key.string().isolatedCopy(), header.value.isolatedCopy()));
+        data->uncheckedAppend(std::make_pair(header.key.isolatedCopy(), header.value.isolatedCopy()));
 
     return data;
 }
@@ -64,41 +64,32 @@
         m_headers.add(std::move(header.first), std::move(header.second));
 }
 
-String HTTPHeaderMap::get(const AtomicString& name) const
+static String internHTTPHeaderNameString(const String& nameString)
 {
-    return m_headers.get(name);
+    HTTPHeaderName headerName;
+    if (!findHTTPHeaderName(nameString, headerName))
+        return nameString;
+
+    return httpHeaderNameString(headerName).toStringWithoutCopying();
 }
 
-void HTTPHeaderMap::set(const AtomicString& name, const String& value)
+String HTTPHeaderMap::get(const String& name) const
 {
-    m_headers.set(name, value);
+    return m_headers.get(internHTTPHeaderNameString(name));
 }
 
-void HTTPHeaderMap::add(const AtomicString& name, const String& value)
+void HTTPHeaderMap::set(const String& name, const String& value)
 {
-    auto result = m_headers.add(name, value);
+    m_headers.set(internHTTPHeaderNameString(name), value);
+}
+
+void HTTPHeaderMap::add(const String& name, const String& value)
+{
+    auto result = m_headers.add(internHTTPHeaderNameString(name), value);
     if (!result.isNewEntry)
         result.iterator->value = result.iterator->value + ", " + value;
 }
 
-// Adapter that allows the HashMap to take C strings as keys.
-struct CaseFoldingCStringTranslator {
-    static unsigned hash(const char* cString)
-    {
-        return CaseFoldingHash::hash(cString, strlen(cString));
-    }
-    
-    static bool equal(const AtomicString& key, const char* cString)
-    {
-        return equalIgnoringCase(key, cString);
-    }
-    
-    static void translate(AtomicString& location, const char* cString, unsigned /*hash*/)
-    {
-        location = AtomicString(cString);
-    }
-};
-
 String HTTPHeaderMap::get(HTTPHeaderName name) const
 {
     auto it = find(name);

Modified: trunk/Source/WebCore/platform/network/HTTPHeaderMap.h (170028 => 170029)


--- trunk/Source/WebCore/platform/network/HTTPHeaderMap.h	2014-06-16 21:44:16 UTC (rev 170028)
+++ trunk/Source/WebCore/platform/network/HTTPHeaderMap.h	2014-06-16 22:28:18 UTC (rev 170029)
@@ -43,7 +43,7 @@
 // FIXME: Not every header fits into a map. Notably, multiple Set-Cookie header fields are needed to set multiple cookies.
 
 class HTTPHeaderMap {
-    typedef HashMap<AtomicString, String, CaseFoldingHash> HashMapType;
+    typedef HashMap<String, String, CaseFoldingHash> HashMapType;
 public:
     typedef HashMapType::const_iterator const_iterator;
 
@@ -59,9 +59,9 @@
 
     void clear() { m_headers.clear(); }
 
-    String get(const AtomicString& name) const;
-    void set(const AtomicString& name, const String& value);
-    void add(const AtomicString& name, const String& value);
+    String get(const String& name) const;
+    void set(const String& name, const String& value);
+    void add(const String& name, const String& value);
 
     String get(HTTPHeaderName) const;
     void set(HTTPHeaderName, const String& value);
@@ -90,6 +90,9 @@
     }
 
 private:
+    // FIXME: Instead of having a HashMap<String, String>, we could have two hash maps,
+    // one HashMap<HTTPHeaderName, String> for common headers and another HashMap<String, String> for
+    // less common headers.
     HashMapType m_headers;
 };
 

Modified: trunk/Source/WebCore/platform/network/HTTPHeaderNames.in (170028 => 170029)


--- trunk/Source/WebCore/platform/network/HTTPHeaderNames.in	2014-06-16 21:44:16 UTC (rev 170028)
+++ trunk/Source/WebCore/platform/network/HTTPHeaderNames.in	2014-06-16 22:28:18 UTC (rev 170029)
@@ -25,7 +25,9 @@
 
 Accept
 Accept-Charset
+Accept-Language
 Accept-Encoding
+Accept-Ranges
 Access-Control-Allow-Credentials
 Access-Control-Allow-Headers
 Access-Control-Allow-Methods
@@ -35,6 +37,7 @@
 Access-Control-Request-Headers
 Access-Control-Request-Method
 Age
+Alternate-Protocol
 Authorization
 Cache-Control
 Connection
@@ -77,6 +80,7 @@
 Sec-WebSocket-Key
 Sec-WebSocket-Protocol
 Sec-WebSocket-Version
+Server
 Set-Cookie
 Set-Cookie2
 TE
@@ -85,11 +89,16 @@
 Transfer-Encoding
 Upgrade
 User-Agent
+Vary
 Via
+X-Check-Cacheable
+X-Content-Type-Options
 X-DNS-Prefetch-Control
 X-Frame-Options
+X-Powered-By
 X-WebKit-CSP
 X-WebKit-CSP-Report-Only
+X-XSS-Protection
 
 // These headers are specific to GStreamer.
 Accept-Ranges

Modified: trunk/Source/WebCore/platform/network/HTTPParsers.cpp (170028 => 170029)


--- trunk/Source/WebCore/platform/network/HTTPParsers.cpp	2014-06-16 21:44:16 UTC (rev 170028)
+++ trunk/Source/WebCore/platform/network/HTTPParsers.cpp	2014-06-16 22:28:18 UTC (rev 170029)
@@ -605,7 +605,7 @@
     return end - data;
 }
 
-size_t parseHTTPHeader(const char* start, size_t length, String& failureReason, AtomicString& nameStr, String& valueStr, bool strict)
+size_t parseHTTPHeader(const char* start, size_t length, String& failureReason, String& nameStr, String& valueStr, bool strict)
 {
     const char* p = start;
     const char* end = start + length;
@@ -665,7 +665,7 @@
         failureReason = "CR doesn't follow LF after value at " + trimInputSample(p, end - p);
         return 0;
     }
-    nameStr = AtomicString::fromUTF8(name.data(), name.size());
+    nameStr = String::fromUTF8(name.data(), name.size());
     valueStr = String::fromUTF8(value.data(), value.size());
     if (nameStr.isNull()) {
         failureReason = "Invalid UTF-8 sequence in header name";

Modified: trunk/Source/WebCore/platform/network/HTTPParsers.h (170028 => 170029)


--- trunk/Source/WebCore/platform/network/HTTPParsers.h	2014-06-16 21:44:16 UTC (rev 170028)
+++ trunk/Source/WebCore/platform/network/HTTPParsers.h	2014-06-16 22:28:18 UTC (rev 170029)
@@ -83,7 +83,7 @@
 // Parsing Complete HTTP Messages.
 enum HTTPVersion { Unknown, HTTP_1_0, HTTP_1_1 };
 size_t parseHTTPRequestLine(const char* data, size_t length, String& failureReason, String& method, String& url, HTTPVersion&);
-size_t parseHTTPHeader(const char* data, size_t length, String& failureReason, AtomicString& nameStr, String& valueStr, bool strict = true);
+size_t parseHTTPHeader(const char* data, size_t length, String& failureReason, String& nameStr, String& valueStr, bool strict = true);
 size_t parseHTTPRequestBody(const char* data, size_t length, Vector<unsigned char>& body);
 
 }

Modified: trunk/Source/WebCore/platform/network/ResourceRequestBase.cpp (170028 => 170029)


--- trunk/Source/WebCore/platform/network/ResourceRequestBase.cpp	2014-06-16 21:44:16 UTC (rev 170028)
+++ trunk/Source/WebCore/platform/network/ResourceRequestBase.cpp	2014-06-16 22:28:18 UTC (rev 170029)
@@ -232,7 +232,7 @@
     return m_httpHeaderFields; 
 }
 
-String ResourceRequestBase::httpHeaderField(const AtomicString& name) const
+String ResourceRequestBase::httpHeaderField(const String& name) const
 {
     updateResourceRequest(); 
     
@@ -246,7 +246,7 @@
     return m_httpHeaderFields.get(name);
 }
 
-void ResourceRequestBase::setHTTPHeaderField(const AtomicString& name, const String& value)
+void ResourceRequestBase::setHTTPHeaderField(const String& name, const String& value)
 {
     updateResourceRequest();
 
@@ -453,7 +453,7 @@
         m_platformRequestUpdated = false;
 }
 
-void ResourceRequestBase::addHTTPHeaderField(const AtomicString& name, const String& value) 
+void ResourceRequestBase::addHTTPHeaderField(const String& name, const String& value) 
 {
     updateResourceRequest();
 

Modified: trunk/Source/WebCore/platform/network/ResourceRequestBase.h (170028 => 170029)


--- trunk/Source/WebCore/platform/network/ResourceRequestBase.h	2014-06-16 21:44:16 UTC (rev 170028)
+++ trunk/Source/WebCore/platform/network/ResourceRequestBase.h	2014-06-16 22:28:18 UTC (rev 170029)
@@ -82,11 +82,11 @@
         const HTTPHeaderMap& httpHeaderFields() const;
         void setHTTPHeaderFields(HTTPHeaderMap);
 
-        String httpHeaderField(const AtomicString& name) const;
+        String httpHeaderField(const String& name) const;
         String httpHeaderField(HTTPHeaderName) const;
-        void setHTTPHeaderField(const AtomicString& name, const String& value);
+        void setHTTPHeaderField(const String& name, const String& value);
         void setHTTPHeaderField(HTTPHeaderName, const String& value);
-        void addHTTPHeaderField(const AtomicString& name, const String& value);
+        void addHTTPHeaderField(const String& name, const String& value);
 
         // Instead of passing a string literal to any of these functions, just use a HTTPHeaderName instead.
         template<size_t length> String httpHeaderField(const char (&)[length]) const = delete;

Modified: trunk/Source/WebCore/platform/network/ResourceResponseBase.cpp (170028 => 170029)


--- trunk/Source/WebCore/platform/network/ResourceResponseBase.cpp	2014-06-16 21:44:16 UTC (rev 170028)
+++ trunk/Source/WebCore/platform/network/ResourceResponseBase.cpp	2014-06-16 22:28:18 UTC (rev 170029)
@@ -259,7 +259,7 @@
     // FIXME: Should invalidate or update platform response if present.
 }
 
-String ResourceResponseBase::httpHeaderField(const AtomicString& name) const
+String ResourceResponseBase::httpHeaderField(const String& name) const
 {
     lazyInit(CommonFieldsOnly);
 
@@ -316,12 +316,12 @@
     }
 }
 
-void ResourceResponseBase::setHTTPHeaderField(const AtomicString& name, const String& value)
+void ResourceResponseBase::setHTTPHeaderField(const String& name, const String& value)
 {
     lazyInit(CommonAndUncommonFields);
 
     HTTPHeaderName headerName;
-    if (findHTTPHeaderName(name.string(), headerName))
+    if (findHTTPHeaderName(name, headerName))
         updateHeaderParsedState(headerName);
 
     m_httpHeaderFields.set(name, value);
@@ -340,12 +340,12 @@
     // FIXME: Should invalidate or update platform response if present.
 }
 
-void ResourceResponseBase::addHTTPHeaderField(const AtomicString& name, const String& value)
+void ResourceResponseBase::addHTTPHeaderField(const String& name, const String& value)
 {
     lazyInit(CommonAndUncommonFields);
 
     HTTPHeaderName headerName;
-    if (findHTTPHeaderName(name.string(), headerName))
+    if (findHTTPHeaderName(name, headerName))
         updateHeaderParsedState(headerName);
 
     m_httpHeaderFields.add(name, value);

Modified: trunk/Source/WebCore/platform/network/ResourceResponseBase.h (170028 => 170029)


--- trunk/Source/WebCore/platform/network/ResourceResponseBase.h	2014-06-16 21:44:16 UTC (rev 170028)
+++ trunk/Source/WebCore/platform/network/ResourceResponseBase.h	2014-06-16 22:28:18 UTC (rev 170029)
@@ -80,12 +80,12 @@
 
     const HTTPHeaderMap& httpHeaderFields() const;
 
-    String httpHeaderField(const AtomicString& name) const;
+    String httpHeaderField(const String& name) const;
     String httpHeaderField(HTTPHeaderName) const;
-    void setHTTPHeaderField(const AtomicString& name, const String& value);
+    void setHTTPHeaderField(const String& name, const String& value);
     void setHTTPHeaderField(HTTPHeaderName, const String& value);
 
-    void addHTTPHeaderField(const AtomicString& name, const String& value);
+    void addHTTPHeaderField(const String& name, const String& value);
 
     // Instead of passing a string literal to any of these functions, just use a HTTPHeaderName instead.
     template<size_t length> String httpHeaderField(const char (&)[length]) const = delete;

Modified: trunk/Source/WebCore/platform/network/mac/ResourceRequestMac.mm (170028 => 170029)


--- trunk/Source/WebCore/platform/network/mac/ResourceRequestMac.mm	2014-06-16 21:44:16 UTC (rev 170028)
+++ trunk/Source/WebCore/platform/network/mac/ResourceRequestMac.mm	2014-06-16 22:28:18 UTC (rev 170029)
@@ -116,7 +116,7 @@
     NSString *name;
     m_httpHeaderFields.clear();
     while ((name = [e nextObject]))
-        m_httpHeaderFields.set(name, [headers objectForKey:name]);
+        m_httpHeaderFields.set(String(name), [headers objectForKey:name]);
 
     m_responseContentDispositionEncodingFallbackArray.clear();
     NSArray *encodingFallbacks = [m_nsRequest.get() contentDispositionEncodingFallbackArray];

Modified: trunk/Source/WebCore/platform/network/mac/ResourceResponseMac.mm (170028 => 170029)


--- trunk/Source/WebCore/platform/network/mac/ResourceResponseMac.mm	2014-06-16 21:44:16 UTC (rev 170028)
+++ trunk/Source/WebCore/platform/network/mac/ResourceResponseMac.mm	2014-06-16 22:28:18 UTC (rev 170029)
@@ -131,7 +131,7 @@
             
             for (unsigned i = 0; i < WTF_ARRAY_LENGTH(commonHeaderFields); ++i) {
                 if (NSString* headerValue = [headers objectForKey:commonHeaderFields[i]])
-                    m_httpHeaderFields.set([commonHeaderFields[i] UTF8String], headerValue);
+                    m_httpHeaderFields.set(String(commonHeaderFields[i]), headerValue);
             }
         } else
             m_httpStatusCode = 0;
@@ -154,7 +154,7 @@
             NSDictionary *headers = [httpResponse allHeaderFields];
             NSEnumerator *e = [headers keyEnumerator];
             while (NSString *name = [e nextObject])
-                m_httpHeaderFields.set(name, [headers objectForKey:name]);
+                m_httpHeaderFields.set(String(name), [headers objectForKey:name]);
             
             [pool drain];
         }

Modified: trunk/Source/WebCore/xml/XMLHttpRequest.cpp (170028 => 170029)


--- trunk/Source/WebCore/xml/XMLHttpRequest.cpp	2014-06-16 21:44:16 UTC (rev 170028)
+++ trunk/Source/WebCore/xml/XMLHttpRequest.cpp	2014-06-16 22:28:18 UTC (rev 170029)
@@ -913,7 +913,7 @@
     m_mimeTypeOverride = override;
 }
 
-void XMLHttpRequest::setRequestHeader(const AtomicString& name, const String& value, ExceptionCode& ec)
+void XMLHttpRequest::setRequestHeader(const String& name, const String& value, ExceptionCode& ec)
 {
     if (m_state != OPENED || m_loader) {
 #if ENABLE(DASHBOARD_SUPPORT)
@@ -939,12 +939,12 @@
     setRequestHeaderInternal(name, value);
 }
 
-void XMLHttpRequest::setRequestHeaderInternal(const AtomicString& name, const String& value)
+void XMLHttpRequest::setRequestHeaderInternal(const String& name, const String& value)
 {
     m_requestHeaders.add(name, value);
 }
 
-String XMLHttpRequest::getRequestHeader(const AtomicString& name) const
+String XMLHttpRequest::getRequestHeader(const String& name) const
 {
     return m_requestHeaders.get(name);
 }
@@ -983,7 +983,7 @@
     return stringBuilder.toString();
 }
 
-String XMLHttpRequest::getResponseHeader(const AtomicString& name) const
+String XMLHttpRequest::getResponseHeader(const String& name) const
 {
     if (m_state < HEADERS_RECEIVED || m_error)
         return String();

Modified: trunk/Source/WebCore/xml/XMLHttpRequest.h (170028 => 170029)


--- trunk/Source/WebCore/xml/XMLHttpRequest.h	2014-06-16 21:44:16 UTC (rev 170028)
+++ trunk/Source/WebCore/xml/XMLHttpRequest.h	2014-06-16 22:28:18 UTC (rev 170029)
@@ -102,11 +102,11 @@
     void send(JSC::ArrayBuffer*, ExceptionCode&);
     void send(JSC::ArrayBufferView*, ExceptionCode&);
     void abort();
-    void setRequestHeader(const AtomicString& name, const String& value, ExceptionCode&);
+    void setRequestHeader(const String& name, const String& value, ExceptionCode&);
     void overrideMimeType(const String& override);
     bool doneWithoutErrors() const { return !m_error && m_state == DONE; }
     String getAllResponseHeaders() const;
-    String getResponseHeader(const AtomicString& name) const;
+    String getResponseHeader(const String& name) const;
     String responseText(ExceptionCode&);
     String responseTextIgnoringResponseType() const { return m_responseBuilder.toStringPreserveCapacity(); }
     String responseMIMEType() const;
@@ -189,8 +189,8 @@
     bool initSend(ExceptionCode&);
     void sendBytesData(const void*, size_t, ExceptionCode&);
 
-    String getRequestHeader(const AtomicString& name) const;
-    void setRequestHeaderInternal(const AtomicString& name, const String& value);
+    String getRequestHeader(const String& name) const;
+    void setRequestHeaderInternal(const String& name, const String& value);
 
     void changeState(State newState);
     void callReadyStateChangeListener();

Modified: trunk/Source/WebKit2/ChangeLog (170028 => 170029)


--- trunk/Source/WebKit2/ChangeLog	2014-06-16 21:44:16 UTC (rev 170028)
+++ trunk/Source/WebKit2/ChangeLog	2014-06-16 22:28:18 UTC (rev 170029)
@@ -1,3 +1,16 @@
+2014-06-16  Anders Carlsson  <[email protected]>
+
+        Don't use AtomicString in HTTPHeaderMap
+        https://bugs.webkit.org/show_bug.cgi?id=133957
+        <rdar://problem/15256572>
+
+        Reviewed by Andreas Kling.
+
+        Update for WebCore changes.
+
+        * Shared/WebCoreArgumentCoders.cpp:
+        (IPC::ArgumentCoder<HTTPHeaderMap>::decode):
+
 2014-06-15  Anders Carlsson  <[email protected]>
 
         Change ResourceRequestBase::addHTTPHeaderFields to setHTTPHeaderFields instead

Modified: trunk/Source/WebKit2/Shared/WebCoreArgumentCoders.cpp (170028 => 170029)


--- trunk/Source/WebKit2/Shared/WebCoreArgumentCoders.cpp	2014-06-16 21:44:16 UTC (rev 170028)
+++ trunk/Source/WebKit2/Shared/WebCoreArgumentCoders.cpp	2014-06-16 22:28:18 UTC (rev 170029)
@@ -409,7 +409,7 @@
         return false;
 
     for (size_t i = 0; i < size; ++i) {
-        AtomicString name;
+        String name;
         if (!decoder.decode(name))
             return false;
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to