LCOV - code coverage report
Current view: top level - netwerk/protocol/http - PHttpChannelParams.h (source / functions) Hit Total Coverage
Test: output.info Lines: 84 102 82.4 %
Date: 2017-07-14 16:53:18 Functions: 12 13 92.3 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
       2             : /* vim: set sw=2 ts=8 et tw=80 : */
       3             : /* This Source Code Form is subject to the terms of the Mozilla Public
       4             :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       5             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
       6             : 
       7             : #ifndef mozilla_net_PHttpChannelParams_h
       8             : #define mozilla_net_PHttpChannelParams_h
       9             : 
      10             : #define ALLOW_LATE_NSHTTP_H_INCLUDE 1
      11             : #include "base/basictypes.h"
      12             : 
      13             : #include "ipc/IPCMessageUtils.h"
      14             : #include "nsHttp.h"
      15             : #include "nsHttpHeaderArray.h"
      16             : #include "nsHttpResponseHead.h"
      17             : 
      18             : #include "nsIClassInfo.h"
      19             : 
      20             : namespace mozilla {
      21             : namespace net {
      22             : 
      23          55 : struct RequestHeaderTuple {
      24             :   nsCString mHeader;
      25             :   nsCString mValue;
      26             :   bool      mMerge;
      27             :   bool      mEmpty;
      28             : 
      29           0 :   bool operator ==(const RequestHeaderTuple &other) const {
      30           0 :     return mHeader.Equals(other.mHeader) &&
      31           0 :            mValue.Equals(other.mValue) &&
      32           0 :            mMerge == other.mMerge &&
      33           0 :            mEmpty == other.mEmpty;
      34             :   }
      35             : };
      36             : 
      37             : typedef nsTArray<RequestHeaderTuple> RequestHeaderTuples;
      38             : 
      39             : } // namespace net
      40             : } // namespace mozilla
      41             : 
      42             : namespace IPC {
      43             : 
      44             : template<>
      45             : struct ParamTraits<mozilla::net::RequestHeaderTuple>
      46             : {
      47             :   typedef mozilla::net::RequestHeaderTuple paramType;
      48             : 
      49           7 :   static void Write(Message* aMsg, const paramType& aParam)
      50             :   {
      51           7 :     WriteParam(aMsg, aParam.mHeader);
      52           7 :     WriteParam(aMsg, aParam.mValue);
      53           7 :     WriteParam(aMsg, aParam.mMerge);
      54           7 :     WriteParam(aMsg, aParam.mEmpty);
      55           7 :   }
      56             : 
      57           7 :   static bool Read(const Message* aMsg, PickleIterator* aIter, paramType* aResult)
      58             :   {
      59          21 :     if (!ReadParam(aMsg, aIter, &aResult->mHeader) ||
      60          14 :         !ReadParam(aMsg, aIter, &aResult->mValue)  ||
      61          21 :         !ReadParam(aMsg, aIter, &aResult->mMerge)  ||
      62           7 :         !ReadParam(aMsg, aIter, &aResult->mEmpty))
      63           0 :       return false;
      64             : 
      65           7 :     return true;
      66             :   }
      67             : };
      68             : 
      69             : template<>
      70             : struct ParamTraits<mozilla::net::nsHttpAtom>
      71             : {
      72             :   typedef mozilla::net::nsHttpAtom paramType;
      73             : 
      74          36 :   static void Write(Message* aMsg, const paramType& aParam)
      75             :   {
      76             :     // aParam.get() cannot be null.
      77          36 :     MOZ_ASSERT(aParam.get(), "null nsHTTPAtom value");
      78          72 :     nsAutoCString value(aParam.get());
      79          36 :     WriteParam(aMsg, value);
      80          36 :   }
      81             : 
      82             :   static bool Read(const Message* aMsg, PickleIterator* aIter, paramType* aResult)
      83             :   {
      84             :     nsAutoCString value;
      85             :     if (!ReadParam(aMsg, aIter, &value))
      86             :       return false;
      87             : 
      88             :     *aResult = mozilla::net::nsHttp::ResolveAtom(value.get());
      89             :     MOZ_ASSERT(aResult->get(), "atom table not initialized");
      90             :     return true;
      91             :   }
      92             : };
      93             : 
      94             : template<>
      95             : struct ParamTraits<mozilla::net::nsHttpHeaderArray::nsEntry>
      96             : {
      97             :   typedef mozilla::net::nsHttpHeaderArray::nsEntry paramType;
      98             : 
      99          39 :   static void Write(Message* aMsg, const paramType& aParam)
     100             :   {
     101          39 :     if (aParam.headerNameOriginal.IsEmpty()) {
     102          36 :       WriteParam(aMsg, aParam.header);
     103             :     } else {
     104           3 :       WriteParam(aMsg, aParam.headerNameOriginal);
     105             :     }
     106          39 :     WriteParam(aMsg, aParam.value);
     107          39 :     switch (aParam.variety) {
     108             :       case mozilla::net::nsHttpHeaderArray::eVarietyUnknown:
     109           0 :         WriteParam(aMsg, (uint8_t)0);
     110           0 :         break;
     111             :       case mozilla::net::nsHttpHeaderArray::eVarietyRequestOverride:
     112          15 :         WriteParam(aMsg, (uint8_t)1);
     113          15 :         break;
     114             :       case mozilla::net::nsHttpHeaderArray::eVarietyRequestDefault:
     115           6 :         WriteParam(aMsg, (uint8_t)2);
     116           6 :         break;
     117             :       case mozilla::net::nsHttpHeaderArray::eVarietyResponseNetOriginalAndResponse:
     118          15 :         WriteParam(aMsg, (uint8_t)3);
     119          15 :         break;
     120             :       case mozilla::net::nsHttpHeaderArray::eVarietyResponseNetOriginal:
     121           0 :         WriteParam(aMsg, (uint8_t)4);
     122           0 :         break;
     123             :       case mozilla::net::nsHttpHeaderArray::eVarietyResponse:
     124           3 :         WriteParam(aMsg, (uint8_t)5);
     125             :     }
     126          39 :   }
     127             : 
     128          39 :   static bool Read(const Message* aMsg, PickleIterator* aIter, paramType* aResult)
     129             :   {
     130             :     uint8_t variety;
     131          78 :     nsAutoCString header;
     132         117 :     if (!ReadParam(aMsg, aIter, &header) ||
     133          78 :         !ReadParam(aMsg, aIter, &aResult->value)  ||
     134          39 :         !ReadParam(aMsg, aIter, &variety))
     135           0 :       return false;
     136             : 
     137          39 :     mozilla::net::nsHttpAtom atom = mozilla::net::nsHttp::ResolveAtom(header);
     138          39 :     aResult->header = atom;
     139          39 :     if (!header.Equals(atom.get())) {
     140           3 :       aResult->headerNameOriginal = header;
     141             :     }
     142             : 
     143          39 :     switch (variety) {
     144             :       case 0:
     145           0 :         aResult->variety = mozilla::net::nsHttpHeaderArray::eVarietyUnknown;
     146           0 :         break;
     147             :       case 1:
     148          15 :         aResult->variety = mozilla::net::nsHttpHeaderArray::eVarietyRequestOverride;
     149          15 :         break;
     150             :       case 2:
     151           6 :         aResult->variety = mozilla::net::nsHttpHeaderArray::eVarietyRequestDefault;
     152           6 :         break;
     153             :       case 3:
     154          15 :         aResult->variety = mozilla::net::nsHttpHeaderArray::eVarietyResponseNetOriginalAndResponse;
     155          15 :         break;
     156             :       case 4:
     157           0 :         aResult->variety = mozilla::net::nsHttpHeaderArray::eVarietyResponseNetOriginal;
     158           0 :         break;
     159             :       case 5:
     160           3 :         aResult->variety = mozilla::net::nsHttpHeaderArray::eVarietyResponse;
     161           3 :         break;
     162             :       default:
     163           0 :         return false;
     164             :     }
     165             : 
     166          39 :     return true;
     167             :   }
     168             : };
     169             : 
     170             : 
     171             : template<>
     172             : struct ParamTraits<mozilla::net::nsHttpHeaderArray>
     173             : {
     174             :   typedef mozilla::net::nsHttpHeaderArray paramType;
     175             : 
     176           6 :   static void Write(Message* aMsg, const paramType& aParam)
     177             :   {
     178           6 :     paramType& p = const_cast<paramType&>(aParam);
     179             : 
     180           6 :     WriteParam(aMsg, p.mHeaders);
     181           6 :   }
     182             : 
     183           6 :   static bool Read(const Message* aMsg, PickleIterator* aIter, paramType* aResult)
     184             :   {
     185           6 :     if (!ReadParam(aMsg, aIter, &aResult->mHeaders))
     186           0 :       return false;
     187             : 
     188           6 :     return true;
     189             :   }
     190             : };
     191             : 
     192             : template<>
     193             : struct ParamTraits<mozilla::net::nsHttpResponseHead>
     194             : {
     195             :   typedef mozilla::net::nsHttpResponseHead paramType;
     196             : 
     197           3 :   static void Write(Message* aMsg, const paramType& aParam)
     198             :   {
     199           3 :     WriteParam(aMsg, aParam.mHeaders);
     200           3 :     WriteParam(aMsg, aParam.mVersion);
     201           3 :     WriteParam(aMsg, aParam.mStatus);
     202           3 :     WriteParam(aMsg, aParam.mStatusText);
     203           3 :     WriteParam(aMsg, aParam.mContentLength);
     204           3 :     WriteParam(aMsg, aParam.mContentType);
     205           3 :     WriteParam(aMsg, aParam.mContentCharset);
     206           3 :     WriteParam(aMsg, aParam.mCacheControlPrivate);
     207           3 :     WriteParam(aMsg, aParam.mCacheControlNoStore);
     208           3 :     WriteParam(aMsg, aParam.mCacheControlNoCache);
     209           3 :     WriteParam(aMsg, aParam.mPragmaNoCache);
     210           3 :   }
     211             : 
     212           3 :   static bool Read(const Message* aMsg, PickleIterator* aIter, paramType* aResult)
     213             :   {
     214           9 :     if (!ReadParam(aMsg, aIter, &aResult->mHeaders)             ||
     215           6 :         !ReadParam(aMsg, aIter, &aResult->mVersion)             ||
     216           6 :         !ReadParam(aMsg, aIter, &aResult->mStatus)              ||
     217           6 :         !ReadParam(aMsg, aIter, &aResult->mStatusText)          ||
     218           6 :         !ReadParam(aMsg, aIter, &aResult->mContentLength)       ||
     219           6 :         !ReadParam(aMsg, aIter, &aResult->mContentType)         ||
     220           6 :         !ReadParam(aMsg, aIter, &aResult->mContentCharset)      ||
     221           6 :         !ReadParam(aMsg, aIter, &aResult->mCacheControlPrivate) ||
     222           6 :         !ReadParam(aMsg, aIter, &aResult->mCacheControlNoStore) ||
     223           9 :         !ReadParam(aMsg, aIter, &aResult->mCacheControlNoCache) ||
     224           3 :         !ReadParam(aMsg, aIter, &aResult->mPragmaNoCache))
     225           0 :       return false;
     226             : 
     227           3 :     return true;
     228             :   }
     229             : };
     230             : 
     231             : } // namespace IPC
     232             : 
     233             : #endif // mozilla_net_PHttpChannelParams_h

Generated by: LCOV version 1.13