LCOV - code coverage report
Current view: top level - netwerk/cache2 - CacheIndexIterator.cpp (source / functions) Hit Total Coverage
Test: output.info Lines: 0 47 0.0 %
Date: 2017-07-14 16:53:18 Functions: 0 9 0.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             : #include "CacheLog.h"
       6             : #include "CacheIndexIterator.h"
       7             : #include "CacheIndex.h"
       8             : #include "nsString.h"
       9             : #include "mozilla/DebugOnly.h"
      10             : 
      11             : 
      12             : namespace mozilla {
      13             : namespace net {
      14             : 
      15           0 : CacheIndexIterator::CacheIndexIterator(CacheIndex *aIndex, bool aAddNew)
      16             :   : mStatus(NS_OK)
      17             :   , mIndex(aIndex)
      18           0 :   , mAddNew(aAddNew)
      19             : {
      20           0 :   LOG(("CacheIndexIterator::CacheIndexIterator() [this=%p]", this));
      21           0 : }
      22             : 
      23           0 : CacheIndexIterator::~CacheIndexIterator()
      24             : {
      25           0 :   LOG(("CacheIndexIterator::~CacheIndexIterator() [this=%p]", this));
      26             : 
      27           0 :   Close();
      28           0 : }
      29             : 
      30             : nsresult
      31           0 : CacheIndexIterator::GetNextHash(SHA1Sum::Hash *aHash)
      32             : {
      33           0 :   LOG(("CacheIndexIterator::GetNextHash() [this=%p]", this));
      34             : 
      35           0 :   StaticMutexAutoLock lock(CacheIndex::sLock);
      36             : 
      37           0 :   if (NS_FAILED(mStatus)) {
      38           0 :     return mStatus;
      39             :   }
      40             : 
      41           0 :   if (!mRecords.Length()) {
      42           0 :     CloseInternal(NS_ERROR_NOT_AVAILABLE);
      43           0 :     return mStatus;
      44             :   }
      45             : 
      46           0 :   memcpy(aHash, mRecords[mRecords.Length() - 1]->mHash, sizeof(SHA1Sum::Hash));
      47           0 :   mRecords.RemoveElementAt(mRecords.Length() - 1);
      48             : 
      49           0 :   return NS_OK;
      50             : }
      51             : 
      52             : nsresult
      53           0 : CacheIndexIterator::Close()
      54             : {
      55           0 :   LOG(("CacheIndexIterator::Close() [this=%p]", this));
      56             : 
      57           0 :   StaticMutexAutoLock lock(CacheIndex::sLock);
      58             : 
      59           0 :   return CloseInternal(NS_ERROR_NOT_AVAILABLE);
      60             : }
      61             : 
      62             : nsresult
      63           0 : CacheIndexIterator::CloseInternal(nsresult aStatus)
      64             : {
      65           0 :   LOG(("CacheIndexIterator::CloseInternal() [this=%p, status=0x%08" PRIx32 "]", this,
      66             :        static_cast<uint32_t>(aStatus)));
      67             : 
      68             :   // Make sure status will be a failure
      69           0 :   MOZ_ASSERT(NS_FAILED(aStatus));
      70           0 :   if (NS_SUCCEEDED(aStatus)) {
      71           0 :     aStatus = NS_ERROR_UNEXPECTED;
      72             :   }
      73             : 
      74           0 :   if (NS_FAILED(mStatus)) {
      75           0 :     return NS_ERROR_NOT_AVAILABLE;
      76             :   }
      77             : 
      78           0 :   DebugOnly<bool> removed = mIndex->mIterators.RemoveElement(this);
      79           0 :   MOZ_ASSERT(removed);
      80           0 :   mStatus = aStatus;
      81             : 
      82           0 :   return NS_OK;
      83             : }
      84             : 
      85             : void
      86           0 : CacheIndexIterator::AddRecord(CacheIndexRecord *aRecord)
      87             : {
      88           0 :   LOG(("CacheIndexIterator::AddRecord() [this=%p, record=%p]", this, aRecord));
      89             : 
      90           0 :   mRecords.AppendElement(aRecord);
      91           0 : }
      92             : 
      93             : bool
      94           0 : CacheIndexIterator::RemoveRecord(CacheIndexRecord *aRecord)
      95             : {
      96           0 :   LOG(("CacheIndexIterator::RemoveRecord() [this=%p, record=%p]", this,
      97             :        aRecord));
      98             : 
      99           0 :   return mRecords.RemoveElement(aRecord);
     100             : }
     101             : 
     102             : bool
     103           0 : CacheIndexIterator::ReplaceRecord(CacheIndexRecord *aOldRecord,
     104             :                                   CacheIndexRecord *aNewRecord)
     105             : {
     106           0 :   LOG(("CacheIndexIterator::ReplaceRecord() [this=%p, oldRecord=%p, "
     107             :        "newRecord=%p]", this, aOldRecord, aNewRecord));
     108             : 
     109           0 :   if (RemoveRecord(aOldRecord)) {
     110           0 :     AddRecord(aNewRecord);
     111           0 :     return true;
     112             :   }
     113             : 
     114           0 :   return false;
     115             : }
     116             : 
     117             : } // namespace net
     118             : } // namespace mozilla

Generated by: LCOV version 1.13