/work/obj-fuzz/dist/include/mozilla/dom/CallbackObject.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 | | /** |
8 | | * A common base class for representing WebIDL callback function and |
9 | | * callback interface types in C++. |
10 | | * |
11 | | * This class implements common functionality like lifetime |
12 | | * management, initialization with the JS object, and setup of the |
13 | | * call environment. Subclasses are responsible for providing methods |
14 | | * that do the call into JS as needed. |
15 | | */ |
16 | | |
17 | | #ifndef mozilla_dom_CallbackObject_h |
18 | | #define mozilla_dom_CallbackObject_h |
19 | | |
20 | | #include "nsISupports.h" |
21 | | #include "nsISupportsImpl.h" |
22 | | #include "nsCycleCollectionParticipant.h" |
23 | | #include "js/Wrapper.h" |
24 | | #include "mozilla/Assertions.h" |
25 | | #include "mozilla/ErrorResult.h" |
26 | | #include "mozilla/HoldDropJSObjects.h" |
27 | | #include "mozilla/MemoryReporting.h" |
28 | | #include "mozilla/OwningNonNull.h" |
29 | | #include "mozilla/dom/ScriptSettings.h" |
30 | | #include "nsWrapperCache.h" |
31 | | #include "nsJSEnvironment.h" |
32 | | #include "xpcpublic.h" |
33 | | #include "jsapi.h" |
34 | | #include "js/TracingAPI.h" |
35 | | |
36 | | namespace mozilla { |
37 | | namespace dom { |
38 | | |
39 | | #define DOM_CALLBACKOBJECT_IID \ |
40 | | { 0xbe74c190, 0x6d76, 0x4991, \ |
41 | | { 0x84, 0xb9, 0x65, 0x06, 0x99, 0xe6, 0x93, 0x2b } } |
42 | | |
43 | | class CallbackObject : public nsISupports |
44 | | { |
45 | | public: |
46 | | NS_DECLARE_STATIC_IID_ACCESSOR(DOM_CALLBACKOBJECT_IID) |
47 | | |
48 | | NS_DECL_CYCLE_COLLECTING_ISUPPORTS |
49 | | NS_DECL_CYCLE_COLLECTION_SKIPPABLE_SCRIPT_HOLDER_CLASS(CallbackObject) |
50 | | |
51 | | // The caller may pass a global object which will act as an override for the |
52 | | // incumbent script settings object when the callback is invoked (overriding |
53 | | // the entry point computed from aCallback). If no override is required, the |
54 | | // caller should pass null. |aCx| is used to capture the current |
55 | | // stack, which is later used as an async parent when the callback |
56 | | // is invoked. aCx can be nullptr, in which case no stack is |
57 | | // captured. |
58 | | explicit CallbackObject(JSContext* aCx, JS::Handle<JSObject*> aCallback, |
59 | | JS::Handle<JSObject*> aCallbackGlobal, |
60 | | nsIGlobalObject* aIncumbentGlobal) |
61 | 0 | { |
62 | 0 | if (aCx && JS::ContextOptionsRef(aCx).asyncStack()) { |
63 | 0 | JS::RootedObject stack(aCx); |
64 | 0 | if (!JS::CaptureCurrentStack(aCx, &stack)) { |
65 | 0 | JS_ClearPendingException(aCx); |
66 | 0 | } |
67 | 0 | Init(aCallback, aCallbackGlobal, stack, aIncumbentGlobal); |
68 | 0 | } else { |
69 | 0 | Init(aCallback, aCallbackGlobal, nullptr, aIncumbentGlobal); |
70 | 0 | } |
71 | 0 | } |
72 | | |
73 | | // Instead of capturing the current stack to use as an async parent when the |
74 | | // callback is invoked, the caller can use this overload to pass in a stack |
75 | | // for that purpose. |
76 | | explicit CallbackObject(JSObject* aCallback, |
77 | | JSObject* aCallbackGlobal, |
78 | | JSObject* aAsyncStack, |
79 | | nsIGlobalObject* aIncumbentGlobal) |
80 | 0 | { |
81 | 0 | Init(aCallback, aCallbackGlobal, aAsyncStack, aIncumbentGlobal); |
82 | 0 | } |
83 | | |
84 | | // This is guaranteed to be non-null from the time the CallbackObject is |
85 | | // created until JavaScript has had a chance to run. It will only return null |
86 | | // after a JavaScript caller has called nukeSandbox on a Sandbox object, and |
87 | | // the cycle collector has had a chance to run. |
88 | | // |
89 | | // This means that any native callee which receives a CallbackObject as an |
90 | | // argument can safely rely on the callback being non-null so long as it |
91 | | // doesn't trigger any scripts before it accesses it. |
92 | | JS::Handle<JSObject*> CallbackOrNull() const |
93 | 0 | { |
94 | 0 | mCallback.exposeToActiveJS(); |
95 | 0 | return CallbackPreserveColor(); |
96 | 0 | } |
97 | | |
98 | | JSObject* CallbackGlobalOrNull() const |
99 | 0 | { |
100 | 0 | mCallbackGlobal.exposeToActiveJS(); |
101 | 0 | return mCallbackGlobal; |
102 | 0 | } |
103 | | |
104 | | // Like CallbackOrNull(), but will return a new dead proxy object in the |
105 | | // caller's realm if the callback is null. |
106 | | JSObject* Callback(JSContext* aCx); |
107 | | |
108 | | JSObject* GetCreationStack() const |
109 | 0 | { |
110 | 0 | return mCreationStack; |
111 | 0 | } |
112 | | |
113 | | void MarkForCC() |
114 | 0 | { |
115 | 0 | mCallback.exposeToActiveJS(); |
116 | 0 | mCallbackGlobal.exposeToActiveJS(); |
117 | 0 | mCreationStack.exposeToActiveJS(); |
118 | 0 | } |
119 | | |
120 | | /* |
121 | | * This getter does not change the color of the JSObject meaning that the |
122 | | * object returned is not guaranteed to be kept alive past the next CC. |
123 | | * |
124 | | * This should only be called if you are certain that the return value won't |
125 | | * be passed into a JS API function and that it won't be stored without being |
126 | | * rooted (or otherwise signaling the stored value to the CC). |
127 | | */ |
128 | | JS::Handle<JSObject*> CallbackPreserveColor() const |
129 | 0 | { |
130 | 0 | // Calling fromMarkedLocation() is safe because we trace our mCallback, and |
131 | 0 | // because the value of mCallback cannot change after if has been set. |
132 | 0 | return JS::Handle<JSObject*>::fromMarkedLocation(mCallback.address()); |
133 | 0 | } |
134 | | |
135 | | /* |
136 | | * If the callback is known to be non-gray, then this method can be |
137 | | * used instead of CallbackOrNull() to avoid the overhead of |
138 | | * ExposeObjectToActiveJS(). |
139 | | */ |
140 | | JS::Handle<JSObject*> CallbackKnownNotGray() const |
141 | 0 | { |
142 | 0 | MOZ_ASSERT(JS::ObjectIsNotGray(mCallback)); |
143 | 0 | return CallbackPreserveColor(); |
144 | 0 | } |
145 | | |
146 | | nsIGlobalObject* IncumbentGlobalOrNull() const |
147 | 0 | { |
148 | 0 | return mIncumbentGlobal; |
149 | 0 | } |
150 | | |
151 | | enum ExceptionHandling { |
152 | | // Report any exception and don't throw it to the caller code. |
153 | | eReportExceptions, |
154 | | // Throw an exception to the caller code if the thrown exception is a |
155 | | // binding object for a DOMException from the caller's scope, otherwise |
156 | | // report it. |
157 | | eRethrowContentExceptions, |
158 | | // Throw exceptions to the caller code, unless the caller realm is |
159 | | // provided, the exception is not a DOMException from the caller |
160 | | // realm, and the caller realm does not subsume our unwrapped callback. |
161 | | eRethrowExceptions |
162 | | }; |
163 | | |
164 | | size_t SizeOfIncludingThis(mozilla::MallocSizeOf aMallocSizeOf) const |
165 | 0 | { |
166 | 0 | return aMallocSizeOf(this); |
167 | 0 | } |
168 | | |
169 | | protected: |
170 | | virtual ~CallbackObject() |
171 | 0 | { |
172 | 0 | mozilla::DropJSObjects(this); |
173 | 0 | } |
174 | | |
175 | | explicit CallbackObject(CallbackObject* aCallbackObject) |
176 | 0 | { |
177 | 0 | Init(aCallbackObject->mCallback, aCallbackObject->mCallbackGlobal, |
178 | 0 | aCallbackObject->mCreationStack, |
179 | 0 | aCallbackObject->mIncumbentGlobal); |
180 | 0 | } |
181 | | |
182 | | bool operator==(const CallbackObject& aOther) const |
183 | 0 | { |
184 | 0 | JSObject* wrappedThis = CallbackPreserveColor(); |
185 | 0 | JSObject* wrappedOther = aOther.CallbackPreserveColor(); |
186 | 0 | if (!wrappedThis || !wrappedOther) { |
187 | 0 | return this == &aOther; |
188 | 0 | } |
189 | 0 | |
190 | 0 | JSObject* thisObj = js::UncheckedUnwrap(wrappedThis); |
191 | 0 | JSObject* otherObj = js::UncheckedUnwrap(wrappedOther); |
192 | 0 | return thisObj == otherObj; |
193 | 0 | } |
194 | | |
195 | | class JSObjectsDropper final |
196 | | { |
197 | | public: |
198 | | explicit JSObjectsDropper(CallbackObject* aHolder) |
199 | | : mHolder(aHolder) |
200 | 0 | {} |
201 | | |
202 | | ~JSObjectsDropper() |
203 | 0 | { |
204 | 0 | mHolder->ClearJSObjects(); |
205 | 0 | } |
206 | | |
207 | | private: |
208 | | RefPtr<CallbackObject> mHolder; |
209 | | }; |
210 | | |
211 | | private: |
212 | | inline void InitNoHold(JSObject* aCallback, JSObject* aCallbackGlobal, |
213 | | JSObject* aCreationStack, |
214 | | nsIGlobalObject* aIncumbentGlobal) |
215 | 0 | { |
216 | 0 | MOZ_ASSERT(aCallback && !mCallback); |
217 | 0 | MOZ_ASSERT(aCallbackGlobal); |
218 | 0 | MOZ_DIAGNOSTIC_ASSERT(js::GetObjectCompartment(aCallback) == |
219 | 0 | js::GetObjectCompartment(aCallbackGlobal)); |
220 | 0 | MOZ_ASSERT(JS_IsGlobalObject(aCallbackGlobal)); |
221 | 0 | mCallback = aCallback; |
222 | 0 | mCallbackGlobal = aCallbackGlobal; |
223 | 0 | mCreationStack = aCreationStack; |
224 | 0 | if (aIncumbentGlobal) { |
225 | 0 | mIncumbentGlobal = aIncumbentGlobal; |
226 | 0 | mIncumbentJSGlobal = aIncumbentGlobal->GetGlobalJSObject(); |
227 | 0 | } |
228 | 0 | } |
229 | | |
230 | | inline void Init(JSObject* aCallback, JSObject* aCallbackGlobal, |
231 | | JSObject* aCreationStack, |
232 | | nsIGlobalObject* aIncumbentGlobal) |
233 | 0 | { |
234 | 0 | // Set script objects before we hold, on the off chance that a GC could |
235 | 0 | // somehow happen in there... (which would be pretty odd, granted). |
236 | 0 | InitNoHold(aCallback, aCallbackGlobal, aCreationStack, aIncumbentGlobal); |
237 | 0 | mozilla::HoldJSObjects(this); |
238 | 0 | } |
239 | | |
240 | | inline void ClearJSReferences() |
241 | 0 | { |
242 | 0 | mCallback = nullptr; |
243 | 0 | mCallbackGlobal = nullptr; |
244 | 0 | mCreationStack = nullptr; |
245 | 0 | mIncumbentJSGlobal = nullptr; |
246 | 0 | } |
247 | | |
248 | | CallbackObject(const CallbackObject&) = delete; |
249 | | CallbackObject& operator =(const CallbackObject&) = delete; |
250 | | |
251 | | protected: |
252 | | void ClearJSObjects() |
253 | 0 | { |
254 | 0 | MOZ_ASSERT_IF(mIncumbentJSGlobal, mCallback); |
255 | 0 | if (mCallback) { |
256 | 0 | ClearJSReferences(); |
257 | 0 | } |
258 | 0 | } |
259 | | |
260 | | // For use from subclasses that want to be usable with Rooted. |
261 | | void Trace(JSTracer* aTracer); |
262 | | |
263 | | // For use from subclasses that want to be traced for a bit then possibly |
264 | | // switch to HoldJSObjects and do other slow JS-related init work we might do. |
265 | | // If we have more than one owner, this will HoldJSObjects and do said slow |
266 | | // init work; otherwise it will just forget all our JS references. |
267 | | void FinishSlowJSInitIfMoreThanOneOwner(JSContext* aCx); |
268 | | |
269 | | // Struct used as a way to force a CallbackObject constructor to not call |
270 | | // HoldJSObjects. We're putting it here so that CallbackObject subclasses will |
271 | | // have access to it, but outside code will not. |
272 | | // |
273 | | // Places that use this need to ensure that the callback is traced (e.g. via a |
274 | | // Rooted) until the HoldJSObjects call happens. |
275 | | struct FastCallbackConstructor { |
276 | | }; |
277 | | |
278 | | // Just like the public version without the FastCallbackConstructor argument, |
279 | | // except for not calling HoldJSObjects and not capturing async stacks (on the |
280 | | // assumption that we will do that last whenever we decide to actually |
281 | | // HoldJSObjects; see FinishSlowJSInitIfMoreThanOneOwner). If you use this, |
282 | | // you MUST ensure that the object is traced until the HoldJSObjects happens! |
283 | | CallbackObject(JSObject* aCallback, |
284 | | JSObject* aCallbackGlobal, |
285 | | const FastCallbackConstructor&) |
286 | 0 | { |
287 | 0 | InitNoHold(aCallback, aCallbackGlobal, nullptr, nullptr); |
288 | 0 | } |
289 | | |
290 | | // mCallback is not unwrapped, so it can be a cross-compartment-wrapper. |
291 | | // This is done to ensure that, if JS code can't call a callback f(), or get |
292 | | // its members, directly itself, this code won't call f(), or get its members, |
293 | | // on the code's behalf. |
294 | | JS::Heap<JSObject*> mCallback; |
295 | | // mCallbackGlobal is the global that we were in when we created the |
296 | | // callback. In particular, it is guaranteed to be same-compartment with |
297 | | // aCallback. We store it separately, because we have no way to recover the |
298 | | // global if mCallback is a cross-compartment wrapper. |
299 | | JS::Heap<JSObject*> mCallbackGlobal; |
300 | | JS::Heap<JSObject*> mCreationStack; |
301 | | // Ideally, we'd just hold a reference to the nsIGlobalObject, since that's |
302 | | // what we need to pass to AutoIncumbentScript. Unfortunately, that doesn't |
303 | | // hold the actual JS global alive. So we maintain an additional pointer to |
304 | | // the JS global itself so that we can trace it. |
305 | | // |
306 | | // At some point we should consider trying to make native globals hold their |
307 | | // scripted global alive, at which point we can get rid of the duplication |
308 | | // here. |
309 | | nsCOMPtr<nsIGlobalObject> mIncumbentGlobal; |
310 | | JS::TenuredHeap<JSObject*> mIncumbentJSGlobal; |
311 | | |
312 | | class MOZ_STACK_CLASS CallSetup |
313 | | { |
314 | | /** |
315 | | * A class that performs whatever setup we need to safely make a |
316 | | * call while this class is on the stack, After the constructor |
317 | | * returns, the call is safe to make if GetContext() returns |
318 | | * non-null. |
319 | | */ |
320 | | public: |
321 | | // If aExceptionHandling == eRethrowContentExceptions then aRealm |
322 | | // needs to be set to the realm in which exceptions will be rethrown. |
323 | | // |
324 | | // If aExceptionHandling == eRethrowExceptions then aRealm may be set |
325 | | // to the realm in which exceptions will be rethrown. In that case |
326 | | // they will only be rethrown if that realm's principal subsumes the |
327 | | // principal of our (unwrapped) callback. |
328 | | CallSetup(CallbackObject* aCallback, ErrorResult& aRv, |
329 | | const char* aExecutionReason, |
330 | | ExceptionHandling aExceptionHandling, |
331 | | JS::Realm* aRealm = nullptr, |
332 | | bool aIsJSImplementedWebIDL = false); |
333 | | ~CallSetup(); |
334 | | |
335 | | JSContext* GetContext() const |
336 | 0 | { |
337 | 0 | return mCx; |
338 | 0 | } |
339 | | |
340 | | private: |
341 | | // We better not get copy-constructed |
342 | | CallSetup(const CallSetup&) = delete; |
343 | | |
344 | | bool ShouldRethrowException(JS::Handle<JS::Value> aException); |
345 | | |
346 | | // Members which can go away whenever |
347 | | JSContext* mCx; |
348 | | |
349 | | // Caller's realm. This will only have a sensible value if |
350 | | // mExceptionHandling == eRethrowContentExceptions or eRethrowExceptions. |
351 | | JS::Realm* mRealm; |
352 | | |
353 | | // And now members whose construction/destruction order we need to control. |
354 | | Maybe<AutoEntryScript> mAutoEntryScript; |
355 | | Maybe<AutoIncumbentScript> mAutoIncumbentScript; |
356 | | |
357 | | Maybe<JS::Rooted<JSObject*>> mRootedCallable; |
358 | | // The global of mRootedCallable. |
359 | | Maybe<JS::Rooted<JSObject*>> mRootedCallableGlobal; |
360 | | |
361 | | // Members which are used to set the async stack. |
362 | | Maybe<JS::Rooted<JSObject*>> mAsyncStack; |
363 | | Maybe<JS::AutoSetAsyncStackForNewCalls> mAsyncStackSetter; |
364 | | |
365 | | // Can't construct a JSAutoRealm without a JSContext either. Also, |
366 | | // Put mAr after mAutoEntryScript so that we exit the realm before we |
367 | | // pop the script settings stack. Though in practice we'll often manually |
368 | | // order those two things. |
369 | | Maybe<JSAutoRealm> mAr; |
370 | | |
371 | | // An ErrorResult to possibly re-throw exceptions on and whether |
372 | | // we should re-throw them. |
373 | | ErrorResult& mErrorResult; |
374 | | const ExceptionHandling mExceptionHandling; |
375 | | const bool mIsMainThread; |
376 | | }; |
377 | | }; |
378 | | |
379 | | template<class WebIDLCallbackT, class XPCOMCallbackT> |
380 | | class CallbackObjectHolder; |
381 | | |
382 | | template<class T, class U> |
383 | | void ImplCycleCollectionUnlink(CallbackObjectHolder<T, U>& aField); |
384 | | |
385 | | class CallbackObjectHolderBase |
386 | | { |
387 | | protected: |
388 | | // Returns null on all failures |
389 | | already_AddRefed<nsISupports> ToXPCOMCallback(CallbackObject* aCallback, |
390 | | const nsIID& aIID) const; |
391 | | }; |
392 | | |
393 | | template<class WebIDLCallbackT, class XPCOMCallbackT> |
394 | | class CallbackObjectHolder : CallbackObjectHolderBase |
395 | | { |
396 | | /** |
397 | | * A class which stores either a WebIDLCallbackT* or an XPCOMCallbackT*. Both |
398 | | * types must inherit from nsISupports. The pointer that's stored can be |
399 | | * null. |
400 | | * |
401 | | * When storing a WebIDLCallbackT*, mPtrBits is set to the pointer value. |
402 | | * When storing an XPCOMCallbackT*, mPtrBits is the pointer value with low bit |
403 | | * set. |
404 | | */ |
405 | | public: |
406 | | explicit CallbackObjectHolder(WebIDLCallbackT* aCallback) |
407 | | : mPtrBits(reinterpret_cast<uintptr_t>(aCallback)) |
408 | 0 | { |
409 | 0 | NS_IF_ADDREF(aCallback); |
410 | 0 | } Unexecuted instantiation: mozilla::dom::CallbackObjectHolder<mozilla::dom::MessageListener, nsISupports>::CallbackObjectHolder(mozilla::dom::MessageListener*) Unexecuted instantiation: mozilla::dom::CallbackObjectHolder<mozilla::dom::NavigatorUserMediaSuccessCallback, nsIDOMGetUserMediaSuccessCallback>::CallbackObjectHolder(mozilla::dom::NavigatorUserMediaSuccessCallback*) Unexecuted instantiation: mozilla::dom::CallbackObjectHolder<mozilla::dom::NavigatorUserMediaErrorCallback, nsIDOMGetUserMediaErrorCallback>::CallbackObjectHolder(mozilla::dom::NavigatorUserMediaErrorCallback*) Unexecuted instantiation: mozilla::dom::CallbackObjectHolder<mozilla::dom::EventListener, nsIDOMEventListener>::CallbackObjectHolder(mozilla::dom::EventListener*) Unexecuted instantiation: mozilla::dom::CallbackObjectHolder<mozilla::dom::PositionCallback, nsIDOMGeoPositionCallback>::CallbackObjectHolder(mozilla::dom::PositionCallback*) Unexecuted instantiation: mozilla::dom::CallbackObjectHolder<mozilla::dom::PositionErrorCallback, nsIDOMGeoPositionErrorCallback>::CallbackObjectHolder(mozilla::dom::PositionErrorCallback*) |
411 | | |
412 | | explicit CallbackObjectHolder(XPCOMCallbackT* aCallback) |
413 | | : mPtrBits(reinterpret_cast<uintptr_t>(aCallback) | XPCOMCallbackFlag) |
414 | 0 | { |
415 | 0 | NS_IF_ADDREF(aCallback); |
416 | 0 | } Unexecuted instantiation: mozilla::dom::CallbackObjectHolder<mozilla::dom::EventListener, nsIDOMEventListener>::CallbackObjectHolder(nsIDOMEventListener*) Unexecuted instantiation: mozilla::dom::CallbackObjectHolder<mozilla::dom::PositionCallback, nsIDOMGeoPositionCallback>::CallbackObjectHolder(nsIDOMGeoPositionCallback*) Unexecuted instantiation: mozilla::dom::CallbackObjectHolder<mozilla::dom::PositionErrorCallback, nsIDOMGeoPositionErrorCallback>::CallbackObjectHolder(nsIDOMGeoPositionErrorCallback*) Unexecuted instantiation: mozilla::dom::CallbackObjectHolder<mozilla::dom::NavigatorUserMediaSuccessCallback, nsIDOMGetUserMediaSuccessCallback>::CallbackObjectHolder(nsIDOMGetUserMediaSuccessCallback*) Unexecuted instantiation: mozilla::dom::CallbackObjectHolder<mozilla::dom::NavigatorUserMediaErrorCallback, nsIDOMGetUserMediaErrorCallback>::CallbackObjectHolder(nsIDOMGetUserMediaErrorCallback*) |
417 | | |
418 | | CallbackObjectHolder(CallbackObjectHolder&& aOther) |
419 | | : mPtrBits(aOther.mPtrBits) |
420 | 0 | { |
421 | 0 | aOther.mPtrBits = 0; |
422 | 0 | static_assert(sizeof(CallbackObjectHolder) == sizeof(void*), |
423 | 0 | "This object is expected to be as small as a pointer, and it " |
424 | 0 | "is currently passed by value in various places. If it is " |
425 | 0 | "bloating, we may want to pass it by reference then."); |
426 | 0 | } Unexecuted instantiation: mozilla::dom::CallbackObjectHolder<mozilla::dom::EventListener, nsIDOMEventListener>::CallbackObjectHolder(mozilla::dom::CallbackObjectHolder<mozilla::dom::EventListener, nsIDOMEventListener>&&) Unexecuted instantiation: mozilla::dom::CallbackObjectHolder<mozilla::dom::PositionCallback, nsIDOMGeoPositionCallback>::CallbackObjectHolder(mozilla::dom::CallbackObjectHolder<mozilla::dom::PositionCallback, nsIDOMGeoPositionCallback>&&) Unexecuted instantiation: mozilla::dom::CallbackObjectHolder<mozilla::dom::PositionErrorCallback, nsIDOMGeoPositionErrorCallback>::CallbackObjectHolder(mozilla::dom::CallbackObjectHolder<mozilla::dom::PositionErrorCallback, nsIDOMGeoPositionErrorCallback>&&) Unexecuted instantiation: mozilla::dom::CallbackObjectHolder<mozilla::dom::NavigatorUserMediaSuccessCallback, nsIDOMGetUserMediaSuccessCallback>::CallbackObjectHolder(mozilla::dom::CallbackObjectHolder<mozilla::dom::NavigatorUserMediaSuccessCallback, nsIDOMGetUserMediaSuccessCallback>&&) Unexecuted instantiation: mozilla::dom::CallbackObjectHolder<mozilla::dom::NavigatorUserMediaErrorCallback, nsIDOMGetUserMediaErrorCallback>::CallbackObjectHolder(mozilla::dom::CallbackObjectHolder<mozilla::dom::NavigatorUserMediaErrorCallback, nsIDOMGetUserMediaErrorCallback>&&) |
427 | | |
428 | | CallbackObjectHolder(const CallbackObjectHolder& aOther) = delete; |
429 | | |
430 | | CallbackObjectHolder() |
431 | | : mPtrBits(0) |
432 | 0 | {} |
433 | | |
434 | | ~CallbackObjectHolder() |
435 | 0 | { |
436 | 0 | UnlinkSelf(); |
437 | 0 | } Unexecuted instantiation: mozilla::dom::CallbackObjectHolder<mozilla::dom::MessageListener, nsISupports>::~CallbackObjectHolder() Unexecuted instantiation: mozilla::dom::CallbackObjectHolder<mozilla::dom::NavigatorUserMediaSuccessCallback, nsIDOMGetUserMediaSuccessCallback>::~CallbackObjectHolder() Unexecuted instantiation: mozilla::dom::CallbackObjectHolder<mozilla::dom::NavigatorUserMediaErrorCallback, nsIDOMGetUserMediaErrorCallback>::~CallbackObjectHolder() Unexecuted instantiation: mozilla::dom::CallbackObjectHolder<mozilla::dom::EventListener, nsIDOMEventListener>::~CallbackObjectHolder() Unexecuted instantiation: mozilla::dom::CallbackObjectHolder<mozilla::dom::PositionCallback, nsIDOMGeoPositionCallback>::~CallbackObjectHolder() Unexecuted instantiation: mozilla::dom::CallbackObjectHolder<mozilla::dom::PositionErrorCallback, nsIDOMGeoPositionErrorCallback>::~CallbackObjectHolder() |
438 | | |
439 | | void operator=(WebIDLCallbackT* aCallback) |
440 | | { |
441 | | UnlinkSelf(); |
442 | | mPtrBits = reinterpret_cast<uintptr_t>(aCallback); |
443 | | NS_IF_ADDREF(aCallback); |
444 | | } |
445 | | |
446 | | void operator=(XPCOMCallbackT* aCallback) |
447 | | { |
448 | | UnlinkSelf(); |
449 | | mPtrBits = reinterpret_cast<uintptr_t>(aCallback) | XPCOMCallbackFlag; |
450 | | NS_IF_ADDREF(aCallback); |
451 | | } |
452 | | |
453 | | void operator=(CallbackObjectHolder&& aOther) |
454 | 0 | { |
455 | 0 | UnlinkSelf(); |
456 | 0 | mPtrBits = aOther.mPtrBits; |
457 | 0 | aOther.mPtrBits = 0; |
458 | 0 | } |
459 | | |
460 | | void operator=(const CallbackObjectHolder& aOther) = delete; |
461 | | |
462 | | void Reset() |
463 | 0 | { |
464 | 0 | UnlinkSelf(); |
465 | 0 | } Unexecuted instantiation: mozilla::dom::CallbackObjectHolder<mozilla::dom::NavigatorUserMediaErrorCallback, nsIDOMGetUserMediaErrorCallback>::Reset() Unexecuted instantiation: mozilla::dom::CallbackObjectHolder<mozilla::dom::NavigatorUserMediaSuccessCallback, nsIDOMGetUserMediaSuccessCallback>::Reset() |
466 | | |
467 | | nsISupports* GetISupports() const |
468 | 0 | { |
469 | 0 | return reinterpret_cast<nsISupports*>(mPtrBits & ~XPCOMCallbackFlag); |
470 | 0 | } Unexecuted instantiation: mozilla::dom::CallbackObjectHolder<mozilla::dom::EventListener, nsIDOMEventListener>::GetISupports() const Unexecuted instantiation: mozilla::dom::CallbackObjectHolder<mozilla::dom::MessageListener, nsISupports>::GetISupports() const Unexecuted instantiation: mozilla::dom::CallbackObjectHolder<mozilla::dom::NavigatorUserMediaSuccessCallback, nsIDOMGetUserMediaSuccessCallback>::GetISupports() const Unexecuted instantiation: mozilla::dom::CallbackObjectHolder<mozilla::dom::NavigatorUserMediaErrorCallback, nsIDOMGetUserMediaErrorCallback>::GetISupports() const Unexecuted instantiation: mozilla::dom::CallbackObjectHolder<mozilla::dom::PositionCallback, nsIDOMGeoPositionCallback>::GetISupports() const Unexecuted instantiation: mozilla::dom::CallbackObjectHolder<mozilla::dom::PositionErrorCallback, nsIDOMGeoPositionErrorCallback>::GetISupports() const |
471 | | |
472 | | already_AddRefed<nsISupports> Forget() |
473 | 0 | { |
474 | 0 | // This can be called from random threads. Make sure to not refcount things |
475 | 0 | // in here! |
476 | 0 | nsISupports* supp = GetISupports(); |
477 | 0 | mPtrBits = 0; |
478 | 0 | return dont_AddRef(supp); |
479 | 0 | } Unexecuted instantiation: mozilla::dom::CallbackObjectHolder<mozilla::dom::NavigatorUserMediaErrorCallback, nsIDOMGetUserMediaErrorCallback>::Forget() Unexecuted instantiation: mozilla::dom::CallbackObjectHolder<mozilla::dom::NavigatorUserMediaSuccessCallback, nsIDOMGetUserMediaSuccessCallback>::Forget() |
480 | | |
481 | | // Boolean conversion operator so people can use this in boolean tests |
482 | | explicit operator bool() const |
483 | 0 | { |
484 | 0 | return GetISupports(); |
485 | 0 | } Unexecuted instantiation: mozilla::dom::CallbackObjectHolder<mozilla::dom::EventListener, nsIDOMEventListener>::operator bool() const Unexecuted instantiation: mozilla::dom::CallbackObjectHolder<mozilla::dom::PositionCallback, nsIDOMGeoPositionCallback>::operator bool() const Unexecuted instantiation: mozilla::dom::CallbackObjectHolder<mozilla::dom::PositionErrorCallback, nsIDOMGeoPositionErrorCallback>::operator bool() const |
486 | | |
487 | | CallbackObjectHolder Clone() const |
488 | 0 | { |
489 | 0 | CallbackObjectHolder result; |
490 | 0 | result.mPtrBits = mPtrBits; |
491 | 0 | NS_IF_ADDREF(GetISupports()); |
492 | 0 | return result; |
493 | 0 | } |
494 | | |
495 | | // Even if HasWebIDLCallback returns true, GetWebIDLCallback() might still |
496 | | // return null. |
497 | | bool HasWebIDLCallback() const |
498 | 0 | { |
499 | 0 | return !(mPtrBits & XPCOMCallbackFlag); |
500 | 0 | } Unexecuted instantiation: mozilla::dom::CallbackObjectHolder<mozilla::dom::MessageListener, nsISupports>::HasWebIDLCallback() const Unexecuted instantiation: mozilla::dom::CallbackObjectHolder<mozilla::dom::EventListener, nsIDOMEventListener>::HasWebIDLCallback() const Unexecuted instantiation: mozilla::dom::CallbackObjectHolder<mozilla::dom::PositionErrorCallback, nsIDOMGeoPositionErrorCallback>::HasWebIDLCallback() const Unexecuted instantiation: mozilla::dom::CallbackObjectHolder<mozilla::dom::PositionCallback, nsIDOMGeoPositionCallback>::HasWebIDLCallback() const Unexecuted instantiation: mozilla::dom::CallbackObjectHolder<mozilla::dom::NavigatorUserMediaErrorCallback, nsIDOMGetUserMediaErrorCallback>::HasWebIDLCallback() const Unexecuted instantiation: mozilla::dom::CallbackObjectHolder<mozilla::dom::NavigatorUserMediaSuccessCallback, nsIDOMGetUserMediaSuccessCallback>::HasWebIDLCallback() const |
501 | | |
502 | | WebIDLCallbackT* GetWebIDLCallback() const |
503 | 0 | { |
504 | 0 | MOZ_ASSERT(HasWebIDLCallback()); |
505 | 0 | return reinterpret_cast<WebIDLCallbackT*>(mPtrBits); |
506 | 0 | } Unexecuted instantiation: mozilla::dom::CallbackObjectHolder<mozilla::dom::MessageListener, nsISupports>::GetWebIDLCallback() const Unexecuted instantiation: mozilla::dom::CallbackObjectHolder<mozilla::dom::EventListener, nsIDOMEventListener>::GetWebIDLCallback() const Unexecuted instantiation: mozilla::dom::CallbackObjectHolder<mozilla::dom::PositionErrorCallback, nsIDOMGeoPositionErrorCallback>::GetWebIDLCallback() const Unexecuted instantiation: mozilla::dom::CallbackObjectHolder<mozilla::dom::PositionCallback, nsIDOMGeoPositionCallback>::GetWebIDLCallback() const Unexecuted instantiation: mozilla::dom::CallbackObjectHolder<mozilla::dom::NavigatorUserMediaErrorCallback, nsIDOMGetUserMediaErrorCallback>::GetWebIDLCallback() const Unexecuted instantiation: mozilla::dom::CallbackObjectHolder<mozilla::dom::NavigatorUserMediaSuccessCallback, nsIDOMGetUserMediaSuccessCallback>::GetWebIDLCallback() const |
507 | | |
508 | | XPCOMCallbackT* GetXPCOMCallback() const |
509 | 0 | { |
510 | 0 | MOZ_ASSERT(!HasWebIDLCallback()); |
511 | 0 | return reinterpret_cast<XPCOMCallbackT*>(mPtrBits & ~XPCOMCallbackFlag); |
512 | 0 | } Unexecuted instantiation: mozilla::dom::CallbackObjectHolder<mozilla::dom::EventListener, nsIDOMEventListener>::GetXPCOMCallback() const Unexecuted instantiation: mozilla::dom::CallbackObjectHolder<mozilla::dom::MessageListener, nsISupports>::GetXPCOMCallback() const Unexecuted instantiation: mozilla::dom::CallbackObjectHolder<mozilla::dom::PositionErrorCallback, nsIDOMGeoPositionErrorCallback>::GetXPCOMCallback() const Unexecuted instantiation: mozilla::dom::CallbackObjectHolder<mozilla::dom::PositionCallback, nsIDOMGeoPositionCallback>::GetXPCOMCallback() const Unexecuted instantiation: mozilla::dom::CallbackObjectHolder<mozilla::dom::NavigatorUserMediaErrorCallback, nsIDOMGetUserMediaErrorCallback>::GetXPCOMCallback() const Unexecuted instantiation: mozilla::dom::CallbackObjectHolder<mozilla::dom::NavigatorUserMediaSuccessCallback, nsIDOMGetUserMediaSuccessCallback>::GetXPCOMCallback() const |
513 | | |
514 | | bool operator==(WebIDLCallbackT* aOtherCallback) const |
515 | 0 | { |
516 | 0 | if (!aOtherCallback) { |
517 | 0 | // If other is null, then we must be null to be equal. |
518 | 0 | return !GetISupports(); |
519 | 0 | } |
520 | 0 | |
521 | 0 | if (!HasWebIDLCallback() || !GetWebIDLCallback()) { |
522 | 0 | // If other is non-null, then we can't be equal if we have a |
523 | 0 | // non-WebIDL callback or a null callback. |
524 | 0 | return false; |
525 | 0 | } |
526 | 0 | |
527 | 0 | return *GetWebIDLCallback() == *aOtherCallback; |
528 | 0 | } |
529 | | |
530 | | bool operator==(XPCOMCallbackT* aOtherCallback) const |
531 | 0 | { |
532 | 0 | return (!aOtherCallback && !GetISupports()) || |
533 | 0 | (!HasWebIDLCallback() && GetXPCOMCallback() == aOtherCallback); |
534 | 0 | } |
535 | | |
536 | | bool operator==(const CallbackObjectHolder& aOtherCallback) const |
537 | 0 | { |
538 | 0 | if (aOtherCallback.HasWebIDLCallback()) { |
539 | 0 | return *this == aOtherCallback.GetWebIDLCallback(); |
540 | 0 | } |
541 | 0 | |
542 | 0 | return *this == aOtherCallback.GetXPCOMCallback(); |
543 | 0 | } |
544 | | |
545 | | // Try to return an XPCOMCallbackT version of this object. |
546 | | already_AddRefed<XPCOMCallbackT> ToXPCOMCallback() const |
547 | 0 | { |
548 | 0 | if (!HasWebIDLCallback()) { |
549 | 0 | RefPtr<XPCOMCallbackT> callback = GetXPCOMCallback(); |
550 | 0 | return callback.forget(); |
551 | 0 | } |
552 | 0 | |
553 | 0 | nsCOMPtr<nsISupports> supp = |
554 | 0 | CallbackObjectHolderBase::ToXPCOMCallback(GetWebIDLCallback(), |
555 | 0 | NS_GET_TEMPLATE_IID(XPCOMCallbackT)); |
556 | 0 | if (supp) { |
557 | 0 | // ToXPCOMCallback already did the right QI for us. |
558 | 0 | return supp.forget().downcast<XPCOMCallbackT>(); |
559 | 0 | } |
560 | 0 | return nullptr; |
561 | 0 | } |
562 | | |
563 | | // Try to return a WebIDLCallbackT version of this object. |
564 | | already_AddRefed<WebIDLCallbackT> ToWebIDLCallback() const |
565 | | { |
566 | | if (HasWebIDLCallback()) { |
567 | | RefPtr<WebIDLCallbackT> callback = GetWebIDLCallback(); |
568 | | return callback.forget(); |
569 | | } |
570 | | return nullptr; |
571 | | } |
572 | | |
573 | | private: |
574 | | static const uintptr_t XPCOMCallbackFlag = 1u; |
575 | | |
576 | | friend void |
577 | | ImplCycleCollectionUnlink<WebIDLCallbackT, |
578 | | XPCOMCallbackT>(CallbackObjectHolder& aField); |
579 | | |
580 | | void UnlinkSelf() |
581 | 0 | { |
582 | 0 | // NS_IF_RELEASE because we might have been unlinked before |
583 | 0 | nsISupports* ptr = GetISupports(); |
584 | 0 | NS_IF_RELEASE(ptr); |
585 | 0 | mPtrBits = 0; |
586 | 0 | } Unexecuted instantiation: mozilla::dom::CallbackObjectHolder<mozilla::dom::EventListener, nsIDOMEventListener>::UnlinkSelf() Unexecuted instantiation: mozilla::dom::CallbackObjectHolder<mozilla::dom::MessageListener, nsISupports>::UnlinkSelf() Unexecuted instantiation: mozilla::dom::CallbackObjectHolder<mozilla::dom::NavigatorUserMediaSuccessCallback, nsIDOMGetUserMediaSuccessCallback>::UnlinkSelf() Unexecuted instantiation: mozilla::dom::CallbackObjectHolder<mozilla::dom::NavigatorUserMediaErrorCallback, nsIDOMGetUserMediaErrorCallback>::UnlinkSelf() Unexecuted instantiation: mozilla::dom::CallbackObjectHolder<mozilla::dom::PositionCallback, nsIDOMGeoPositionCallback>::UnlinkSelf() Unexecuted instantiation: mozilla::dom::CallbackObjectHolder<mozilla::dom::PositionErrorCallback, nsIDOMGeoPositionErrorCallback>::UnlinkSelf() |
587 | | |
588 | | uintptr_t mPtrBits; |
589 | | }; |
590 | | |
591 | | NS_DEFINE_STATIC_IID_ACCESSOR(CallbackObject, DOM_CALLBACKOBJECT_IID) |
592 | | |
593 | | template<class T, class U> |
594 | | inline void |
595 | | ImplCycleCollectionTraverse(nsCycleCollectionTraversalCallback& aCallback, |
596 | | CallbackObjectHolder<T, U>& aField, |
597 | | const char* aName, |
598 | | uint32_t aFlags = 0) |
599 | 0 | { |
600 | 0 | if (aField) { |
601 | 0 | CycleCollectionNoteChild(aCallback, aField.GetISupports(), aName, aFlags); |
602 | 0 | } |
603 | 0 | } Unexecuted instantiation: void mozilla::dom::ImplCycleCollectionTraverse<mozilla::dom::PositionCallback, nsIDOMGeoPositionCallback>(nsCycleCollectionTraversalCallback&, mozilla::dom::CallbackObjectHolder<mozilla::dom::PositionCallback, nsIDOMGeoPositionCallback>&, char const*, unsigned int) Unexecuted instantiation: void mozilla::dom::ImplCycleCollectionTraverse<mozilla::dom::PositionErrorCallback, nsIDOMGeoPositionErrorCallback>(nsCycleCollectionTraversalCallback&, mozilla::dom::CallbackObjectHolder<mozilla::dom::PositionErrorCallback, nsIDOMGeoPositionErrorCallback>&, char const*, unsigned int) |
604 | | |
605 | | template<class T, class U> |
606 | | void |
607 | | ImplCycleCollectionUnlink(CallbackObjectHolder<T, U>& aField) |
608 | 0 | { |
609 | 0 | aField.UnlinkSelf(); |
610 | 0 | } Unexecuted instantiation: void mozilla::dom::ImplCycleCollectionUnlink<mozilla::dom::PositionCallback, nsIDOMGeoPositionCallback>(mozilla::dom::CallbackObjectHolder<mozilla::dom::PositionCallback, nsIDOMGeoPositionCallback>&) Unexecuted instantiation: void mozilla::dom::ImplCycleCollectionUnlink<mozilla::dom::PositionErrorCallback, nsIDOMGeoPositionErrorCallback>(mozilla::dom::CallbackObjectHolder<mozilla::dom::PositionErrorCallback, nsIDOMGeoPositionErrorCallback>&) |
611 | | |
612 | | // T is expected to be a RefPtr or OwningNonNull around a CallbackObject |
613 | | // subclass. This class is used in bindings to safely handle Fast* callbacks; |
614 | | // it ensures that the callback is traced, and that if something is holding onto |
615 | | // the callback when we're done with it HoldJSObjects is called. |
616 | | template<typename T> |
617 | | class MOZ_RAII RootedCallback : public JS::Rooted<T> |
618 | | { |
619 | | public: |
620 | | explicit RootedCallback(JSContext* cx) |
621 | | : JS::Rooted<T>(cx) |
622 | | , mCx(cx) |
623 | 0 | {} Unexecuted instantiation: mozilla::dom::RootedCallback<RefPtr<mozilla::dom::binding_detail::FastEventHandlerNonNull> >::RootedCallback(JSContext*) Unexecuted instantiation: mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastVoidFunction> >::RootedCallback(JSContext*) Unexecuted instantiation: mozilla::dom::RootedCallback<RefPtr<mozilla::dom::binding_detail::FastEventListener> >::RootedCallback(JSContext*) Unexecuted instantiation: mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastMessageListener> >::RootedCallback(JSContext*) Unexecuted instantiation: mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastMozDocumentCallback> >::RootedCallback(JSContext*) Unexecuted instantiation: mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastMutationCallback> >::RootedCallback(JSContext*) Unexecuted instantiation: mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastNavigatorUserMediaSuccessCallback> >::RootedCallback(JSContext*) Unexecuted instantiation: mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastNavigatorUserMediaErrorCallback> >::RootedCallback(JSContext*) Unexecuted instantiation: mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastMozIdleObserver> >::RootedCallback(JSContext*) Unexecuted instantiation: mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastMozGetUserMediaDevicesSuccessCallback> >::RootedCallback(JSContext*) Unexecuted instantiation: mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastL10nCallback> >::RootedCallback(JSContext*) Unexecuted instantiation: mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastPerformanceObserverCallback> >::RootedCallback(JSContext*) Unexecuted instantiation: mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastPlacesEventCallback> >::RootedCallback(JSContext*) Unexecuted instantiation: mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastUncaughtRejectionObserver> >::RootedCallback(JSContext*) Unexecuted instantiation: mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastmozPacketCallback> >::RootedCallback(JSContext*) Unexecuted instantiation: mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastRTCSessionDescriptionCallback> >::RootedCallback(JSContext*) Unexecuted instantiation: mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastRTCPeerConnectionErrorCallback> >::RootedCallback(JSContext*) Unexecuted instantiation: mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastRTCStatsCallback> >::RootedCallback(JSContext*) Unexecuted instantiation: mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastPeerConnectionLifecycleCallback> >::RootedCallback(JSContext*) Unexecuted instantiation: mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastIdleRequestCallback> >::RootedCallback(JSContext*) Unexecuted instantiation: mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastU2FRegisterCallback> >::RootedCallback(JSContext*) Unexecuted instantiation: mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastU2FSignCallback> >::RootedCallback(JSContext*) Unexecuted instantiation: mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastFrameRequestCallback> >::RootedCallback(JSContext*) Unexecuted instantiation: mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastWebGPULogCallback> >::RootedCallback(JSContext*) Unexecuted instantiation: mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastWebrtcGlobalStatisticsCallback> >::RootedCallback(JSContext*) Unexecuted instantiation: mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastWebrtcGlobalLoggingCallback> >::RootedCallback(JSContext*) Unexecuted instantiation: mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastPromiseDocumentFlushedCallback> >::RootedCallback(JSContext*) Unexecuted instantiation: mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastFunction> >::RootedCallback(JSContext*) Unexecuted instantiation: mozilla::dom::RootedCallback<RefPtr<mozilla::dom::binding_detail::FastOnErrorEventHandlerNonNull> >::RootedCallback(JSContext*) Unexecuted instantiation: mozilla::dom::RootedCallback<RefPtr<mozilla::dom::binding_detail::FastOnBeforeUnloadEventHandlerNonNull> >::RootedCallback(JSContext*) Unexecuted instantiation: mozilla::dom::RootedCallback<RefPtr<mozilla::dom::binding_detail::FastAnyCallback> >::RootedCallback(JSContext*) Unexecuted instantiation: mozilla::dom::RootedCallback<RefPtr<mozilla::dom::binding_detail::FastXPathNSResolver> >::RootedCallback(JSContext*) Unexecuted instantiation: mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastCustomElementCreationCallback> >::RootedCallback(JSContext*) Unexecuted instantiation: mozilla::dom::RootedCallback<RefPtr<mozilla::dom::binding_detail::FastFunctionStringCallback> >::RootedCallback(JSContext*) Unexecuted instantiation: mozilla::dom::RootedCallback<RefPtr<mozilla::dom::binding_detail::FastNodeFilter> >::RootedCallback(JSContext*) Unexecuted instantiation: mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastFileSystemEntriesCallback> >::RootedCallback(JSContext*) Unexecuted instantiation: mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastFileCallback> >::RootedCallback(JSContext*) Unexecuted instantiation: mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastFontFaceSetForEachCallback> >::RootedCallback(JSContext*) Unexecuted instantiation: mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastPositionCallback> >::RootedCallback(JSContext*) Unexecuted instantiation: mozilla::dom::RootedCallback<RefPtr<mozilla::dom::binding_detail::FastPositionErrorCallback> >::RootedCallback(JSContext*) Unexecuted instantiation: mozilla::dom::RootedCallback<RefPtr<mozilla::dom::binding_detail::FastPrintCallback> >::RootedCallback(JSContext*) Unexecuted instantiation: mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastBlobCallback> >::RootedCallback(JSContext*) Unexecuted instantiation: mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastBrowserElementNextPaintEventCallback> >::RootedCallback(JSContext*) Unexecuted instantiation: mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastIntersectionCallback> >::RootedCallback(JSContext*) |
624 | | |
625 | | // We need a way to make assignment from pointers (how we're normally used) |
626 | | // work. |
627 | | template<typename S> |
628 | | void operator=(S* arg) |
629 | 0 | { |
630 | 0 | this->get().operator=(arg); |
631 | 0 | } Unexecuted instantiation: void mozilla::dom::RootedCallback<RefPtr<mozilla::dom::binding_detail::FastEventHandlerNonNull> >::operator=<mozilla::dom::binding_detail::FastEventHandlerNonNull>(mozilla::dom::binding_detail::FastEventHandlerNonNull*) Unexecuted instantiation: void mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastVoidFunction> >::operator=<mozilla::dom::binding_detail::FastVoidFunction>(mozilla::dom::binding_detail::FastVoidFunction*) Unexecuted instantiation: void mozilla::dom::RootedCallback<RefPtr<mozilla::dom::binding_detail::FastEventListener> >::operator=<mozilla::dom::binding_detail::FastEventListener>(mozilla::dom::binding_detail::FastEventListener*) Unexecuted instantiation: void mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastMessageListener> >::operator=<mozilla::dom::binding_detail::FastMessageListener>(mozilla::dom::binding_detail::FastMessageListener*) Unexecuted instantiation: void mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastMozDocumentCallback> >::operator=<mozilla::dom::binding_detail::FastMozDocumentCallback>(mozilla::dom::binding_detail::FastMozDocumentCallback*) Unexecuted instantiation: void mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastMutationCallback> >::operator=<mozilla::dom::binding_detail::FastMutationCallback>(mozilla::dom::binding_detail::FastMutationCallback*) Unexecuted instantiation: void mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastNavigatorUserMediaSuccessCallback> >::operator=<mozilla::dom::binding_detail::FastNavigatorUserMediaSuccessCallback>(mozilla::dom::binding_detail::FastNavigatorUserMediaSuccessCallback*) Unexecuted instantiation: void mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastNavigatorUserMediaErrorCallback> >::operator=<mozilla::dom::binding_detail::FastNavigatorUserMediaErrorCallback>(mozilla::dom::binding_detail::FastNavigatorUserMediaErrorCallback*) Unexecuted instantiation: void mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastMozIdleObserver> >::operator=<mozilla::dom::binding_detail::FastMozIdleObserver>(mozilla::dom::binding_detail::FastMozIdleObserver*) Unexecuted instantiation: void mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastMozGetUserMediaDevicesSuccessCallback> >::operator=<mozilla::dom::binding_detail::FastMozGetUserMediaDevicesSuccessCallback>(mozilla::dom::binding_detail::FastMozGetUserMediaDevicesSuccessCallback*) Unexecuted instantiation: void mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastL10nCallback> >::operator=<mozilla::dom::binding_detail::FastL10nCallback>(mozilla::dom::binding_detail::FastL10nCallback*) Unexecuted instantiation: void mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastPerformanceObserverCallback> >::operator=<mozilla::dom::binding_detail::FastPerformanceObserverCallback>(mozilla::dom::binding_detail::FastPerformanceObserverCallback*) Unexecuted instantiation: void mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastPlacesEventCallback> >::operator=<mozilla::dom::binding_detail::FastPlacesEventCallback>(mozilla::dom::binding_detail::FastPlacesEventCallback*) Unexecuted instantiation: void mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastUncaughtRejectionObserver> >::operator=<mozilla::dom::binding_detail::FastUncaughtRejectionObserver>(mozilla::dom::binding_detail::FastUncaughtRejectionObserver*) Unexecuted instantiation: void mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastmozPacketCallback> >::operator=<mozilla::dom::binding_detail::FastmozPacketCallback>(mozilla::dom::binding_detail::FastmozPacketCallback*) Unexecuted instantiation: void mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastRTCSessionDescriptionCallback> >::operator=<mozilla::dom::binding_detail::FastRTCSessionDescriptionCallback>(mozilla::dom::binding_detail::FastRTCSessionDescriptionCallback*) Unexecuted instantiation: void mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastRTCPeerConnectionErrorCallback> >::operator=<mozilla::dom::binding_detail::FastRTCPeerConnectionErrorCallback>(mozilla::dom::binding_detail::FastRTCPeerConnectionErrorCallback*) Unexecuted instantiation: void mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastRTCStatsCallback> >::operator=<mozilla::dom::binding_detail::FastRTCStatsCallback>(mozilla::dom::binding_detail::FastRTCStatsCallback*) Unexecuted instantiation: void mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastPeerConnectionLifecycleCallback> >::operator=<mozilla::dom::binding_detail::FastPeerConnectionLifecycleCallback>(mozilla::dom::binding_detail::FastPeerConnectionLifecycleCallback*) Unexecuted instantiation: void mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastIdleRequestCallback> >::operator=<mozilla::dom::binding_detail::FastIdleRequestCallback>(mozilla::dom::binding_detail::FastIdleRequestCallback*) Unexecuted instantiation: void mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastU2FRegisterCallback> >::operator=<mozilla::dom::binding_detail::FastU2FRegisterCallback>(mozilla::dom::binding_detail::FastU2FRegisterCallback*) Unexecuted instantiation: void mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastU2FSignCallback> >::operator=<mozilla::dom::binding_detail::FastU2FSignCallback>(mozilla::dom::binding_detail::FastU2FSignCallback*) Unexecuted instantiation: void mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastFrameRequestCallback> >::operator=<mozilla::dom::binding_detail::FastFrameRequestCallback>(mozilla::dom::binding_detail::FastFrameRequestCallback*) Unexecuted instantiation: void mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastWebGPULogCallback> >::operator=<mozilla::dom::binding_detail::FastWebGPULogCallback>(mozilla::dom::binding_detail::FastWebGPULogCallback*) Unexecuted instantiation: void mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastWebrtcGlobalStatisticsCallback> >::operator=<mozilla::dom::binding_detail::FastWebrtcGlobalStatisticsCallback>(mozilla::dom::binding_detail::FastWebrtcGlobalStatisticsCallback*) Unexecuted instantiation: void mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastWebrtcGlobalLoggingCallback> >::operator=<mozilla::dom::binding_detail::FastWebrtcGlobalLoggingCallback>(mozilla::dom::binding_detail::FastWebrtcGlobalLoggingCallback*) Unexecuted instantiation: void mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastPromiseDocumentFlushedCallback> >::operator=<mozilla::dom::binding_detail::FastPromiseDocumentFlushedCallback>(mozilla::dom::binding_detail::FastPromiseDocumentFlushedCallback*) Unexecuted instantiation: void mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastFunction> >::operator=<mozilla::dom::binding_detail::FastFunction>(mozilla::dom::binding_detail::FastFunction*) Unexecuted instantiation: void mozilla::dom::RootedCallback<RefPtr<mozilla::dom::binding_detail::FastOnErrorEventHandlerNonNull> >::operator=<mozilla::dom::binding_detail::FastOnErrorEventHandlerNonNull>(mozilla::dom::binding_detail::FastOnErrorEventHandlerNonNull*) Unexecuted instantiation: void mozilla::dom::RootedCallback<RefPtr<mozilla::dom::binding_detail::FastOnBeforeUnloadEventHandlerNonNull> >::operator=<mozilla::dom::binding_detail::FastOnBeforeUnloadEventHandlerNonNull>(mozilla::dom::binding_detail::FastOnBeforeUnloadEventHandlerNonNull*) Unexecuted instantiation: void mozilla::dom::RootedCallback<RefPtr<mozilla::dom::binding_detail::FastAnyCallback> >::operator=<mozilla::dom::binding_detail::FastAnyCallback>(mozilla::dom::binding_detail::FastAnyCallback*) Unexecuted instantiation: void mozilla::dom::RootedCallback<RefPtr<mozilla::dom::binding_detail::FastXPathNSResolver> >::operator=<mozilla::dom::binding_detail::FastXPathNSResolver>(mozilla::dom::binding_detail::FastXPathNSResolver*) Unexecuted instantiation: void mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastCustomElementCreationCallback> >::operator=<mozilla::dom::binding_detail::FastCustomElementCreationCallback>(mozilla::dom::binding_detail::FastCustomElementCreationCallback*) Unexecuted instantiation: void mozilla::dom::RootedCallback<RefPtr<mozilla::dom::binding_detail::FastFunctionStringCallback> >::operator=<mozilla::dom::binding_detail::FastFunctionStringCallback>(mozilla::dom::binding_detail::FastFunctionStringCallback*) Unexecuted instantiation: void mozilla::dom::RootedCallback<RefPtr<mozilla::dom::binding_detail::FastNodeFilter> >::operator=<mozilla::dom::binding_detail::FastNodeFilter>(mozilla::dom::binding_detail::FastNodeFilter*) Unexecuted instantiation: void mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastFileSystemEntriesCallback> >::operator=<mozilla::dom::binding_detail::FastFileSystemEntriesCallback>(mozilla::dom::binding_detail::FastFileSystemEntriesCallback*) Unexecuted instantiation: void mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastFileCallback> >::operator=<mozilla::dom::binding_detail::FastFileCallback>(mozilla::dom::binding_detail::FastFileCallback*) Unexecuted instantiation: void mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastFontFaceSetForEachCallback> >::operator=<mozilla::dom::binding_detail::FastFontFaceSetForEachCallback>(mozilla::dom::binding_detail::FastFontFaceSetForEachCallback*) Unexecuted instantiation: void mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastPositionCallback> >::operator=<mozilla::dom::binding_detail::FastPositionCallback>(mozilla::dom::binding_detail::FastPositionCallback*) Unexecuted instantiation: void mozilla::dom::RootedCallback<RefPtr<mozilla::dom::binding_detail::FastPositionErrorCallback> >::operator=<mozilla::dom::binding_detail::FastPositionErrorCallback>(mozilla::dom::binding_detail::FastPositionErrorCallback*) Unexecuted instantiation: void mozilla::dom::RootedCallback<RefPtr<mozilla::dom::binding_detail::FastPrintCallback> >::operator=<mozilla::dom::binding_detail::FastPrintCallback>(mozilla::dom::binding_detail::FastPrintCallback*) Unexecuted instantiation: void mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastBlobCallback> >::operator=<mozilla::dom::binding_detail::FastBlobCallback>(mozilla::dom::binding_detail::FastBlobCallback*) Unexecuted instantiation: void mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastBrowserElementNextPaintEventCallback> >::operator=<mozilla::dom::binding_detail::FastBrowserElementNextPaintEventCallback>(mozilla::dom::binding_detail::FastBrowserElementNextPaintEventCallback*) Unexecuted instantiation: void mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastIntersectionCallback> >::operator=<mozilla::dom::binding_detail::FastIntersectionCallback>(mozilla::dom::binding_detail::FastIntersectionCallback*) |
632 | | |
633 | | // But nullptr can't use the above template, because it doesn't know which S |
634 | | // to select. So we need a special overload for nullptr. |
635 | | void operator=(decltype(nullptr) arg) |
636 | 0 | { |
637 | 0 | this->get().operator=(arg); |
638 | 0 | } Unexecuted instantiation: mozilla::dom::RootedCallback<RefPtr<mozilla::dom::binding_detail::FastEventHandlerNonNull> >::operator=(decltype(nullptr)) Unexecuted instantiation: mozilla::dom::RootedCallback<RefPtr<mozilla::dom::binding_detail::FastEventListener> >::operator=(decltype(nullptr)) Unexecuted instantiation: mozilla::dom::RootedCallback<RefPtr<mozilla::dom::binding_detail::FastOnErrorEventHandlerNonNull> >::operator=(decltype(nullptr)) Unexecuted instantiation: mozilla::dom::RootedCallback<RefPtr<mozilla::dom::binding_detail::FastOnBeforeUnloadEventHandlerNonNull> >::operator=(decltype(nullptr)) Unexecuted instantiation: mozilla::dom::RootedCallback<RefPtr<mozilla::dom::binding_detail::FastAnyCallback> >::operator=(decltype(nullptr)) Unexecuted instantiation: mozilla::dom::RootedCallback<RefPtr<mozilla::dom::binding_detail::FastXPathNSResolver> >::operator=(decltype(nullptr)) Unexecuted instantiation: mozilla::dom::RootedCallback<RefPtr<mozilla::dom::binding_detail::FastFunctionStringCallback> >::operator=(decltype(nullptr)) Unexecuted instantiation: mozilla::dom::RootedCallback<RefPtr<mozilla::dom::binding_detail::FastNodeFilter> >::operator=(decltype(nullptr)) Unexecuted instantiation: mozilla::dom::RootedCallback<RefPtr<mozilla::dom::binding_detail::FastPositionErrorCallback> >::operator=(decltype(nullptr)) Unexecuted instantiation: mozilla::dom::RootedCallback<RefPtr<mozilla::dom::binding_detail::FastPrintCallback> >::operator=(decltype(nullptr)) |
639 | | |
640 | | // Codegen relies on being able to do CallbackOrNull() and Callback() on us. |
641 | | JS::Handle<JSObject*> CallbackOrNull() const |
642 | | { |
643 | | return this->get()->CallbackOrNull(); |
644 | | } |
645 | | |
646 | | JSObject* Callback(JSContext* aCx) const |
647 | | { |
648 | | return this->get()->Callback(aCx); |
649 | | } |
650 | | |
651 | | ~RootedCallback() |
652 | 0 | { |
653 | 0 | // Ensure that our callback starts holding on to its own JS objects as |
654 | 0 | // needed. We really do need to check that things are initialized even when |
655 | 0 | // T is OwningNonNull, because we might be running before the OwningNonNull |
656 | 0 | // ever got assigned to! |
657 | 0 | if (IsInitialized(this->get())) { |
658 | 0 | this->get()->FinishSlowJSInitIfMoreThanOneOwner(mCx); |
659 | 0 | } |
660 | 0 | } Unexecuted instantiation: mozilla::dom::RootedCallback<RefPtr<mozilla::dom::binding_detail::FastEventHandlerNonNull> >::~RootedCallback() Unexecuted instantiation: mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastVoidFunction> >::~RootedCallback() Unexecuted instantiation: mozilla::dom::RootedCallback<RefPtr<mozilla::dom::binding_detail::FastEventListener> >::~RootedCallback() Unexecuted instantiation: mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastMessageListener> >::~RootedCallback() Unexecuted instantiation: mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastMozDocumentCallback> >::~RootedCallback() Unexecuted instantiation: mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastMutationCallback> >::~RootedCallback() Unexecuted instantiation: mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastNavigatorUserMediaErrorCallback> >::~RootedCallback() Unexecuted instantiation: mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastNavigatorUserMediaSuccessCallback> >::~RootedCallback() Unexecuted instantiation: mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastMozIdleObserver> >::~RootedCallback() Unexecuted instantiation: mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastMozGetUserMediaDevicesSuccessCallback> >::~RootedCallback() Unexecuted instantiation: mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastL10nCallback> >::~RootedCallback() Unexecuted instantiation: mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastPerformanceObserverCallback> >::~RootedCallback() Unexecuted instantiation: mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastPlacesEventCallback> >::~RootedCallback() Unexecuted instantiation: mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastUncaughtRejectionObserver> >::~RootedCallback() Unexecuted instantiation: mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastmozPacketCallback> >::~RootedCallback() Unexecuted instantiation: mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastRTCPeerConnectionErrorCallback> >::~RootedCallback() Unexecuted instantiation: mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastRTCSessionDescriptionCallback> >::~RootedCallback() Unexecuted instantiation: mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastRTCStatsCallback> >::~RootedCallback() Unexecuted instantiation: mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastPeerConnectionLifecycleCallback> >::~RootedCallback() Unexecuted instantiation: mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastIdleRequestCallback> >::~RootedCallback() Unexecuted instantiation: mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastU2FRegisterCallback> >::~RootedCallback() Unexecuted instantiation: mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastU2FSignCallback> >::~RootedCallback() Unexecuted instantiation: mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastFrameRequestCallback> >::~RootedCallback() Unexecuted instantiation: mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastWebGPULogCallback> >::~RootedCallback() Unexecuted instantiation: mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastWebrtcGlobalStatisticsCallback> >::~RootedCallback() Unexecuted instantiation: mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastWebrtcGlobalLoggingCallback> >::~RootedCallback() Unexecuted instantiation: mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastPromiseDocumentFlushedCallback> >::~RootedCallback() Unexecuted instantiation: mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastFunction> >::~RootedCallback() Unexecuted instantiation: mozilla::dom::RootedCallback<RefPtr<mozilla::dom::binding_detail::FastOnErrorEventHandlerNonNull> >::~RootedCallback() Unexecuted instantiation: mozilla::dom::RootedCallback<RefPtr<mozilla::dom::binding_detail::FastOnBeforeUnloadEventHandlerNonNull> >::~RootedCallback() Unexecuted instantiation: mozilla::dom::RootedCallback<RefPtr<mozilla::dom::binding_detail::FastAnyCallback> >::~RootedCallback() Unexecuted instantiation: mozilla::dom::RootedCallback<RefPtr<mozilla::dom::binding_detail::FastXPathNSResolver> >::~RootedCallback() Unexecuted instantiation: mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastCustomElementCreationCallback> >::~RootedCallback() Unexecuted instantiation: mozilla::dom::RootedCallback<RefPtr<mozilla::dom::binding_detail::FastFunctionStringCallback> >::~RootedCallback() Unexecuted instantiation: mozilla::dom::RootedCallback<RefPtr<mozilla::dom::binding_detail::FastNodeFilter> >::~RootedCallback() Unexecuted instantiation: mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastFileSystemEntriesCallback> >::~RootedCallback() Unexecuted instantiation: mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastFileCallback> >::~RootedCallback() Unexecuted instantiation: mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastFontFaceSetForEachCallback> >::~RootedCallback() Unexecuted instantiation: mozilla::dom::RootedCallback<RefPtr<mozilla::dom::binding_detail::FastPositionErrorCallback> >::~RootedCallback() Unexecuted instantiation: mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastPositionCallback> >::~RootedCallback() Unexecuted instantiation: mozilla::dom::RootedCallback<RefPtr<mozilla::dom::binding_detail::FastPrintCallback> >::~RootedCallback() Unexecuted instantiation: mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastBlobCallback> >::~RootedCallback() Unexecuted instantiation: mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastBrowserElementNextPaintEventCallback> >::~RootedCallback() Unexecuted instantiation: mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastIntersectionCallback> >::~RootedCallback() |
661 | | |
662 | | private: |
663 | | template<typename U> |
664 | | static bool IsInitialized(U& aArg); // Not implemented |
665 | | |
666 | | template<typename U> |
667 | | static bool IsInitialized(RefPtr<U>& aRefPtr) |
668 | 0 | { |
669 | 0 | return aRefPtr; |
670 | 0 | } Unexecuted instantiation: bool mozilla::dom::RootedCallback<RefPtr<mozilla::dom::binding_detail::FastEventHandlerNonNull> >::IsInitialized<mozilla::dom::binding_detail::FastEventHandlerNonNull>(RefPtr<mozilla::dom::binding_detail::FastEventHandlerNonNull>&) Unexecuted instantiation: bool mozilla::dom::RootedCallback<RefPtr<mozilla::dom::binding_detail::FastEventListener> >::IsInitialized<mozilla::dom::binding_detail::FastEventListener>(RefPtr<mozilla::dom::binding_detail::FastEventListener>&) Unexecuted instantiation: bool mozilla::dom::RootedCallback<RefPtr<mozilla::dom::binding_detail::FastOnErrorEventHandlerNonNull> >::IsInitialized<mozilla::dom::binding_detail::FastOnErrorEventHandlerNonNull>(RefPtr<mozilla::dom::binding_detail::FastOnErrorEventHandlerNonNull>&) Unexecuted instantiation: bool mozilla::dom::RootedCallback<RefPtr<mozilla::dom::binding_detail::FastOnBeforeUnloadEventHandlerNonNull> >::IsInitialized<mozilla::dom::binding_detail::FastOnBeforeUnloadEventHandlerNonNull>(RefPtr<mozilla::dom::binding_detail::FastOnBeforeUnloadEventHandlerNonNull>&) Unexecuted instantiation: bool mozilla::dom::RootedCallback<RefPtr<mozilla::dom::binding_detail::FastAnyCallback> >::IsInitialized<mozilla::dom::binding_detail::FastAnyCallback>(RefPtr<mozilla::dom::binding_detail::FastAnyCallback>&) Unexecuted instantiation: bool mozilla::dom::RootedCallback<RefPtr<mozilla::dom::binding_detail::FastXPathNSResolver> >::IsInitialized<mozilla::dom::binding_detail::FastXPathNSResolver>(RefPtr<mozilla::dom::binding_detail::FastXPathNSResolver>&) Unexecuted instantiation: bool mozilla::dom::RootedCallback<RefPtr<mozilla::dom::binding_detail::FastFunctionStringCallback> >::IsInitialized<mozilla::dom::binding_detail::FastFunctionStringCallback>(RefPtr<mozilla::dom::binding_detail::FastFunctionStringCallback>&) Unexecuted instantiation: bool mozilla::dom::RootedCallback<RefPtr<mozilla::dom::binding_detail::FastNodeFilter> >::IsInitialized<mozilla::dom::binding_detail::FastNodeFilter>(RefPtr<mozilla::dom::binding_detail::FastNodeFilter>&) Unexecuted instantiation: bool mozilla::dom::RootedCallback<RefPtr<mozilla::dom::binding_detail::FastPositionErrorCallback> >::IsInitialized<mozilla::dom::binding_detail::FastPositionErrorCallback>(RefPtr<mozilla::dom::binding_detail::FastPositionErrorCallback>&) Unexecuted instantiation: bool mozilla::dom::RootedCallback<RefPtr<mozilla::dom::binding_detail::FastPrintCallback> >::IsInitialized<mozilla::dom::binding_detail::FastPrintCallback>(RefPtr<mozilla::dom::binding_detail::FastPrintCallback>&) |
671 | | |
672 | | template<typename U> |
673 | | static bool IsInitialized(OwningNonNull<U>& aOwningNonNull) |
674 | 0 | { |
675 | 0 | return aOwningNonNull.isInitialized(); |
676 | 0 | } Unexecuted instantiation: bool mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastVoidFunction> >::IsInitialized<mozilla::dom::binding_detail::FastVoidFunction>(mozilla::OwningNonNull<mozilla::dom::binding_detail::FastVoidFunction>&) Unexecuted instantiation: bool mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastMessageListener> >::IsInitialized<mozilla::dom::binding_detail::FastMessageListener>(mozilla::OwningNonNull<mozilla::dom::binding_detail::FastMessageListener>&) Unexecuted instantiation: bool mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastMozDocumentCallback> >::IsInitialized<mozilla::dom::binding_detail::FastMozDocumentCallback>(mozilla::OwningNonNull<mozilla::dom::binding_detail::FastMozDocumentCallback>&) Unexecuted instantiation: bool mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastMutationCallback> >::IsInitialized<mozilla::dom::binding_detail::FastMutationCallback>(mozilla::OwningNonNull<mozilla::dom::binding_detail::FastMutationCallback>&) Unexecuted instantiation: bool mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastNavigatorUserMediaErrorCallback> >::IsInitialized<mozilla::dom::binding_detail::FastNavigatorUserMediaErrorCallback>(mozilla::OwningNonNull<mozilla::dom::binding_detail::FastNavigatorUserMediaErrorCallback>&) Unexecuted instantiation: bool mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastNavigatorUserMediaSuccessCallback> >::IsInitialized<mozilla::dom::binding_detail::FastNavigatorUserMediaSuccessCallback>(mozilla::OwningNonNull<mozilla::dom::binding_detail::FastNavigatorUserMediaSuccessCallback>&) Unexecuted instantiation: bool mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastMozIdleObserver> >::IsInitialized<mozilla::dom::binding_detail::FastMozIdleObserver>(mozilla::OwningNonNull<mozilla::dom::binding_detail::FastMozIdleObserver>&) Unexecuted instantiation: bool mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastMozGetUserMediaDevicesSuccessCallback> >::IsInitialized<mozilla::dom::binding_detail::FastMozGetUserMediaDevicesSuccessCallback>(mozilla::OwningNonNull<mozilla::dom::binding_detail::FastMozGetUserMediaDevicesSuccessCallback>&) Unexecuted instantiation: bool mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastL10nCallback> >::IsInitialized<mozilla::dom::binding_detail::FastL10nCallback>(mozilla::OwningNonNull<mozilla::dom::binding_detail::FastL10nCallback>&) Unexecuted instantiation: bool mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastPerformanceObserverCallback> >::IsInitialized<mozilla::dom::binding_detail::FastPerformanceObserverCallback>(mozilla::OwningNonNull<mozilla::dom::binding_detail::FastPerformanceObserverCallback>&) Unexecuted instantiation: bool mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastPlacesEventCallback> >::IsInitialized<mozilla::dom::binding_detail::FastPlacesEventCallback>(mozilla::OwningNonNull<mozilla::dom::binding_detail::FastPlacesEventCallback>&) Unexecuted instantiation: bool mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastUncaughtRejectionObserver> >::IsInitialized<mozilla::dom::binding_detail::FastUncaughtRejectionObserver>(mozilla::OwningNonNull<mozilla::dom::binding_detail::FastUncaughtRejectionObserver>&) Unexecuted instantiation: bool mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastmozPacketCallback> >::IsInitialized<mozilla::dom::binding_detail::FastmozPacketCallback>(mozilla::OwningNonNull<mozilla::dom::binding_detail::FastmozPacketCallback>&) Unexecuted instantiation: bool mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastRTCPeerConnectionErrorCallback> >::IsInitialized<mozilla::dom::binding_detail::FastRTCPeerConnectionErrorCallback>(mozilla::OwningNonNull<mozilla::dom::binding_detail::FastRTCPeerConnectionErrorCallback>&) Unexecuted instantiation: bool mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastRTCSessionDescriptionCallback> >::IsInitialized<mozilla::dom::binding_detail::FastRTCSessionDescriptionCallback>(mozilla::OwningNonNull<mozilla::dom::binding_detail::FastRTCSessionDescriptionCallback>&) Unexecuted instantiation: bool mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastRTCStatsCallback> >::IsInitialized<mozilla::dom::binding_detail::FastRTCStatsCallback>(mozilla::OwningNonNull<mozilla::dom::binding_detail::FastRTCStatsCallback>&) Unexecuted instantiation: bool mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastPeerConnectionLifecycleCallback> >::IsInitialized<mozilla::dom::binding_detail::FastPeerConnectionLifecycleCallback>(mozilla::OwningNonNull<mozilla::dom::binding_detail::FastPeerConnectionLifecycleCallback>&) Unexecuted instantiation: bool mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastIdleRequestCallback> >::IsInitialized<mozilla::dom::binding_detail::FastIdleRequestCallback>(mozilla::OwningNonNull<mozilla::dom::binding_detail::FastIdleRequestCallback>&) Unexecuted instantiation: bool mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastU2FRegisterCallback> >::IsInitialized<mozilla::dom::binding_detail::FastU2FRegisterCallback>(mozilla::OwningNonNull<mozilla::dom::binding_detail::FastU2FRegisterCallback>&) Unexecuted instantiation: bool mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastU2FSignCallback> >::IsInitialized<mozilla::dom::binding_detail::FastU2FSignCallback>(mozilla::OwningNonNull<mozilla::dom::binding_detail::FastU2FSignCallback>&) Unexecuted instantiation: bool mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastFrameRequestCallback> >::IsInitialized<mozilla::dom::binding_detail::FastFrameRequestCallback>(mozilla::OwningNonNull<mozilla::dom::binding_detail::FastFrameRequestCallback>&) Unexecuted instantiation: bool mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastWebGPULogCallback> >::IsInitialized<mozilla::dom::binding_detail::FastWebGPULogCallback>(mozilla::OwningNonNull<mozilla::dom::binding_detail::FastWebGPULogCallback>&) Unexecuted instantiation: bool mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastWebrtcGlobalStatisticsCallback> >::IsInitialized<mozilla::dom::binding_detail::FastWebrtcGlobalStatisticsCallback>(mozilla::OwningNonNull<mozilla::dom::binding_detail::FastWebrtcGlobalStatisticsCallback>&) Unexecuted instantiation: bool mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastWebrtcGlobalLoggingCallback> >::IsInitialized<mozilla::dom::binding_detail::FastWebrtcGlobalLoggingCallback>(mozilla::OwningNonNull<mozilla::dom::binding_detail::FastWebrtcGlobalLoggingCallback>&) Unexecuted instantiation: bool mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastPromiseDocumentFlushedCallback> >::IsInitialized<mozilla::dom::binding_detail::FastPromiseDocumentFlushedCallback>(mozilla::OwningNonNull<mozilla::dom::binding_detail::FastPromiseDocumentFlushedCallback>&) Unexecuted instantiation: bool mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastFunction> >::IsInitialized<mozilla::dom::binding_detail::FastFunction>(mozilla::OwningNonNull<mozilla::dom::binding_detail::FastFunction>&) Unexecuted instantiation: bool mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastCustomElementCreationCallback> >::IsInitialized<mozilla::dom::binding_detail::FastCustomElementCreationCallback>(mozilla::OwningNonNull<mozilla::dom::binding_detail::FastCustomElementCreationCallback>&) Unexecuted instantiation: bool mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastFileSystemEntriesCallback> >::IsInitialized<mozilla::dom::binding_detail::FastFileSystemEntriesCallback>(mozilla::OwningNonNull<mozilla::dom::binding_detail::FastFileSystemEntriesCallback>&) Unexecuted instantiation: bool mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastFileCallback> >::IsInitialized<mozilla::dom::binding_detail::FastFileCallback>(mozilla::OwningNonNull<mozilla::dom::binding_detail::FastFileCallback>&) Unexecuted instantiation: bool mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastFontFaceSetForEachCallback> >::IsInitialized<mozilla::dom::binding_detail::FastFontFaceSetForEachCallback>(mozilla::OwningNonNull<mozilla::dom::binding_detail::FastFontFaceSetForEachCallback>&) Unexecuted instantiation: bool mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastPositionCallback> >::IsInitialized<mozilla::dom::binding_detail::FastPositionCallback>(mozilla::OwningNonNull<mozilla::dom::binding_detail::FastPositionCallback>&) Unexecuted instantiation: bool mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastBlobCallback> >::IsInitialized<mozilla::dom::binding_detail::FastBlobCallback>(mozilla::OwningNonNull<mozilla::dom::binding_detail::FastBlobCallback>&) Unexecuted instantiation: bool mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastBrowserElementNextPaintEventCallback> >::IsInitialized<mozilla::dom::binding_detail::FastBrowserElementNextPaintEventCallback>(mozilla::OwningNonNull<mozilla::dom::binding_detail::FastBrowserElementNextPaintEventCallback>&) Unexecuted instantiation: bool mozilla::dom::RootedCallback<mozilla::OwningNonNull<mozilla::dom::binding_detail::FastIntersectionCallback> >::IsInitialized<mozilla::dom::binding_detail::FastIntersectionCallback>(mozilla::OwningNonNull<mozilla::dom::binding_detail::FastIntersectionCallback>&) |
677 | | |
678 | | JSContext* mCx; |
679 | | }; |
680 | | |
681 | | } // namespace dom |
682 | | } // namespace mozilla |
683 | | |
684 | | #endif // mozilla_dom_CallbackObject_h |