Coverage Report

Created: 2018-09-25 14:53

/work/obj-fuzz/dist/include/nsProxyRelease.h
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
5
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6
7
#ifndef nsProxyRelease_h__
8
#define nsProxyRelease_h__
9
10
#include "nsIEventTarget.h"
11
#include "nsIThread.h"
12
#include "nsCOMPtr.h"
13
#include "nsAutoPtr.h"
14
#include "MainThreadUtils.h"
15
#include "nsPrintfCString.h"
16
#include "nsThreadUtils.h"
17
#include "mozilla/Likely.h"
18
#include "mozilla/Move.h"
19
#include "mozilla/SystemGroup.h"
20
#include "mozilla/TypeTraits.h"
21
#include "mozilla/Unused.h"
22
23
#ifdef XPCOM_GLUE_AVOID_NSPR
24
#error NS_ProxyRelease implementation depends on NSPR.
25
#endif
26
27
namespace detail {
28
29
template<typename T>
30
class ProxyReleaseEvent : public mozilla::CancelableRunnable
31
{
32
public:
33
  ProxyReleaseEvent(const char* aName, already_AddRefed<T> aDoomed)
34
0
  : CancelableRunnable(aName), mDoomed(aDoomed.take()) {}
Unexecuted instantiation: detail::ProxyReleaseEvent<mozilla::MediaSessionConduit>::ProxyReleaseEvent(char const*, already_AddRefed<mozilla::MediaSessionConduit>)
Unexecuted instantiation: detail::ProxyReleaseEvent<mozilla::AudioSessionConduit>::ProxyReleaseEvent(char const*, already_AddRefed<mozilla::AudioSessionConduit>)
Unexecuted instantiation: detail::ProxyReleaseEvent<mozilla::gfx::DrawTargetCapture>::ProxyReleaseEvent(char const*, already_AddRefed<mozilla::gfx::DrawTargetCapture>)
Unexecuted instantiation: detail::ProxyReleaseEvent<mozilla::dom::CustomElementReactionsStack>::ProxyReleaseEvent(char const*, already_AddRefed<mozilla::dom::CustomElementReactionsStack>)
Unexecuted instantiation: detail::ProxyReleaseEvent<mozilla::dom::cache::Context>::ProxyReleaseEvent(char const*, already_AddRefed<mozilla::dom::cache::Context>)
Unexecuted instantiation: detail::ProxyReleaseEvent<mozilla::dom::MutableBlobStorageCallback>::ProxyReleaseEvent(char const*, already_AddRefed<mozilla::dom::MutableBlobStorageCallback>)
Unexecuted instantiation: detail::ProxyReleaseEvent<mozilla::dom::TemporaryIPCBlobChild>::ProxyReleaseEvent(char const*, already_AddRefed<mozilla::dom::TemporaryIPCBlobChild>)
Unexecuted instantiation: detail::ProxyReleaseEvent<mozilla::dom::FileSystemRequestParent>::ProxyReleaseEvent(char const*, already_AddRefed<mozilla::dom::FileSystemRequestParent>)
Unexecuted instantiation: detail::ProxyReleaseEvent<mozilla::dom::FileSystemBase>::ProxyReleaseEvent(char const*, already_AddRefed<mozilla::dom::FileSystemBase>)
Unexecuted instantiation: detail::ProxyReleaseEvent<mozilla::MediaCache>::ProxyReleaseEvent(char const*, already_AddRefed<mozilla::MediaCache>)
Unexecuted instantiation: detail::ProxyReleaseEvent<mozilla::media::Refcountable<mozilla::UniquePtr<mozilla::GetUserMediaStreamRunnable::TracksAvailableCallback, mozilla::DefaultDelete<mozilla::GetUserMediaStreamRunnable::TracksAvailableCallback> > > >::ProxyReleaseEvent(char const*, already_AddRefed<mozilla::media::Refcountable<mozilla::UniquePtr<mozilla::GetUserMediaStreamRunnable::TracksAvailableCallback, mozilla::DefaultDelete<mozilla::GetUserMediaStreamRunnable::TracksAvailableCallback> > > >)
Unexecuted instantiation: detail::ProxyReleaseEvent<mozilla::GraphDriver>::ProxyReleaseEvent(char const*, already_AddRefed<mozilla::GraphDriver>)
Unexecuted instantiation: detail::ProxyReleaseEvent<mozilla::MediaSourceDecoder>::ProxyReleaseEvent(char const*, already_AddRefed<mozilla::MediaSourceDecoder>)
Unexecuted instantiation: detail::ProxyReleaseEvent<mozilla::media::Refcountable<mozilla::dom::MediaTrackSettings> >::ProxyReleaseEvent(char const*, already_AddRefed<mozilla::media::Refcountable<mozilla::dom::MediaTrackSettings> >)
Unexecuted instantiation: detail::ProxyReleaseEvent<mozilla::dom::ipc::SharedJSAllocatedData>::ProxyReleaseEvent(char const*, already_AddRefed<mozilla::dom::ipc::SharedJSAllocatedData>)
Unexecuted instantiation: detail::ProxyReleaseEvent<mozilla::dom::ServiceWorkerPrivate>::ProxyReleaseEvent(char const*, already_AddRefed<mozilla::dom::ServiceWorkerPrivate>)
Unexecuted instantiation: detail::ProxyReleaseEvent<mozilla::dom::ServiceWorkerJob>::ProxyReleaseEvent(char const*, already_AddRefed<mozilla::dom::ServiceWorkerJob>)
Unexecuted instantiation: detail::ProxyReleaseEvent<mozilla::dom::ServiceWorkerUpdateJob>::ProxyReleaseEvent(char const*, already_AddRefed<mozilla::dom::ServiceWorkerUpdateJob>)
Unexecuted instantiation: detail::ProxyReleaseEvent<nsCSSValueSharedList>::ProxyReleaseEvent(char const*, already_AddRefed<nsCSSValueSharedList>)
Unexecuted instantiation: detail::ProxyReleaseEvent<nsStyleImageRequest>::ProxyReleaseEvent(char const*, already_AddRefed<nsStyleImageRequest>)
35
36
  NS_IMETHOD Run() override
37
0
  {
38
0
    NS_IF_RELEASE(mDoomed);
39
0
    return NS_OK;
40
0
  }
Unexecuted instantiation: detail::ProxyReleaseEvent<mozilla::MediaSessionConduit>::Run()
Unexecuted instantiation: detail::ProxyReleaseEvent<mozilla::AudioSessionConduit>::Run()
Unexecuted instantiation: detail::ProxyReleaseEvent<mozilla::gfx::DrawTargetCapture>::Run()
Unexecuted instantiation: detail::ProxyReleaseEvent<mozilla::dom::CustomElementReactionsStack>::Run()
Unexecuted instantiation: detail::ProxyReleaseEvent<mozilla::dom::cache::Context>::Run()
Unexecuted instantiation: detail::ProxyReleaseEvent<mozilla::dom::MutableBlobStorageCallback>::Run()
Unexecuted instantiation: detail::ProxyReleaseEvent<mozilla::dom::TemporaryIPCBlobChild>::Run()
Unexecuted instantiation: detail::ProxyReleaseEvent<mozilla::dom::FileSystemRequestParent>::Run()
Unexecuted instantiation: detail::ProxyReleaseEvent<mozilla::dom::FileSystemBase>::Run()
Unexecuted instantiation: detail::ProxyReleaseEvent<mozilla::media::Refcountable<mozilla::dom::MediaTrackSettings> >::Run()
Unexecuted instantiation: detail::ProxyReleaseEvent<mozilla::MediaCache>::Run()
Unexecuted instantiation: detail::ProxyReleaseEvent<mozilla::media::Refcountable<mozilla::UniquePtr<mozilla::GetUserMediaStreamRunnable::TracksAvailableCallback, mozilla::DefaultDelete<mozilla::GetUserMediaStreamRunnable::TracksAvailableCallback> > > >::Run()
Unexecuted instantiation: detail::ProxyReleaseEvent<mozilla::GraphDriver>::Run()
Unexecuted instantiation: detail::ProxyReleaseEvent<mozilla::MediaSourceDecoder>::Run()
Unexecuted instantiation: detail::ProxyReleaseEvent<mozilla::dom::ipc::SharedJSAllocatedData>::Run()
Unexecuted instantiation: detail::ProxyReleaseEvent<mozilla::dom::ServiceWorkerPrivate>::Run()
Unexecuted instantiation: detail::ProxyReleaseEvent<mozilla::dom::ServiceWorkerJob>::Run()
Unexecuted instantiation: detail::ProxyReleaseEvent<mozilla::dom::ServiceWorkerUpdateJob>::Run()
Unexecuted instantiation: detail::ProxyReleaseEvent<nsCSSValueSharedList>::Run()
Unexecuted instantiation: detail::ProxyReleaseEvent<nsStyleImageRequest>::Run()
41
42
  nsresult Cancel() override
43
0
  {
44
0
    return Run();
45
0
  }
Unexecuted instantiation: detail::ProxyReleaseEvent<mozilla::MediaSessionConduit>::Cancel()
Unexecuted instantiation: detail::ProxyReleaseEvent<mozilla::AudioSessionConduit>::Cancel()
Unexecuted instantiation: detail::ProxyReleaseEvent<mozilla::gfx::DrawTargetCapture>::Cancel()
Unexecuted instantiation: detail::ProxyReleaseEvent<mozilla::dom::CustomElementReactionsStack>::Cancel()
Unexecuted instantiation: detail::ProxyReleaseEvent<mozilla::dom::cache::Context>::Cancel()
Unexecuted instantiation: detail::ProxyReleaseEvent<mozilla::dom::MutableBlobStorageCallback>::Cancel()
Unexecuted instantiation: detail::ProxyReleaseEvent<mozilla::dom::TemporaryIPCBlobChild>::Cancel()
Unexecuted instantiation: detail::ProxyReleaseEvent<mozilla::dom::FileSystemRequestParent>::Cancel()
Unexecuted instantiation: detail::ProxyReleaseEvent<mozilla::dom::FileSystemBase>::Cancel()
Unexecuted instantiation: detail::ProxyReleaseEvent<mozilla::media::Refcountable<mozilla::dom::MediaTrackSettings> >::Cancel()
Unexecuted instantiation: detail::ProxyReleaseEvent<mozilla::MediaCache>::Cancel()
Unexecuted instantiation: detail::ProxyReleaseEvent<mozilla::media::Refcountable<mozilla::UniquePtr<mozilla::GetUserMediaStreamRunnable::TracksAvailableCallback, mozilla::DefaultDelete<mozilla::GetUserMediaStreamRunnable::TracksAvailableCallback> > > >::Cancel()
Unexecuted instantiation: detail::ProxyReleaseEvent<mozilla::GraphDriver>::Cancel()
Unexecuted instantiation: detail::ProxyReleaseEvent<mozilla::MediaSourceDecoder>::Cancel()
Unexecuted instantiation: detail::ProxyReleaseEvent<mozilla::dom::ipc::SharedJSAllocatedData>::Cancel()
Unexecuted instantiation: detail::ProxyReleaseEvent<mozilla::dom::ServiceWorkerPrivate>::Cancel()
Unexecuted instantiation: detail::ProxyReleaseEvent<mozilla::dom::ServiceWorkerJob>::Cancel()
Unexecuted instantiation: detail::ProxyReleaseEvent<mozilla::dom::ServiceWorkerUpdateJob>::Cancel()
Unexecuted instantiation: detail::ProxyReleaseEvent<nsCSSValueSharedList>::Cancel()
Unexecuted instantiation: detail::ProxyReleaseEvent<nsStyleImageRequest>::Cancel()
46
47
#ifdef MOZ_COLLECTING_RUNNABLE_TELEMETRY
48
  NS_IMETHOD GetName(nsACString& aName) override
49
0
  {
50
0
    if (mName) {
51
0
      aName.Append(nsPrintfCString("ProxyReleaseEvent for %s", mName));
52
0
    } else {
53
0
      aName.AssignLiteral("ProxyReleaseEvent");
54
0
    }
55
0
    return NS_OK;
56
0
  }
Unexecuted instantiation: detail::ProxyReleaseEvent<mozilla::MediaSessionConduit>::GetName(nsTSubstring<char>&)
Unexecuted instantiation: detail::ProxyReleaseEvent<mozilla::AudioSessionConduit>::GetName(nsTSubstring<char>&)
Unexecuted instantiation: detail::ProxyReleaseEvent<mozilla::gfx::DrawTargetCapture>::GetName(nsTSubstring<char>&)
Unexecuted instantiation: detail::ProxyReleaseEvent<mozilla::dom::CustomElementReactionsStack>::GetName(nsTSubstring<char>&)
Unexecuted instantiation: detail::ProxyReleaseEvent<mozilla::dom::cache::Context>::GetName(nsTSubstring<char>&)
Unexecuted instantiation: detail::ProxyReleaseEvent<mozilla::dom::MutableBlobStorageCallback>::GetName(nsTSubstring<char>&)
Unexecuted instantiation: detail::ProxyReleaseEvent<mozilla::dom::TemporaryIPCBlobChild>::GetName(nsTSubstring<char>&)
Unexecuted instantiation: detail::ProxyReleaseEvent<mozilla::dom::FileSystemRequestParent>::GetName(nsTSubstring<char>&)
Unexecuted instantiation: detail::ProxyReleaseEvent<mozilla::dom::FileSystemBase>::GetName(nsTSubstring<char>&)
Unexecuted instantiation: detail::ProxyReleaseEvent<mozilla::media::Refcountable<mozilla::dom::MediaTrackSettings> >::GetName(nsTSubstring<char>&)
Unexecuted instantiation: detail::ProxyReleaseEvent<mozilla::MediaCache>::GetName(nsTSubstring<char>&)
Unexecuted instantiation: detail::ProxyReleaseEvent<mozilla::media::Refcountable<mozilla::UniquePtr<mozilla::GetUserMediaStreamRunnable::TracksAvailableCallback, mozilla::DefaultDelete<mozilla::GetUserMediaStreamRunnable::TracksAvailableCallback> > > >::GetName(nsTSubstring<char>&)
Unexecuted instantiation: detail::ProxyReleaseEvent<mozilla::GraphDriver>::GetName(nsTSubstring<char>&)
Unexecuted instantiation: detail::ProxyReleaseEvent<mozilla::MediaSourceDecoder>::GetName(nsTSubstring<char>&)
Unexecuted instantiation: detail::ProxyReleaseEvent<mozilla::dom::ipc::SharedJSAllocatedData>::GetName(nsTSubstring<char>&)
Unexecuted instantiation: detail::ProxyReleaseEvent<mozilla::dom::ServiceWorkerPrivate>::GetName(nsTSubstring<char>&)
Unexecuted instantiation: detail::ProxyReleaseEvent<mozilla::dom::ServiceWorkerJob>::GetName(nsTSubstring<char>&)
Unexecuted instantiation: detail::ProxyReleaseEvent<mozilla::dom::ServiceWorkerUpdateJob>::GetName(nsTSubstring<char>&)
Unexecuted instantiation: detail::ProxyReleaseEvent<nsCSSValueSharedList>::GetName(nsTSubstring<char>&)
Unexecuted instantiation: detail::ProxyReleaseEvent<nsStyleImageRequest>::GetName(nsTSubstring<char>&)
57
#endif
58
59
private:
60
  T* MOZ_OWNING_REF mDoomed;
61
};
62
63
template<typename T>
64
void
65
ProxyRelease(const char* aName, nsIEventTarget* aTarget,
66
             already_AddRefed<T> aDoomed, bool aAlwaysProxy)
67
0
{
68
0
  // Auto-managing release of the pointer.
69
0
  RefPtr<T> doomed = aDoomed;
70
0
  nsresult rv;
71
0
72
0
  if (!doomed || !aTarget) {
73
0
    return;
74
0
  }
75
0
76
0
  if (!aAlwaysProxy) {
77
0
    bool onCurrentThread = false;
78
0
    rv = aTarget->IsOnCurrentThread(&onCurrentThread);
79
0
    if (NS_SUCCEEDED(rv) && onCurrentThread) {
80
0
      return;
81
0
    }
82
0
  }
83
0
84
0
  nsCOMPtr<nsIRunnable> ev = new ProxyReleaseEvent<T>(aName, doomed.forget());
85
0
86
0
  rv = aTarget->Dispatch(ev, NS_DISPATCH_NORMAL);
87
0
  if (NS_FAILED(rv)) {
88
0
    NS_WARNING("failed to post proxy release event, leaking!");
89
0
    // It is better to leak the aDoomed object than risk crashing as
90
0
    // a result of deleting it on the wrong thread.
91
0
  }
92
0
}
Unexecuted instantiation: void detail::ProxyRelease<mozilla::MediaSessionConduit>(char const*, nsIEventTarget*, already_AddRefed<mozilla::MediaSessionConduit>, bool)
Unexecuted instantiation: void detail::ProxyRelease<mozilla::AudioSessionConduit>(char const*, nsIEventTarget*, already_AddRefed<mozilla::AudioSessionConduit>, bool)
Unexecuted instantiation: void detail::ProxyRelease<mozilla::gfx::DrawTargetCapture>(char const*, nsIEventTarget*, already_AddRefed<mozilla::gfx::DrawTargetCapture>, bool)
Unexecuted instantiation: void detail::ProxyRelease<mozilla::dom::CustomElementReactionsStack>(char const*, nsIEventTarget*, already_AddRefed<mozilla::dom::CustomElementReactionsStack>, bool)
Unexecuted instantiation: void detail::ProxyRelease<mozilla::dom::cache::Context>(char const*, nsIEventTarget*, already_AddRefed<mozilla::dom::cache::Context>, bool)
Unexecuted instantiation: void detail::ProxyRelease<mozilla::dom::MutableBlobStorageCallback>(char const*, nsIEventTarget*, already_AddRefed<mozilla::dom::MutableBlobStorageCallback>, bool)
Unexecuted instantiation: void detail::ProxyRelease<mozilla::dom::TemporaryIPCBlobChild>(char const*, nsIEventTarget*, already_AddRefed<mozilla::dom::TemporaryIPCBlobChild>, bool)
Unexecuted instantiation: void detail::ProxyRelease<mozilla::dom::FileSystemRequestParent>(char const*, nsIEventTarget*, already_AddRefed<mozilla::dom::FileSystemRequestParent>, bool)
Unexecuted instantiation: void detail::ProxyRelease<mozilla::dom::FileSystemBase>(char const*, nsIEventTarget*, already_AddRefed<mozilla::dom::FileSystemBase>, bool)
Unexecuted instantiation: void detail::ProxyRelease<mozilla::media::Refcountable<mozilla::dom::MediaTrackSettings> >(char const*, nsIEventTarget*, already_AddRefed<mozilla::media::Refcountable<mozilla::dom::MediaTrackSettings> >, bool)
Unexecuted instantiation: void detail::ProxyRelease<mozilla::MediaCache>(char const*, nsIEventTarget*, already_AddRefed<mozilla::MediaCache>, bool)
Unexecuted instantiation: void detail::ProxyRelease<mozilla::media::Refcountable<mozilla::UniquePtr<mozilla::GetUserMediaStreamRunnable::TracksAvailableCallback, mozilla::DefaultDelete<mozilla::GetUserMediaStreamRunnable::TracksAvailableCallback> > > >(char const*, nsIEventTarget*, already_AddRefed<mozilla::media::Refcountable<mozilla::UniquePtr<mozilla::GetUserMediaStreamRunnable::TracksAvailableCallback, mozilla::DefaultDelete<mozilla::GetUserMediaStreamRunnable::TracksAvailableCallback> > > >, bool)
Unexecuted instantiation: void detail::ProxyRelease<mozilla::GraphDriver>(char const*, nsIEventTarget*, already_AddRefed<mozilla::GraphDriver>, bool)
Unexecuted instantiation: void detail::ProxyRelease<mozilla::MediaSourceDecoder>(char const*, nsIEventTarget*, already_AddRefed<mozilla::MediaSourceDecoder>, bool)
Unexecuted instantiation: void detail::ProxyRelease<mozilla::dom::ipc::SharedJSAllocatedData>(char const*, nsIEventTarget*, already_AddRefed<mozilla::dom::ipc::SharedJSAllocatedData>, bool)
Unexecuted instantiation: void detail::ProxyRelease<mozilla::dom::ServiceWorkerPrivate>(char const*, nsIEventTarget*, already_AddRefed<mozilla::dom::ServiceWorkerPrivate>, bool)
Unexecuted instantiation: void detail::ProxyRelease<mozilla::dom::ServiceWorkerJob>(char const*, nsIEventTarget*, already_AddRefed<mozilla::dom::ServiceWorkerJob>, bool)
Unexecuted instantiation: void detail::ProxyRelease<mozilla::dom::ServiceWorkerUpdateJob>(char const*, nsIEventTarget*, already_AddRefed<mozilla::dom::ServiceWorkerUpdateJob>, bool)
Unexecuted instantiation: void detail::ProxyRelease<nsCSSValueSharedList>(char const*, nsIEventTarget*, already_AddRefed<nsCSSValueSharedList>, bool)
Unexecuted instantiation: void detail::ProxyRelease<nsStyleImageRequest>(char const*, nsIEventTarget*, already_AddRefed<nsStyleImageRequest>, bool)
93
94
template<bool nsISupportsBased>
95
struct ProxyReleaseChooser
96
{
97
  template<typename T>
98
  static void ProxyRelease(const char* aName,
99
                           nsIEventTarget* aTarget,
100
                           already_AddRefed<T> aDoomed,
101
                           bool aAlwaysProxy)
102
0
  {
103
0
    ::detail::ProxyRelease(aName, aTarget, std::move(aDoomed), aAlwaysProxy);
104
0
  }
Unexecuted instantiation: void detail::ProxyReleaseChooser<false>::ProxyRelease<mozilla::MediaSessionConduit>(char const*, nsIEventTarget*, already_AddRefed<mozilla::MediaSessionConduit>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<false>::ProxyRelease<mozilla::AudioSessionConduit>(char const*, nsIEventTarget*, already_AddRefed<mozilla::AudioSessionConduit>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<false>::ProxyRelease<mozilla::gfx::DrawTargetCapture>(char const*, nsIEventTarget*, already_AddRefed<mozilla::gfx::DrawTargetCapture>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<false>::ProxyRelease<mozilla::dom::CustomElementReactionsStack>(char const*, nsIEventTarget*, already_AddRefed<mozilla::dom::CustomElementReactionsStack>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<false>::ProxyRelease<mozilla::dom::cache::Context>(char const*, nsIEventTarget*, already_AddRefed<mozilla::dom::cache::Context>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<false>::ProxyRelease<mozilla::dom::MutableBlobStorageCallback>(char const*, nsIEventTarget*, already_AddRefed<mozilla::dom::MutableBlobStorageCallback>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<false>::ProxyRelease<mozilla::dom::TemporaryIPCBlobChild>(char const*, nsIEventTarget*, already_AddRefed<mozilla::dom::TemporaryIPCBlobChild>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<false>::ProxyRelease<mozilla::dom::FileSystemRequestParent>(char const*, nsIEventTarget*, already_AddRefed<mozilla::dom::FileSystemRequestParent>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<false>::ProxyRelease<mozilla::dom::FileSystemBase>(char const*, nsIEventTarget*, already_AddRefed<mozilla::dom::FileSystemBase>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<false>::ProxyRelease<mozilla::media::Refcountable<mozilla::dom::MediaTrackSettings> >(char const*, nsIEventTarget*, already_AddRefed<mozilla::media::Refcountable<mozilla::dom::MediaTrackSettings> >, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<false>::ProxyRelease<mozilla::MediaCache>(char const*, nsIEventTarget*, already_AddRefed<mozilla::MediaCache>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<false>::ProxyRelease<mozilla::media::Refcountable<mozilla::UniquePtr<mozilla::GetUserMediaStreamRunnable::TracksAvailableCallback, mozilla::DefaultDelete<mozilla::GetUserMediaStreamRunnable::TracksAvailableCallback> > > >(char const*, nsIEventTarget*, already_AddRefed<mozilla::media::Refcountable<mozilla::UniquePtr<mozilla::GetUserMediaStreamRunnable::TracksAvailableCallback, mozilla::DefaultDelete<mozilla::GetUserMediaStreamRunnable::TracksAvailableCallback> > > >, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<false>::ProxyRelease<mozilla::GraphDriver>(char const*, nsIEventTarget*, already_AddRefed<mozilla::GraphDriver>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<false>::ProxyRelease<mozilla::MediaSourceDecoder>(char const*, nsIEventTarget*, already_AddRefed<mozilla::MediaSourceDecoder>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<false>::ProxyRelease<mozilla::dom::ipc::SharedJSAllocatedData>(char const*, nsIEventTarget*, already_AddRefed<mozilla::dom::ipc::SharedJSAllocatedData>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<false>::ProxyRelease<mozilla::dom::ServiceWorkerPrivate>(char const*, nsIEventTarget*, already_AddRefed<mozilla::dom::ServiceWorkerPrivate>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<false>::ProxyRelease<mozilla::dom::ServiceWorkerJob>(char const*, nsIEventTarget*, already_AddRefed<mozilla::dom::ServiceWorkerJob>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<false>::ProxyRelease<mozilla::dom::ServiceWorkerUpdateJob>(char const*, nsIEventTarget*, already_AddRefed<mozilla::dom::ServiceWorkerUpdateJob>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<false>::ProxyRelease<nsCSSValueSharedList>(char const*, nsIEventTarget*, already_AddRefed<nsCSSValueSharedList>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<false>::ProxyRelease<nsStyleImageRequest>(char const*, nsIEventTarget*, already_AddRefed<nsStyleImageRequest>, bool)
105
};
106
107
template<>
108
struct ProxyReleaseChooser<true>
109
{
110
  // We need an intermediate step for handling classes with ambiguous
111
  // inheritance to nsISupports.
112
  template<typename T>
113
  static void ProxyRelease(const char* aName,
114
                           nsIEventTarget* aTarget,
115
                           already_AddRefed<T> aDoomed,
116
                           bool aAlwaysProxy)
117
8.65k
  {
118
8.65k
    ProxyReleaseISupports(aName, aTarget, ToSupports(aDoomed.take()), aAlwaysProxy);
119
8.65k
  }
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<nsIOpenSignedAppFileCallback>(char const*, nsIEventTarget*, already_AddRefed<nsIOpenSignedAppFileCallback>, bool)
void detail::ProxyReleaseChooser<true>::ProxyRelease<nsIConsoleMessage>(char const*, nsIEventTarget*, already_AddRefed<nsIConsoleMessage>, bool)
Line
Count
Source
117
8.65k
  {
118
8.65k
    ProxyReleaseISupports(aName, aTarget, ToSupports(aDoomed.take()), aAlwaysProxy);
119
8.65k
  }
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<nsIInterfaceRequestor>(char const*, nsIEventTarget*, already_AddRefed<nsIInterfaceRequestor>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<NetDashboardCallback>(char const*, nsIEventTarget*, already_AddRefed<NetDashboardCallback>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<nsITLSServerSecurityObserver>(char const*, nsIEventTarget*, already_AddRefed<nsITLSServerSecurityObserver>, bool)
void detail::ProxyReleaseChooser<true>::ProxyRelease<nsILoadInfo>(char const*, nsIEventTarget*, already_AddRefed<nsILoadInfo>, bool)
Line
Count
Source
117
5
  {
118
5
    ProxyReleaseISupports(aName, aTarget, ToSupports(aDoomed.take()), aAlwaysProxy);
119
5
  }
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<nsIChannel>(char const*, nsIEventTarget*, already_AddRefed<nsIChannel>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<nsIProtocolProxyCallback>(char const*, nsIEventTarget*, already_AddRefed<nsIProtocolProxyCallback>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<nsIProxyInfo>(char const*, nsIEventTarget*, already_AddRefed<nsIProxyInfo>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<nsIProtocolProxyService>(char const*, nsIEventTarget*, already_AddRefed<nsIProtocolProxyService>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<nsIProtocolProxyService2>(char const*, nsIEventTarget*, already_AddRefed<nsIProtocolProxyService2>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<nsISupports>(char const*, nsIEventTarget*, already_AddRefed<nsISupports>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<nsIRequestObserver>(char const*, nsIEventTarget*, already_AddRefed<nsIRequestObserver>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<nsIServerSocketListener>(char const*, nsIEventTarget*, already_AddRefed<nsIServerSocketListener>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<nsIOutputStream>(char const*, nsIEventTarget*, already_AddRefed<nsIOutputStream>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<nsITransportEventSink>(char const*, nsIEventTarget*, already_AddRefed<nsITransportEventSink>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<nsIUDPSocketListener>(char const*, nsIEventTarget*, already_AddRefed<nsIUDPSocketListener>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<nsIDNSListener>(char const*, nsIEventTarget*, already_AddRefed<nsIDNSListener>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<nsIApplicationCache>(char const*, nsIEventTarget*, already_AddRefed<nsIApplicationCache>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<nsIWeakReference>(char const*, nsIEventTarget*, already_AddRefed<nsIWeakReference>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<nsICacheEntryOpenCallback>(char const*, nsIEventTarget*, already_AddRefed<nsICacheEntryOpenCallback>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<nsICacheStorageVisitor>(char const*, nsIEventTarget*, already_AddRefed<nsICacheStorageVisitor>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<nsICacheEntryDoomCallback>(char const*, nsIEventTarget*, already_AddRefed<nsICacheEntryDoomCallback>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<nsIRunnable>(char const*, nsIEventTarget*, already_AddRefed<nsIRunnable>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<nsISiteSecurityService>(char const*, nsIEventTarget*, already_AddRefed<nsISiteSecurityService>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<nsICookieService>(char const*, nsIEventTarget*, already_AddRefed<nsICookieService>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<nsIStreamConverterService>(char const*, nsIEventTarget*, already_AddRefed<nsIStreamConverterService>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<nsIIOService>(char const*, nsIEventTarget*, already_AddRefed<nsIIOService>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<nsIHttpActivityObserver>(char const*, nsIEventTarget*, already_AddRefed<nsIHttpActivityObserver>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<nsIWebSocketListener>(char const*, nsIEventTarget*, already_AddRefed<nsIWebSocketListener>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<nsIURI>(char const*, nsIEventTarget*, already_AddRefed<nsIURI>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<nsILoadGroup>(char const*, nsIEventTarget*, already_AddRefed<nsILoadGroup>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<mozilla::net::WebSocketEventService>(char const*, nsIEventTarget*, already_AddRefed<mozilla::net::WebSocketEventService>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<nsIHttpChannelInternal>(char const*, nsIEventTarget*, already_AddRefed<nsIHttpChannelInternal>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<nsIHttpChannel>(char const*, nsIEventTarget*, already_AddRefed<nsIHttpChannel>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<mozilla::DataChannelBlobSendRunnable>(char const*, nsIEventTarget*, already_AddRefed<mozilla::DataChannelBlobSendRunnable>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<nsIWifiListener>(char const*, nsIEventTarget*, already_AddRefed<nsIWifiListener>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<nsIPrincipal>(char const*, nsIEventTarget*, already_AddRefed<nsIPrincipal>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<nsIThread>(char const*, nsIEventTarget*, already_AddRefed<nsIThread>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<mozilla::storage::BindingParamsArray>(char const*, nsIEventTarget*, already_AddRefed<mozilla::storage::BindingParamsArray>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<mozilla::storage::Connection>(char const*, nsIEventTarget*, already_AddRefed<mozilla::storage::Connection>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<mozIStorageCompletionCallback>(char const*, nsIEventTarget*, already_AddRefed<mozIStorageCompletionCallback>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<mozilla::storage::StorageBaseStatementInternal>(char const*, nsIEventTarget*, already_AddRefed<mozilla::storage::StorageBaseStatementInternal>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<mozilla::storage::AsyncStatementParamsHolder>(char const*, nsIEventTarget*, already_AddRefed<mozilla::storage::AsyncStatementParamsHolder>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<mozIStorageStatementCallback>(char const*, nsIEventTarget*, already_AddRefed<mozIStorageStatementCallback>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<nsIFile>(char const*, nsIEventTarget*, already_AddRefed<nsIFile>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<mozilla::storage::StatementRowHolder>(char const*, nsIEventTarget*, already_AddRefed<mozilla::storage::StatementRowHolder>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<mozilla::storage::StatementParamsHolder>(char const*, nsIEventTarget*, already_AddRefed<mozilla::storage::StatementParamsHolder>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<mozilla::dom::MediaStreamTrack>(char const*, nsIEventTarget*, already_AddRefed<mozilla::dom::MediaStreamTrack>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<mozilla::dom::WebrtcGlobalStatisticsCallback>(char const*, nsIEventTarget*, already_AddRefed<mozilla::dom::WebrtcGlobalStatisticsCallback>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<mozilla::dom::WebrtcGlobalLoggingCallback>(char const*, nsIEventTarget*, already_AddRefed<mozilla::dom::WebrtcGlobalLoggingCallback>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<mozilla::TransportFlow>(char const*, nsIEventTarget*, already_AddRefed<mozilla::TransportFlow>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<mozilla::image::Image>(char const*, nsIEventTarget*, already_AddRefed<mozilla::image::Image>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<imgIContainerCallback>(char const*, nsIEventTarget*, already_AddRefed<imgIContainerCallback>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<mozilla::dom::U2FRegisterCallback>(char const*, nsIEventTarget*, already_AddRefed<mozilla::dom::U2FRegisterCallback>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<mozilla::dom::U2FSignCallback>(char const*, nsIEventTarget*, already_AddRefed<mozilla::dom::U2FSignCallback>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<nsIAsyncShutdownBarrier>(char const*, nsIEventTarget*, already_AddRefed<nsIAsyncShutdownBarrier>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<nsIAsyncShutdownClient>(char const*, nsIEventTarget*, already_AddRefed<nsIAsyncShutdownClient>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<nsDOMDataChannel>(char const*, nsIEventTarget*, already_AddRefed<nsDOMDataChannel>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<nsICacheInfoChannel>(char const*, nsIEventTarget*, already_AddRefed<nsICacheInfoChannel>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<mozilla::dom::ContentParent>(char const*, nsIEventTarget*, already_AddRefed<mozilla::dom::ContentParent>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<mozilla::dom::AbortSignalImpl>(char const*, nsIEventTarget*, already_AddRefed<mozilla::dom::AbortSignalImpl>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<mozilla::dom::Blob>(char const*, nsIEventTarget*, already_AddRefed<mozilla::dom::Blob>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<mozilla::dom::MediaDocument>(char const*, nsIEventTarget*, already_AddRefed<mozilla::dom::MediaDocument>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<mozilla::dom::Promise>(char const*, nsIEventTarget*, already_AddRefed<mozilla::dom::Promise>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<mozilla::DOMMediaStream>(char const*, nsIEventTarget*, already_AddRefed<mozilla::DOMMediaStream>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<mozilla::dom::SpeechRecognition>(char const*, nsIEventTarget*, already_AddRefed<mozilla::dom::SpeechRecognition>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<nsPIDOMWindowInner>(char const*, nsIEventTarget*, already_AddRefed<nsPIDOMWindowInner>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<nsIConsoleAPIStorage>(char const*, nsIEventTarget*, already_AddRefed<nsIConsoleAPIStorage>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<mozilla::JSObjectHolder>(char const*, nsIEventTarget*, already_AddRefed<mozilla::JSObjectHolder>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<mozilla::dom::ScriptLoadRequest>(char const*, nsIEventTarget*, already_AddRefed<mozilla::dom::ScriptLoadRequest>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<mozilla::dom::ScriptLoader>(char const*, nsIEventTarget*, already_AddRefed<mozilla::dom::ScriptLoader>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<nsIWebSocketChannel>(char const*, nsIEventTarget*, already_AddRefed<nsIWebSocketChannel>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<mozilla::dom::ServiceWorkerRegistrationInfo>(char const*, nsIEventTarget*, already_AddRefed<mozilla::dom::ServiceWorkerRegistrationInfo>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<nsIInterceptedChannel>(char const*, nsIEventTarget*, already_AddRefed<nsIInterceptedChannel>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<mozilla::dom::KeepAliveToken>(char const*, nsIEventTarget*, already_AddRefed<mozilla::dom::KeepAliveToken>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<mozilla::dom::ServiceWorkerInfo>(char const*, nsIEventTarget*, already_AddRefed<mozilla::dom::ServiceWorkerInfo>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<mozilla::css::SheetLoadData>(char const*, nsIEventTarget*, already_AddRefed<mozilla::css::SheetLoadData>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<mozIPersonalDictionary>(char const*, nsIEventTarget*, already_AddRefed<mozIPersonalDictionary>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<nsILocalCertGetCallback>(char const*, nsIEventTarget*, already_AddRefed<nsILocalCertGetCallback>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<nsILocalCertCallback>(char const*, nsIEventTarget*, already_AddRefed<nsILocalCertCallback>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<nsIObserver>(char const*, nsIEventTarget*, already_AddRefed<nsIObserver>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<nsICertVerificationCallback>(char const*, nsIEventTarget*, already_AddRefed<nsICertVerificationCallback>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<mozilla::extensions::ChannelWrapper>(char const*, nsIEventTarget*, already_AddRefed<mozilla::extensions::ChannelWrapper>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<nsIStreamListener>(char const*, nsIEventTarget*, already_AddRefed<nsIStreamListener>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<nsINativeOSFileSuccessCallback>(char const*, nsIEventTarget*, already_AddRefed<nsINativeOSFileSuccessCallback>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<nsINativeOSFileErrorCallback>(char const*, nsIEventTarget*, already_AddRefed<nsINativeOSFileErrorCallback>, bool)
Unexecuted instantiation: NativeOSFileInternals.cpp:void detail::ProxyReleaseChooser<true>::ProxyRelease<mozilla::(anonymous namespace)::OSFileErrorEvent>(char const*, nsIEventTarget*, already_AddRefed<mozilla::(anonymous namespace)::OSFileErrorEvent>, bool)
Unexecuted instantiation: NativeOSFileInternals.cpp:void detail::ProxyReleaseChooser<true>::ProxyRelease<mozilla::(anonymous namespace)::TypedArrayResult>(char const*, nsIEventTarget*, already_AddRefed<mozilla::(anonymous namespace)::TypedArrayResult>, bool)
Unexecuted instantiation: NativeOSFileInternals.cpp:void detail::ProxyReleaseChooser<true>::ProxyRelease<mozilla::(anonymous namespace)::SuccessEvent>(char const*, nsIEventTarget*, already_AddRefed<mozilla::(anonymous namespace)::SuccessEvent>, bool)
Unexecuted instantiation: NativeOSFileInternals.cpp:void detail::ProxyReleaseChooser<true>::ProxyRelease<mozilla::(anonymous namespace)::StringResult>(char const*, nsIEventTarget*, already_AddRefed<mozilla::(anonymous namespace)::StringResult>, bool)
Unexecuted instantiation: NativeOSFileInternals.cpp:void detail::ProxyReleaseChooser<true>::ProxyRelease<mozilla::(anonymous namespace)::Int32Result>(char const*, nsIEventTarget*, already_AddRefed<mozilla::(anonymous namespace)::Int32Result>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<nsIFaviconDataCallback>(char const*, nsIEventTarget*, already_AddRefed<nsIFaviconDataCallback>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<mozIVisitedStatusCallback>(char const*, nsIEventTarget*, already_AddRefed<mozIVisitedStatusCallback>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<mozIVisitInfoCallback>(char const*, nsIEventTarget*, already_AddRefed<mozIVisitInfoCallback>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<nsIURIClassifierCallback>(char const*, nsIEventTarget*, already_AddRefed<nsIURIClassifierCallback>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<nsIUrlClassifierLookupCallback>(char const*, nsIEventTarget*, already_AddRefed<nsIUrlClassifierLookupCallback>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<nsIUrlClassifierCallback>(char const*, nsIEventTarget*, already_AddRefed<nsIUrlClassifierCallback>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<nsIUrlClassifierUpdateObserver>(char const*, nsIEventTarget*, already_AddRefed<nsIUrlClassifierUpdateObserver>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<nsIUrlClassifierGetCacheCallback>(char const*, nsIEventTarget*, already_AddRefed<nsIUrlClassifierGetCacheCallback>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<nsIIdentitySignCallback>(char const*, nsIEventTarget*, already_AddRefed<nsIIdentitySignCallback>, bool)
Unexecuted instantiation: void detail::ProxyReleaseChooser<true>::ProxyRelease<nsIIdentityKeyGenCallback>(char const*, nsIEventTarget*, already_AddRefed<nsIIdentityKeyGenCallback>, bool)
120
121
  static void ProxyReleaseISupports(const char* aName,
122
                                    nsIEventTarget* aTarget,
123
                                    nsISupports* aDoomed,
124
                                    bool aAlwaysProxy);
125
};
126
127
} // namespace detail
128
129
/**
130
 * Ensures that the delete of a smart pointer occurs on the target thread.
131
 *
132
 * @param aName
133
 *        the labelling name of the runnable involved in the releasing
134
 * @param aTarget
135
 *        the target thread where the doomed object should be released.
136
 * @param aDoomed
137
 *        the doomed object; the object to be released on the target thread.
138
 * @param aAlwaysProxy
139
 *        normally, if NS_ProxyRelease is called on the target thread, then the
140
 *        doomed object will be released directly. However, if this parameter is
141
 *        true, then an event will always be posted to the target thread for
142
 *        asynchronous release.
143
 */
144
template<class T>
145
inline NS_HIDDEN_(void)
146
NS_ProxyRelease(const char* aName, nsIEventTarget* aTarget,
147
                already_AddRefed<T> aDoomed, bool aAlwaysProxy = false)
148
8.65k
{
149
8.65k
  ::detail::ProxyReleaseChooser<mozilla::IsBaseOf<nsISupports, T>::value>
150
8.65k
    ::ProxyRelease(aName, aTarget, std::move(aDoomed), aAlwaysProxy);
151
8.65k
}
Unexecuted instantiation: void NS_ProxyRelease<nsIOpenSignedAppFileCallback>(char const*, nsIEventTarget*, already_AddRefed<nsIOpenSignedAppFileCallback>, bool)
void NS_ProxyRelease<nsIConsoleMessage>(char const*, nsIEventTarget*, already_AddRefed<nsIConsoleMessage>, bool)
Line
Count
Source
148
8.65k
{
149
8.65k
  ::detail::ProxyReleaseChooser<mozilla::IsBaseOf<nsISupports, T>::value>
150
8.65k
    ::ProxyRelease(aName, aTarget, std::move(aDoomed), aAlwaysProxy);
151
8.65k
}
Unexecuted instantiation: void NS_ProxyRelease<nsIInterfaceRequestor>(char const*, nsIEventTarget*, already_AddRefed<nsIInterfaceRequestor>, bool)
Unexecuted instantiation: void NS_ProxyRelease<NetDashboardCallback>(char const*, nsIEventTarget*, already_AddRefed<NetDashboardCallback>, bool)
Unexecuted instantiation: void NS_ProxyRelease<nsITLSServerSecurityObserver>(char const*, nsIEventTarget*, already_AddRefed<nsITLSServerSecurityObserver>, bool)
void NS_ProxyRelease<nsILoadInfo>(char const*, nsIEventTarget*, already_AddRefed<nsILoadInfo>, bool)
Line
Count
Source
148
5
{
149
5
  ::detail::ProxyReleaseChooser<mozilla::IsBaseOf<nsISupports, T>::value>
150
5
    ::ProxyRelease(aName, aTarget, std::move(aDoomed), aAlwaysProxy);
151
5
}
Unexecuted instantiation: void NS_ProxyRelease<nsIChannel>(char const*, nsIEventTarget*, already_AddRefed<nsIChannel>, bool)
Unexecuted instantiation: void NS_ProxyRelease<nsIProtocolProxyCallback>(char const*, nsIEventTarget*, already_AddRefed<nsIProtocolProxyCallback>, bool)
Unexecuted instantiation: void NS_ProxyRelease<nsIProxyInfo>(char const*, nsIEventTarget*, already_AddRefed<nsIProxyInfo>, bool)
Unexecuted instantiation: void NS_ProxyRelease<nsIProtocolProxyService>(char const*, nsIEventTarget*, already_AddRefed<nsIProtocolProxyService>, bool)
Unexecuted instantiation: void NS_ProxyRelease<nsIProtocolProxyService2>(char const*, nsIEventTarget*, already_AddRefed<nsIProtocolProxyService2>, bool)
Unexecuted instantiation: void NS_ProxyRelease<nsISupports>(char const*, nsIEventTarget*, already_AddRefed<nsISupports>, bool)
Unexecuted instantiation: void NS_ProxyRelease<nsIRequestObserver>(char const*, nsIEventTarget*, already_AddRefed<nsIRequestObserver>, bool)
Unexecuted instantiation: void NS_ProxyRelease<nsIServerSocketListener>(char const*, nsIEventTarget*, already_AddRefed<nsIServerSocketListener>, bool)
Unexecuted instantiation: void NS_ProxyRelease<nsIOutputStream>(char const*, nsIEventTarget*, already_AddRefed<nsIOutputStream>, bool)
Unexecuted instantiation: void NS_ProxyRelease<nsITransportEventSink>(char const*, nsIEventTarget*, already_AddRefed<nsITransportEventSink>, bool)
Unexecuted instantiation: void NS_ProxyRelease<nsIUDPSocketListener>(char const*, nsIEventTarget*, already_AddRefed<nsIUDPSocketListener>, bool)
Unexecuted instantiation: void NS_ProxyRelease<nsIDNSListener>(char const*, nsIEventTarget*, already_AddRefed<nsIDNSListener>, bool)
Unexecuted instantiation: void NS_ProxyRelease<nsIApplicationCache>(char const*, nsIEventTarget*, already_AddRefed<nsIApplicationCache>, bool)
Unexecuted instantiation: void NS_ProxyRelease<nsIWeakReference>(char const*, nsIEventTarget*, already_AddRefed<nsIWeakReference>, bool)
Unexecuted instantiation: void NS_ProxyRelease<nsICacheEntryOpenCallback>(char const*, nsIEventTarget*, already_AddRefed<nsICacheEntryOpenCallback>, bool)
Unexecuted instantiation: void NS_ProxyRelease<nsICacheStorageVisitor>(char const*, nsIEventTarget*, already_AddRefed<nsICacheStorageVisitor>, bool)
Unexecuted instantiation: void NS_ProxyRelease<nsICacheEntryDoomCallback>(char const*, nsIEventTarget*, already_AddRefed<nsICacheEntryDoomCallback>, bool)
Unexecuted instantiation: void NS_ProxyRelease<nsIRunnable>(char const*, nsIEventTarget*, already_AddRefed<nsIRunnable>, bool)
Unexecuted instantiation: void NS_ProxyRelease<nsISiteSecurityService>(char const*, nsIEventTarget*, already_AddRefed<nsISiteSecurityService>, bool)
Unexecuted instantiation: void NS_ProxyRelease<nsICookieService>(char const*, nsIEventTarget*, already_AddRefed<nsICookieService>, bool)
Unexecuted instantiation: void NS_ProxyRelease<nsIStreamConverterService>(char const*, nsIEventTarget*, already_AddRefed<nsIStreamConverterService>, bool)
Unexecuted instantiation: void NS_ProxyRelease<nsIIOService>(char const*, nsIEventTarget*, already_AddRefed<nsIIOService>, bool)
Unexecuted instantiation: void NS_ProxyRelease<nsIHttpActivityObserver>(char const*, nsIEventTarget*, already_AddRefed<nsIHttpActivityObserver>, bool)
Unexecuted instantiation: void NS_ProxyRelease<nsIWebSocketListener>(char const*, nsIEventTarget*, already_AddRefed<nsIWebSocketListener>, bool)
Unexecuted instantiation: void NS_ProxyRelease<nsIURI>(char const*, nsIEventTarget*, already_AddRefed<nsIURI>, bool)
Unexecuted instantiation: void NS_ProxyRelease<nsILoadGroup>(char const*, nsIEventTarget*, already_AddRefed<nsILoadGroup>, bool)
Unexecuted instantiation: void NS_ProxyRelease<mozilla::net::WebSocketEventService>(char const*, nsIEventTarget*, already_AddRefed<mozilla::net::WebSocketEventService>, bool)
Unexecuted instantiation: void NS_ProxyRelease<nsIHttpChannelInternal>(char const*, nsIEventTarget*, already_AddRefed<nsIHttpChannelInternal>, bool)
Unexecuted instantiation: void NS_ProxyRelease<nsIHttpChannel>(char const*, nsIEventTarget*, already_AddRefed<nsIHttpChannel>, bool)
Unexecuted instantiation: void NS_ProxyRelease<mozilla::DataChannelBlobSendRunnable>(char const*, nsIEventTarget*, already_AddRefed<mozilla::DataChannelBlobSendRunnable>, bool)
Unexecuted instantiation: void NS_ProxyRelease<nsIWifiListener>(char const*, nsIEventTarget*, already_AddRefed<nsIWifiListener>, bool)
Unexecuted instantiation: void NS_ProxyRelease<nsIPrincipal>(char const*, nsIEventTarget*, already_AddRefed<nsIPrincipal>, bool)
Unexecuted instantiation: void NS_ProxyRelease<nsIThread>(char const*, nsIEventTarget*, already_AddRefed<nsIThread>, bool)
Unexecuted instantiation: void NS_ProxyRelease<mozilla::storage::BindingParamsArray>(char const*, nsIEventTarget*, already_AddRefed<mozilla::storage::BindingParamsArray>, bool)
Unexecuted instantiation: void NS_ProxyRelease<mozilla::storage::Connection>(char const*, nsIEventTarget*, already_AddRefed<mozilla::storage::Connection>, bool)
Unexecuted instantiation: void NS_ProxyRelease<mozIStorageCompletionCallback>(char const*, nsIEventTarget*, already_AddRefed<mozIStorageCompletionCallback>, bool)
Unexecuted instantiation: void NS_ProxyRelease<mozilla::storage::StorageBaseStatementInternal>(char const*, nsIEventTarget*, already_AddRefed<mozilla::storage::StorageBaseStatementInternal>, bool)
Unexecuted instantiation: void NS_ProxyRelease<mozilla::storage::AsyncStatementParamsHolder>(char const*, nsIEventTarget*, already_AddRefed<mozilla::storage::AsyncStatementParamsHolder>, bool)
Unexecuted instantiation: void NS_ProxyRelease<mozIStorageStatementCallback>(char const*, nsIEventTarget*, already_AddRefed<mozIStorageStatementCallback>, bool)
Unexecuted instantiation: void NS_ProxyRelease<nsIFile>(char const*, nsIEventTarget*, already_AddRefed<nsIFile>, bool)
Unexecuted instantiation: void NS_ProxyRelease<mozilla::storage::StatementRowHolder>(char const*, nsIEventTarget*, already_AddRefed<mozilla::storage::StatementRowHolder>, bool)
Unexecuted instantiation: void NS_ProxyRelease<mozilla::storage::StatementParamsHolder>(char const*, nsIEventTarget*, already_AddRefed<mozilla::storage::StatementParamsHolder>, bool)
Unexecuted instantiation: void NS_ProxyRelease<mozilla::dom::MediaStreamTrack>(char const*, nsIEventTarget*, already_AddRefed<mozilla::dom::MediaStreamTrack>, bool)
Unexecuted instantiation: void NS_ProxyRelease<mozilla::MediaSessionConduit>(char const*, nsIEventTarget*, already_AddRefed<mozilla::MediaSessionConduit>, bool)
Unexecuted instantiation: void NS_ProxyRelease<mozilla::AudioSessionConduit>(char const*, nsIEventTarget*, already_AddRefed<mozilla::AudioSessionConduit>, bool)
Unexecuted instantiation: void NS_ProxyRelease<mozilla::dom::WebrtcGlobalStatisticsCallback>(char const*, nsIEventTarget*, already_AddRefed<mozilla::dom::WebrtcGlobalStatisticsCallback>, bool)
Unexecuted instantiation: void NS_ProxyRelease<mozilla::dom::WebrtcGlobalLoggingCallback>(char const*, nsIEventTarget*, already_AddRefed<mozilla::dom::WebrtcGlobalLoggingCallback>, bool)
Unexecuted instantiation: void NS_ProxyRelease<mozilla::TransportFlow>(char const*, nsIEventTarget*, already_AddRefed<mozilla::TransportFlow>, bool)
Unexecuted instantiation: void NS_ProxyRelease<mozilla::gfx::DrawTargetCapture>(char const*, nsIEventTarget*, already_AddRefed<mozilla::gfx::DrawTargetCapture>, bool)
Unexecuted instantiation: void NS_ProxyRelease<mozilla::image::Image>(char const*, nsIEventTarget*, already_AddRefed<mozilla::image::Image>, bool)
Unexecuted instantiation: void NS_ProxyRelease<imgIContainerCallback>(char const*, nsIEventTarget*, already_AddRefed<imgIContainerCallback>, bool)
Unexecuted instantiation: void NS_ProxyRelease<mozilla::dom::U2FRegisterCallback>(char const*, nsIEventTarget*, already_AddRefed<mozilla::dom::U2FRegisterCallback>, bool)
Unexecuted instantiation: void NS_ProxyRelease<mozilla::dom::U2FSignCallback>(char const*, nsIEventTarget*, already_AddRefed<mozilla::dom::U2FSignCallback>, bool)
Unexecuted instantiation: void NS_ProxyRelease<mozilla::dom::CustomElementReactionsStack>(char const*, nsIEventTarget*, already_AddRefed<mozilla::dom::CustomElementReactionsStack>, bool)
Unexecuted instantiation: void NS_ProxyRelease<nsIAsyncShutdownBarrier>(char const*, nsIEventTarget*, already_AddRefed<nsIAsyncShutdownBarrier>, bool)
Unexecuted instantiation: void NS_ProxyRelease<nsIAsyncShutdownClient>(char const*, nsIEventTarget*, already_AddRefed<nsIAsyncShutdownClient>, bool)
Unexecuted instantiation: void NS_ProxyRelease<nsDOMDataChannel>(char const*, nsIEventTarget*, already_AddRefed<nsDOMDataChannel>, bool)
Unexecuted instantiation: void NS_ProxyRelease<nsICacheInfoChannel>(char const*, nsIEventTarget*, already_AddRefed<nsICacheInfoChannel>, bool)
Unexecuted instantiation: void NS_ProxyRelease<mozilla::dom::cache::Context>(char const*, nsIEventTarget*, already_AddRefed<mozilla::dom::cache::Context>, bool)
Unexecuted instantiation: void NS_ProxyRelease<mozilla::dom::ContentParent>(char const*, nsIEventTarget*, already_AddRefed<mozilla::dom::ContentParent>, bool)
Unexecuted instantiation: void NS_ProxyRelease<mozilla::dom::AbortSignalImpl>(char const*, nsIEventTarget*, already_AddRefed<mozilla::dom::AbortSignalImpl>, bool)
Unexecuted instantiation: void NS_ProxyRelease<mozilla::dom::MutableBlobStorageCallback>(char const*, nsIEventTarget*, already_AddRefed<mozilla::dom::MutableBlobStorageCallback>, bool)
Unexecuted instantiation: void NS_ProxyRelease<mozilla::dom::Blob>(char const*, nsIEventTarget*, already_AddRefed<mozilla::dom::Blob>, bool)
Unexecuted instantiation: void NS_ProxyRelease<mozilla::dom::TemporaryIPCBlobChild>(char const*, nsIEventTarget*, already_AddRefed<mozilla::dom::TemporaryIPCBlobChild>, bool)
Unexecuted instantiation: void NS_ProxyRelease<mozilla::dom::FileSystemRequestParent>(char const*, nsIEventTarget*, already_AddRefed<mozilla::dom::FileSystemRequestParent>, bool)
Unexecuted instantiation: void NS_ProxyRelease<mozilla::dom::FileSystemBase>(char const*, nsIEventTarget*, already_AddRefed<mozilla::dom::FileSystemBase>, bool)
Unexecuted instantiation: void NS_ProxyRelease<mozilla::dom::MediaDocument>(char const*, nsIEventTarget*, already_AddRefed<mozilla::dom::MediaDocument>, bool)
Unexecuted instantiation: void NS_ProxyRelease<mozilla::dom::Promise>(char const*, nsIEventTarget*, already_AddRefed<mozilla::dom::Promise>, bool)
Unexecuted instantiation: void NS_ProxyRelease<mozilla::media::Refcountable<mozilla::dom::MediaTrackSettings> >(char const*, nsIEventTarget*, already_AddRefed<mozilla::media::Refcountable<mozilla::dom::MediaTrackSettings> >, bool)
Unexecuted instantiation: void NS_ProxyRelease<mozilla::MediaCache>(char const*, nsIEventTarget*, already_AddRefed<mozilla::MediaCache>, bool)
Unexecuted instantiation: void NS_ProxyRelease<mozilla::DOMMediaStream>(char const*, nsIEventTarget*, already_AddRefed<mozilla::DOMMediaStream>, bool)
Unexecuted instantiation: void NS_ProxyRelease<mozilla::media::Refcountable<mozilla::UniquePtr<mozilla::GetUserMediaStreamRunnable::TracksAvailableCallback, mozilla::DefaultDelete<mozilla::GetUserMediaStreamRunnable::TracksAvailableCallback> > > >(char const*, nsIEventTarget*, already_AddRefed<mozilla::media::Refcountable<mozilla::UniquePtr<mozilla::GetUserMediaStreamRunnable::TracksAvailableCallback, mozilla::DefaultDelete<mozilla::GetUserMediaStreamRunnable::TracksAvailableCallback> > > >, bool)
Unexecuted instantiation: void NS_ProxyRelease<mozilla::GraphDriver>(char const*, nsIEventTarget*, already_AddRefed<mozilla::GraphDriver>, bool)
Unexecuted instantiation: void NS_ProxyRelease<mozilla::MediaSourceDecoder>(char const*, nsIEventTarget*, already_AddRefed<mozilla::MediaSourceDecoder>, bool)
Unexecuted instantiation: void NS_ProxyRelease<mozilla::dom::SpeechRecognition>(char const*, nsIEventTarget*, already_AddRefed<mozilla::dom::SpeechRecognition>, bool)
Unexecuted instantiation: void NS_ProxyRelease<nsPIDOMWindowInner>(char const*, nsIEventTarget*, already_AddRefed<nsPIDOMWindowInner>, bool)
Unexecuted instantiation: void NS_ProxyRelease<nsIConsoleAPIStorage>(char const*, nsIEventTarget*, already_AddRefed<nsIConsoleAPIStorage>, bool)
Unexecuted instantiation: void NS_ProxyRelease<mozilla::JSObjectHolder>(char const*, nsIEventTarget*, already_AddRefed<mozilla::JSObjectHolder>, bool)
Unexecuted instantiation: void NS_ProxyRelease<mozilla::dom::ScriptLoadRequest>(char const*, nsIEventTarget*, already_AddRefed<mozilla::dom::ScriptLoadRequest>, bool)
Unexecuted instantiation: void NS_ProxyRelease<mozilla::dom::ScriptLoader>(char const*, nsIEventTarget*, already_AddRefed<mozilla::dom::ScriptLoader>, bool)
Unexecuted instantiation: void NS_ProxyRelease<nsIWebSocketChannel>(char const*, nsIEventTarget*, already_AddRefed<nsIWebSocketChannel>, bool)
Unexecuted instantiation: void NS_ProxyRelease<mozilla::dom::ServiceWorkerRegistrationInfo>(char const*, nsIEventTarget*, already_AddRefed<mozilla::dom::ServiceWorkerRegistrationInfo>, bool)
Unexecuted instantiation: void NS_ProxyRelease<nsIInterceptedChannel>(char const*, nsIEventTarget*, already_AddRefed<nsIInterceptedChannel>, bool)
Unexecuted instantiation: void NS_ProxyRelease<mozilla::dom::ipc::SharedJSAllocatedData>(char const*, nsIEventTarget*, already_AddRefed<mozilla::dom::ipc::SharedJSAllocatedData>, bool)
Unexecuted instantiation: void NS_ProxyRelease<mozilla::dom::KeepAliveToken>(char const*, nsIEventTarget*, already_AddRefed<mozilla::dom::KeepAliveToken>, bool)
Unexecuted instantiation: void NS_ProxyRelease<mozilla::dom::ServiceWorkerPrivate>(char const*, nsIEventTarget*, already_AddRefed<mozilla::dom::ServiceWorkerPrivate>, bool)
Unexecuted instantiation: void NS_ProxyRelease<mozilla::dom::ServiceWorkerInfo>(char const*, nsIEventTarget*, already_AddRefed<mozilla::dom::ServiceWorkerInfo>, bool)
Unexecuted instantiation: void NS_ProxyRelease<mozilla::dom::ServiceWorkerJob>(char const*, nsIEventTarget*, already_AddRefed<mozilla::dom::ServiceWorkerJob>, bool)
Unexecuted instantiation: void NS_ProxyRelease<mozilla::dom::ServiceWorkerUpdateJob>(char const*, nsIEventTarget*, already_AddRefed<mozilla::dom::ServiceWorkerUpdateJob>, bool)
Unexecuted instantiation: void NS_ProxyRelease<mozilla::css::SheetLoadData>(char const*, nsIEventTarget*, already_AddRefed<mozilla::css::SheetLoadData>, bool)
Unexecuted instantiation: void NS_ProxyRelease<nsCSSValueSharedList>(char const*, nsIEventTarget*, already_AddRefed<nsCSSValueSharedList>, bool)
Unexecuted instantiation: void NS_ProxyRelease<nsStyleImageRequest>(char const*, nsIEventTarget*, already_AddRefed<nsStyleImageRequest>, bool)
Unexecuted instantiation: void NS_ProxyRelease<mozIPersonalDictionary>(char const*, nsIEventTarget*, already_AddRefed<mozIPersonalDictionary>, bool)
Unexecuted instantiation: void NS_ProxyRelease<nsILocalCertGetCallback>(char const*, nsIEventTarget*, already_AddRefed<nsILocalCertGetCallback>, bool)
Unexecuted instantiation: void NS_ProxyRelease<nsILocalCertCallback>(char const*, nsIEventTarget*, already_AddRefed<nsILocalCertCallback>, bool)
Unexecuted instantiation: void NS_ProxyRelease<nsIObserver>(char const*, nsIEventTarget*, already_AddRefed<nsIObserver>, bool)
Unexecuted instantiation: void NS_ProxyRelease<nsICertVerificationCallback>(char const*, nsIEventTarget*, already_AddRefed<nsICertVerificationCallback>, bool)
Unexecuted instantiation: void NS_ProxyRelease<mozilla::extensions::ChannelWrapper>(char const*, nsIEventTarget*, already_AddRefed<mozilla::extensions::ChannelWrapper>, bool)
Unexecuted instantiation: void NS_ProxyRelease<nsIStreamListener>(char const*, nsIEventTarget*, already_AddRefed<nsIStreamListener>, bool)
Unexecuted instantiation: void NS_ProxyRelease<nsINativeOSFileSuccessCallback>(char const*, nsIEventTarget*, already_AddRefed<nsINativeOSFileSuccessCallback>, bool)
Unexecuted instantiation: void NS_ProxyRelease<nsINativeOSFileErrorCallback>(char const*, nsIEventTarget*, already_AddRefed<nsINativeOSFileErrorCallback>, bool)
Unexecuted instantiation: NativeOSFileInternals.cpp:void NS_ProxyRelease<mozilla::(anonymous namespace)::OSFileErrorEvent>(char const*, nsIEventTarget*, already_AddRefed<mozilla::(anonymous namespace)::OSFileErrorEvent>, bool)
Unexecuted instantiation: NativeOSFileInternals.cpp:void NS_ProxyRelease<mozilla::(anonymous namespace)::TypedArrayResult>(char const*, nsIEventTarget*, already_AddRefed<mozilla::(anonymous namespace)::TypedArrayResult>, bool)
Unexecuted instantiation: NativeOSFileInternals.cpp:void NS_ProxyRelease<mozilla::(anonymous namespace)::SuccessEvent>(char const*, nsIEventTarget*, already_AddRefed<mozilla::(anonymous namespace)::SuccessEvent>, bool)
Unexecuted instantiation: NativeOSFileInternals.cpp:void NS_ProxyRelease<mozilla::(anonymous namespace)::StringResult>(char const*, nsIEventTarget*, already_AddRefed<mozilla::(anonymous namespace)::StringResult>, bool)
Unexecuted instantiation: NativeOSFileInternals.cpp:void NS_ProxyRelease<mozilla::(anonymous namespace)::Int32Result>(char const*, nsIEventTarget*, already_AddRefed<mozilla::(anonymous namespace)::Int32Result>, bool)
Unexecuted instantiation: void NS_ProxyRelease<nsIFaviconDataCallback>(char const*, nsIEventTarget*, already_AddRefed<nsIFaviconDataCallback>, bool)
Unexecuted instantiation: void NS_ProxyRelease<mozIVisitedStatusCallback>(char const*, nsIEventTarget*, already_AddRefed<mozIVisitedStatusCallback>, bool)
Unexecuted instantiation: void NS_ProxyRelease<mozIVisitInfoCallback>(char const*, nsIEventTarget*, already_AddRefed<mozIVisitInfoCallback>, bool)
Unexecuted instantiation: void NS_ProxyRelease<nsIURIClassifierCallback>(char const*, nsIEventTarget*, already_AddRefed<nsIURIClassifierCallback>, bool)
Unexecuted instantiation: void NS_ProxyRelease<nsIUrlClassifierLookupCallback>(char const*, nsIEventTarget*, already_AddRefed<nsIUrlClassifierLookupCallback>, bool)
Unexecuted instantiation: void NS_ProxyRelease<nsIUrlClassifierCallback>(char const*, nsIEventTarget*, already_AddRefed<nsIUrlClassifierCallback>, bool)
Unexecuted instantiation: void NS_ProxyRelease<nsIUrlClassifierUpdateObserver>(char const*, nsIEventTarget*, already_AddRefed<nsIUrlClassifierUpdateObserver>, bool)
Unexecuted instantiation: void NS_ProxyRelease<nsIUrlClassifierGetCacheCallback>(char const*, nsIEventTarget*, already_AddRefed<nsIUrlClassifierGetCacheCallback>, bool)
Unexecuted instantiation: void NS_ProxyRelease<nsIIdentitySignCallback>(char const*, nsIEventTarget*, already_AddRefed<nsIIdentitySignCallback>, bool)
Unexecuted instantiation: void NS_ProxyRelease<nsIIdentityKeyGenCallback>(char const*, nsIEventTarget*, already_AddRefed<nsIIdentityKeyGenCallback>, bool)
152
153
/**
154
 * Ensures that the delete of a smart pointer occurs on the main thread.
155
 *
156
 * @param aName
157
 *        the labelling name of the runnable involved in the releasing
158
 * @param aDoomed
159
 *        the doomed object; the object to be released on the main thread.
160
 * @param aAlwaysProxy
161
 *        normally, if NS_ReleaseOnMainThreadSystemGroup is called on the main
162
 *        thread, then the doomed object will be released directly. However, if
163
 *        this parameter is true, then an event will always be posted to the
164
 *        main thread for asynchronous release.
165
 */
166
template<class T>
167
inline NS_HIDDEN_(void)
168
NS_ReleaseOnMainThreadSystemGroup(const char* aName,
169
                                  already_AddRefed<T> aDoomed,
170
                                  bool aAlwaysProxy = false)
171
8.65k
{
172
8.65k
  // NS_ProxyRelease treats a null event target as "the current thread".  So a
173
8.65k
  // handle on the main thread is only necessary when we're not already on the
174
8.65k
  // main thread or the release must happen asynchronously.
175
8.65k
  nsCOMPtr<nsIEventTarget> systemGroupEventTarget;
176
8.65k
  if (!NS_IsMainThread() || aAlwaysProxy) {
177
0
    systemGroupEventTarget = mozilla::SystemGroup::EventTargetFor(mozilla::TaskCategory::Other);
178
0
179
0
    if (!systemGroupEventTarget) {
180
0
      MOZ_ASSERT_UNREACHABLE("Could not get main thread; leaking an object!");
181
0
      mozilla::Unused << aDoomed.take();
182
0
      return;
183
0
    }
184
8.65k
  }
185
8.65k
186
8.65k
  NS_ProxyRelease(aName, systemGroupEventTarget, std::move(aDoomed),
187
8.65k
                  aAlwaysProxy);
188
8.65k
}
void NS_ReleaseOnMainThreadSystemGroup<nsIConsoleMessage>(char const*, already_AddRefed<nsIConsoleMessage>, bool)
Line
Count
Source
171
8.65k
{
172
8.65k
  // NS_ProxyRelease treats a null event target as "the current thread".  So a
173
8.65k
  // handle on the main thread is only necessary when we're not already on the
174
8.65k
  // main thread or the release must happen asynchronously.
175
8.65k
  nsCOMPtr<nsIEventTarget> systemGroupEventTarget;
176
8.65k
  if (!NS_IsMainThread() || aAlwaysProxy) {
177
0
    systemGroupEventTarget = mozilla::SystemGroup::EventTargetFor(mozilla::TaskCategory::Other);
178
0
179
0
    if (!systemGroupEventTarget) {
180
0
      MOZ_ASSERT_UNREACHABLE("Could not get main thread; leaking an object!");
181
0
      mozilla::Unused << aDoomed.take();
182
0
      return;
183
0
    }
184
8.65k
  }
185
8.65k
186
8.65k
  NS_ProxyRelease(aName, systemGroupEventTarget, std::move(aDoomed),
187
8.65k
                  aAlwaysProxy);
188
8.65k
}
Unexecuted instantiation: void NS_ReleaseOnMainThreadSystemGroup<nsITLSServerSecurityObserver>(char const*, already_AddRefed<nsITLSServerSecurityObserver>, bool)
void NS_ReleaseOnMainThreadSystemGroup<nsILoadInfo>(char const*, already_AddRefed<nsILoadInfo>, bool)
Line
Count
Source
171
5
{
172
5
  // NS_ProxyRelease treats a null event target as "the current thread".  So a
173
5
  // handle on the main thread is only necessary when we're not already on the
174
5
  // main thread or the release must happen asynchronously.
175
5
  nsCOMPtr<nsIEventTarget> systemGroupEventTarget;
176
5
  if (!NS_IsMainThread() || aAlwaysProxy) {
177
0
    systemGroupEventTarget = mozilla::SystemGroup::EventTargetFor(mozilla::TaskCategory::Other);
178
0
179
0
    if (!systemGroupEventTarget) {
180
0
      MOZ_ASSERT_UNREACHABLE("Could not get main thread; leaking an object!");
181
0
      mozilla::Unused << aDoomed.take();
182
0
      return;
183
0
    }
184
5
  }
185
5
186
5
  NS_ProxyRelease(aName, systemGroupEventTarget, std::move(aDoomed),
187
5
                  aAlwaysProxy);
188
5
}
Unexecuted instantiation: void NS_ReleaseOnMainThreadSystemGroup<nsIChannel>(char const*, already_AddRefed<nsIChannel>, bool)
Unexecuted instantiation: void NS_ReleaseOnMainThreadSystemGroup<nsIProtocolProxyCallback>(char const*, already_AddRefed<nsIProtocolProxyCallback>, bool)
Unexecuted instantiation: void NS_ReleaseOnMainThreadSystemGroup<nsIProxyInfo>(char const*, already_AddRefed<nsIProxyInfo>, bool)
Unexecuted instantiation: void NS_ReleaseOnMainThreadSystemGroup<nsIProtocolProxyService>(char const*, already_AddRefed<nsIProtocolProxyService>, bool)
Unexecuted instantiation: void NS_ReleaseOnMainThreadSystemGroup<nsIProtocolProxyService2>(char const*, already_AddRefed<nsIProtocolProxyService2>, bool)
Unexecuted instantiation: void NS_ReleaseOnMainThreadSystemGroup<nsIWeakReference>(char const*, already_AddRefed<nsIWeakReference>, bool)
Unexecuted instantiation: void NS_ReleaseOnMainThreadSystemGroup<nsIWebSocketListener>(char const*, already_AddRefed<nsIWebSocketListener>, bool)
Unexecuted instantiation: void NS_ReleaseOnMainThreadSystemGroup<nsISupports>(char const*, already_AddRefed<nsISupports>, bool)
Unexecuted instantiation: void NS_ReleaseOnMainThreadSystemGroup<nsIURI>(char const*, already_AddRefed<nsIURI>, bool)
Unexecuted instantiation: void NS_ReleaseOnMainThreadSystemGroup<nsILoadGroup>(char const*, already_AddRefed<nsILoadGroup>, bool)
Unexecuted instantiation: void NS_ReleaseOnMainThreadSystemGroup<mozilla::net::WebSocketEventService>(char const*, already_AddRefed<mozilla::net::WebSocketEventService>, bool)
Unexecuted instantiation: void NS_ReleaseOnMainThreadSystemGroup<nsIHttpChannelInternal>(char const*, already_AddRefed<nsIHttpChannelInternal>, bool)
Unexecuted instantiation: void NS_ReleaseOnMainThreadSystemGroup<nsIHttpChannel>(char const*, already_AddRefed<nsIHttpChannel>, bool)
Unexecuted instantiation: void NS_ReleaseOnMainThreadSystemGroup<nsIInterfaceRequestor>(char const*, already_AddRefed<nsIInterfaceRequestor>, bool)
Unexecuted instantiation: void NS_ReleaseOnMainThreadSystemGroup<mozilla::DataChannelBlobSendRunnable>(char const*, already_AddRefed<mozilla::DataChannelBlobSendRunnable>, bool)
Unexecuted instantiation: void NS_ReleaseOnMainThreadSystemGroup<nsIThread>(char const*, already_AddRefed<nsIThread>, bool)
Unexecuted instantiation: void NS_ReleaseOnMainThreadSystemGroup<mozilla::storage::BindingParamsArray>(char const*, already_AddRefed<mozilla::storage::BindingParamsArray>, bool)
Unexecuted instantiation: void NS_ReleaseOnMainThreadSystemGroup<mozilla::storage::Connection>(char const*, already_AddRefed<mozilla::storage::Connection>, bool)
Unexecuted instantiation: void NS_ReleaseOnMainThreadSystemGroup<nsIRunnable>(char const*, already_AddRefed<nsIRunnable>, bool)
Unexecuted instantiation: void NS_ReleaseOnMainThreadSystemGroup<nsIFile>(char const*, already_AddRefed<nsIFile>, bool)
Unexecuted instantiation: void NS_ReleaseOnMainThreadSystemGroup<mozIStorageCompletionCallback>(char const*, already_AddRefed<mozIStorageCompletionCallback>, bool)
Unexecuted instantiation: void NS_ReleaseOnMainThreadSystemGroup<mozilla::dom::MediaStreamTrack>(char const*, already_AddRefed<mozilla::dom::MediaStreamTrack>, bool)
Unexecuted instantiation: void NS_ReleaseOnMainThreadSystemGroup<mozilla::MediaSessionConduit>(char const*, already_AddRefed<mozilla::MediaSessionConduit>, bool)
Unexecuted instantiation: void NS_ReleaseOnMainThreadSystemGroup<mozilla::AudioSessionConduit>(char const*, already_AddRefed<mozilla::AudioSessionConduit>, bool)
Unexecuted instantiation: void NS_ReleaseOnMainThreadSystemGroup<mozilla::gfx::DrawTargetCapture>(char const*, already_AddRefed<mozilla::gfx::DrawTargetCapture>, bool)
Unexecuted instantiation: void NS_ReleaseOnMainThreadSystemGroup<nsIPrincipal>(char const*, already_AddRefed<nsIPrincipal>, bool)
Unexecuted instantiation: void NS_ReleaseOnMainThreadSystemGroup<mozilla::image::Image>(char const*, already_AddRefed<mozilla::image::Image>, bool)
Unexecuted instantiation: void NS_ReleaseOnMainThreadSystemGroup<imgIContainerCallback>(char const*, already_AddRefed<imgIContainerCallback>, bool)
Unexecuted instantiation: void NS_ReleaseOnMainThreadSystemGroup<nsDOMDataChannel>(char const*, already_AddRefed<nsDOMDataChannel>, bool)
Unexecuted instantiation: void NS_ReleaseOnMainThreadSystemGroup<mozilla::dom::ContentParent>(char const*, already_AddRefed<mozilla::dom::ContentParent>, bool)
Unexecuted instantiation: void NS_ReleaseOnMainThreadSystemGroup<mozilla::GraphDriver>(char const*, already_AddRefed<mozilla::GraphDriver>, bool)
Unexecuted instantiation: void NS_ReleaseOnMainThreadSystemGroup<mozilla::dom::SpeechRecognition>(char const*, already_AddRefed<mozilla::dom::SpeechRecognition>, bool)
Unexecuted instantiation: void NS_ReleaseOnMainThreadSystemGroup<nsIConsoleAPIStorage>(char const*, already_AddRefed<nsIConsoleAPIStorage>, bool)
Unexecuted instantiation: void NS_ReleaseOnMainThreadSystemGroup<mozilla::JSObjectHolder>(char const*, already_AddRefed<mozilla::JSObjectHolder>, bool)
Unexecuted instantiation: void NS_ReleaseOnMainThreadSystemGroup<mozilla::dom::ScriptLoadRequest>(char const*, already_AddRefed<mozilla::dom::ScriptLoadRequest>, bool)
Unexecuted instantiation: void NS_ReleaseOnMainThreadSystemGroup<mozilla::dom::ScriptLoader>(char const*, already_AddRefed<mozilla::dom::ScriptLoader>, bool)
Unexecuted instantiation: void NS_ReleaseOnMainThreadSystemGroup<nsIWebSocketChannel>(char const*, already_AddRefed<nsIWebSocketChannel>, bool)
Unexecuted instantiation: void NS_ReleaseOnMainThreadSystemGroup<mozilla::dom::ServiceWorkerJob>(char const*, already_AddRefed<mozilla::dom::ServiceWorkerJob>, bool)
Unexecuted instantiation: void NS_ReleaseOnMainThreadSystemGroup<nsCSSValueSharedList>(char const*, already_AddRefed<nsCSSValueSharedList>, bool)
Unexecuted instantiation: void NS_ReleaseOnMainThreadSystemGroup<nsStyleImageRequest>(char const*, already_AddRefed<nsStyleImageRequest>, bool)
Unexecuted instantiation: void NS_ReleaseOnMainThreadSystemGroup<mozIPersonalDictionary>(char const*, already_AddRefed<mozIPersonalDictionary>, bool)
Unexecuted instantiation: void NS_ReleaseOnMainThreadSystemGroup<mozilla::extensions::ChannelWrapper>(char const*, already_AddRefed<mozilla::extensions::ChannelWrapper>, bool)
Unexecuted instantiation: void NS_ReleaseOnMainThreadSystemGroup<nsIStreamListener>(char const*, already_AddRefed<nsIStreamListener>, bool)
Unexecuted instantiation: NativeOSFileInternals.cpp:void NS_ReleaseOnMainThreadSystemGroup<mozilla::(anonymous namespace)::OSFileErrorEvent>(char const*, already_AddRefed<mozilla::(anonymous namespace)::OSFileErrorEvent>, bool)
Unexecuted instantiation: NativeOSFileInternals.cpp:void NS_ReleaseOnMainThreadSystemGroup<mozilla::(anonymous namespace)::TypedArrayResult>(char const*, already_AddRefed<mozilla::(anonymous namespace)::TypedArrayResult>, bool)
Unexecuted instantiation: NativeOSFileInternals.cpp:void NS_ReleaseOnMainThreadSystemGroup<mozilla::(anonymous namespace)::SuccessEvent>(char const*, already_AddRefed<mozilla::(anonymous namespace)::SuccessEvent>, bool)
Unexecuted instantiation: NativeOSFileInternals.cpp:void NS_ReleaseOnMainThreadSystemGroup<mozilla::(anonymous namespace)::StringResult>(char const*, already_AddRefed<mozilla::(anonymous namespace)::StringResult>, bool)
Unexecuted instantiation: NativeOSFileInternals.cpp:void NS_ReleaseOnMainThreadSystemGroup<mozilla::(anonymous namespace)::Int32Result>(char const*, already_AddRefed<mozilla::(anonymous namespace)::Int32Result>, bool)
Unexecuted instantiation: void NS_ReleaseOnMainThreadSystemGroup<nsIUrlClassifierCallback>(char const*, already_AddRefed<nsIUrlClassifierCallback>, bool)
189
190
template<class T>
191
inline NS_HIDDEN_(void)
192
NS_ReleaseOnMainThreadSystemGroup(already_AddRefed<T> aDoomed,
193
                                  bool aAlwaysProxy = false)
194
0
{
195
0
  NS_ReleaseOnMainThreadSystemGroup("NS_ReleaseOnMainThreadSystemGroup",
196
0
                                    std::move(aDoomed), aAlwaysProxy);
197
0
}
198
199
/**
200
 * Class to safely handle main-thread-only pointers off the main thread.
201
 *
202
 * Classes like XPCWrappedJS are main-thread-only, which means that it is
203
 * forbidden to call methods on instances of these classes off the main thread.
204
 * For various reasons (see bug 771074), this restriction recently began to
205
 * apply to AddRef/Release as well.
206
 *
207
 * This presents a problem for consumers that wish to hold a callback alive
208
 * on non-main-thread code. A common example of this is the proxy callback
209
 * pattern, where non-main-thread code holds a strong-reference to the callback
210
 * object, and dispatches new Runnables (also with a strong reference) to the
211
 * main thread in order to execute the callback. This involves several AddRef
212
 * and Release calls on the other thread, which is (now) verboten.
213
 *
214
 * The basic idea of this class is to introduce a layer of indirection.
215
 * nsMainThreadPtrHolder is a threadsafe reference-counted class that internally
216
 * maintains one strong reference to the main-thread-only object. It must be
217
 * instantiated on the main thread (so that the AddRef of the underlying object
218
 * happens on the main thread), but consumers may subsequently pass references
219
 * to the holder anywhere they please. These references are meant to be opaque
220
 * when accessed off-main-thread (assertions enforce this).
221
 *
222
 * The semantics of RefPtr<nsMainThreadPtrHolder<T> > would be cumbersome, so
223
 * we also introduce nsMainThreadPtrHandle<T>, which is conceptually identical
224
 * to the above (though it includes various convenience methods). The basic
225
 * pattern is as follows.
226
 *
227
 * // On the main thread:
228
 * nsCOMPtr<nsIFooCallback> callback = ...;
229
 * nsMainThreadPtrHandle<nsIFooCallback> callbackHandle =
230
 *   new nsMainThreadPtrHolder<nsIFooCallback>(callback);
231
 * // Pass callbackHandle to structs/classes that might be accessed on other
232
 * // threads.
233
 *
234
 * All structs and classes that might be accessed on other threads should store
235
 * an nsMainThreadPtrHandle<T> rather than an nsCOMPtr<T>.
236
 */
237
template<class T>
238
class nsMainThreadPtrHolder final
239
{
240
public:
241
  // We can only acquire a pointer on the main thread. We to fail fast for
242
  // threading bugs, so by default we assert if our pointer is used or acquired
243
  // off-main-thread. But some consumers need to use the same pointer for
244
  // multiple classes, some of which are main-thread-only and some of which
245
  // aren't. So we allow them to explicitly disable this strict checking.
246
  nsMainThreadPtrHolder(const char* aName, T* aPtr, bool aStrict = true,
247
                        nsIEventTarget* aMainThreadEventTarget = nullptr)
248
    : mRawPtr(nullptr)
249
    , mStrict(aStrict)
250
    , mMainThreadEventTarget(aMainThreadEventTarget)
251
#ifndef RELEASE_OR_BETA
252
    , mName(aName)
253
#endif
254
1
  {
255
1
    // We can only AddRef our pointer on the main thread, which means that the
256
1
    // holder must be constructed on the main thread.
257
1
    MOZ_ASSERT(!mStrict || NS_IsMainThread());
258
1
    NS_IF_ADDREF(mRawPtr = aPtr);
259
1
  }
Unexecuted instantiation: nsMainThreadPtrHolder<nsIOpenSignedAppFileCallback>::nsMainThreadPtrHolder(char const*, nsIOpenSignedAppFileCallback*, bool, nsIEventTarget*)
Unexecuted instantiation: nsMainThreadPtrHolder<NetDashboardCallback>::nsMainThreadPtrHolder(char const*, NetDashboardCallback*, bool, nsIEventTarget*)
Unexecuted instantiation: nsMainThreadPtrHolder<nsITLSServerSecurityObserver>::nsMainThreadPtrHolder(char const*, nsITLSServerSecurityObserver*, bool, nsIEventTarget*)
Unexecuted instantiation: nsMainThreadPtrHolder<nsIServerSocketListener>::nsMainThreadPtrHolder(char const*, nsIServerSocketListener*, bool, nsIEventTarget*)
Unexecuted instantiation: nsMainThreadPtrHolder<nsIRequestObserver>::nsMainThreadPtrHolder(char const*, nsIRequestObserver*, bool, nsIEventTarget*)
Unexecuted instantiation: nsMainThreadPtrHolder<nsISupports>::nsMainThreadPtrHolder(char const*, nsISupports*, bool, nsIEventTarget*)
Unexecuted instantiation: nsMainThreadPtrHolder<nsIUDPSocketListener>::nsMainThreadPtrHolder(char const*, nsIUDPSocketListener*, bool, nsIEventTarget*)
Unexecuted instantiation: nsMainThreadPtrHolder<nsIDNSListener>::nsMainThreadPtrHolder(char const*, nsIDNSListener*, bool, nsIEventTarget*)
nsMainThreadPtrHolder<nsIIOService>::nsMainThreadPtrHolder(char const*, nsIIOService*, bool, nsIEventTarget*)
Line
Count
Source
254
1
  {
255
1
    // We can only AddRef our pointer on the main thread, which means that the
256
1
    // holder must be constructed on the main thread.
257
1
    MOZ_ASSERT(!mStrict || NS_IsMainThread());
258
1
    NS_IF_ADDREF(mRawPtr = aPtr);
259
1
  }
Unexecuted instantiation: nsMainThreadPtrHolder<nsIStreamConverterService>::nsMainThreadPtrHolder(char const*, nsIStreamConverterService*, bool, nsIEventTarget*)
Unexecuted instantiation: nsMainThreadPtrHolder<nsISiteSecurityService>::nsMainThreadPtrHolder(char const*, nsISiteSecurityService*, bool, nsIEventTarget*)
Unexecuted instantiation: nsMainThreadPtrHolder<nsICookieService>::nsMainThreadPtrHolder(char const*, nsICookieService*, bool, nsIEventTarget*)
Unexecuted instantiation: nsMainThreadPtrHolder<nsIHttpActivityObserver>::nsMainThreadPtrHolder(char const*, nsIHttpActivityObserver*, bool, nsIEventTarget*)
Unexecuted instantiation: nsMainThreadPtrHolder<nsIInterfaceRequestor>::nsMainThreadPtrHolder(char const*, nsIInterfaceRequestor*, bool, nsIEventTarget*)
Unexecuted instantiation: nsMainThreadPtrHolder<nsIWifiListener>::nsMainThreadPtrHolder(char const*, nsIWifiListener*, bool, nsIEventTarget*)
Unexecuted instantiation: nsMainThreadPtrHolder<mozilla::storage::AsyncStatementParamsHolder>::nsMainThreadPtrHolder(char const*, mozilla::storage::AsyncStatementParamsHolder*, bool, nsIEventTarget*)
Unexecuted instantiation: nsMainThreadPtrHolder<mozilla::storage::StatementRowHolder>::nsMainThreadPtrHolder(char const*, mozilla::storage::StatementRowHolder*, bool, nsIEventTarget*)
Unexecuted instantiation: nsMainThreadPtrHolder<mozilla::storage::StatementParamsHolder>::nsMainThreadPtrHolder(char const*, mozilla::storage::StatementParamsHolder*, bool, nsIEventTarget*)
Unexecuted instantiation: nsMainThreadPtrHolder<nsIPrincipal>::nsMainThreadPtrHolder(char const*, nsIPrincipal*, bool, nsIEventTarget*)
Unexecuted instantiation: nsMainThreadPtrHolder<mozilla::dom::WebrtcGlobalStatisticsCallback>::nsMainThreadPtrHolder(char const*, mozilla::dom::WebrtcGlobalStatisticsCallback*, bool, nsIEventTarget*)
Unexecuted instantiation: nsMainThreadPtrHolder<mozilla::dom::WebrtcGlobalLoggingCallback>::nsMainThreadPtrHolder(char const*, mozilla::dom::WebrtcGlobalLoggingCallback*, bool, nsIEventTarget*)
Unexecuted instantiation: nsMainThreadPtrHolder<nsICacheInfoChannel>::nsMainThreadPtrHolder(char const*, nsICacheInfoChannel*, bool, nsIEventTarget*)
Unexecuted instantiation: nsMainThreadPtrHolder<mozilla::dom::Promise>::nsMainThreadPtrHolder(char const*, mozilla::dom::Promise*, bool, nsIEventTarget*)
Unexecuted instantiation: nsMainThreadPtrHolder<mozilla::MediaSourceDecoder>::nsMainThreadPtrHolder(char const*, mozilla::MediaSourceDecoder*, bool, nsIEventTarget*)
Unexecuted instantiation: nsMainThreadPtrHolder<mozilla::media::Refcountable<mozilla::dom::MediaTrackSettings> >::nsMainThreadPtrHolder(char const*, mozilla::media::Refcountable<mozilla::dom::MediaTrackSettings>*, bool, nsIEventTarget*)
Unexecuted instantiation: nsMainThreadPtrHolder<nsPIDOMWindowInner>::nsMainThreadPtrHolder(char const*, nsPIDOMWindowInner*, bool, nsIEventTarget*)
Unexecuted instantiation: nsMainThreadPtrHolder<mozilla::dom::U2FRegisterCallback>::nsMainThreadPtrHolder(char const*, mozilla::dom::U2FRegisterCallback*, bool, nsIEventTarget*)
Unexecuted instantiation: nsMainThreadPtrHolder<mozilla::dom::U2FSignCallback>::nsMainThreadPtrHolder(char const*, mozilla::dom::U2FSignCallback*, bool, nsIEventTarget*)
Unexecuted instantiation: nsMainThreadPtrHolder<mozilla::dom::ServiceWorkerPrivate>::nsMainThreadPtrHolder(char const*, mozilla::dom::ServiceWorkerPrivate*, bool, nsIEventTarget*)
Unexecuted instantiation: nsMainThreadPtrHolder<mozilla::dom::KeepAliveToken>::nsMainThreadPtrHolder(char const*, mozilla::dom::KeepAliveToken*, bool, nsIEventTarget*)
Unexecuted instantiation: nsMainThreadPtrHolder<mozilla::dom::ServiceWorkerRegistrationInfo>::nsMainThreadPtrHolder(char const*, mozilla::dom::ServiceWorkerRegistrationInfo*, bool, nsIEventTarget*)
Unexecuted instantiation: nsMainThreadPtrHolder<nsIInterceptedChannel>::nsMainThreadPtrHolder(char const*, nsIInterceptedChannel*, bool, nsIEventTarget*)
Unexecuted instantiation: nsMainThreadPtrHolder<mozilla::dom::ServiceWorkerInfo>::nsMainThreadPtrHolder(char const*, mozilla::dom::ServiceWorkerInfo*, bool, nsIEventTarget*)
Unexecuted instantiation: nsMainThreadPtrHolder<mozilla::dom::ServiceWorkerUpdateJob>::nsMainThreadPtrHolder(char const*, mozilla::dom::ServiceWorkerUpdateJob*, bool, nsIEventTarget*)
Unexecuted instantiation: nsMainThreadPtrHolder<mozilla::css::SheetLoadData>::nsMainThreadPtrHolder(char const*, mozilla::css::SheetLoadData*, bool, nsIEventTarget*)
Unexecuted instantiation: nsMainThreadPtrHolder<nsILocalCertGetCallback>::nsMainThreadPtrHolder(char const*, nsILocalCertGetCallback*, bool, nsIEventTarget*)
Unexecuted instantiation: nsMainThreadPtrHolder<nsILocalCertCallback>::nsMainThreadPtrHolder(char const*, nsILocalCertCallback*, bool, nsIEventTarget*)
Unexecuted instantiation: nsMainThreadPtrHolder<nsIObserver>::nsMainThreadPtrHolder(char const*, nsIObserver*, bool, nsIEventTarget*)
Unexecuted instantiation: nsMainThreadPtrHolder<nsICertVerificationCallback>::nsMainThreadPtrHolder(char const*, nsICertVerificationCallback*, bool, nsIEventTarget*)
Unexecuted instantiation: nsMainThreadPtrHolder<nsINativeOSFileSuccessCallback>::nsMainThreadPtrHolder(char const*, nsINativeOSFileSuccessCallback*, bool, nsIEventTarget*)
Unexecuted instantiation: nsMainThreadPtrHolder<nsINativeOSFileErrorCallback>::nsMainThreadPtrHolder(char const*, nsINativeOSFileErrorCallback*, bool, nsIEventTarget*)
Unexecuted instantiation: nsMainThreadPtrHolder<mozIVisitedStatusCallback>::nsMainThreadPtrHolder(char const*, mozIVisitedStatusCallback*, bool, nsIEventTarget*)
Unexecuted instantiation: nsMainThreadPtrHolder<nsIFaviconDataCallback>::nsMainThreadPtrHolder(char const*, nsIFaviconDataCallback*, bool, nsIEventTarget*)
Unexecuted instantiation: nsMainThreadPtrHolder<mozIVisitInfoCallback>::nsMainThreadPtrHolder(char const*, mozIVisitInfoCallback*, bool, nsIEventTarget*)
Unexecuted instantiation: nsMainThreadPtrHolder<nsIAsyncShutdownBarrier>::nsMainThreadPtrHolder(char const*, nsIAsyncShutdownBarrier*, bool, nsIEventTarget*)
Unexecuted instantiation: nsMainThreadPtrHolder<nsIAsyncShutdownClient>::nsMainThreadPtrHolder(char const*, nsIAsyncShutdownClient*, bool, nsIEventTarget*)
Unexecuted instantiation: nsMainThreadPtrHolder<nsIUrlClassifierLookupCallback>::nsMainThreadPtrHolder(char const*, nsIUrlClassifierLookupCallback*, bool, nsIEventTarget*)
Unexecuted instantiation: nsMainThreadPtrHolder<nsIUrlClassifierCallback>::nsMainThreadPtrHolder(char const*, nsIUrlClassifierCallback*, bool, nsIEventTarget*)
Unexecuted instantiation: nsMainThreadPtrHolder<nsIUrlClassifierUpdateObserver>::nsMainThreadPtrHolder(char const*, nsIUrlClassifierUpdateObserver*, bool, nsIEventTarget*)
Unexecuted instantiation: nsMainThreadPtrHolder<nsIUrlClassifierGetCacheCallback>::nsMainThreadPtrHolder(char const*, nsIUrlClassifierGetCacheCallback*, bool, nsIEventTarget*)
Unexecuted instantiation: nsMainThreadPtrHolder<nsIURIClassifierCallback>::nsMainThreadPtrHolder(char const*, nsIURIClassifierCallback*, bool, nsIEventTarget*)
Unexecuted instantiation: nsMainThreadPtrHolder<nsIIdentityKeyGenCallback>::nsMainThreadPtrHolder(char const*, nsIIdentityKeyGenCallback*, bool, nsIEventTarget*)
Unexecuted instantiation: nsMainThreadPtrHolder<nsIIdentitySignCallback>::nsMainThreadPtrHolder(char const*, nsIIdentitySignCallback*, bool, nsIEventTarget*)
260
  nsMainThreadPtrHolder(const char* aName, already_AddRefed<T> aPtr,
261
                        bool aStrict = true,
262
                        nsIEventTarget* aMainThreadEventTarget = nullptr)
263
    : mRawPtr(aPtr.take())
264
    , mStrict(aStrict)
265
    , mMainThreadEventTarget(aMainThreadEventTarget)
266
#ifndef RELEASE_OR_BETA
267
    , mName(aName)
268
#endif
269
0
  {
270
0
    // Since we don't need to AddRef the pointer, this constructor is safe to
271
0
    // call on any thread.
272
0
  }
Unexecuted instantiation: nsMainThreadPtrHolder<mozilla::DOMMediaStream>::nsMainThreadPtrHolder(char const*, already_AddRefed<mozilla::DOMMediaStream>, bool, nsIEventTarget*)
Unexecuted instantiation: nsMainThreadPtrHolder<mozilla::media::Refcountable<mozilla::UniquePtr<mozilla::GetUserMediaStreamRunnable::TracksAvailableCallback, mozilla::DefaultDelete<mozilla::GetUserMediaStreamRunnable::TracksAvailableCallback> > > >::nsMainThreadPtrHolder(char const*, already_AddRefed<mozilla::media::Refcountable<mozilla::UniquePtr<mozilla::GetUserMediaStreamRunnable::TracksAvailableCallback, mozilla::DefaultDelete<mozilla::GetUserMediaStreamRunnable::TracksAvailableCallback> > > >, bool, nsIEventTarget*)
273
274
private:
275
  // We can be released on any thread.
276
  ~nsMainThreadPtrHolder()
277
0
  {
278
0
    if (NS_IsMainThread()) {
279
0
      NS_IF_RELEASE(mRawPtr);
280
0
    } else if (mRawPtr) {
281
0
      if (!mMainThreadEventTarget) {
282
0
        mMainThreadEventTarget = do_GetMainThread();
283
0
      }
284
0
      MOZ_ASSERT(mMainThreadEventTarget);
285
0
      NS_ProxyRelease(
286
#ifdef RELEASE_OR_BETA
287
        nullptr,
288
#else
289
        mName,
290
0
#endif
291
0
        mMainThreadEventTarget, dont_AddRef(mRawPtr));
292
0
    }
293
0
  }
Unexecuted instantiation: nsMainThreadPtrHolder<nsIOpenSignedAppFileCallback>::~nsMainThreadPtrHolder()
Unexecuted instantiation: nsMainThreadPtrHolder<NetDashboardCallback>::~nsMainThreadPtrHolder()
Unexecuted instantiation: nsMainThreadPtrHolder<nsITLSServerSecurityObserver>::~nsMainThreadPtrHolder()
Unexecuted instantiation: nsMainThreadPtrHolder<nsISupports>::~nsMainThreadPtrHolder()
Unexecuted instantiation: nsMainThreadPtrHolder<nsIRequestObserver>::~nsMainThreadPtrHolder()
Unexecuted instantiation: nsMainThreadPtrHolder<nsIServerSocketListener>::~nsMainThreadPtrHolder()
Unexecuted instantiation: nsMainThreadPtrHolder<nsIUDPSocketListener>::~nsMainThreadPtrHolder()
Unexecuted instantiation: nsMainThreadPtrHolder<nsIDNSListener>::~nsMainThreadPtrHolder()
Unexecuted instantiation: nsMainThreadPtrHolder<nsISiteSecurityService>::~nsMainThreadPtrHolder()
Unexecuted instantiation: nsMainThreadPtrHolder<nsICookieService>::~nsMainThreadPtrHolder()
Unexecuted instantiation: nsMainThreadPtrHolder<nsIStreamConverterService>::~nsMainThreadPtrHolder()
Unexecuted instantiation: nsMainThreadPtrHolder<nsIIOService>::~nsMainThreadPtrHolder()
Unexecuted instantiation: nsMainThreadPtrHolder<nsIHttpActivityObserver>::~nsMainThreadPtrHolder()
Unexecuted instantiation: nsMainThreadPtrHolder<nsIInterfaceRequestor>::~nsMainThreadPtrHolder()
Unexecuted instantiation: nsMainThreadPtrHolder<nsIWifiListener>::~nsMainThreadPtrHolder()
Unexecuted instantiation: nsMainThreadPtrHolder<mozilla::storage::AsyncStatementParamsHolder>::~nsMainThreadPtrHolder()
Unexecuted instantiation: nsMainThreadPtrHolder<mozilla::storage::StatementRowHolder>::~nsMainThreadPtrHolder()
Unexecuted instantiation: nsMainThreadPtrHolder<mozilla::storage::StatementParamsHolder>::~nsMainThreadPtrHolder()
Unexecuted instantiation: nsMainThreadPtrHolder<nsIPrincipal>::~nsMainThreadPtrHolder()
Unexecuted instantiation: nsMainThreadPtrHolder<mozilla::dom::WebrtcGlobalStatisticsCallback>::~nsMainThreadPtrHolder()
Unexecuted instantiation: nsMainThreadPtrHolder<mozilla::dom::WebrtcGlobalLoggingCallback>::~nsMainThreadPtrHolder()
Unexecuted instantiation: nsMainThreadPtrHolder<nsICacheInfoChannel>::~nsMainThreadPtrHolder()
Unexecuted instantiation: nsMainThreadPtrHolder<mozilla::dom::Promise>::~nsMainThreadPtrHolder()
Unexecuted instantiation: nsMainThreadPtrHolder<mozilla::DOMMediaStream>::~nsMainThreadPtrHolder()
Unexecuted instantiation: nsMainThreadPtrHolder<mozilla::media::Refcountable<mozilla::UniquePtr<mozilla::GetUserMediaStreamRunnable::TracksAvailableCallback, mozilla::DefaultDelete<mozilla::GetUserMediaStreamRunnable::TracksAvailableCallback> > > >::~nsMainThreadPtrHolder()
Unexecuted instantiation: nsMainThreadPtrHolder<mozilla::MediaSourceDecoder>::~nsMainThreadPtrHolder()
Unexecuted instantiation: nsMainThreadPtrHolder<mozilla::media::Refcountable<mozilla::dom::MediaTrackSettings> >::~nsMainThreadPtrHolder()
Unexecuted instantiation: nsMainThreadPtrHolder<nsPIDOMWindowInner>::~nsMainThreadPtrHolder()
Unexecuted instantiation: nsMainThreadPtrHolder<mozilla::dom::U2FRegisterCallback>::~nsMainThreadPtrHolder()
Unexecuted instantiation: nsMainThreadPtrHolder<mozilla::dom::U2FSignCallback>::~nsMainThreadPtrHolder()
Unexecuted instantiation: nsMainThreadPtrHolder<mozilla::dom::ServiceWorkerRegistrationInfo>::~nsMainThreadPtrHolder()
Unexecuted instantiation: nsMainThreadPtrHolder<nsIInterceptedChannel>::~nsMainThreadPtrHolder()
Unexecuted instantiation: nsMainThreadPtrHolder<mozilla::dom::KeepAliveToken>::~nsMainThreadPtrHolder()
Unexecuted instantiation: nsMainThreadPtrHolder<mozilla::dom::ServiceWorkerPrivate>::~nsMainThreadPtrHolder()
Unexecuted instantiation: nsMainThreadPtrHolder<mozilla::dom::ServiceWorkerInfo>::~nsMainThreadPtrHolder()
Unexecuted instantiation: nsMainThreadPtrHolder<mozilla::dom::ServiceWorkerUpdateJob>::~nsMainThreadPtrHolder()
Unexecuted instantiation: nsMainThreadPtrHolder<mozilla::css::SheetLoadData>::~nsMainThreadPtrHolder()
Unexecuted instantiation: nsMainThreadPtrHolder<nsILocalCertGetCallback>::~nsMainThreadPtrHolder()
Unexecuted instantiation: nsMainThreadPtrHolder<nsILocalCertCallback>::~nsMainThreadPtrHolder()
Unexecuted instantiation: nsMainThreadPtrHolder<nsIObserver>::~nsMainThreadPtrHolder()
Unexecuted instantiation: nsMainThreadPtrHolder<nsICertVerificationCallback>::~nsMainThreadPtrHolder()
Unexecuted instantiation: nsMainThreadPtrHolder<nsINativeOSFileSuccessCallback>::~nsMainThreadPtrHolder()
Unexecuted instantiation: nsMainThreadPtrHolder<nsINativeOSFileErrorCallback>::~nsMainThreadPtrHolder()
Unexecuted instantiation: nsMainThreadPtrHolder<nsIFaviconDataCallback>::~nsMainThreadPtrHolder()
Unexecuted instantiation: nsMainThreadPtrHolder<mozIVisitedStatusCallback>::~nsMainThreadPtrHolder()
Unexecuted instantiation: nsMainThreadPtrHolder<mozIVisitInfoCallback>::~nsMainThreadPtrHolder()
Unexecuted instantiation: nsMainThreadPtrHolder<nsIAsyncShutdownClient>::~nsMainThreadPtrHolder()
Unexecuted instantiation: nsMainThreadPtrHolder<nsIAsyncShutdownBarrier>::~nsMainThreadPtrHolder()
Unexecuted instantiation: nsMainThreadPtrHolder<nsIURIClassifierCallback>::~nsMainThreadPtrHolder()
Unexecuted instantiation: nsMainThreadPtrHolder<nsIUrlClassifierLookupCallback>::~nsMainThreadPtrHolder()
Unexecuted instantiation: nsMainThreadPtrHolder<nsIUrlClassifierCallback>::~nsMainThreadPtrHolder()
Unexecuted instantiation: nsMainThreadPtrHolder<nsIUrlClassifierUpdateObserver>::~nsMainThreadPtrHolder()
Unexecuted instantiation: nsMainThreadPtrHolder<nsIUrlClassifierGetCacheCallback>::~nsMainThreadPtrHolder()
Unexecuted instantiation: nsMainThreadPtrHolder<nsIIdentitySignCallback>::~nsMainThreadPtrHolder()
Unexecuted instantiation: nsMainThreadPtrHolder<nsIIdentityKeyGenCallback>::~nsMainThreadPtrHolder()
294
295
public:
296
  T* get()
297
0
  {
298
0
    // Nobody should be touching the raw pointer off-main-thread.
299
0
    if (mStrict && MOZ_UNLIKELY(!NS_IsMainThread())) {
300
0
      NS_ERROR("Can't dereference nsMainThreadPtrHolder off main thread");
301
0
      MOZ_CRASH();
302
0
    }
303
0
    return mRawPtr;
304
0
  }
Unexecuted instantiation: nsMainThreadPtrHolder<nsIOpenSignedAppFileCallback>::get()
Unexecuted instantiation: nsMainThreadPtrHolder<NetDashboardCallback>::get()
Unexecuted instantiation: nsMainThreadPtrHolder<nsITLSServerSecurityObserver>::get()
Unexecuted instantiation: nsMainThreadPtrHolder<nsIRequestObserver>::get()
Unexecuted instantiation: nsMainThreadPtrHolder<nsISupports>::get()
Unexecuted instantiation: nsMainThreadPtrHolder<nsIServerSocketListener>::get()
Unexecuted instantiation: nsMainThreadPtrHolder<nsIUDPSocketListener>::get()
Unexecuted instantiation: nsMainThreadPtrHolder<nsIDNSListener>::get()
Unexecuted instantiation: nsMainThreadPtrHolder<nsIStreamConverterService>::get()
Unexecuted instantiation: nsMainThreadPtrHolder<nsISiteSecurityService>::get()
Unexecuted instantiation: nsMainThreadPtrHolder<nsICookieService>::get()
Unexecuted instantiation: nsMainThreadPtrHolder<nsIIOService>::get()
Unexecuted instantiation: nsMainThreadPtrHolder<nsIHttpActivityObserver>::get()
Unexecuted instantiation: nsMainThreadPtrHolder<nsIInterfaceRequestor>::get()
Unexecuted instantiation: nsMainThreadPtrHolder<nsIWifiListener>::get()
Unexecuted instantiation: nsMainThreadPtrHolder<nsIPrincipal>::get()
Unexecuted instantiation: nsMainThreadPtrHolder<mozilla::storage::AsyncStatementParamsHolder>::get()
Unexecuted instantiation: nsMainThreadPtrHolder<mozilla::storage::StatementRowHolder>::get()
Unexecuted instantiation: nsMainThreadPtrHolder<mozilla::storage::StatementParamsHolder>::get()
Unexecuted instantiation: nsMainThreadPtrHolder<mozilla::dom::WebrtcGlobalStatisticsCallback>::get()
Unexecuted instantiation: nsMainThreadPtrHolder<mozilla::dom::WebrtcGlobalLoggingCallback>::get()
Unexecuted instantiation: nsMainThreadPtrHolder<mozilla::dom::Promise>::get()
Unexecuted instantiation: nsMainThreadPtrHolder<mozilla::DOMMediaStream>::get()
Unexecuted instantiation: nsMainThreadPtrHolder<mozilla::media::Refcountable<mozilla::UniquePtr<mozilla::GetUserMediaStreamRunnable::TracksAvailableCallback, mozilla::DefaultDelete<mozilla::GetUserMediaStreamRunnable::TracksAvailableCallback> > > >::get()
Unexecuted instantiation: nsMainThreadPtrHolder<mozilla::MediaSourceDecoder>::get()
Unexecuted instantiation: nsMainThreadPtrHolder<mozilla::media::Refcountable<mozilla::dom::MediaTrackSettings> >::get()
Unexecuted instantiation: nsMainThreadPtrHolder<nsPIDOMWindowInner>::get()
Unexecuted instantiation: nsMainThreadPtrHolder<mozilla::dom::U2FRegisterCallback>::get()
Unexecuted instantiation: nsMainThreadPtrHolder<mozilla::dom::U2FSignCallback>::get()
Unexecuted instantiation: nsMainThreadPtrHolder<nsICacheInfoChannel>::get()
Unexecuted instantiation: nsMainThreadPtrHolder<mozilla::dom::ServiceWorkerRegistrationInfo>::get()
Unexecuted instantiation: nsMainThreadPtrHolder<nsIInterceptedChannel>::get()
Unexecuted instantiation: nsMainThreadPtrHolder<mozilla::dom::ServiceWorkerPrivate>::get()
Unexecuted instantiation: nsMainThreadPtrHolder<mozilla::dom::ServiceWorkerInfo>::get()
Unexecuted instantiation: nsMainThreadPtrHolder<mozilla::dom::ServiceWorkerUpdateJob>::get()
Unexecuted instantiation: nsMainThreadPtrHolder<mozilla::css::SheetLoadData>::get()
Unexecuted instantiation: nsMainThreadPtrHolder<nsILocalCertGetCallback>::get()
Unexecuted instantiation: nsMainThreadPtrHolder<nsILocalCertCallback>::get()
Unexecuted instantiation: nsMainThreadPtrHolder<nsIObserver>::get()
Unexecuted instantiation: nsMainThreadPtrHolder<nsICertVerificationCallback>::get()
Unexecuted instantiation: nsMainThreadPtrHolder<nsINativeOSFileErrorCallback>::get()
Unexecuted instantiation: nsMainThreadPtrHolder<nsINativeOSFileSuccessCallback>::get()
Unexecuted instantiation: nsMainThreadPtrHolder<mozIVisitInfoCallback>::get()
Unexecuted instantiation: nsMainThreadPtrHolder<mozIVisitedStatusCallback>::get()
Unexecuted instantiation: nsMainThreadPtrHolder<nsIFaviconDataCallback>::get()
Unexecuted instantiation: nsMainThreadPtrHolder<nsIAsyncShutdownBarrier>::get()
Unexecuted instantiation: nsMainThreadPtrHolder<nsIAsyncShutdownClient>::get()
Unexecuted instantiation: nsMainThreadPtrHolder<nsIURIClassifierCallback>::get()
Unexecuted instantiation: nsMainThreadPtrHolder<nsIUrlClassifierGetCacheCallback>::get()
Unexecuted instantiation: nsMainThreadPtrHolder<nsIUrlClassifierLookupCallback>::get()
Unexecuted instantiation: nsMainThreadPtrHolder<nsIUrlClassifierCallback>::get()
Unexecuted instantiation: nsMainThreadPtrHolder<nsIUrlClassifierUpdateObserver>::get()
Unexecuted instantiation: nsMainThreadPtrHolder<nsIIdentitySignCallback>::get()
Unexecuted instantiation: nsMainThreadPtrHolder<nsIIdentityKeyGenCallback>::get()
305
306
  bool operator==(const nsMainThreadPtrHolder<T>& aOther) const
307
0
  {
308
0
    return mRawPtr == aOther.mRawPtr;
309
0
  }
Unexecuted instantiation: nsMainThreadPtrHolder<nsIHttpActivityObserver>::operator==(nsMainThreadPtrHolder<nsIHttpActivityObserver> const&) const
Unexecuted instantiation: nsMainThreadPtrHolder<nsIPrincipal>::operator==(nsMainThreadPtrHolder<nsIPrincipal> const&) const
310
  bool operator!() const
311
0
  {
312
0
    return !mRawPtr;
313
0
  }
Unexecuted instantiation: nsMainThreadPtrHolder<nsIRequestObserver>::operator!() const
Unexecuted instantiation: nsMainThreadPtrHolder<nsIStreamConverterService>::operator!() const
Unexecuted instantiation: nsMainThreadPtrHolder<nsISiteSecurityService>::operator!() const
Unexecuted instantiation: nsMainThreadPtrHolder<nsICookieService>::operator!() const
Unexecuted instantiation: nsMainThreadPtrHolder<mozilla::storage::AsyncStatementParamsHolder>::operator!() const
Unexecuted instantiation: nsMainThreadPtrHolder<mozilla::storage::StatementRowHolder>::operator!() const
Unexecuted instantiation: nsMainThreadPtrHolder<mozilla::storage::StatementParamsHolder>::operator!() const
Unexecuted instantiation: nsMainThreadPtrHolder<mozilla::DOMMediaStream>::operator!() const
Unexecuted instantiation: nsMainThreadPtrHolder<mozilla::dom::U2FRegisterCallback>::operator!() const
Unexecuted instantiation: nsMainThreadPtrHolder<mozilla::dom::U2FSignCallback>::operator!() const
Unexecuted instantiation: nsMainThreadPtrHolder<mozilla::dom::KeepAliveToken>::operator!() const
Unexecuted instantiation: nsMainThreadPtrHolder<mozilla::dom::ServiceWorkerRegistrationInfo>::operator!() const
Unexecuted instantiation: nsMainThreadPtrHolder<mozilla::dom::ServiceWorkerInfo>::operator!() const
Unexecuted instantiation: nsMainThreadPtrHolder<mozIVisitInfoCallback>::operator!() const
Unexecuted instantiation: nsMainThreadPtrHolder<mozIVisitedStatusCallback>::operator!() const
Unexecuted instantiation: nsMainThreadPtrHolder<nsIFaviconDataCallback>::operator!() const
Unexecuted instantiation: nsMainThreadPtrHolder<nsIAsyncShutdownBarrier>::operator!() const
314
315
  NS_INLINE_DECL_THREADSAFE_REFCOUNTING(nsMainThreadPtrHolder<T>)
316
317
private:
318
  // Our wrapped pointer.
319
  T* mRawPtr;
320
321
  // Whether to strictly enforce thread invariants in this class.
322
  bool mStrict;
323
324
  nsCOMPtr<nsIEventTarget> mMainThreadEventTarget;
325
326
#ifndef RELEASE_OR_BETA
327
  const char* mName = nullptr;
328
#endif
329
330
  // Copy constructor and operator= not implemented. Once constructed, the
331
  // holder is immutable.
332
  T& operator=(nsMainThreadPtrHolder& aOther);
333
  nsMainThreadPtrHolder(const nsMainThreadPtrHolder& aOther);
334
};
335
336
template<class T>
337
class nsMainThreadPtrHandle
338
{
339
  RefPtr<nsMainThreadPtrHolder<T>> mPtr;
340
341
public:
342
4
  nsMainThreadPtrHandle() : mPtr(nullptr) {}
Unexecuted instantiation: nsMainThreadPtrHandle<NetDashboardCallback>::nsMainThreadPtrHandle()
nsMainThreadPtrHandle<nsIIOService>::nsMainThreadPtrHandle()
Line
Count
Source
342
1
  nsMainThreadPtrHandle() : mPtr(nullptr) {}
nsMainThreadPtrHandle<nsIStreamConverterService>::nsMainThreadPtrHandle()
Line
Count
Source
342
1
  nsMainThreadPtrHandle() : mPtr(nullptr) {}
nsMainThreadPtrHandle<nsICookieService>::nsMainThreadPtrHandle()
Line
Count
Source
342
1
  nsMainThreadPtrHandle() : mPtr(nullptr) {}
nsMainThreadPtrHandle<nsISiteSecurityService>::nsMainThreadPtrHandle()
Line
Count
Source
342
1
  nsMainThreadPtrHandle() : mPtr(nullptr) {}
Unexecuted instantiation: nsMainThreadPtrHandle<nsIInterfaceRequestor>::nsMainThreadPtrHandle()
Unexecuted instantiation: nsMainThreadPtrHandle<nsIWifiListener>::nsMainThreadPtrHandle()
Unexecuted instantiation: nsMainThreadPtrHandle<nsIRequestObserver>::nsMainThreadPtrHandle()
Unexecuted instantiation: nsMainThreadPtrHandle<nsISupports>::nsMainThreadPtrHandle()
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::storage::AsyncStatementParamsHolder>::nsMainThreadPtrHandle()
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::storage::StatementParamsHolder>::nsMainThreadPtrHandle()
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::storage::StatementRowHolder>::nsMainThreadPtrHandle()
Unexecuted instantiation: nsMainThreadPtrHandle<nsICacheInfoChannel>::nsMainThreadPtrHandle()
Unexecuted instantiation: nsMainThreadPtrHandle<nsIPrincipal>::nsMainThreadPtrHandle()
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::DOMMediaStream>::nsMainThreadPtrHandle()
Unexecuted instantiation: nsMainThreadPtrHandle<nsIInterceptedChannel>::nsMainThreadPtrHandle()
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::dom::ServiceWorkerRegistrationInfo>::nsMainThreadPtrHandle()
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::dom::KeepAliveToken>::nsMainThreadPtrHandle()
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::dom::ServiceWorkerInfo>::nsMainThreadPtrHandle()
Unexecuted instantiation: nsMainThreadPtrHandle<nsIFaviconDataCallback>::nsMainThreadPtrHandle()
Unexecuted instantiation: nsMainThreadPtrHandle<nsIAsyncShutdownBarrier>::nsMainThreadPtrHandle()
Unexecuted instantiation: nsMainThreadPtrHandle<nsIAsyncShutdownClient>::nsMainThreadPtrHandle()
343
0
  MOZ_IMPLICIT nsMainThreadPtrHandle(decltype(nullptr)) : mPtr(nullptr) {}
344
  explicit nsMainThreadPtrHandle(nsMainThreadPtrHolder<T>* aHolder)
345
    : mPtr(aHolder)
346
0
  {
347
0
  }
Unexecuted instantiation: nsMainThreadPtrHandle<nsIOpenSignedAppFileCallback>::nsMainThreadPtrHandle(nsMainThreadPtrHolder<nsIOpenSignedAppFileCallback>*)
Unexecuted instantiation: nsMainThreadPtrHandle<nsITLSServerSecurityObserver>::nsMainThreadPtrHandle(nsMainThreadPtrHolder<nsITLSServerSecurityObserver>*)
Unexecuted instantiation: nsMainThreadPtrHandle<nsIServerSocketListener>::nsMainThreadPtrHandle(nsMainThreadPtrHolder<nsIServerSocketListener>*)
Unexecuted instantiation: nsMainThreadPtrHandle<nsIUDPSocketListener>::nsMainThreadPtrHandle(nsMainThreadPtrHolder<nsIUDPSocketListener>*)
Unexecuted instantiation: nsMainThreadPtrHandle<nsIDNSListener>::nsMainThreadPtrHandle(nsMainThreadPtrHolder<nsIDNSListener>*)
Unexecuted instantiation: nsMainThreadPtrHandle<nsIHttpActivityObserver>::nsMainThreadPtrHandle(nsMainThreadPtrHolder<nsIHttpActivityObserver>*)
Unexecuted instantiation: nsMainThreadPtrHandle<nsIPrincipal>::nsMainThreadPtrHandle(nsMainThreadPtrHolder<nsIPrincipal>*)
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::dom::WebrtcGlobalStatisticsCallback>::nsMainThreadPtrHandle(nsMainThreadPtrHolder<mozilla::dom::WebrtcGlobalStatisticsCallback>*)
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::dom::WebrtcGlobalLoggingCallback>::nsMainThreadPtrHandle(nsMainThreadPtrHolder<mozilla::dom::WebrtcGlobalLoggingCallback>*)
Unexecuted instantiation: nsMainThreadPtrHandle<nsICacheInfoChannel>::nsMainThreadPtrHandle(nsMainThreadPtrHolder<nsICacheInfoChannel>*)
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::dom::CallbackObjectHolder<mozilla::dom::NavigatorUserMediaSuccessCallback, nsIDOMGetUserMediaSuccessCallback> >::nsMainThreadPtrHandle(nsMainThreadPtrHolder<mozilla::dom::CallbackObjectHolder<mozilla::dom::NavigatorUserMediaSuccessCallback, nsIDOMGetUserMediaSuccessCallback> >*)
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::dom::CallbackObjectHolder<mozilla::dom::NavigatorUserMediaErrorCallback, nsIDOMGetUserMediaErrorCallback> >::nsMainThreadPtrHandle(nsMainThreadPtrHolder<mozilla::dom::CallbackObjectHolder<mozilla::dom::NavigatorUserMediaErrorCallback, nsIDOMGetUserMediaErrorCallback> >*)
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::media::Refcountable<mozilla::UniquePtr<mozilla::GetUserMediaStreamRunnable::TracksAvailableCallback, mozilla::DefaultDelete<mozilla::GetUserMediaStreamRunnable::TracksAvailableCallback> > > >::nsMainThreadPtrHandle(nsMainThreadPtrHolder<mozilla::media::Refcountable<mozilla::UniquePtr<mozilla::GetUserMediaStreamRunnable::TracksAvailableCallback, mozilla::DefaultDelete<mozilla::GetUserMediaStreamRunnable::TracksAvailableCallback> > > >*)
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::MediaSourceDecoder>::nsMainThreadPtrHandle(nsMainThreadPtrHolder<mozilla::MediaSourceDecoder>*)
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::media::Refcountable<mozilla::dom::MediaTrackSettings> >::nsMainThreadPtrHandle(nsMainThreadPtrHolder<mozilla::media::Refcountable<mozilla::dom::MediaTrackSettings> >*)
Unexecuted instantiation: nsMainThreadPtrHandle<nsPIDOMWindowInner>::nsMainThreadPtrHandle(nsMainThreadPtrHolder<nsPIDOMWindowInner>*)
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::dom::U2FRegisterCallback>::nsMainThreadPtrHandle(nsMainThreadPtrHolder<mozilla::dom::U2FRegisterCallback>*)
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::dom::U2FSignCallback>::nsMainThreadPtrHandle(nsMainThreadPtrHolder<mozilla::dom::U2FSignCallback>*)
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::dom::ServiceWorkerPrivate>::nsMainThreadPtrHandle(nsMainThreadPtrHolder<mozilla::dom::ServiceWorkerPrivate>*)
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::dom::KeepAliveToken>::nsMainThreadPtrHandle(nsMainThreadPtrHolder<mozilla::dom::KeepAliveToken>*)
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::dom::ServiceWorkerRegistrationInfo>::nsMainThreadPtrHandle(nsMainThreadPtrHolder<mozilla::dom::ServiceWorkerRegistrationInfo>*)
Unexecuted instantiation: nsMainThreadPtrHandle<nsIInterceptedChannel>::nsMainThreadPtrHandle(nsMainThreadPtrHolder<nsIInterceptedChannel>*)
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::dom::ServiceWorkerUpdateJob>::nsMainThreadPtrHandle(nsMainThreadPtrHolder<mozilla::dom::ServiceWorkerUpdateJob>*)
Unexecuted instantiation: nsMainThreadPtrHandle<nsILocalCertGetCallback>::nsMainThreadPtrHandle(nsMainThreadPtrHolder<nsILocalCertGetCallback>*)
Unexecuted instantiation: nsMainThreadPtrHandle<nsILocalCertCallback>::nsMainThreadPtrHandle(nsMainThreadPtrHolder<nsILocalCertCallback>*)
Unexecuted instantiation: nsMainThreadPtrHandle<nsIObserver>::nsMainThreadPtrHandle(nsMainThreadPtrHolder<nsIObserver>*)
Unexecuted instantiation: nsMainThreadPtrHandle<nsICertVerificationCallback>::nsMainThreadPtrHandle(nsMainThreadPtrHolder<nsICertVerificationCallback>*)
Unexecuted instantiation: nsMainThreadPtrHandle<nsINativeOSFileSuccessCallback>::nsMainThreadPtrHandle(nsMainThreadPtrHolder<nsINativeOSFileSuccessCallback>*)
Unexecuted instantiation: nsMainThreadPtrHandle<nsINativeOSFileErrorCallback>::nsMainThreadPtrHandle(nsMainThreadPtrHolder<nsINativeOSFileErrorCallback>*)
Unexecuted instantiation: nsMainThreadPtrHandle<mozIVisitedStatusCallback>::nsMainThreadPtrHandle(nsMainThreadPtrHolder<mozIVisitedStatusCallback>*)
Unexecuted instantiation: nsMainThreadPtrHandle<nsIFaviconDataCallback>::nsMainThreadPtrHandle(nsMainThreadPtrHolder<nsIFaviconDataCallback>*)
Unexecuted instantiation: nsMainThreadPtrHandle<mozIVisitInfoCallback>::nsMainThreadPtrHandle(nsMainThreadPtrHolder<mozIVisitInfoCallback>*)
Unexecuted instantiation: nsMainThreadPtrHandle<nsIUrlClassifierLookupCallback>::nsMainThreadPtrHandle(nsMainThreadPtrHolder<nsIUrlClassifierLookupCallback>*)
Unexecuted instantiation: nsMainThreadPtrHandle<nsIUrlClassifierCallback>::nsMainThreadPtrHandle(nsMainThreadPtrHolder<nsIUrlClassifierCallback>*)
Unexecuted instantiation: nsMainThreadPtrHandle<nsIUrlClassifierUpdateObserver>::nsMainThreadPtrHandle(nsMainThreadPtrHolder<nsIUrlClassifierUpdateObserver>*)
Unexecuted instantiation: nsMainThreadPtrHandle<nsIUrlClassifierGetCacheCallback>::nsMainThreadPtrHandle(nsMainThreadPtrHolder<nsIUrlClassifierGetCacheCallback>*)
Unexecuted instantiation: nsMainThreadPtrHandle<nsIURIClassifierCallback>::nsMainThreadPtrHandle(nsMainThreadPtrHolder<nsIURIClassifierCallback>*)
Unexecuted instantiation: nsMainThreadPtrHandle<nsIIdentityKeyGenCallback>::nsMainThreadPtrHandle(nsMainThreadPtrHolder<nsIIdentityKeyGenCallback>*)
Unexecuted instantiation: nsMainThreadPtrHandle<nsIIdentitySignCallback>::nsMainThreadPtrHandle(nsMainThreadPtrHolder<nsIIdentitySignCallback>*)
348
  explicit nsMainThreadPtrHandle(
349
      already_AddRefed<nsMainThreadPtrHolder<T>> aHolder)
350
    : mPtr(aHolder)
351
0
  {
352
0
  }
353
  nsMainThreadPtrHandle(const nsMainThreadPtrHandle& aOther)
354
    : mPtr(aOther.mPtr)
355
0
  {
356
0
  }
Unexecuted instantiation: nsMainThreadPtrHandle<nsITLSServerSecurityObserver>::nsMainThreadPtrHandle(nsMainThreadPtrHandle<nsITLSServerSecurityObserver> const&)
Unexecuted instantiation: nsMainThreadPtrHandle<nsIRequestObserver>::nsMainThreadPtrHandle(nsMainThreadPtrHandle<nsIRequestObserver> const&)
Unexecuted instantiation: nsMainThreadPtrHandle<nsIServerSocketListener>::nsMainThreadPtrHandle(nsMainThreadPtrHandle<nsIServerSocketListener> const&)
Unexecuted instantiation: nsMainThreadPtrHandle<nsIUDPSocketListener>::nsMainThreadPtrHandle(nsMainThreadPtrHandle<nsIUDPSocketListener> const&)
Unexecuted instantiation: nsMainThreadPtrHandle<nsIDNSListener>::nsMainThreadPtrHandle(nsMainThreadPtrHandle<nsIDNSListener> const&)
Unexecuted instantiation: nsMainThreadPtrHandle<nsIHttpActivityObserver>::nsMainThreadPtrHandle(nsMainThreadPtrHandle<nsIHttpActivityObserver> const&)
Unexecuted instantiation: nsMainThreadPtrHandle<nsIWifiListener>::nsMainThreadPtrHandle(nsMainThreadPtrHandle<nsIWifiListener> const&)
Unexecuted instantiation: nsMainThreadPtrHandle<nsIPrincipal>::nsMainThreadPtrHandle(nsMainThreadPtrHandle<nsIPrincipal> const&)
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::dom::WebrtcGlobalStatisticsCallback>::nsMainThreadPtrHandle(nsMainThreadPtrHandle<mozilla::dom::WebrtcGlobalStatisticsCallback> const&)
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::dom::WebrtcGlobalLoggingCallback>::nsMainThreadPtrHandle(nsMainThreadPtrHandle<mozilla::dom::WebrtcGlobalLoggingCallback> const&)
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::dom::Promise>::nsMainThreadPtrHandle(nsMainThreadPtrHandle<mozilla::dom::Promise> const&)
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::dom::CallbackObjectHolder<mozilla::dom::NavigatorUserMediaErrorCallback, nsIDOMGetUserMediaErrorCallback> >::nsMainThreadPtrHandle(nsMainThreadPtrHandle<mozilla::dom::CallbackObjectHolder<mozilla::dom::NavigatorUserMediaErrorCallback, nsIDOMGetUserMediaErrorCallback> > const&)
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::dom::CallbackObjectHolder<mozilla::dom::NavigatorUserMediaSuccessCallback, nsIDOMGetUserMediaSuccessCallback> >::nsMainThreadPtrHandle(nsMainThreadPtrHandle<mozilla::dom::CallbackObjectHolder<mozilla::dom::NavigatorUserMediaSuccessCallback, nsIDOMGetUserMediaSuccessCallback> > const&)
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::DOMMediaStream>::nsMainThreadPtrHandle(nsMainThreadPtrHandle<mozilla::DOMMediaStream> const&)
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::media::Refcountable<mozilla::UniquePtr<mozilla::GetUserMediaStreamRunnable::TracksAvailableCallback, mozilla::DefaultDelete<mozilla::GetUserMediaStreamRunnable::TracksAvailableCallback> > > >::nsMainThreadPtrHandle(nsMainThreadPtrHandle<mozilla::media::Refcountable<mozilla::UniquePtr<mozilla::GetUserMediaStreamRunnable::TracksAvailableCallback, mozilla::DefaultDelete<mozilla::GetUserMediaStreamRunnable::TracksAvailableCallback> > > > const&)
Unexecuted instantiation: nsMainThreadPtrHandle<nsPIDOMWindowInner>::nsMainThreadPtrHandle(nsMainThreadPtrHandle<nsPIDOMWindowInner> const&)
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::dom::U2FRegisterCallback>::nsMainThreadPtrHandle(nsMainThreadPtrHandle<mozilla::dom::U2FRegisterCallback> const&)
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::dom::U2FSignCallback>::nsMainThreadPtrHandle(nsMainThreadPtrHandle<mozilla::dom::U2FSignCallback> const&)
Unexecuted instantiation: nsMainThreadPtrHandle<nsICacheInfoChannel>::nsMainThreadPtrHandle(nsMainThreadPtrHandle<nsICacheInfoChannel> const&)
Unexecuted instantiation: nsMainThreadPtrHandle<nsIInterceptedChannel>::nsMainThreadPtrHandle(nsMainThreadPtrHandle<nsIInterceptedChannel> const&)
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::dom::ServiceWorkerRegistrationInfo>::nsMainThreadPtrHandle(nsMainThreadPtrHandle<mozilla::dom::ServiceWorkerRegistrationInfo> const&)
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::dom::KeepAliveToken>::nsMainThreadPtrHandle(nsMainThreadPtrHandle<mozilla::dom::KeepAliveToken> const&)
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::dom::ServiceWorkerUpdateJob>::nsMainThreadPtrHandle(nsMainThreadPtrHandle<mozilla::dom::ServiceWorkerUpdateJob> const&)
Unexecuted instantiation: nsMainThreadPtrHandle<nsINativeOSFileSuccessCallback>::nsMainThreadPtrHandle(nsMainThreadPtrHandle<nsINativeOSFileSuccessCallback> const&)
Unexecuted instantiation: nsMainThreadPtrHandle<nsINativeOSFileErrorCallback>::nsMainThreadPtrHandle(nsMainThreadPtrHandle<nsINativeOSFileErrorCallback> const&)
Unexecuted instantiation: nsMainThreadPtrHandle<mozIVisitInfoCallback>::nsMainThreadPtrHandle(nsMainThreadPtrHandle<mozIVisitInfoCallback> const&)
Unexecuted instantiation: nsMainThreadPtrHandle<mozIVisitedStatusCallback>::nsMainThreadPtrHandle(nsMainThreadPtrHandle<mozIVisitedStatusCallback> const&)
Unexecuted instantiation: nsMainThreadPtrHandle<nsIFaviconDataCallback>::nsMainThreadPtrHandle(nsMainThreadPtrHandle<nsIFaviconDataCallback> const&)
Unexecuted instantiation: nsMainThreadPtrHandle<nsIObserver>::nsMainThreadPtrHandle(nsMainThreadPtrHandle<nsIObserver> const&)
Unexecuted instantiation: nsMainThreadPtrHandle<nsIUrlClassifierGetCacheCallback>::nsMainThreadPtrHandle(nsMainThreadPtrHandle<nsIUrlClassifierGetCacheCallback> const&)
Unexecuted instantiation: nsMainThreadPtrHandle<nsIUrlClassifierLookupCallback>::nsMainThreadPtrHandle(nsMainThreadPtrHandle<nsIUrlClassifierLookupCallback> const&)
Unexecuted instantiation: nsMainThreadPtrHandle<nsIUrlClassifierCallback>::nsMainThreadPtrHandle(nsMainThreadPtrHandle<nsIUrlClassifierCallback> const&)
Unexecuted instantiation: nsMainThreadPtrHandle<nsIUrlClassifierUpdateObserver>::nsMainThreadPtrHandle(nsMainThreadPtrHandle<nsIUrlClassifierUpdateObserver> const&)
Unexecuted instantiation: nsMainThreadPtrHandle<nsIURIClassifierCallback>::nsMainThreadPtrHandle(nsMainThreadPtrHandle<nsIURIClassifierCallback> const&)
357
  nsMainThreadPtrHandle& operator=(const nsMainThreadPtrHandle& aOther)
358
0
  {
359
0
    mPtr = aOther.mPtr;
360
0
    return *this;
361
0
  }
Unexecuted instantiation: nsMainThreadPtrHandle<nsIPrincipal>::operator=(nsMainThreadPtrHandle<nsIPrincipal> const&)
Unexecuted instantiation: nsMainThreadPtrHandle<nsICacheInfoChannel>::operator=(nsMainThreadPtrHandle<nsICacheInfoChannel> const&)
Unexecuted instantiation: nsMainThreadPtrHandle<nsIInterceptedChannel>::operator=(nsMainThreadPtrHandle<nsIInterceptedChannel> const&)
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::dom::ServiceWorkerRegistrationInfo>::operator=(nsMainThreadPtrHandle<mozilla::dom::ServiceWorkerRegistrationInfo> const&)
362
  nsMainThreadPtrHandle& operator=(nsMainThreadPtrHolder<T>* aHolder)
363
1
  {
364
1
    mPtr = aHolder;
365
1
    return *this;
366
1
  }
Unexecuted instantiation: nsMainThreadPtrHandle<NetDashboardCallback>::operator=(nsMainThreadPtrHolder<NetDashboardCallback>*)
Unexecuted instantiation: nsMainThreadPtrHandle<nsIRequestObserver>::operator=(nsMainThreadPtrHolder<nsIRequestObserver>*)
Unexecuted instantiation: nsMainThreadPtrHandle<nsISupports>::operator=(nsMainThreadPtrHolder<nsISupports>*)
nsMainThreadPtrHandle<nsIIOService>::operator=(nsMainThreadPtrHolder<nsIIOService>*)
Line
Count
Source
363
1
  {
364
1
    mPtr = aHolder;
365
1
    return *this;
366
1
  }
Unexecuted instantiation: nsMainThreadPtrHandle<nsIStreamConverterService>::operator=(nsMainThreadPtrHolder<nsIStreamConverterService>*)
Unexecuted instantiation: nsMainThreadPtrHandle<nsISiteSecurityService>::operator=(nsMainThreadPtrHolder<nsISiteSecurityService>*)
Unexecuted instantiation: nsMainThreadPtrHandle<nsICookieService>::operator=(nsMainThreadPtrHolder<nsICookieService>*)
Unexecuted instantiation: nsMainThreadPtrHandle<nsIInterfaceRequestor>::operator=(nsMainThreadPtrHolder<nsIInterfaceRequestor>*)
Unexecuted instantiation: nsMainThreadPtrHandle<nsIWifiListener>::operator=(nsMainThreadPtrHolder<nsIWifiListener>*)
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::storage::AsyncStatementParamsHolder>::operator=(nsMainThreadPtrHolder<mozilla::storage::AsyncStatementParamsHolder>*)
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::storage::StatementParamsHolder>::operator=(nsMainThreadPtrHolder<mozilla::storage::StatementParamsHolder>*)
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::storage::StatementRowHolder>::operator=(nsMainThreadPtrHolder<mozilla::storage::StatementRowHolder>*)
Unexecuted instantiation: nsMainThreadPtrHandle<nsIPrincipal>::operator=(nsMainThreadPtrHolder<nsIPrincipal>*)
Unexecuted instantiation: nsMainThreadPtrHandle<nsICacheInfoChannel>::operator=(nsMainThreadPtrHolder<nsICacheInfoChannel>*)
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::DOMMediaStream>::operator=(nsMainThreadPtrHolder<mozilla::DOMMediaStream>*)
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::dom::KeepAliveToken>::operator=(nsMainThreadPtrHolder<mozilla::dom::KeepAliveToken>*)
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::dom::ServiceWorkerRegistrationInfo>::operator=(nsMainThreadPtrHolder<mozilla::dom::ServiceWorkerRegistrationInfo>*)
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::dom::ServiceWorkerInfo>::operator=(nsMainThreadPtrHolder<mozilla::dom::ServiceWorkerInfo>*)
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::dom::ServiceWorkerUpdateJob>::operator=(nsMainThreadPtrHolder<mozilla::dom::ServiceWorkerUpdateJob>*)
Unexecuted instantiation: nsMainThreadPtrHandle<nsINativeOSFileSuccessCallback>::operator=(nsMainThreadPtrHolder<nsINativeOSFileSuccessCallback>*)
Unexecuted instantiation: nsMainThreadPtrHandle<nsINativeOSFileErrorCallback>::operator=(nsMainThreadPtrHolder<nsINativeOSFileErrorCallback>*)
Unexecuted instantiation: nsMainThreadPtrHandle<nsIAsyncShutdownBarrier>::operator=(nsMainThreadPtrHolder<nsIAsyncShutdownBarrier>*)
Unexecuted instantiation: nsMainThreadPtrHandle<nsIAsyncShutdownClient>::operator=(nsMainThreadPtrHolder<nsIAsyncShutdownClient>*)
367
368
  // These all call through to nsMainThreadPtrHolder, and thus implicitly
369
  // assert that we're on the main thread. Off-main-thread consumers must treat
370
  // these handles as opaque.
371
  T* get() const
372
0
  {
373
0
    if (mPtr) {
374
0
      return mPtr.get()->get();
375
0
    }
376
0
    return nullptr;
377
0
  }
Unexecuted instantiation: nsMainThreadPtrHandle<nsIOpenSignedAppFileCallback>::get() const
Unexecuted instantiation: nsMainThreadPtrHandle<NetDashboardCallback>::get() const
Unexecuted instantiation: nsMainThreadPtrHandle<nsITLSServerSecurityObserver>::get() const
Unexecuted instantiation: nsMainThreadPtrHandle<nsIRequestObserver>::get() const
Unexecuted instantiation: nsMainThreadPtrHandle<nsISupports>::get() const
Unexecuted instantiation: nsMainThreadPtrHandle<nsIServerSocketListener>::get() const
Unexecuted instantiation: nsMainThreadPtrHandle<nsIUDPSocketListener>::get() const
Unexecuted instantiation: nsMainThreadPtrHandle<nsIDNSListener>::get() const
Unexecuted instantiation: nsMainThreadPtrHandle<nsIStreamConverterService>::get() const
Unexecuted instantiation: nsMainThreadPtrHandle<nsISiteSecurityService>::get() const
Unexecuted instantiation: nsMainThreadPtrHandle<nsICookieService>::get() const
Unexecuted instantiation: nsMainThreadPtrHandle<nsIIOService>::get() const
Unexecuted instantiation: nsMainThreadPtrHandle<nsIHttpActivityObserver>::get() const
Unexecuted instantiation: nsMainThreadPtrHandle<nsIInterfaceRequestor>::get() const
Unexecuted instantiation: nsMainThreadPtrHandle<nsIWifiListener>::get() const
Unexecuted instantiation: nsMainThreadPtrHandle<nsIPrincipal>::get() const
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::storage::AsyncStatementParamsHolder>::get() const
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::storage::StatementRowHolder>::get() const
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::storage::StatementParamsHolder>::get() const
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::dom::WebrtcGlobalStatisticsCallback>::get() const
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::dom::WebrtcGlobalLoggingCallback>::get() const
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::dom::Promise>::get() const
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::dom::CallbackObjectHolder<mozilla::dom::NavigatorUserMediaErrorCallback, nsIDOMGetUserMediaErrorCallback> >::get() const
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::DOMMediaStream>::get() const
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::dom::CallbackObjectHolder<mozilla::dom::NavigatorUserMediaSuccessCallback, nsIDOMGetUserMediaSuccessCallback> >::get() const
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::media::Refcountable<mozilla::UniquePtr<mozilla::GetUserMediaStreamRunnable::TracksAvailableCallback, mozilla::DefaultDelete<mozilla::GetUserMediaStreamRunnable::TracksAvailableCallback> > > >::get() const
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::MediaSourceDecoder>::get() const
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::media::Refcountable<mozilla::dom::MediaTrackSettings> >::get() const
Unexecuted instantiation: nsMainThreadPtrHandle<nsPIDOMWindowInner>::get() const
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::dom::U2FRegisterCallback>::get() const
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::dom::U2FSignCallback>::get() const
Unexecuted instantiation: nsMainThreadPtrHandle<nsICacheInfoChannel>::get() const
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::dom::ServiceWorkerRegistrationInfo>::get() const
Unexecuted instantiation: nsMainThreadPtrHandle<nsIInterceptedChannel>::get() const
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::dom::ServiceWorkerPrivate>::get() const
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::dom::ServiceWorkerInfo>::get() const
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::dom::ServiceWorkerUpdateJob>::get() const
Unexecuted instantiation: nsMainThreadPtrHandle<nsILocalCertGetCallback>::get() const
Unexecuted instantiation: nsMainThreadPtrHandle<nsILocalCertCallback>::get() const
Unexecuted instantiation: nsMainThreadPtrHandle<nsIObserver>::get() const
Unexecuted instantiation: nsMainThreadPtrHandle<nsICertVerificationCallback>::get() const
Unexecuted instantiation: nsMainThreadPtrHandle<nsINativeOSFileErrorCallback>::get() const
Unexecuted instantiation: nsMainThreadPtrHandle<nsINativeOSFileSuccessCallback>::get() const
Unexecuted instantiation: nsMainThreadPtrHandle<mozIVisitInfoCallback>::get() const
Unexecuted instantiation: nsMainThreadPtrHandle<mozIVisitedStatusCallback>::get() const
Unexecuted instantiation: nsMainThreadPtrHandle<nsIFaviconDataCallback>::get() const
Unexecuted instantiation: nsMainThreadPtrHandle<nsIAsyncShutdownBarrier>::get() const
Unexecuted instantiation: nsMainThreadPtrHandle<nsIAsyncShutdownClient>::get() const
Unexecuted instantiation: nsMainThreadPtrHandle<nsIURIClassifierCallback>::get() const
Unexecuted instantiation: nsMainThreadPtrHandle<nsIUrlClassifierGetCacheCallback>::get() const
Unexecuted instantiation: nsMainThreadPtrHandle<nsIUrlClassifierLookupCallback>::get() const
Unexecuted instantiation: nsMainThreadPtrHandle<nsIUrlClassifierCallback>::get() const
Unexecuted instantiation: nsMainThreadPtrHandle<nsIUrlClassifierUpdateObserver>::get() const
Unexecuted instantiation: nsMainThreadPtrHandle<nsIIdentitySignCallback>::get() const
Unexecuted instantiation: nsMainThreadPtrHandle<nsIIdentityKeyGenCallback>::get() const
378
379
0
  operator T*() const { return get(); }
Unexecuted instantiation: nsMainThreadPtrHandle<nsISupports>::operator nsISupports*() const
Unexecuted instantiation: nsMainThreadPtrHandle<nsIRequestObserver>::operator nsIRequestObserver*() const
Unexecuted instantiation: nsMainThreadPtrHandle<nsIDNSListener>::operator nsIDNSListener*() const
Unexecuted instantiation: nsMainThreadPtrHandle<nsIStreamConverterService>::operator nsIStreamConverterService*() const
Unexecuted instantiation: nsMainThreadPtrHandle<nsISiteSecurityService>::operator nsISiteSecurityService*() const
Unexecuted instantiation: nsMainThreadPtrHandle<nsICookieService>::operator nsICookieService*() const
Unexecuted instantiation: nsMainThreadPtrHandle<nsIIOService>::operator nsIIOService*() const
Unexecuted instantiation: nsMainThreadPtrHandle<nsIInterfaceRequestor>::operator nsIInterfaceRequestor*() const
Unexecuted instantiation: nsMainThreadPtrHandle<nsIWifiListener>::operator nsIWifiListener*() const
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::dom::CallbackObjectHolder<mozilla::dom::NavigatorUserMediaErrorCallback, nsIDOMGetUserMediaErrorCallback> >::operator mozilla::dom::CallbackObjectHolder<mozilla::dom::NavigatorUserMediaErrorCallback, nsIDOMGetUserMediaErrorCallback>*() const
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::DOMMediaStream>::operator mozilla::DOMMediaStream*() const
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::dom::CallbackObjectHolder<mozilla::dom::NavigatorUserMediaSuccessCallback, nsIDOMGetUserMediaSuccessCallback> >::operator mozilla::dom::CallbackObjectHolder<mozilla::dom::NavigatorUserMediaSuccessCallback, nsIDOMGetUserMediaSuccessCallback>*() const
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::MediaSourceDecoder>::operator mozilla::MediaSourceDecoder*() const
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::media::Refcountable<mozilla::dom::MediaTrackSettings> >::operator mozilla::media::Refcountable<mozilla::dom::MediaTrackSettings>*() const
Unexecuted instantiation: nsMainThreadPtrHandle<nsIInterceptedChannel>::operator nsIInterceptedChannel*() const
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::dom::ServiceWorkerRegistrationInfo>::operator mozilla::dom::ServiceWorkerRegistrationInfo*() const
Unexecuted instantiation: nsMainThreadPtrHandle<nsIPrincipal>::operator nsIPrincipal*() const
Unexecuted instantiation: nsMainThreadPtrHandle<mozIVisitInfoCallback>::operator mozIVisitInfoCallback*() const
Unexecuted instantiation: nsMainThreadPtrHandle<nsIAsyncShutdownBarrier>::operator nsIAsyncShutdownBarrier*() const
Unexecuted instantiation: nsMainThreadPtrHandle<nsIAsyncShutdownClient>::operator nsIAsyncShutdownClient*() const
Unexecuted instantiation: nsMainThreadPtrHandle<nsIObserver>::operator nsIObserver*() const
380
0
  T* operator->() const MOZ_NO_ADDREF_RELEASE_ON_RETURN { return get(); }
Unexecuted instantiation: nsMainThreadPtrHandle<nsIOpenSignedAppFileCallback>::operator->() const
Unexecuted instantiation: nsMainThreadPtrHandle<NetDashboardCallback>::operator->() const
Unexecuted instantiation: nsMainThreadPtrHandle<nsITLSServerSecurityObserver>::operator->() const
Unexecuted instantiation: nsMainThreadPtrHandle<nsIRequestObserver>::operator->() const
Unexecuted instantiation: nsMainThreadPtrHandle<nsIServerSocketListener>::operator->() const
Unexecuted instantiation: nsMainThreadPtrHandle<nsIUDPSocketListener>::operator->() const
Unexecuted instantiation: nsMainThreadPtrHandle<nsIDNSListener>::operator->() const
Unexecuted instantiation: nsMainThreadPtrHandle<nsIHttpActivityObserver>::operator->() const
Unexecuted instantiation: nsMainThreadPtrHandle<nsIWifiListener>::operator->() const
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::storage::AsyncStatementParamsHolder>::operator->() const
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::storage::StatementRowHolder>::operator->() const
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::storage::StatementParamsHolder>::operator->() const
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::dom::Promise>::operator->() const
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::DOMMediaStream>::operator->() const
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::media::Refcountable<mozilla::UniquePtr<mozilla::GetUserMediaStreamRunnable::TracksAvailableCallback, mozilla::DefaultDelete<mozilla::GetUserMediaStreamRunnable::TracksAvailableCallback> > > >::operator->() const
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::MediaSourceDecoder>::operator->() const
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::media::Refcountable<mozilla::dom::MediaTrackSettings> >::operator->() const
Unexecuted instantiation: nsMainThreadPtrHandle<nsPIDOMWindowInner>::operator->() const
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::dom::U2FRegisterCallback>::operator->() const
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::dom::U2FSignCallback>::operator->() const
Unexecuted instantiation: nsMainThreadPtrHandle<nsIInterceptedChannel>::operator->() const
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::dom::ServiceWorkerRegistrationInfo>::operator->() const
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::dom::ServiceWorkerPrivate>::operator->() const
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::dom::ServiceWorkerInfo>::operator->() const
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::dom::ServiceWorkerUpdateJob>::operator->() const
Unexecuted instantiation: nsMainThreadPtrHandle<nsILocalCertGetCallback>::operator->() const
Unexecuted instantiation: nsMainThreadPtrHandle<nsILocalCertCallback>::operator->() const
Unexecuted instantiation: nsMainThreadPtrHandle<nsIObserver>::operator->() const
Unexecuted instantiation: nsMainThreadPtrHandle<nsICertVerificationCallback>::operator->() const
Unexecuted instantiation: nsMainThreadPtrHandle<nsINativeOSFileErrorCallback>::operator->() const
Unexecuted instantiation: nsMainThreadPtrHandle<nsINativeOSFileSuccessCallback>::operator->() const
Unexecuted instantiation: nsMainThreadPtrHandle<mozIVisitInfoCallback>::operator->() const
Unexecuted instantiation: nsMainThreadPtrHandle<mozIVisitedStatusCallback>::operator->() const
Unexecuted instantiation: nsMainThreadPtrHandle<nsIFaviconDataCallback>::operator->() const
Unexecuted instantiation: nsMainThreadPtrHandle<nsIAsyncShutdownBarrier>::operator->() const
Unexecuted instantiation: nsMainThreadPtrHandle<nsIAsyncShutdownClient>::operator->() const
Unexecuted instantiation: nsMainThreadPtrHandle<nsIUrlClassifierGetCacheCallback>::operator->() const
Unexecuted instantiation: nsMainThreadPtrHandle<nsIUrlClassifierLookupCallback>::operator->() const
Unexecuted instantiation: nsMainThreadPtrHandle<nsIUrlClassifierCallback>::operator->() const
Unexecuted instantiation: nsMainThreadPtrHandle<nsIUrlClassifierUpdateObserver>::operator->() const
Unexecuted instantiation: nsMainThreadPtrHandle<nsIIdentitySignCallback>::operator->() const
Unexecuted instantiation: nsMainThreadPtrHandle<nsIIdentityKeyGenCallback>::operator->() const
381
382
  // These are safe to call on other threads with appropriate external locking.
383
  bool operator==(const nsMainThreadPtrHandle<T>& aOther) const
384
0
  {
385
0
    if (!mPtr || !aOther.mPtr) {
386
0
      return mPtr == aOther.mPtr;
387
0
    }
388
0
    return *mPtr == *aOther.mPtr;
389
0
  }
Unexecuted instantiation: nsMainThreadPtrHandle<nsIHttpActivityObserver>::operator==(nsMainThreadPtrHandle<nsIHttpActivityObserver> const&) const
Unexecuted instantiation: nsMainThreadPtrHandle<nsIPrincipal>::operator==(nsMainThreadPtrHandle<nsIPrincipal> const&) const
390
  bool operator!=(const nsMainThreadPtrHandle<T>& aOther) const
391
0
  {
392
0
    return !operator==(aOther);
393
0
  }
394
  bool operator==(decltype(nullptr)) const { return mPtr == nullptr; }
395
0
  bool operator!=(decltype(nullptr)) const { return mPtr != nullptr; }
396
0
  bool operator!() const {
397
0
    return !mPtr || !*mPtr;
398
0
  }
Unexecuted instantiation: nsMainThreadPtrHandle<nsIRequestObserver>::operator!() const
Unexecuted instantiation: nsMainThreadPtrHandle<nsIStreamConverterService>::operator!() const
Unexecuted instantiation: nsMainThreadPtrHandle<nsISiteSecurityService>::operator!() const
Unexecuted instantiation: nsMainThreadPtrHandle<nsICookieService>::operator!() const
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::storage::AsyncStatementParamsHolder>::operator!() const
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::storage::StatementRowHolder>::operator!() const
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::storage::StatementParamsHolder>::operator!() const
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::DOMMediaStream>::operator!() const
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::dom::U2FRegisterCallback>::operator!() const
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::dom::U2FSignCallback>::operator!() const
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::dom::KeepAliveToken>::operator!() const
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::dom::ServiceWorkerRegistrationInfo>::operator!() const
Unexecuted instantiation: nsMainThreadPtrHandle<mozilla::dom::ServiceWorkerInfo>::operator!() const
Unexecuted instantiation: nsMainThreadPtrHandle<mozIVisitInfoCallback>::operator!() const
Unexecuted instantiation: nsMainThreadPtrHandle<mozIVisitedStatusCallback>::operator!() const
Unexecuted instantiation: nsMainThreadPtrHandle<nsIFaviconDataCallback>::operator!() const
Unexecuted instantiation: nsMainThreadPtrHandle<nsIAsyncShutdownBarrier>::operator!() const
399
};
400
401
namespace mozilla {
402
403
template<typename T>
404
using PtrHolder = nsMainThreadPtrHolder<T>;
405
406
template<typename T>
407
using PtrHandle = nsMainThreadPtrHandle<T>;
408
409
} // namespace mozilla
410
411
#endif