LCOV - code coverage report
Current view: top level - netwerk/base - nsSecCheckWrapChannel.h (source / functions) Hit Total Coverage
Test: output.info Lines: 0 6 0.0 %
Date: 2017-07-14 16:53:18 Functions: 0 141 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2             : /* This Source Code Form is subject to the terms of the Mozilla Public
       3             :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       4             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
       5             : 
       6             : #ifndef nsSecCheckWrapChannel_h__
       7             : #define nsSecCheckWrapChannel_h__
       8             : 
       9             : #include "nsIHttpChannel.h"
      10             : #include "nsIHttpChannelInternal.h"
      11             : #include "nsIUploadChannel.h"
      12             : #include "nsIUploadChannel2.h"
      13             : #include "nsISecCheckWrapChannel.h"
      14             : #include "nsIWyciwygChannel.h"
      15             : #include "mozilla/LoadInfo.h"
      16             : 
      17             : namespace mozilla {
      18             : namespace net {
      19             : 
      20             : /*
      21             :  * The nsSecCheckWrapChannelBase wraps channels that do *not*
      22             :  *  * provide a newChannel2() implementation
      23             :  *  * provide get/setLoadInfo functions
      24             :  *
      25             :  * In order to perform security checks for channels
      26             :  *   a) before opening the channel, and
      27             :  *   b) after redirects
      28             :  * we are attaching a loadinfo object to every channel which
      29             :  * provides information about the content-type of the channel,
      30             :  * who initiated the load, etc.
      31             :  *
      32             :  * Addon created channels might *not* provide that loadInfo object for
      33             :  * some transition time before we mark the NewChannel-API as deprecated.
      34             :  * We do not want to break those addons hence we wrap such channels
      35             :  * using the provided wrapper in this class.
      36             :  *
      37             :  * Please note that the wrapper only forwards calls for
      38             :  *  * nsIRequest
      39             :  *  * nsIChannel
      40             :  *  * nsIHttpChannel
      41             :  *  * nsIHttpChannelInternal
      42             :  *  * nsIUploadChannel
      43             :  *  * nsIUploadChannel2
      44             :  *
      45             :  * In case any addon needs to query the inner channel this class
      46             :  * provides a readonly function to query the wrapped channel.
      47             :  *
      48             :  */
      49             : 
      50             : class nsSecCheckWrapChannelBase : public nsIHttpChannel
      51             :                                 , public nsIHttpChannelInternal
      52             :                                 , public nsISecCheckWrapChannel
      53             :                                 , public nsIUploadChannel
      54             :                                 , public nsIUploadChannel2
      55             : {
      56             : public:
      57           0 :   NS_FORWARD_NSIHTTPCHANNEL(mHttpChannel->)
      58           0 :   NS_FORWARD_NSIHTTPCHANNELINTERNAL(mHttpChannelInternal->)
      59           0 :   NS_FORWARD_NSICHANNEL(mChannel->)
      60           0 :   NS_FORWARD_NSIREQUEST(mRequest->)
      61           0 :   NS_FORWARD_NSIUPLOADCHANNEL(mUploadChannel->)
      62           0 :   NS_FORWARD_NSIUPLOADCHANNEL2(mUploadChannel2->)
      63             :   NS_DECL_NSISECCHECKWRAPCHANNEL
      64             :   NS_DECL_ISUPPORTS
      65             : 
      66             :   explicit nsSecCheckWrapChannelBase(nsIChannel* aChannel);
      67             : 
      68             : protected:
      69             :   virtual ~nsSecCheckWrapChannelBase();
      70             : 
      71             :   nsCOMPtr<nsIChannel>             mChannel;
      72             :   // We do a QI in the constructor to set the following pointers.
      73             :   nsCOMPtr<nsIHttpChannel>         mHttpChannel;
      74             :   nsCOMPtr<nsIHttpChannelInternal> mHttpChannelInternal;
      75             :   nsCOMPtr<nsIRequest>             mRequest;
      76             :   nsCOMPtr<nsIUploadChannel>       mUploadChannel;
      77             :   nsCOMPtr<nsIUploadChannel2>      mUploadChannel2;
      78             : };
      79             : 
      80             : /* We define a separate class here to make it clear that we're overriding
      81             :  * Get/SetLoadInfo as well as AsyncOpen2() and Open2(), rather that using
      82             :  * the forwarded implementations provided by NS_FORWARD_NSICHANNEL"
      83             :  */
      84             : class nsSecCheckWrapChannel : public nsSecCheckWrapChannelBase
      85             : {
      86             : public:
      87             :   NS_IMETHOD GetLoadInfo(nsILoadInfo **aLoadInfo);
      88             :   NS_IMETHOD SetLoadInfo(nsILoadInfo *aLoadInfo);
      89             : 
      90             :   NS_IMETHOD AsyncOpen2(nsIStreamListener *aListener);
      91             :   NS_IMETHOD Open2(nsIInputStream** aStream);
      92             : 
      93             :   nsSecCheckWrapChannel(nsIChannel* aChannel, nsILoadInfo* aLoadInfo);
      94             :   static already_AddRefed<nsIChannel> MaybeWrap(nsIChannel* aChannel,
      95             :                                                 nsILoadInfo* aLoadInfo);
      96             : 
      97             : protected:
      98             :   virtual ~nsSecCheckWrapChannel();
      99             : 
     100             :   nsCOMPtr<nsILoadInfo> mLoadInfo;
     101             : };
     102             : 
     103             : } // namespace net
     104             : } // namespace mozilla
     105             : 
     106             : #endif // nsSecCheckWrapChannel_h__

Generated by: LCOV version 1.13