LCOV - code coverage report
Current view: top level - netwerk/cache2 - CacheStorage.h (source / functions) Hit Total Coverage
Test: output.info Lines: 6 9 66.7 %
Date: 2017-07-14 16:53:18 Functions: 6 8 75.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* This Source Code Form is subject to the terms of the Mozilla Public
       2             :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       3             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
       4             : 
       5             : #ifndef CacheStorage__h__
       6             : #define CacheStorage__h__
       7             : 
       8             : #include "nsICacheStorage.h"
       9             : #include "CacheEntry.h"
      10             : #include "LoadContextInfo.h"
      11             : 
      12             : #include "nsRefPtrHashtable.h"
      13             : #include "nsThreadUtils.h"
      14             : #include "nsCOMPtr.h"
      15             : #include "nsILoadContextInfo.h"
      16             : #include "nsIApplicationCache.h"
      17             : #include "nsICacheEntryDoomCallback.h"
      18             : 
      19             : class nsIURI;
      20             : class nsIApplicationCache;
      21             : 
      22             : namespace mozilla {
      23             : namespace net {
      24             : 
      25             : // This dance is needed to make CacheEntryTable declarable-only in headers
      26             : // w/o exporting CacheEntry.h file to make nsNetModule.cpp compilable.
      27             : typedef nsRefPtrHashtable<nsCStringHashKey, CacheEntry> TCacheEntryTable;
      28           0 : class CacheEntryTable : public TCacheEntryTable
      29             : {
      30             : public:
      31             :   enum EType
      32             :   {
      33             :     MEMORY_ONLY,
      34             :     ALL_ENTRIES
      35             :   };
      36             : 
      37           1 :   explicit CacheEntryTable(EType aType) : mType(aType) { }
      38           0 :   EType Type() const
      39             :   {
      40           0 :     return mType;
      41             :   }
      42             : private:
      43             :   EType const mType;
      44             :   CacheEntryTable() = delete;
      45             : };
      46             : 
      47             : class CacheStorage : public nsICacheStorage
      48             : {
      49             :   NS_DECL_THREADSAFE_ISUPPORTS
      50             :   NS_DECL_NSICACHESTORAGE
      51             : 
      52             : public:
      53             :   CacheStorage(nsILoadContextInfo* aInfo,
      54             :                bool aAllowDisk,
      55             :                bool aLookupAppCache,
      56             :                bool aSkipSizeCheck,
      57             :                bool aPinning);
      58             : 
      59             : protected:
      60             :   virtual ~CacheStorage();
      61             : 
      62             :   nsresult ChooseApplicationCache(nsIURI* aURI, nsIApplicationCache** aCache);
      63             : 
      64             :   RefPtr<LoadContextInfo> mLoadContextInfo;
      65             :   bool mWriteToDisk : 1;
      66             :   bool mLookupAppCache : 1;
      67             :   bool mSkipSizeCheck: 1;
      68             :   bool mPinning : 1;
      69             : 
      70             : public:
      71          20 :   nsILoadContextInfo* LoadInfo() const { return mLoadContextInfo; }
      72          14 :   bool WriteToDisk() const { return mWriteToDisk && !mLoadContextInfo->IsPrivate(); }
      73          13 :   bool LookupAppCache() const { return mLookupAppCache; }
      74          13 :   bool SkipSizeCheck() const { return mSkipSizeCheck; }
      75          13 :   bool Pinning() const { return mPinning; }
      76             : };
      77             : 
      78             : } // namespace net
      79             : } // namespace mozilla
      80             : 
      81             : #endif

Generated by: LCOV version 1.13