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:
Boris Zbarsky 2015-03-19 10:13:32 -04:00
Родитель 41e04c02b0
Коммит d0ebde3bb7
38 изменённых файлов: 59 добавлений и 51 удалений

Просмотреть файл

@ -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>