Coverage Report

Created: 2018-09-25 14:53

/src/mozilla-central/dom/indexedDB/IDBWrapperCache.cpp
Line
Count
Source (jump to first uncovered line)
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 file,
5
 * You can obtain one at http://mozilla.org/MPL/2.0/. */
6
7
#include "IDBWrapperCache.h"
8
9
#include "mozilla/HoldDropJSObjects.h"
10
#include "nsCOMPtr.h"
11
#include "nsIScriptGlobalObject.h"
12
#include "nsPIDOMWindow.h"
13
14
namespace mozilla {
15
namespace dom {
16
17
NS_IMPL_CYCLE_COLLECTION_CLASS(IDBWrapperCache)
18
19
0
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN_INHERITED(IDBWrapperCache,
20
0
                                                  DOMEventTargetHelper)
21
0
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
22
23
0
NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN_INHERITED(IDBWrapperCache,
24
0
                                                DOMEventTargetHelper)
25
0
  if (tmp->mScriptOwner) {
26
0
    tmp->mScriptOwner = nullptr;
27
0
    mozilla::DropJSObjects(tmp);
28
0
  }
29
0
NS_IMPL_CYCLE_COLLECTION_UNLINK_END
30
31
0
NS_IMPL_CYCLE_COLLECTION_TRACE_BEGIN_INHERITED(IDBWrapperCache,
32
0
                                               DOMEventTargetHelper)
33
0
  // Don't need NS_IMPL_CYCLE_COLLECTION_TRACE_PRESERVED_WRAPPER because
34
0
  // DOMEventTargetHelper does it for us.
35
0
  NS_IMPL_CYCLE_COLLECTION_TRACE_JS_MEMBER_CALLBACK(mScriptOwner)
36
0
NS_IMPL_CYCLE_COLLECTION_TRACE_END
37
38
0
NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(IDBWrapperCache)
39
0
NS_INTERFACE_MAP_END_INHERITING(DOMEventTargetHelper)
40
41
NS_IMPL_ADDREF_INHERITED(IDBWrapperCache, DOMEventTargetHelper)
42
NS_IMPL_RELEASE_INHERITED(IDBWrapperCache, DOMEventTargetHelper)
43
44
IDBWrapperCache::IDBWrapperCache(DOMEventTargetHelper* aOwner)
45
  : DOMEventTargetHelper(aOwner), mScriptOwner(nullptr)
46
0
{ }
47
48
IDBWrapperCache::IDBWrapperCache(nsPIDOMWindowInner* aOwner)
49
  : DOMEventTargetHelper(aOwner), mScriptOwner(nullptr)
50
0
{ }
51
52
IDBWrapperCache::~IDBWrapperCache()
53
0
{
54
0
  mScriptOwner = nullptr;
55
0
  ReleaseWrapper(this);
56
0
  mozilla::DropJSObjects(this);
57
0
}
58
59
void
60
IDBWrapperCache::SetScriptOwner(JSObject* aScriptOwner)
61
0
{
62
0
  MOZ_ASSERT(aScriptOwner);
63
0
  MOZ_ASSERT(JS_IsGlobalObject(aScriptOwner));
64
0
65
0
  mScriptOwner = aScriptOwner;
66
0
  mozilla::HoldJSObjects(this);
67
0
}
68
69
#ifdef DEBUG
70
void
71
IDBWrapperCache::AssertIsRooted() const
72
{
73
  MOZ_ASSERT(IsJSHolder(const_cast<IDBWrapperCache*>(this)),
74
             "Why aren't we rooted?!");
75
}
76
#endif
77
78
} // namespace dom
79
} // namespace mozilla