Changeset 175614 in webkit


Ignore:
Timestamp:
Nov 5, 2014 1:26:51 AM (9 years ago)
Author:
Antti Koivisto
Message:

Move HTTPHeaderMap encoding to the class
https://bugs.webkit.org/show_bug.cgi?id=138412

Reviewed by Andreas Kling.

Source/WebCore:

  • platform/network/HTTPHeaderMap.h:

(WebCore::HTTPHeaderMap::encode):
(WebCore::HTTPHeaderMap::decode):

Use generic encoding for the uncommon header map. Common headers still require custom code due to the enum class.

Source/WebKit2:

  • PluginProcess/PluginControllerProxy.cpp:
  • Shared/WebCoreArgumentCoders.cpp:

(IPC::ArgumentCoder<HTTPHeaderMap>::encode): Deleted.
(IPC::ArgumentCoder<HTTPHeaderMap>::decode): Deleted.

Make these HTTPHeaderMap members instead so they can access internals and can be used elsewhere.

  • Shared/WebCoreArgumentCoders.h:
Location:
trunk/Source
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r175609 r175614  
     12014-11-05  Antti Koivisto  <antti@apple.com>
     2
     3        Move HTTPHeaderMap encoding to the class
     4        https://bugs.webkit.org/show_bug.cgi?id=138412
     5
     6        Reviewed by Andreas Kling.
     7
     8        * platform/network/HTTPHeaderMap.h:
     9        (WebCore::HTTPHeaderMap::encode):
     10        (WebCore::HTTPHeaderMap::decode):
     11
     12            Use generic encoding for the uncommon header map. Common headers still require custom code due to the enum class.
     13
    1142014-11-04  Beth Dakin  <bdakin@apple.com>
    215
  • trunk/Source/WebCore/platform/network/HTTPHeaderMap.h

    r175312 r175614  
    171171    }
    172172
     173    template <class Encoder> void encode(Encoder&) const;
     174    template <class Decoder> static bool decode(Decoder&, HTTPHeaderMap&);
     175
    173176private:
    174177    CommonHeadersHashMap m_commonHeaders;
     
    176179};
    177180
     181template <class Encoder>
     182void HTTPHeaderMap::encode(Encoder& encoder) const
     183{
     184    encoder << static_cast<uint64_t>(m_commonHeaders.size());
     185    for (const auto& keyValuePair : m_commonHeaders) {
     186        encoder.encodeEnum(keyValuePair.key);
     187        encoder << keyValuePair.value;
     188    }
     189
     190    encoder << m_uncommonHeaders;
     191}
     192
     193template <class Decoder>
     194bool HTTPHeaderMap::decode(Decoder& decoder, HTTPHeaderMap& headerMap)
     195{
     196    uint64_t commonHeadersSize;
     197    if (!decoder.decode(commonHeadersSize))
     198        return false;
     199    for (size_t i = 0; i < commonHeadersSize; ++i) {
     200        HTTPHeaderName name;
     201        if (!decoder.decodeEnum(name))
     202            return false;
     203        String value;
     204        if (!decoder.decode(value))
     205            return false;
     206        headerMap.m_commonHeaders.add(name, value);
     207    }
     208
     209    if (!decoder.decode(headerMap.m_uncommonHeaders))
     210        return false;
     211
     212    return true;
     213}
     214
    178215} // namespace WebCore
    179216
  • trunk/Source/WebKit2/ChangeLog

    r175610 r175614  
     12014-11-05  Antti Koivisto  <antti@apple.com>
     2
     3        Move HTTPHeaderMap encoding to the class
     4        https://bugs.webkit.org/show_bug.cgi?id=138412
     5
     6        Reviewed by Andreas Kling.
     7
     8        * PluginProcess/PluginControllerProxy.cpp:
     9        * Shared/WebCoreArgumentCoders.cpp:
     10        (IPC::ArgumentCoder<HTTPHeaderMap>::encode): Deleted.
     11        (IPC::ArgumentCoder<HTTPHeaderMap>::decode): Deleted.
     12
     13            Make these HTTPHeaderMap members instead so they can access internals and can be used elsewhere.
     14
     15        * Shared/WebCoreArgumentCoders.h:
     16
    1172014-11-04  Beth Dakin  <bdakin@apple.com>
    218
  • trunk/Source/WebKit2/PluginProcess/PluginControllerProxy.cpp

    r172653 r175614  
    4242#include "WebProcessConnection.h"
    4343#include <WebCore/GraphicsContext.h>
     44#include <WebCore/HTTPHeaderMap.h>
    4445#include <WebCore/IdentifierRep.h>
    4546#include <WebCore/NotImplemented.h>
  • trunk/Source/WebKit2/Shared/WebCoreArgumentCoders.cpp

    r175231 r175614  
    465465}
    466466
    467 
    468 void ArgumentCoder<HTTPHeaderMap>::encode(ArgumentEncoder& encoder, const HTTPHeaderMap& headerMap)
    469 {
    470     encoder << static_cast<uint64_t>(headerMap.commonHeaders().size());
    471     for (const auto& keyValuePair : headerMap.commonHeaders()) {
    472         encoder.encodeEnum(keyValuePair.key);
    473         encoder << keyValuePair.value;
    474     }
    475     encoder << static_cast<uint64_t>(headerMap.uncommonHeaders().size());
    476     for (const auto& keyValuePair : headerMap.uncommonHeaders()) {
    477         encoder << keyValuePair.key;
    478         encoder << keyValuePair.value;
    479     }
    480 }
    481 
    482 bool ArgumentCoder<HTTPHeaderMap>::decode(ArgumentDecoder& decoder, HTTPHeaderMap& headerMap)
    483 {
    484     uint64_t commonHeadersSize;
    485     if (!decoder.decode(commonHeadersSize))
    486         return false;
    487 
    488     for (size_t i = 0; i < commonHeadersSize; ++i) {
    489         HTTPHeaderName name;
    490         if (!decoder.decodeEnum(name))
    491             return false;
    492 
    493         String value;
    494         if (!decoder.decode(value))
    495             return false;
    496 
    497         headerMap.commonHeaders().add(name, value);
    498     }
    499 
    500     uint64_t uncommonHeadersSize;
    501     if (!decoder.decode(uncommonHeadersSize))
    502         return false;
    503 
    504     for (size_t i = 0; i < uncommonHeadersSize; ++i) {
    505         String name;
    506         if (!decoder.decode(name))
    507             return false;
    508 
    509         String value;
    510         if (!decoder.decode(value))
    511             return false;
    512 
    513         headerMap.uncommonHeaders().add(name, value);
    514     }
    515 
    516     return true;
    517 }
    518 
    519 
    520467void ArgumentCoder<AuthenticationChallenge>::encode(ArgumentEncoder& encoder, const AuthenticationChallenge& challenge)
    521468{
  • trunk/Source/WebKit2/Shared/WebCoreArgumentCoders.h

    r173356 r175614  
    216216};
    217217
    218 template<> struct ArgumentCoder<WebCore::HTTPHeaderMap> {
    219     static void encode(ArgumentEncoder&, const WebCore::HTTPHeaderMap&);
    220     static bool decode(ArgumentDecoder&, WebCore::HTTPHeaderMap&);
    221 };
    222 
    223218template<> struct ArgumentCoder<WebCore::AuthenticationChallenge> {
    224219    static void encode(ArgumentEncoder&, const WebCore::AuthenticationChallenge&);
Note: See TracChangeset for help on using the changeset viewer.