LCOV - code coverage report
Current view: directory - dom/indexedDB - IDBWrapperCache.cpp (source / functions) Found Hit Coverage
Test: app.info Lines: 34 29 85.3 %
Date: 2012-06-02 Functions: 12 10 83.3 %

       1                 : /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
       2                 : /* vim: set ts=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 file,
       5                 :  * You can obtain one at http://mozilla.org/MPL/2.0/. */
       6                 : 
       7                 : #include "IDBWrapperCache.h"
       8                 : #include "nsContentUtils.h"
       9                 : 
      10                 : USING_INDEXEDDB_NAMESPACE
      11                 : 
      12            1464 : NS_IMPL_CYCLE_COLLECTION_CLASS(IDBWrapperCache)
      13                 : 
      14             612 : NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN_INHERITED(IDBWrapperCache,
      15                 :                                                   nsDOMEventTargetHelper)
      16                 :   // Don't need NS_IMPL_CYCLE_COLLECTION_TRAVERSE_SCRIPT_OBJECTS because
      17                 :   // nsDOMEventTargetHelper does it for us.
      18             612 : NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
      19                 : 
      20             611 : NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN_INHERITED(IDBWrapperCache,
      21                 :                                                 nsDOMEventTargetHelper)
      22             611 :   if (tmp->mScriptOwner) {
      23             611 :     NS_DROP_JS_OBJECTS(tmp, IDBWrapperCache);
      24             611 :     tmp->mScriptOwner = nsnull;
      25                 :   }
      26             611 : NS_IMPL_CYCLE_COLLECTION_UNLINK_END
      27                 : 
      28            6221 : NS_IMPL_CYCLE_COLLECTION_TRACE_BEGIN_INHERITED(IDBWrapperCache,
      29                 :                                                nsDOMEventTargetHelper)
      30                 :   // Don't need NS_IMPL_CYCLE_COLLECTION_TRACE_PRESERVED_WRAPPER because
      31                 :   // nsDOMEventTargetHelper does it for us.
      32            6221 :   if (tmp->mScriptOwner) {
      33            6221 :     NS_IMPL_CYCLE_COLLECTION_TRACE_JS_CALLBACK(tmp->mScriptOwner,
      34                 :                                                "mScriptOwner")
      35                 :   }
      36            6221 : NS_IMPL_CYCLE_COLLECTION_TRACE_END
      37                 : 
      38          105076 : NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION_INHERITED(IDBWrapperCache)
      39          105076 : NS_INTERFACE_MAP_END_INHERITING(nsDOMEventTargetHelper)
      40                 : 
      41          154266 : NS_IMPL_ADDREF_INHERITED(IDBWrapperCache, nsDOMEventTargetHelper)
      42          154266 : NS_IMPL_RELEASE_INHERITED(IDBWrapperCache, nsDOMEventTargetHelper)
      43                 : 
      44            6158 : IDBWrapperCache::~IDBWrapperCache()
      45                 : {
      46            3079 :   if (mScriptOwner) {
      47            2468 :     NS_DROP_JS_OBJECTS(this, IDBWrapperCache);
      48                 :   }
      49            6158 : }
      50                 : 
      51                 : bool
      52            3079 : IDBWrapperCache::SetScriptOwner(JSObject* aScriptOwner)
      53                 : {
      54            3079 :   if (!aScriptOwner) {
      55               0 :     NS_ASSERTION(!mScriptOwner,
      56                 :                  "Don't null out existing owner, we need to call "
      57                 :                  "DropJSObjects!");
      58                 : 
      59               0 :     return true;
      60                 :   }
      61                 : 
      62            3079 :   mScriptOwner = aScriptOwner;
      63                 : 
      64            3079 :   nsISupports* thisSupports = NS_CYCLE_COLLECTION_UPCAST(this, IDBWrapperCache);
      65                 :   nsXPCOMCycleCollectionParticipant* participant;
      66            3079 :   CallQueryInterface(this, &participant);
      67            3079 :   nsresult rv = nsContentUtils::HoldJSObjects(thisSupports, participant);
      68            3079 :   if (NS_FAILED(rv)) {
      69               0 :     NS_WARNING("nsContentUtils::HoldJSObjects failed.");
      70               0 :     mScriptOwner = nsnull;
      71               0 :     return false;
      72                 :   }
      73                 : 
      74            3079 :   return true;
      75            4392 : }

Generated by: LCOV version 1.7