Coverage Report

Created: 2018-09-25 14:53

/work/obj-fuzz/dist/include/mozilla/dom/SpiderMonkeyInterface.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 file,
5
 * You can obtain one at http://mozilla.org/MPL/2.0/. */
6
7
#ifndef mozilla_dom_SpiderMonkeyInterface_h
8
#define mozilla_dom_SpiderMonkeyInterface_h
9
10
#include "jsapi.h"
11
#include "jsfriendapi.h"
12
#include "js/TracingAPI.h"
13
14
namespace mozilla {
15
namespace dom {
16
17
/*
18
 * Class that just handles the JSObject storage and tracing for spidermonkey
19
 * interfaces
20
 */
21
struct SpiderMonkeyInterfaceObjectStorage
22
{
23
protected:
24
  JSObject* mImplObj;
25
  JSObject* mWrappedObj;
26
27
  SpiderMonkeyInterfaceObjectStorage()
28
    : mImplObj(nullptr),
29
      mWrappedObj(nullptr)
30
0
  {
31
0
  }
32
33
  SpiderMonkeyInterfaceObjectStorage(SpiderMonkeyInterfaceObjectStorage&& aOther)
34
    : mImplObj(aOther.mImplObj),
35
      mWrappedObj(aOther.mWrappedObj)
36
0
  {
37
0
    aOther.mImplObj = nullptr;
38
0
    aOther.mWrappedObj = nullptr;
39
0
  }
40
41
public:
42
  inline void TraceSelf(JSTracer* trc)
43
0
  {
44
0
    JS::UnsafeTraceRoot(trc, &mImplObj, "SpiderMonkeyInterfaceObjectStorage.mImplObj");
45
0
    JS::UnsafeTraceRoot(trc, &mWrappedObj, "SpiderMonkeyInterfaceObjectStorage.mWrappedObj");
46
0
  }
47
48
  inline bool inited() const
49
0
  {
50
0
    return !!mImplObj;
51
0
  }
52
53
  inline bool WrapIntoNewCompartment(JSContext* cx)
54
0
  {
55
0
    return JS_WrapObject(cx,
56
0
      JS::MutableHandle<JSObject*>::fromMarkedLocation(&mWrappedObj));
57
0
  }
58
59
  inline JSObject *Obj() const
60
0
  {
61
0
    MOZ_ASSERT(inited());
62
0
    return mWrappedObj;
63
0
  }
64
65
private:
66
  SpiderMonkeyInterfaceObjectStorage(const SpiderMonkeyInterfaceObjectStorage&) = delete;
67
};
68
69
// A class for rooting an existing SpiderMonkey Interface struct
70
template<typename InterfaceType>
71
class MOZ_RAII SpiderMonkeyInterfaceRooter : private JS::CustomAutoRooter
72
{
73
public:
74
  template <typename CX>
75
  SpiderMonkeyInterfaceRooter(const CX& cx,
76
                              InterfaceType* aInterface MOZ_GUARD_OBJECT_NOTIFIER_PARAM)
77
    : JS::CustomAutoRooter(cx MOZ_GUARD_OBJECT_NOTIFIER_PARAM_TO_PARENT),
78
      mInterface(aInterface)
79
0
  {
80
0
  }
Unexecuted instantiation: mozilla::dom::SpiderMonkeyInterfaceRooter<mozilla::dom::TypedArray<unsigned char, &js::UnwrapArrayBuffer, &(JS_GetArrayBufferData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetArrayBufferLengthAndData, &(JS_NewArrayBuffer(JSContext*, unsigned int))> >::SpiderMonkeyInterfaceRooter<JSContext*>(JSContext* const&, mozilla::dom::TypedArray<unsigned char, &js::UnwrapArrayBuffer, &(JS_GetArrayBufferData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetArrayBufferLengthAndData, &(JS_NewArrayBuffer(JSContext*, unsigned int))>*)
Unexecuted instantiation: mozilla::dom::SpiderMonkeyInterfaceRooter<mozilla::dom::TypedArray<float, &js::UnwrapFloat32Array, &(JS_GetFloat32ArrayData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetFloat32ArrayLengthAndData, &(JS_NewFloat32Array(JSContext*, unsigned int))> >::SpiderMonkeyInterfaceRooter<JSContext*>(JSContext* const&, mozilla::dom::TypedArray<float, &js::UnwrapFloat32Array, &(JS_GetFloat32ArrayData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetFloat32ArrayLengthAndData, &(JS_NewFloat32Array(JSContext*, unsigned int))>*)
Unexecuted instantiation: mozilla::dom::SpiderMonkeyInterfaceRooter<mozilla::dom::TypedArray<unsigned char, &js::UnwrapUint8Array, &(JS_GetUint8ArrayData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetUint8ArrayLengthAndData, &(JS_NewUint8Array(JSContext*, unsigned int))> >::SpiderMonkeyInterfaceRooter<JSContext*>(JSContext* const&, mozilla::dom::TypedArray<unsigned char, &js::UnwrapUint8Array, &(JS_GetUint8ArrayData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetUint8ArrayLengthAndData, &(JS_NewUint8Array(JSContext*, unsigned int))>*)
Unexecuted instantiation: mozilla::dom::SpiderMonkeyInterfaceRooter<mozilla::dom::ArrayBufferView_base<&js::UnwrapArrayBufferView, &js::GetArrayBufferViewLengthAndData, &(JS_GetArrayBufferViewType(JSObject*))> >::SpiderMonkeyInterfaceRooter<JSContext*>(JSContext* const&, mozilla::dom::ArrayBufferView_base<&js::UnwrapArrayBufferView, &js::GetArrayBufferViewLengthAndData, &(JS_GetArrayBufferViewType(JSObject*))>*)
Unexecuted instantiation: mozilla::dom::SpiderMonkeyInterfaceRooter<mozilla::dom::ReadableStream>::SpiderMonkeyInterfaceRooter<JSContext*>(JSContext* const&, mozilla::dom::ReadableStream*)
Unexecuted instantiation: mozilla::dom::SpiderMonkeyInterfaceRooter<mozilla::dom::TypedArray<int, &js::UnwrapInt32Array, &(JS_GetInt32ArrayData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetInt32ArrayLengthAndData, &(JS_NewInt32Array(JSContext*, unsigned int))> >::SpiderMonkeyInterfaceRooter<JSContext*>(JSContext* const&, mozilla::dom::TypedArray<int, &js::UnwrapInt32Array, &(JS_GetInt32ArrayData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetInt32ArrayLengthAndData, &(JS_NewInt32Array(JSContext*, unsigned int))>*)
Unexecuted instantiation: mozilla::dom::SpiderMonkeyInterfaceRooter<mozilla::dom::TypedArray<unsigned int, &js::UnwrapUint32Array, &(JS_GetUint32ArrayData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetUint32ArrayLengthAndData, &(JS_NewUint32Array(JSContext*, unsigned int))> >::SpiderMonkeyInterfaceRooter<JSContext*>(JSContext* const&, mozilla::dom::TypedArray<unsigned int, &js::UnwrapUint32Array, &(JS_GetUint32ArrayData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetUint32ArrayLengthAndData, &(JS_NewUint32Array(JSContext*, unsigned int))>*)
Unexecuted instantiation: mozilla::dom::SpiderMonkeyInterfaceRooter<mozilla::dom::TypedArray<double, &js::UnwrapFloat64Array, &(JS_GetFloat64ArrayData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetFloat64ArrayLengthAndData, &(JS_NewFloat64Array(JSContext*, unsigned int))> >::SpiderMonkeyInterfaceRooter<JSContext*>(JSContext* const&, mozilla::dom::TypedArray<double, &js::UnwrapFloat64Array, &(JS_GetFloat64ArrayData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetFloat64ArrayLengthAndData, &(JS_NewFloat64Array(JSContext*, unsigned int))>*)
Unexecuted instantiation: mozilla::dom::SpiderMonkeyInterfaceRooter<mozilla::dom::TypedArray<unsigned char, &js::UnwrapUint8ClampedArray, &(JS_GetUint8ClampedArrayData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetUint8ClampedArrayLengthAndData, &(JS_NewUint8ClampedArray(JSContext*, unsigned int))> >::SpiderMonkeyInterfaceRooter<JSContext*>(JSContext* const&, mozilla::dom::TypedArray<unsigned char, &js::UnwrapUint8ClampedArray, &(JS_GetUint8ClampedArrayData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetUint8ClampedArrayLengthAndData, &(JS_NewUint8ClampedArray(JSContext*, unsigned int))>*)
Unexecuted instantiation: mozilla::dom::SpiderMonkeyInterfaceRooter<mozilla::dom::TypedArray<unsigned char, &js::UnwrapUint8ClampedArray, &(JS_GetUint8ClampedArrayData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetUint8ClampedArrayLengthAndData, &(JS_NewUint8ClampedArray(JSContext*, unsigned int))> >::SpiderMonkeyInterfaceRooter<JS::RootingContext*>(JS::RootingContext* const&, mozilla::dom::TypedArray<unsigned char, &js::UnwrapUint8ClampedArray, &(JS_GetUint8ClampedArrayData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetUint8ClampedArrayLengthAndData, &(JS_NewUint8ClampedArray(JSContext*, unsigned int))>*)
Unexecuted instantiation: mozilla::dom::SpiderMonkeyInterfaceRooter<mozilla::dom::TypedArray<unsigned char, &js::UnwrapArrayBuffer, &(JS_GetArrayBufferData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetArrayBufferLengthAndData, &(JS_NewArrayBuffer(JSContext*, unsigned int))> >::SpiderMonkeyInterfaceRooter<mozilla::AutoSafeJSContext>(mozilla::AutoSafeJSContext const&, mozilla::dom::TypedArray<unsigned char, &js::UnwrapArrayBuffer, &(JS_GetArrayBufferData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetArrayBufferLengthAndData, &(JS_NewArrayBuffer(JSContext*, unsigned int))>*)
81
82
  virtual void trace(JSTracer* trc) override
83
0
  {
84
0
    mInterface->TraceSelf(trc);
85
0
  }
Unexecuted instantiation: mozilla::dom::SpiderMonkeyInterfaceRooter<mozilla::dom::ArrayBufferView_base<&js::UnwrapArrayBufferView, &js::GetArrayBufferViewLengthAndData, &(JS_GetArrayBufferViewType(JSObject*))> >::trace(JSTracer*)
Unexecuted instantiation: mozilla::dom::SpiderMonkeyInterfaceRooter<mozilla::dom::TypedArray<unsigned char, &js::UnwrapArrayBuffer, &(JS_GetArrayBufferData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetArrayBufferLengthAndData, &(JS_NewArrayBuffer(JSContext*, unsigned int))> >::trace(JSTracer*)
Unexecuted instantiation: mozilla::dom::SpiderMonkeyInterfaceRooter<mozilla::dom::ReadableStream>::trace(JSTracer*)
Unexecuted instantiation: mozilla::dom::SpiderMonkeyInterfaceRooter<mozilla::dom::TypedArray<unsigned char, &js::UnwrapUint8Array, &(JS_GetUint8ArrayData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetUint8ArrayLengthAndData, &(JS_NewUint8Array(JSContext*, unsigned int))> >::trace(JSTracer*)
Unexecuted instantiation: mozilla::dom::SpiderMonkeyInterfaceRooter<mozilla::dom::TypedArray<unsigned int, &js::UnwrapUint32Array, &(JS_GetUint32ArrayData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetUint32ArrayLengthAndData, &(JS_NewUint32Array(JSContext*, unsigned int))> >::trace(JSTracer*)
Unexecuted instantiation: mozilla::dom::SpiderMonkeyInterfaceRooter<mozilla::dom::TypedArray<float, &js::UnwrapFloat32Array, &(JS_GetFloat32ArrayData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetFloat32ArrayLengthAndData, &(JS_NewFloat32Array(JSContext*, unsigned int))> >::trace(JSTracer*)
Unexecuted instantiation: mozilla::dom::SpiderMonkeyInterfaceRooter<mozilla::dom::TypedArray<int, &js::UnwrapInt32Array, &(JS_GetInt32ArrayData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetInt32ArrayLengthAndData, &(JS_NewInt32Array(JSContext*, unsigned int))> >::trace(JSTracer*)
Unexecuted instantiation: mozilla::dom::SpiderMonkeyInterfaceRooter<mozilla::dom::TypedArray<double, &js::UnwrapFloat64Array, &(JS_GetFloat64ArrayData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetFloat64ArrayLengthAndData, &(JS_NewFloat64Array(JSContext*, unsigned int))> >::trace(JSTracer*)
Unexecuted instantiation: mozilla::dom::SpiderMonkeyInterfaceRooter<mozilla::dom::TypedArray<unsigned char, &js::UnwrapUint8ClampedArray, &(JS_GetUint8ClampedArrayData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetUint8ClampedArrayLengthAndData, &(JS_NewUint8ClampedArray(JSContext*, unsigned int))> >::trace(JSTracer*)
86
87
private:
88
  SpiderMonkeyInterfaceObjectStorage* const mInterface;
89
};
90
91
// And a specialization for dealing with nullable SpiderMonkey interfaces
92
template<typename Inner> struct Nullable;
93
template<typename InterfaceType>
94
class MOZ_RAII SpiderMonkeyInterfaceRooter<Nullable<InterfaceType>> :
95
    private JS::CustomAutoRooter
96
{
97
public:
98
  template <typename CX>
99
  SpiderMonkeyInterfaceRooter(const CX& cx,
100
                              Nullable<InterfaceType>* aInterface MOZ_GUARD_OBJECT_NOTIFIER_PARAM)
101
    : JS::CustomAutoRooter(cx MOZ_GUARD_OBJECT_NOTIFIER_PARAM_TO_PARENT),
102
      mInterface(aInterface)
103
0
  {
104
0
  }
Unexecuted instantiation: mozilla::dom::SpiderMonkeyInterfaceRooter<mozilla::dom::Nullable<mozilla::dom::TypedArray<float, &js::UnwrapFloat32Array, &(JS_GetFloat32ArrayData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetFloat32ArrayLengthAndData, &(JS_NewFloat32Array(JSContext*, unsigned int))> > >::SpiderMonkeyInterfaceRooter<JSContext*>(JSContext* const&, mozilla::dom::Nullable<mozilla::dom::TypedArray<float, &js::UnwrapFloat32Array, &(JS_GetFloat32ArrayData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetFloat32ArrayLengthAndData, &(JS_NewFloat32Array(JSContext*, unsigned int))> >*)
Unexecuted instantiation: mozilla::dom::SpiderMonkeyInterfaceRooter<mozilla::dom::Nullable<mozilla::dom::TypedArray<unsigned char, &js::UnwrapArrayBuffer, &(JS_GetArrayBufferData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetArrayBufferLengthAndData, &(JS_NewArrayBuffer(JSContext*, unsigned int))> > >::SpiderMonkeyInterfaceRooter<JSContext*>(JSContext* const&, mozilla::dom::Nullable<mozilla::dom::TypedArray<unsigned char, &js::UnwrapArrayBuffer, &(JS_GetArrayBufferData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetArrayBufferLengthAndData, &(JS_NewArrayBuffer(JSContext*, unsigned int))> >*)
Unexecuted instantiation: mozilla::dom::SpiderMonkeyInterfaceRooter<mozilla::dom::Nullable<mozilla::dom::ArrayBufferView_base<&js::UnwrapArrayBufferView, &js::GetArrayBufferViewLengthAndData, &(JS_GetArrayBufferViewType(JSObject*))> > >::SpiderMonkeyInterfaceRooter<JSContext*>(JSContext* const&, mozilla::dom::Nullable<mozilla::dom::ArrayBufferView_base<&js::UnwrapArrayBufferView, &js::GetArrayBufferViewLengthAndData, &(JS_GetArrayBufferViewType(JSObject*))> >*)
105
106
  virtual void trace(JSTracer* trc) override
107
0
  {
108
0
    if (!mInterface->IsNull()) {
109
0
      mInterface->Value().TraceSelf(trc);
110
0
    }
111
0
  }
Unexecuted instantiation: mozilla::dom::SpiderMonkeyInterfaceRooter<mozilla::dom::Nullable<mozilla::dom::TypedArray<float, &js::UnwrapFloat32Array, &(JS_GetFloat32ArrayData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetFloat32ArrayLengthAndData, &(JS_NewFloat32Array(JSContext*, unsigned int))> > >::trace(JSTracer*)
Unexecuted instantiation: mozilla::dom::SpiderMonkeyInterfaceRooter<mozilla::dom::Nullable<mozilla::dom::TypedArray<unsigned char, &js::UnwrapArrayBuffer, &(JS_GetArrayBufferData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetArrayBufferLengthAndData, &(JS_NewArrayBuffer(JSContext*, unsigned int))> > >::trace(JSTracer*)
Unexecuted instantiation: mozilla::dom::SpiderMonkeyInterfaceRooter<mozilla::dom::Nullable<mozilla::dom::ArrayBufferView_base<&js::UnwrapArrayBufferView, &js::GetArrayBufferViewLengthAndData, &(JS_GetArrayBufferViewType(JSObject*))> > >::trace(JSTracer*)
112
113
private:
114
  Nullable<InterfaceType>* const mInterface;
115
};
116
117
// Class for easily setting up a rooted SpiderMonkey interface object on the
118
// stack
119
template<typename InterfaceType>
120
class MOZ_RAII RootedSpiderMonkeyInterface final : public InterfaceType,
121
                                                   private SpiderMonkeyInterfaceRooter<InterfaceType>
122
{
123
public:
124
  template <typename CX>
125
  explicit RootedSpiderMonkeyInterface(const CX& cx MOZ_GUARD_OBJECT_NOTIFIER_PARAM)
126
    : InterfaceType(),
127
      SpiderMonkeyInterfaceRooter<InterfaceType>(cx, this
128
                                                 MOZ_GUARD_OBJECT_NOTIFIER_PARAM_TO_PARENT)
129
0
  {
130
0
  }
Unexecuted instantiation: mozilla::dom::RootedSpiderMonkeyInterface<mozilla::dom::TypedArray<unsigned char, &js::UnwrapArrayBuffer, &(JS_GetArrayBufferData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetArrayBufferLengthAndData, &(JS_NewArrayBuffer(JSContext*, unsigned int))> >::RootedSpiderMonkeyInterface<JSContext*>(JSContext* const&)
Unexecuted instantiation: mozilla::dom::RootedSpiderMonkeyInterface<mozilla::dom::TypedArray<float, &js::UnwrapFloat32Array, &(JS_GetFloat32ArrayData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetFloat32ArrayLengthAndData, &(JS_NewFloat32Array(JSContext*, unsigned int))> >::RootedSpiderMonkeyInterface<JSContext*>(JSContext* const&)
Unexecuted instantiation: mozilla::dom::RootedSpiderMonkeyInterface<mozilla::dom::TypedArray<unsigned char, &js::UnwrapUint8Array, &(JS_GetUint8ArrayData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetUint8ArrayLengthAndData, &(JS_NewUint8Array(JSContext*, unsigned int))> >::RootedSpiderMonkeyInterface<JSContext*>(JSContext* const&)
Unexecuted instantiation: mozilla::dom::RootedSpiderMonkeyInterface<mozilla::dom::ArrayBufferView_base<&js::UnwrapArrayBufferView, &js::GetArrayBufferViewLengthAndData, &(JS_GetArrayBufferViewType(JSObject*))> >::RootedSpiderMonkeyInterface<JSContext*>(JSContext* const&)
Unexecuted instantiation: mozilla::dom::RootedSpiderMonkeyInterface<mozilla::dom::ReadableStream>::RootedSpiderMonkeyInterface<JSContext*>(JSContext* const&)
Unexecuted instantiation: mozilla::dom::RootedSpiderMonkeyInterface<mozilla::dom::Nullable<mozilla::dom::TypedArray<float, &js::UnwrapFloat32Array, &(JS_GetFloat32ArrayData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetFloat32ArrayLengthAndData, &(JS_NewFloat32Array(JSContext*, unsigned int))> > >::RootedSpiderMonkeyInterface<JSContext*>(JSContext* const&)
Unexecuted instantiation: mozilla::dom::RootedSpiderMonkeyInterface<mozilla::dom::Nullable<mozilla::dom::TypedArray<unsigned char, &js::UnwrapArrayBuffer, &(JS_GetArrayBufferData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetArrayBufferLengthAndData, &(JS_NewArrayBuffer(JSContext*, unsigned int))> > >::RootedSpiderMonkeyInterface<JSContext*>(JSContext* const&)
Unexecuted instantiation: mozilla::dom::RootedSpiderMonkeyInterface<mozilla::dom::Nullable<mozilla::dom::ArrayBufferView_base<&js::UnwrapArrayBufferView, &js::GetArrayBufferViewLengthAndData, &(JS_GetArrayBufferViewType(JSObject*))> > >::RootedSpiderMonkeyInterface<JSContext*>(JSContext* const&)
Unexecuted instantiation: mozilla::dom::RootedSpiderMonkeyInterface<mozilla::dom::TypedArray<int, &js::UnwrapInt32Array, &(JS_GetInt32ArrayData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetInt32ArrayLengthAndData, &(JS_NewInt32Array(JSContext*, unsigned int))> >::RootedSpiderMonkeyInterface<JSContext*>(JSContext* const&)
Unexecuted instantiation: mozilla::dom::RootedSpiderMonkeyInterface<mozilla::dom::TypedArray<unsigned int, &js::UnwrapUint32Array, &(JS_GetUint32ArrayData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetUint32ArrayLengthAndData, &(JS_NewUint32Array(JSContext*, unsigned int))> >::RootedSpiderMonkeyInterface<JSContext*>(JSContext* const&)
Unexecuted instantiation: mozilla::dom::RootedSpiderMonkeyInterface<mozilla::dom::TypedArray<double, &js::UnwrapFloat64Array, &(JS_GetFloat64ArrayData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetFloat64ArrayLengthAndData, &(JS_NewFloat64Array(JSContext*, unsigned int))> >::RootedSpiderMonkeyInterface<JSContext*>(JSContext* const&)
Unexecuted instantiation: mozilla::dom::RootedSpiderMonkeyInterface<mozilla::dom::TypedArray<unsigned char, &js::UnwrapUint8ClampedArray, &(JS_GetUint8ClampedArrayData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetUint8ClampedArrayLengthAndData, &(JS_NewUint8ClampedArray(JSContext*, unsigned int))> >::RootedSpiderMonkeyInterface<JSContext*>(JSContext* const&)
Unexecuted instantiation: mozilla::dom::RootedSpiderMonkeyInterface<mozilla::dom::TypedArray<unsigned char, &js::UnwrapUint8ClampedArray, &(JS_GetUint8ClampedArrayData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetUint8ClampedArrayLengthAndData, &(JS_NewUint8ClampedArray(JSContext*, unsigned int))> >::RootedSpiderMonkeyInterface<JS::RootingContext*>(JS::RootingContext* const&)
Unexecuted instantiation: mozilla::dom::RootedSpiderMonkeyInterface<mozilla::dom::TypedArray<unsigned char, &js::UnwrapArrayBuffer, &(JS_GetArrayBufferData(JSObject*, bool*, JS::AutoRequireNoGC const&)), &js::GetArrayBufferLengthAndData, &(JS_NewArrayBuffer(JSContext*, unsigned int))> >::RootedSpiderMonkeyInterface<mozilla::AutoSafeJSContext>(mozilla::AutoSafeJSContext const&)
131
132
  template <typename CX>
133
  RootedSpiderMonkeyInterface(const CX& cx, JSObject* obj MOZ_GUARD_OBJECT_NOTIFIER_PARAM)
134
    : InterfaceType(obj),
135
      SpiderMonkeyInterfaceRooter<InterfaceType>(cx, this
136
                                                 MOZ_GUARD_OBJECT_NOTIFIER_PARAM_TO_PARENT)
137
  {
138
  }
139
};
140
141
} // namespace dom
142
} // namespace mozilla
143
144
#endif /* mozilla_dom_SpiderMonkeyInterface_h */