LCOV - code coverage report
Current view: top level - netwerk/protocol/websocket - WebSocketFrame.cpp (source / functions) Hit Total Coverage
Test: output.info Lines: 1 77 1.3 %
Date: 2017-07-14 16:53:18 Functions: 2 23 8.7 %
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 ts=8 sts=2 et sw=2 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             : #include "WebSocketFrame.h"
       8             : 
       9             : #include "WebSocketChannel.h"
      10             : #include "nsSocketTransportService2.h"
      11             : #include "nsThreadUtils.h" // for NS_IsMainThread
      12             : #include "ipc/IPCMessageUtils.h"
      13             : 
      14             : namespace mozilla {
      15             : namespace net {
      16             : 
      17           0 : NS_INTERFACE_MAP_BEGIN(WebSocketFrame)
      18           0 :   NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIWebSocketFrame)
      19           0 :   NS_INTERFACE_MAP_ENTRY(nsIWebSocketFrame)
      20           0 : NS_INTERFACE_MAP_END
      21             : 
      22           0 : NS_IMPL_ADDREF(WebSocketFrame)
      23           0 : NS_IMPL_RELEASE(WebSocketFrame)
      24             : 
      25           0 : WebSocketFrame::WebSocketFrame(const WebSocketFrameData& aData)
      26           0 :   : mData(aData)
      27           0 : {}
      28             : 
      29           0 : WebSocketFrame::WebSocketFrame(bool aFinBit, bool aRsvBit1, bool aRsvBit2,
      30             :                                bool aRsvBit3, uint8_t aOpCode, bool aMaskBit,
      31           0 :                                uint32_t aMask, const nsCString& aPayload)
      32           0 :   : mData(PR_Now(), aFinBit, aRsvBit1, aRsvBit2, aRsvBit3, aOpCode, aMaskBit,
      33           0 :           aMask, aPayload)
      34             : {
      35           0 :   MOZ_ASSERT(OnSocketThread(), "not on socket thread");
      36           0 :   mData.mTimeStamp = PR_Now();
      37           0 : }
      38             : 
      39           0 : WebSocketFrame::~WebSocketFrame()
      40           0 : {}
      41             : 
      42             : #define WSF_GETTER( method, value , type )     \
      43             : NS_IMETHODIMP                                  \
      44             : WebSocketFrame::method(type* aValue)           \
      45             : {                                              \
      46             :   MOZ_ASSERT(NS_IsMainThread());               \
      47             :   if (!aValue) {                               \
      48             :     return NS_ERROR_FAILURE;                   \
      49             :   }                                            \
      50             :   *aValue = value;                             \
      51             :   return NS_OK;                                \
      52             : }
      53             : 
      54           0 : WSF_GETTER(GetTimeStamp, mData.mTimeStamp, DOMHighResTimeStamp);
      55           0 : WSF_GETTER(GetFinBit, mData.mFinBit, bool);
      56           0 : WSF_GETTER(GetRsvBit1, mData.mRsvBit1, bool);
      57           0 : WSF_GETTER(GetRsvBit2, mData.mRsvBit2, bool);
      58           0 : WSF_GETTER(GetRsvBit3, mData.mRsvBit3, bool);
      59           0 : WSF_GETTER(GetOpCode, mData.mOpCode, uint16_t);
      60           0 : WSF_GETTER(GetMaskBit, mData.mMaskBit, bool);
      61           0 : WSF_GETTER(GetMask, mData.mMask, uint32_t);
      62             : 
      63             : #undef WSF_GETTER
      64             : 
      65             : NS_IMETHODIMP
      66           0 : WebSocketFrame::GetPayload(nsACString& aValue)
      67             : {
      68           0 :   MOZ_ASSERT(NS_IsMainThread());
      69           0 :   aValue = mData.mPayload;
      70           0 :   return NS_OK;
      71             : }
      72             : 
      73           0 : WebSocketFrameData::WebSocketFrameData()
      74             :   : mTimeStamp(0)
      75             :   , mFinBit(false)
      76             :   , mRsvBit1(false)
      77             :   , mRsvBit2(false)
      78             :   , mRsvBit3(false)
      79             :   , mMaskBit(false)
      80             :   , mOpCode(0)
      81           0 :   , mMask(0)
      82             : {
      83           0 :   MOZ_COUNT_CTOR(WebSocketFrameData);
      84           0 : }
      85             : 
      86           0 : WebSocketFrameData::WebSocketFrameData(DOMHighResTimeStamp aTimeStamp,
      87             :                                        bool aFinBit, bool aRsvBit1,
      88             :                                        bool aRsvBit2, bool aRsvBit3,
      89             :                                        uint8_t aOpCode, bool aMaskBit,
      90             :                                        uint32_t aMask,
      91           0 :                                        const nsCString& aPayload)
      92             :   : mTimeStamp(aTimeStamp)
      93             :   , mFinBit(aFinBit)
      94             :   , mRsvBit1(aRsvBit1)
      95             :   , mRsvBit2(aRsvBit2)
      96             :   , mRsvBit3(aRsvBit3)
      97             :   , mMaskBit(aMaskBit)
      98             :   , mOpCode(aOpCode)
      99             :   , mMask(aMask)
     100           0 :   , mPayload(aPayload)
     101             : {
     102           0 :   MOZ_COUNT_CTOR(WebSocketFrameData);
     103           0 : }
     104             : 
     105           0 : WebSocketFrameData::WebSocketFrameData(const WebSocketFrameData& aData)
     106           0 :   : mTimeStamp(aData.mTimeStamp)
     107           0 :   , mFinBit(aData.mFinBit)
     108           0 :   , mRsvBit1(aData.mRsvBit1)
     109           0 :   , mRsvBit2(aData.mRsvBit2)
     110           0 :   , mRsvBit3(aData.mRsvBit3)
     111           0 :   , mMaskBit(aData.mMaskBit)
     112           0 :   , mOpCode(aData.mOpCode)
     113           0 :   , mMask(aData.mMask)
     114           0 :   , mPayload(aData.mPayload)
     115             : {
     116           0 :   MOZ_COUNT_CTOR(WebSocketFrameData);
     117           0 : }
     118             : 
     119           0 : WebSocketFrameData::~WebSocketFrameData()
     120             : {
     121           0 :   MOZ_COUNT_DTOR(WebSocketFrameData);
     122           0 : }
     123             : 
     124             : void
     125           0 : WebSocketFrameData::WriteIPCParams(IPC::Message* aMessage) const
     126             : {
     127           0 :   WriteParam(aMessage, mTimeStamp);
     128           0 :   WriteParam(aMessage, mFinBit);
     129           0 :   WriteParam(aMessage, mRsvBit1);
     130           0 :   WriteParam(aMessage, mRsvBit2);
     131           0 :   WriteParam(aMessage, mRsvBit3);
     132           0 :   WriteParam(aMessage, mOpCode);
     133           0 :   WriteParam(aMessage, mMaskBit);
     134           0 :   WriteParam(aMessage, mMask);
     135           0 :   WriteParam(aMessage, mPayload);
     136           0 : }
     137             : 
     138             : bool
     139           0 : WebSocketFrameData::ReadIPCParams(const IPC::Message* aMessage,
     140             :                                   PickleIterator* aIter)
     141             : {
     142           0 :   if (!ReadParam(aMessage, aIter, &mTimeStamp)) {
     143           0 :     return false;
     144             :   }
     145             : 
     146             : #define ReadParamHelper(x)                     \
     147             :   {                                            \
     148             :     bool bit;                                  \
     149             :     if (!ReadParam(aMessage, aIter, &bit)) {   \
     150             :       return false;                            \
     151             :     }                                          \
     152             :     x = bit;                                   \
     153             :   }
     154             : 
     155           0 :   ReadParamHelper(mFinBit);
     156           0 :   ReadParamHelper(mRsvBit1);
     157           0 :   ReadParamHelper(mRsvBit2);
     158           0 :   ReadParamHelper(mRsvBit3);
     159           0 :   ReadParamHelper(mMaskBit);
     160             : 
     161             : #undef ReadParamHelper
     162             : 
     163           0 :   return ReadParam(aMessage, aIter, &mOpCode) &&
     164           0 :          ReadParam(aMessage, aIter, &mMask) &&
     165           0 :          ReadParam(aMessage, aIter, &mPayload);
     166             : }
     167             : 
     168             : } // net namespace
     169           9 : } // mozilla namespace

Generated by: LCOV version 1.13