зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1117172 part 2. Change the non-wrappercached WrapObject methods to allow passing in aGivenProto. r=peterv
The only manual changes here are to BindingUtils.h, Codegen.py, and StructuredClone.cpp. The rest of this diff was generated by running the following commands: find . -name "*.h" -o -name "*.cpp" | xargs perl -pi -e 'BEGIN { $/ = undef } s/WrapObject\((JSContext *\* *(?:aCx|cx)),(\s*)(JS::MutableHandle<JSObject\*> aReflector)/WrapObject(\1,\2JS::Handle<JSObject*> aGivenProto,\2\3/g' find . -name "*.h" -o -name "*.cpp" | xargs perl -pi -e 'BEGIN { $/ = undef } s/(Binding(?:_workers)?::Wrap\((?:aCx|cx)), this, aReflector/\1, this, aGivenProto, aReflector/'
This commit is contained in:
Родитель
41e04c02b0
Коммит
d0ebde3bb7
|
@ -131,9 +131,10 @@ AnonymousContent::GetElementById(const nsAString& aElementId)
|
|||
|
||||
bool
|
||||
AnonymousContent::WrapObject(JSContext* aCx,
|
||||
JS::Handle<JSObject*> aGivenProto,
|
||||
JS::MutableHandle<JSObject*> aReflector)
|
||||
{
|
||||
return AnonymousContentBinding::Wrap(aCx, this, aReflector);
|
||||
return AnonymousContentBinding::Wrap(aCx, this, aGivenProto, aReflector);
|
||||
}
|
||||
|
||||
} // dom namespace
|
||||
|
|
|
@ -27,7 +27,7 @@ public:
|
|||
explicit AnonymousContent(Element* aContentNode);
|
||||
nsCOMPtr<Element> GetContentNode();
|
||||
void SetContentNode(Element* aContentNode);
|
||||
bool WrapObject(JSContext* aCx, JS::MutableHandle<JSObject*> aReflector);
|
||||
bool WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto, JS::MutableHandle<JSObject*> aReflector);
|
||||
|
||||
// WebIDL methods
|
||||
void SetTextContentForElement(const nsAString& aElementId,
|
||||
|
|
|
@ -289,9 +289,9 @@ void NodeIterator::ContentRemoved(nsIDocument *aDocument,
|
|||
}
|
||||
|
||||
bool
|
||||
NodeIterator::WrapObject(JSContext *cx, JS::MutableHandle<JSObject*> aReflector)
|
||||
NodeIterator::WrapObject(JSContext *cx, JS::Handle<JSObject*> aGivenProto, JS::MutableHandle<JSObject*> aReflector)
|
||||
{
|
||||
return NodeIteratorBinding::Wrap(cx, this, aReflector);
|
||||
return NodeIteratorBinding::Wrap(cx, this, aGivenProto, aReflector);
|
||||
}
|
||||
|
||||
} // namespace dom
|
||||
|
|
|
@ -69,7 +69,7 @@ public:
|
|||
}
|
||||
// The XPCOM Detach() is fine for our purposes
|
||||
|
||||
bool WrapObject(JSContext *cx, JS::MutableHandle<JSObject*> aReflector);
|
||||
bool WrapObject(JSContext *cx, JS::Handle<JSObject*> aGivenProto, JS::MutableHandle<JSObject*> aReflector);
|
||||
|
||||
private:
|
||||
virtual ~NodeIterator();
|
||||
|
|
|
@ -451,9 +451,9 @@ TreeWalker::NextSiblingInternal(bool aReversed, ErrorResult& aResult)
|
|||
}
|
||||
|
||||
bool
|
||||
TreeWalker::WrapObject(JSContext *aCx, JS::MutableHandle<JSObject*> aReflector)
|
||||
TreeWalker::WrapObject(JSContext *aCx, JS::Handle<JSObject*> aGivenProto, JS::MutableHandle<JSObject*> aReflector)
|
||||
{
|
||||
return TreeWalkerBinding::Wrap(aCx, this, aReflector);
|
||||
return TreeWalkerBinding::Wrap(aCx, this, aGivenProto, aReflector);
|
||||
}
|
||||
|
||||
} // namespace dom
|
||||
|
|
|
@ -65,7 +65,7 @@ public:
|
|||
already_AddRefed<nsINode> PreviousNode(ErrorResult& aResult);
|
||||
already_AddRefed<nsINode> NextNode(ErrorResult& aResult);
|
||||
|
||||
bool WrapObject(JSContext *aCx, JS::MutableHandle<JSObject*> aReflector);
|
||||
bool WrapObject(JSContext *aCx, JS::Handle<JSObject*> aGivenProto, JS::MutableHandle<JSObject*> aReflector);
|
||||
|
||||
private:
|
||||
nsCOMPtr<nsINode> mCurrentNode;
|
||||
|
|
|
@ -47,9 +47,9 @@ URL::URL(nsIURI* aURI)
|
|||
}
|
||||
|
||||
bool
|
||||
URL::WrapObject(JSContext* aCx, JS::MutableHandle<JSObject*> aReflector)
|
||||
URL::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto, JS::MutableHandle<JSObject*> aReflector)
|
||||
{
|
||||
return URLBinding::Wrap(aCx, this, aReflector);
|
||||
return URLBinding::Wrap(aCx, this, aGivenProto, aReflector);
|
||||
}
|
||||
|
||||
/* static */ already_AddRefed<URL>
|
||||
|
|
|
@ -44,7 +44,7 @@ public:
|
|||
|
||||
// WebIDL methods
|
||||
bool
|
||||
WrapObject(JSContext* aCx, JS::MutableHandle<JSObject*> aReflector);
|
||||
WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto, JS::MutableHandle<JSObject*> aReflector);
|
||||
|
||||
static already_AddRefed<URL>
|
||||
Constructor(const GlobalObject& aGlobal, const nsAString& aUrl,
|
||||
|
|
|
@ -1038,7 +1038,7 @@ WrapNewBindingNonWrapperCachedObject(JSContext* cx,
|
|||
}
|
||||
|
||||
MOZ_ASSERT(js::IsObjectInContextCompartment(scope, cx));
|
||||
if (!value->WrapObject(cx, &obj)) {
|
||||
if (!value->WrapObject(cx, JS::NullPtr(), &obj)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -1084,7 +1084,7 @@ WrapNewBindingNonWrapperCachedObject(JSContext* cx,
|
|||
}
|
||||
|
||||
MOZ_ASSERT(js::IsObjectInContextCompartment(scope, cx));
|
||||
if (!value->WrapObject(cx, &obj)) {
|
||||
if (!value->WrapObject(cx, JS::NullPtr(), &obj)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
@ -3351,8 +3351,8 @@ class CGWrapNonWrapperCacheMethod(CGAbstractMethod):
|
|||
assert descriptor.interface.hasInterfacePrototypeObject()
|
||||
args = [Argument('JSContext*', 'aCx'),
|
||||
Argument(descriptor.nativeType + '*', 'aObject'),
|
||||
Argument('JS::MutableHandle<JSObject*>', 'aReflector'),
|
||||
Argument('JS::Handle<JSObject*>', 'aGivenProto', 'JS::NullPtr()')]
|
||||
Argument('JS::Handle<JSObject*>', 'aGivenProto'),
|
||||
Argument('JS::MutableHandle<JSObject*>', 'aReflector')]
|
||||
CGAbstractMethod.__init__(self, descriptor, 'Wrap', 'bool', args)
|
||||
self.properties = properties
|
||||
|
||||
|
|
|
@ -32,7 +32,7 @@ ReadStructuredCloneImageData(JSContext* aCx, JSStructuredCloneReader* aReader)
|
|||
nsRefPtr<ImageData> imageData = new ImageData(width, height,
|
||||
dataArray.toObject());
|
||||
// Wrap it in a JS::Value.
|
||||
if (!imageData->WrapObject(aCx, &result)) {
|
||||
if (!imageData->WrapObject(aCx, JS::NullPtr(), &result)) {
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -90,7 +90,7 @@ class TestNonWrapperCacheInterface : public nsISupports
|
|||
public:
|
||||
NS_DECL_ISUPPORTS
|
||||
|
||||
bool WrapObject(JSContext* aCx, JS::MutableHandle<JSObject*> aReflector);
|
||||
bool WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto, JS::MutableHandle<JSObject*> aReflector);
|
||||
};
|
||||
|
||||
class OnlyForUseInConstructor : public nsISupports,
|
||||
|
|
|
@ -109,9 +109,9 @@ ImageData::DropData()
|
|||
}
|
||||
|
||||
bool
|
||||
ImageData::WrapObject(JSContext* aCx, JS::MutableHandle<JSObject*> aReflector)
|
||||
ImageData::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto, JS::MutableHandle<JSObject*> aReflector)
|
||||
{
|
||||
return ImageDataBinding::Wrap(aCx, this, aReflector);
|
||||
return ImageDataBinding::Wrap(aCx, this, aGivenProto, aReflector);
|
||||
}
|
||||
|
||||
} // namespace dom
|
||||
|
|
|
@ -73,7 +73,7 @@ public:
|
|||
return mData;
|
||||
}
|
||||
|
||||
bool WrapObject(JSContext* aCx, JS::MutableHandle<JSObject*> aReflector);
|
||||
bool WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto, JS::MutableHandle<JSObject*> aReflector);
|
||||
|
||||
private:
|
||||
void HoldData();
|
||||
|
|
|
@ -30,9 +30,9 @@ public:
|
|||
return width;
|
||||
}
|
||||
|
||||
bool WrapObject(JSContext* aCx, JS::MutableHandle<JSObject*> aReflector)
|
||||
bool WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto, JS::MutableHandle<JSObject*> aReflector)
|
||||
{
|
||||
return TextMetricsBinding::Wrap(aCx, this, aReflector);
|
||||
return TextMetricsBinding::Wrap(aCx, this, aGivenProto, aReflector);
|
||||
}
|
||||
|
||||
private:
|
||||
|
|
|
@ -12,9 +12,10 @@ namespace mozilla {
|
|||
|
||||
bool
|
||||
WebGLShaderPrecisionFormat::WrapObject(JSContext* aCx,
|
||||
JS::Handle<JSObject*> aGivenProto,
|
||||
JS::MutableHandle<JSObject*> aReflector)
|
||||
{
|
||||
return dom::WebGLShaderPrecisionFormatBinding::Wrap(aCx, this, aReflector);
|
||||
return dom::WebGLShaderPrecisionFormatBinding::Wrap(aCx, this, aGivenProto, aReflector);
|
||||
}
|
||||
|
||||
} // namespace mozilla
|
||||
|
|
|
@ -24,7 +24,7 @@ public:
|
|||
, mPrecision(precision)
|
||||
{ }
|
||||
|
||||
bool WrapObject(JSContext* aCx, JS::MutableHandle<JSObject*> aReflector);
|
||||
bool WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto, JS::MutableHandle<JSObject*> aReflector);
|
||||
|
||||
// WebIDL WebGLShaderPrecisionFormat API
|
||||
GLint RangeMin() const {
|
||||
|
|
|
@ -31,9 +31,10 @@ DataStoreCursor::Constructor(GlobalObject& aGlobal, ErrorResult& aRv)
|
|||
|
||||
bool
|
||||
DataStoreCursor::WrapObject(JSContext* aCx,
|
||||
JS::Handle<JSObject*> aGivenProto,
|
||||
JS::MutableHandle<JSObject*> aReflector)
|
||||
{
|
||||
return DataStoreCursorBinding::Wrap(aCx, this, aReflector);
|
||||
return DataStoreCursorBinding::Wrap(aCx, this, aGivenProto, aReflector);
|
||||
}
|
||||
|
||||
already_AddRefed<DataStore>
|
||||
|
|
|
@ -33,7 +33,7 @@ public:
|
|||
static already_AddRefed<DataStoreCursor> Constructor(GlobalObject& aGlobal,
|
||||
ErrorResult& aRv);
|
||||
|
||||
bool WrapObject(JSContext *aCx, JS::MutableHandle<JSObject*> aReflector);
|
||||
bool WrapObject(JSContext *aCx, JS::Handle<JSObject*> aGivenProto, JS::MutableHandle<JSObject*> aReflector);
|
||||
|
||||
// WebIDL (public APIs)
|
||||
|
||||
|
|
|
@ -49,9 +49,9 @@ public:
|
|||
MOZ_COUNT_DTOR(TextDecoder);
|
||||
}
|
||||
|
||||
bool WrapObject(JSContext* aCx, JS::MutableHandle<JSObject*> aReflector)
|
||||
bool WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto, JS::MutableHandle<JSObject*> aReflector)
|
||||
{
|
||||
return TextDecoderBinding::Wrap(aCx, this, aReflector);
|
||||
return TextDecoderBinding::Wrap(aCx, this, aGivenProto, aReflector);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -42,9 +42,9 @@ public:
|
|||
~TextEncoder()
|
||||
{}
|
||||
|
||||
bool WrapObject(JSContext* aCx, JS::MutableHandle<JSObject*> aReflector)
|
||||
bool WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto, JS::MutableHandle<JSObject*> aReflector)
|
||||
{
|
||||
return TextEncoderBinding::Wrap(aCx, this, aReflector);
|
||||
return TextEncoderBinding::Wrap(aCx, this, aGivenProto, aReflector);
|
||||
}
|
||||
|
||||
protected:
|
||||
|
|
|
@ -167,9 +167,9 @@ TimeRanges::Find(double aTime, double aTolerance /* = 0 */)
|
|||
}
|
||||
|
||||
bool
|
||||
TimeRanges::WrapObject(JSContext* aCx, JS::MutableHandle<JSObject*> aReflector)
|
||||
TimeRanges::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto, JS::MutableHandle<JSObject*> aReflector)
|
||||
{
|
||||
return TimeRangesBinding::Wrap(aCx, this, aReflector);
|
||||
return TimeRangesBinding::Wrap(aCx, this, aGivenProto, aReflector);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -50,7 +50,7 @@ public:
|
|||
// Mutate this TimeRange to be the intersection of this and aOtherRanges.
|
||||
void Intersection(const TimeRanges* aOtherRanges);
|
||||
|
||||
bool WrapObject(JSContext* aCx, JS::MutableHandle<JSObject*> aReflector);
|
||||
bool WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto, JS::MutableHandle<JSObject*> aReflector);
|
||||
|
||||
uint32_t Length() const
|
||||
{
|
||||
|
|
|
@ -248,9 +248,9 @@ IDBKeyRange::DropJSObjects()
|
|||
}
|
||||
|
||||
bool
|
||||
IDBKeyRange::WrapObject(JSContext* aCx, JS::MutableHandle<JSObject*> aReflector)
|
||||
IDBKeyRange::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto, JS::MutableHandle<JSObject*> aReflector)
|
||||
{
|
||||
return IDBKeyRangeBinding::Wrap(aCx, this, aReflector);
|
||||
return IDBKeyRangeBinding::Wrap(aCx, this, aGivenProto, aReflector);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -141,7 +141,7 @@ public:
|
|||
|
||||
// WebIDL
|
||||
bool
|
||||
WrapObject(JSContext* aCx, JS::MutableHandle<JSObject*> aReflector);
|
||||
WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto, JS::MutableHandle<JSObject*> aReflector);
|
||||
|
||||
nsISupports*
|
||||
GetParentObject() const
|
||||
|
|
|
@ -37,9 +37,10 @@ VRFieldOfView::Constructor(const GlobalObject& aGlobal,
|
|||
|
||||
bool
|
||||
VRFieldOfView::WrapObject(JSContext* aCx,
|
||||
JS::Handle<JSObject*> aGivenProto,
|
||||
JS::MutableHandle<JSObject*> aReflector)
|
||||
{
|
||||
return VRFieldOfViewBinding::Wrap(aCx, this, aReflector);
|
||||
return VRFieldOfViewBinding::Wrap(aCx, this, aGivenProto, aReflector);
|
||||
}
|
||||
|
||||
NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE(VRPositionState, mParent)
|
||||
|
|
|
@ -68,7 +68,7 @@ public:
|
|||
double aDownDegrees, double aLeftDegrees,
|
||||
ErrorResult& aRv);
|
||||
|
||||
bool WrapObject(JSContext* aCx, JS::MutableHandle<JSObject*> aReflector);
|
||||
bool WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto, JS::MutableHandle<JSObject*> aReflector);
|
||||
|
||||
void SetUpDegrees(double aVal) { mUpDegrees = aVal; }
|
||||
void SetRightDegrees(double aVal) { mRightDegrees = aVal; }
|
||||
|
|
|
@ -42,9 +42,10 @@ WorkerDataStoreCursor::Constructor(GlobalObject& aGlobal, ErrorResult& aRv)
|
|||
|
||||
bool
|
||||
WorkerDataStoreCursor::WrapObject(JSContext* aCx,
|
||||
JS::Handle<JSObject*> aGivenProto,
|
||||
JS::MutableHandle<JSObject*> aReflector)
|
||||
{
|
||||
return DataStoreCursorBinding_workers::Wrap(aCx, this, aReflector);
|
||||
return DataStoreCursorBinding_workers::Wrap(aCx, this, aGivenProto, aReflector);
|
||||
}
|
||||
|
||||
// A WorkerMainThreadRunnable which holds a reference to DataStoreCursor.
|
||||
|
|
|
@ -35,7 +35,7 @@ public:
|
|||
static already_AddRefed<WorkerDataStoreCursor> Constructor(GlobalObject& aGlobal,
|
||||
ErrorResult& aRv);
|
||||
|
||||
bool WrapObject(JSContext *aCx, JS::MutableHandle<JSObject*> aReflector);
|
||||
bool WrapObject(JSContext *aCx, JS::Handle<JSObject*> aGivenProto, JS::MutableHandle<JSObject*> aReflector);
|
||||
|
||||
// WebIDL (public APIs)
|
||||
|
||||
|
|
|
@ -43,9 +43,10 @@ FileReaderSync::Constructor(const GlobalObject& aGlobal, ErrorResult& aRv)
|
|||
|
||||
bool
|
||||
FileReaderSync::WrapObject(JSContext* aCx,
|
||||
JS::Handle<JSObject*> aGivenProto,
|
||||
JS::MutableHandle<JSObject*> aReflector)
|
||||
{
|
||||
return FileReaderSyncBinding_workers::Wrap(aCx, this, aReflector);
|
||||
return FileReaderSyncBinding_workers::Wrap(aCx, this, aGivenProto, aReflector);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -41,7 +41,7 @@ public:
|
|||
static already_AddRefed<FileReaderSync>
|
||||
Constructor(const GlobalObject& aGlobal, ErrorResult& aRv);
|
||||
|
||||
bool WrapObject(JSContext* aCx, JS::MutableHandle<JSObject*> aReflector);
|
||||
bool WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto, JS::MutableHandle<JSObject*> aReflector);
|
||||
|
||||
void ReadAsArrayBuffer(JSContext* aCx, JS::Handle<JSObject*> aScopeObj,
|
||||
File& aBlob, JS::MutableHandle<JSObject*> aRetval,
|
||||
|
|
|
@ -583,9 +583,9 @@ URL::~URL()
|
|||
}
|
||||
|
||||
bool
|
||||
URL::WrapObject(JSContext* aCx, JS::MutableHandle<JSObject*> aReflector)
|
||||
URL::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto, JS::MutableHandle<JSObject*> aReflector)
|
||||
{
|
||||
return URLBinding_workers::Wrap(aCx, this, aReflector);
|
||||
return URLBinding_workers::Wrap(aCx, this, aGivenProto, aReflector);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -46,7 +46,7 @@ public:
|
|||
}
|
||||
|
||||
bool
|
||||
WrapObject(JSContext* aCx, JS::MutableHandle<JSObject*> aReflector);
|
||||
WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto, JS::MutableHandle<JSObject*> aReflector);
|
||||
|
||||
// Methods for WebIDL
|
||||
|
||||
|
|
|
@ -162,9 +162,10 @@ XPathEvaluator::CreateExpression(const nsAString & aExpression,
|
|||
|
||||
bool
|
||||
XPathEvaluator::WrapObject(JSContext* aCx,
|
||||
JS::Handle<JSObject*> aGivenProto,
|
||||
JS::MutableHandle<JSObject*> aReflector)
|
||||
{
|
||||
return dom::XPathEvaluatorBinding::Wrap(aCx, this, aReflector);
|
||||
return dom::XPathEvaluatorBinding::Wrap(aCx, this, aGivenProto, aReflector);
|
||||
}
|
||||
|
||||
/* static */
|
||||
|
|
|
@ -42,7 +42,7 @@ public:
|
|||
NS_DECL_NSIDOMXPATHEVALUATOR
|
||||
|
||||
// WebIDL API
|
||||
bool WrapObject(JSContext* aCx, JS::MutableHandle<JSObject*> aReflector);
|
||||
bool WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto, JS::MutableHandle<JSObject*> aReflector);
|
||||
nsIDocument* GetParentObject()
|
||||
{
|
||||
nsCOMPtr<nsIDocument> doc = do_QueryReferent(mDocument);
|
||||
|
|
|
@ -34,9 +34,9 @@ public:
|
|||
nsIDocument *aDocument);
|
||||
~XPathExpression();
|
||||
|
||||
bool WrapObject(JSContext* aCx, JS::MutableHandle<JSObject*> aReflector)
|
||||
bool WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto, JS::MutableHandle<JSObject*> aReflector)
|
||||
{
|
||||
return XPathExpressionBinding::Wrap(aCx, this, aReflector);
|
||||
return XPathExpressionBinding::Wrap(aCx, this, aGivenProto, aReflector);
|
||||
}
|
||||
|
||||
already_AddRefed<XPathResult>
|
||||
|
|
|
@ -337,9 +337,10 @@ NS_IMPL_ISUPPORTS0(PeerConnectionImpl)
|
|||
#ifdef MOZILLA_INTERNAL_API
|
||||
bool
|
||||
PeerConnectionImpl::WrapObject(JSContext* aCx,
|
||||
JS::Handle<JSObject*> aGivenProto,
|
||||
JS::MutableHandle<JSObject*> aReflector)
|
||||
{
|
||||
return PeerConnectionImplBinding::Wrap(aCx, this, aReflector);
|
||||
return PeerConnectionImplBinding::Wrap(aCx, this, aGivenProto, aReflector);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
|
@ -254,7 +254,7 @@ public:
|
|||
NS_DECL_THREADSAFE_ISUPPORTS
|
||||
|
||||
#ifdef MOZILLA_INTERNAL_API
|
||||
bool WrapObject(JSContext* aCx, JS::MutableHandle<JSObject*> aReflector);
|
||||
bool WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto, JS::MutableHandle<JSObject*> aReflector);
|
||||
#endif
|
||||
|
||||
static already_AddRefed<PeerConnectionImpl>
|
||||
|
|
Загрузка…
Ссылка в новой задаче