Bug 991742 part 6. Remove the "aScope" argument of binding Wrap() methods. r=bholley
authorBoris Zbarsky <bzbarsky@mit.edu>
Tue, 08 Apr 2014 18:27:17 -0400
changeset 178031 c438f7b1d1b5f43b2beedb24359d69f50f918291
parent 178030 b94df89242487b3dedd881aa22bbc677911d0aa2
child 178032 56f352a5c0230107da2c0b1bd6c689bd22845bc0
push id272
push userpvanderbeken@mozilla.com
push dateMon, 05 May 2014 16:31:18 +0000
reviewersbholley
bugs991742
milestone31.0a1
Bug 991742 part 6. Remove the "aScope" argument of binding Wrap() methods. r=bholley This patch was mostly generated with this command: find . -name "*.h" -o -name "*.cpp" | xargs sed -e 's/Binding::Wrap(aCx, aScope, this/Binding::Wrap(aCx, this/' -e 's/Binding_workers::Wrap(aCx, aScope, this/Binding_workers::Wrap(aCx, this/' -e 's/Binding::Wrap(cx, scope, this/Binding::Wrap(cx, this/' -i "" plus a few manual fixes to dom/bindings/Codegen.py, js/xpconnect/src/event_impl_gen.py, and a few C++ files that were not caught in the search-and-replace above.
content/base/src/Attr.cpp
content/base/src/Comment.cpp
content/base/src/DOMImplementation.cpp
content/base/src/DOMParser.h
content/base/src/DOMPoint.cpp
content/base/src/DOMQuad.cpp
content/base/src/DOMRect.cpp
content/base/src/DOMStringList.cpp
content/base/src/DocumentFragment.cpp
content/base/src/DocumentType.cpp
content/base/src/EventSource.cpp
content/base/src/FragmentOrElement.cpp
content/base/src/NodeIterator.cpp
content/base/src/ShadowRoot.cpp
content/base/src/TreeWalker.cpp
content/base/src/WebSocket.cpp
content/base/src/nsContentList.cpp
content/base/src/nsDOMAttributeMap.cpp
content/base/src/nsDOMCaretPosition.cpp
content/base/src/nsDOMDataChannel.cpp
content/base/src/nsDOMFile.cpp
content/base/src/nsDOMFileReader.cpp
content/base/src/nsDOMMutationObserver.h
content/base/src/nsDOMSerializer.h
content/base/src/nsDOMSettableTokenList.cpp
content/base/src/nsDOMTokenList.cpp
content/base/src/nsFormData.cpp
content/base/src/nsRange.cpp
content/base/src/nsTextNode.cpp
content/base/src/nsXMLHttpRequest.cpp
content/base/src/nsXMLHttpRequest.h
content/canvas/src/CanvasGradient.h
content/canvas/src/CanvasPattern.h
content/canvas/src/CanvasRenderingContext2D.cpp
content/canvas/src/ImageData.cpp
content/canvas/src/TextMetrics.h
content/canvas/src/WebGL1Context.cpp
content/canvas/src/WebGL2Context.cpp
content/canvas/src/WebGLActiveInfo.cpp
content/canvas/src/WebGLBuffer.cpp
content/canvas/src/WebGLExtensions.h
content/canvas/src/WebGLFramebuffer.cpp
content/canvas/src/WebGLProgram.cpp
content/canvas/src/WebGLQuery.cpp
content/canvas/src/WebGLRenderbuffer.cpp
content/canvas/src/WebGLShader.cpp
content/canvas/src/WebGLShaderPrecisionFormat.cpp
content/canvas/src/WebGLTexture.cpp
content/canvas/src/WebGLUniformLocation.cpp
content/canvas/src/WebGLVertexArray.cpp
content/html/content/src/HTMLAnchorElement.cpp
content/html/content/src/HTMLAreaElement.cpp
content/html/content/src/HTMLAudioElement.cpp
content/html/content/src/HTMLBRElement.cpp
content/html/content/src/HTMLBodyElement.cpp
content/html/content/src/HTMLButtonElement.cpp
content/html/content/src/HTMLCanvasElement.cpp
content/html/content/src/HTMLContentElement.cpp
content/html/content/src/HTMLDataElement.cpp
content/html/content/src/HTMLDataListElement.cpp
content/html/content/src/HTMLDivElement.cpp
content/html/content/src/HTMLElement.cpp
content/html/content/src/HTMLFieldSetElement.cpp
content/html/content/src/HTMLFontElement.cpp
content/html/content/src/HTMLFormControlsCollection.cpp
content/html/content/src/HTMLFormElement.cpp
content/html/content/src/HTMLFrameElement.cpp
content/html/content/src/HTMLFrameSetElement.cpp
content/html/content/src/HTMLHRElement.cpp
content/html/content/src/HTMLHeadingElement.cpp
content/html/content/src/HTMLIFrameElement.cpp
content/html/content/src/HTMLImageElement.cpp
content/html/content/src/HTMLInputElement.cpp
content/html/content/src/HTMLLIElement.cpp
content/html/content/src/HTMLLabelElement.cpp
content/html/content/src/HTMLLegendElement.cpp
content/html/content/src/HTMLLinkElement.cpp
content/html/content/src/HTMLMapElement.cpp
content/html/content/src/HTMLMenuElement.cpp
content/html/content/src/HTMLMenuItemElement.cpp
content/html/content/src/HTMLMetaElement.cpp
content/html/content/src/HTMLMeterElement.cpp
content/html/content/src/HTMLModElement.cpp
content/html/content/src/HTMLObjectElement.cpp
content/html/content/src/HTMLOptGroupElement.cpp
content/html/content/src/HTMLOptionElement.cpp
content/html/content/src/HTMLOptionsCollection.cpp
content/html/content/src/HTMLOutputElement.cpp
content/html/content/src/HTMLParagraphElement.cpp
content/html/content/src/HTMLPreElement.cpp
content/html/content/src/HTMLProgressElement.cpp
content/html/content/src/HTMLPropertiesCollection.cpp
content/html/content/src/HTMLScriptElement.cpp
content/html/content/src/HTMLSelectElement.cpp
content/html/content/src/HTMLShadowElement.cpp
content/html/content/src/HTMLSharedElement.cpp
content/html/content/src/HTMLSharedListElement.cpp
content/html/content/src/HTMLSharedObjectElement.cpp
content/html/content/src/HTMLSourceElement.cpp
content/html/content/src/HTMLSpanElement.cpp
content/html/content/src/HTMLStyleElement.cpp
content/html/content/src/HTMLTableCaptionElement.cpp
content/html/content/src/HTMLTableCellElement.cpp
content/html/content/src/HTMLTableColElement.cpp
content/html/content/src/HTMLTableElement.cpp
content/html/content/src/HTMLTableRowElement.cpp
content/html/content/src/HTMLTableSectionElement.cpp
content/html/content/src/HTMLTemplateElement.cpp
content/html/content/src/HTMLTextAreaElement.cpp
content/html/content/src/HTMLTimeElement.cpp
content/html/content/src/HTMLTitleElement.cpp
content/html/content/src/HTMLTrackElement.cpp
content/html/content/src/HTMLUnknownElement.cpp
content/html/content/src/HTMLVideoElement.cpp
content/html/content/src/MediaError.cpp
content/html/content/src/TimeRanges.cpp
content/html/content/src/UndoManager.h
content/html/content/src/ValidityState.cpp
content/html/content/src/nsDOMStringMap.cpp
content/html/document/src/ImageDocument.cpp
content/html/document/src/nsHTMLDocument.cpp
content/mathml/content/src/nsMathMLElement.cpp
content/media/AudioStreamTrack.cpp
content/media/DOMMediaStream.cpp
content/media/MediaRecorder.cpp
content/media/TextTrack.cpp
content/media/TextTrackCue.cpp
content/media/TextTrackCueList.cpp
content/media/TextTrackList.cpp
content/media/TextTrackRegion.cpp
content/media/VideoPlaybackQuality.cpp
content/media/VideoStreamTrack.cpp
content/media/mediasource/MediaSource.cpp
content/media/mediasource/SourceBuffer.cpp
content/media/mediasource/SourceBufferList.cpp
content/media/webaudio/AnalyserNode.cpp
content/media/webaudio/AudioBuffer.cpp
content/media/webaudio/AudioBufferSourceNode.cpp
content/media/webaudio/AudioContext.cpp
content/media/webaudio/AudioDestinationNode.cpp
content/media/webaudio/AudioListener.cpp
content/media/webaudio/AudioParam.cpp
content/media/webaudio/AudioProcessingEvent.cpp
content/media/webaudio/BiquadFilterNode.cpp
content/media/webaudio/ChannelMergerNode.cpp
content/media/webaudio/ChannelSplitterNode.cpp
content/media/webaudio/ConvolverNode.cpp
content/media/webaudio/DelayNode.cpp
content/media/webaudio/DynamicsCompressorNode.cpp
content/media/webaudio/GainNode.cpp
content/media/webaudio/MediaElementAudioSourceNode.cpp
content/media/webaudio/MediaStreamAudioDestinationNode.cpp
content/media/webaudio/MediaStreamAudioSourceNode.cpp
content/media/webaudio/OfflineAudioCompletionEvent.cpp
content/media/webaudio/OscillatorNode.cpp
content/media/webaudio/PannerNode.cpp
content/media/webaudio/PeriodicWave.cpp
content/media/webaudio/ScriptProcessorNode.cpp
content/media/webaudio/WaveShaperNode.cpp
content/media/webspeech/recognition/SpeechGrammar.cpp
content/media/webspeech/recognition/SpeechGrammarList.cpp
content/media/webspeech/recognition/SpeechRecognition.cpp
content/media/webspeech/recognition/SpeechRecognitionAlternative.cpp
content/media/webspeech/recognition/SpeechRecognitionResult.cpp
content/media/webspeech/recognition/SpeechRecognitionResultList.cpp
content/media/webspeech/synth/SpeechSynthesis.cpp
content/media/webspeech/synth/SpeechSynthesisUtterance.cpp
content/media/webspeech/synth/SpeechSynthesisVoice.cpp
content/svg/content/src/DOMSVGAnimatedLengthList.cpp
content/svg/content/src/DOMSVGAnimatedNumberList.cpp
content/svg/content/src/DOMSVGLengthList.cpp
content/svg/content/src/DOMSVGNumberList.cpp
content/svg/content/src/DOMSVGPathSeg.h
content/svg/content/src/DOMSVGPathSegList.cpp
content/svg/content/src/DOMSVGPointList.cpp
content/svg/content/src/DOMSVGStringList.cpp
content/svg/content/src/DOMSVGTransformList.cpp
content/svg/content/src/SVGAElement.cpp
content/svg/content/src/SVGAltGlyphElement.cpp
content/svg/content/src/SVGAngle.cpp
content/svg/content/src/SVGAnimateElement.cpp
content/svg/content/src/SVGAnimateMotionElement.cpp
content/svg/content/src/SVGAnimateTransformElement.cpp
content/svg/content/src/SVGAnimatedAngle.cpp
content/svg/content/src/SVGAnimatedBoolean.cpp
content/svg/content/src/SVGAnimatedEnumeration.cpp
content/svg/content/src/SVGAnimatedInteger.cpp
content/svg/content/src/SVGAnimatedLength.cpp
content/svg/content/src/SVGAnimatedNumber.cpp
content/svg/content/src/SVGAnimatedPreserveAspectRatio.cpp
content/svg/content/src/SVGAnimatedRect.cpp
content/svg/content/src/SVGAnimatedString.cpp
content/svg/content/src/SVGAnimatedTransformList.cpp
content/svg/content/src/SVGCircleElement.cpp
content/svg/content/src/SVGClipPathElement.cpp
content/svg/content/src/SVGDefsElement.cpp
content/svg/content/src/SVGDescElement.cpp
content/svg/content/src/SVGEllipseElement.cpp
content/svg/content/src/SVGFEBlendElement.cpp
content/svg/content/src/SVGFEColorMatrixElement.cpp
content/svg/content/src/SVGFEComponentTransferElement.cpp
content/svg/content/src/SVGFECompositeElement.cpp
content/svg/content/src/SVGFEConvolveMatrixElement.cpp
content/svg/content/src/SVGFEDiffuseLightingElement.cpp
content/svg/content/src/SVGFEDisplacementMapElement.cpp
content/svg/content/src/SVGFEDistantLightElement.cpp
content/svg/content/src/SVGFEDropShadowElement.cpp
content/svg/content/src/SVGFEFloodElement.cpp
content/svg/content/src/SVGFEGaussianBlurElement.cpp
content/svg/content/src/SVGFEImageElement.cpp
content/svg/content/src/SVGFEMergeElement.cpp
content/svg/content/src/SVGFEMergeNodeElement.cpp
content/svg/content/src/SVGFEMorphologyElement.cpp
content/svg/content/src/SVGFEOffsetElement.cpp
content/svg/content/src/SVGFEPointLightElement.cpp
content/svg/content/src/SVGFESpecularLightingElement.cpp
content/svg/content/src/SVGFESpotLightElement.cpp
content/svg/content/src/SVGFETileElement.cpp
content/svg/content/src/SVGFETurbulenceElement.cpp
content/svg/content/src/SVGFilterElement.cpp
content/svg/content/src/SVGForeignObjectElement.cpp
content/svg/content/src/SVGGElement.cpp
content/svg/content/src/SVGGradientElement.cpp
content/svg/content/src/SVGIRect.h
content/svg/content/src/SVGImageElement.cpp
content/svg/content/src/SVGLineElement.cpp
content/svg/content/src/SVGMPathElement.cpp
content/svg/content/src/SVGMarkerElement.cpp
content/svg/content/src/SVGMaskElement.cpp
content/svg/content/src/SVGMatrix.cpp
content/svg/content/src/SVGMetadataElement.cpp
content/svg/content/src/SVGPathElement.cpp
content/svg/content/src/SVGPatternElement.cpp
content/svg/content/src/SVGPolygonElement.cpp
content/svg/content/src/SVGPolylineElement.cpp
content/svg/content/src/SVGPreserveAspectRatio.cpp
content/svg/content/src/SVGRectElement.cpp
content/svg/content/src/SVGSVGElement.cpp
content/svg/content/src/SVGScriptElement.cpp
content/svg/content/src/SVGSetElement.cpp
content/svg/content/src/SVGStopElement.cpp
content/svg/content/src/SVGStyleElement.cpp
content/svg/content/src/SVGSwitchElement.cpp
content/svg/content/src/SVGSymbolElement.cpp
content/svg/content/src/SVGTSpanElement.cpp
content/svg/content/src/SVGTextElement.cpp
content/svg/content/src/SVGTextPathElement.cpp
content/svg/content/src/SVGTitleElement.cpp
content/svg/content/src/SVGTransform.cpp
content/svg/content/src/SVGUseElement.cpp
content/svg/content/src/SVGViewElement.cpp
content/svg/content/src/SVGZoomEvent.h
content/svg/content/src/nsISVGPoint.h
content/svg/content/src/nsSVGElement.cpp
content/svg/content/src/nsSVGFilters.cpp
content/svg/document/src/SVGDocument.cpp
content/xml/content/src/CDATASection.cpp
content/xml/content/src/ProcessingInstruction.cpp
content/xml/content/src/XMLStylesheetProcessingInstruction.cpp
content/xml/content/src/nsXMLElement.cpp
content/xml/document/src/XMLDocument.cpp
content/xul/content/src/nsXULElement.cpp
content/xul/document/src/XULDocument.cpp
dom/activities/src/Activity.cpp
dom/base/BarProps.cpp
dom/base/Console.cpp
dom/base/Crypto.cpp
dom/base/DOMCursor.cpp
dom/base/DOMError.cpp
dom/base/DOMException.cpp
dom/base/DOMRequest.cpp
dom/base/MessageChannel.cpp
dom/base/MessagePort.cpp
dom/base/MessagePortList.cpp
dom/base/Navigator.cpp
dom/base/URL.cpp
dom/base/URLSearchParams.cpp
dom/base/nsHistory.cpp
dom/base/nsMimeTypeArray.cpp
dom/base/nsPerformance.cpp
dom/base/nsPluginArray.cpp
dom/base/nsScreen.cpp
dom/battery/BatteryManager.cpp
dom/bindings/Codegen.py
dom/bluetooth/BluetoothAdapter.cpp
dom/bluetooth/BluetoothDevice.cpp
dom/bluetooth/BluetoothManager.cpp
dom/camera/DOMCameraCapabilities.cpp
dom/camera/DOMCameraControl.cpp
dom/camera/DOMCameraManager.cpp
dom/cellbroadcast/src/CellBroadcast.cpp
dom/devicestorage/nsDeviceStorage.cpp
dom/encoding/TextDecoder.h
dom/encoding/TextEncoder.h
dom/events/AnimationEvent.h
dom/events/BeforeUnloadEvent.h
dom/events/ClipboardEvent.h
dom/events/CommandEvent.h
dom/events/CompositionEvent.h
dom/events/DataContainerEvent.h
dom/events/DataTransfer.cpp
dom/events/DeviceMotionEvent.h
dom/events/DragEvent.h
dom/events/Event.h
dom/events/FocusEvent.h
dom/events/KeyboardEvent.h
dom/events/MessageEvent.cpp
dom/events/MouseEvent.h
dom/events/MouseScrollEvent.h
dom/events/MutationEvent.h
dom/events/NotifyPaintEvent.h
dom/events/PaintRequest.cpp
dom/events/PointerEvent.h
dom/events/ScrollAreaEvent.h
dom/events/SimpleGestureEvent.h
dom/events/SpeechRecognitionError.h
dom/events/Touch.cpp
dom/events/TouchEvent.cpp
dom/events/TouchEvent.h
dom/events/TransitionEvent.h
dom/events/UIEvent.h
dom/events/WheelEvent.h
dom/events/XULCommandEvent.h
dom/file/ArchiveReader.cpp
dom/file/ArchiveRequest.cpp
dom/file/FileHandle.cpp
dom/file/FileRequest.cpp
dom/file/LockedFile.cpp
dom/filesystem/Directory.cpp
dom/fmradio/FMRadio.cpp
dom/gamepad/Gamepad.cpp
dom/gamepad/GamepadButton.cpp
dom/icc/src/Icc.cpp
dom/indexedDB/IDBCursor.cpp
dom/indexedDB/IDBDatabase.cpp
dom/indexedDB/IDBEvents.h
dom/indexedDB/IDBFactory.cpp
dom/indexedDB/IDBFileHandle.cpp
dom/indexedDB/IDBIndex.cpp
dom/indexedDB/IDBKeyRange.cpp
dom/indexedDB/IDBObjectStore.cpp
dom/indexedDB/IDBRequest.cpp
dom/indexedDB/IDBTransaction.cpp
dom/media/GetUserMediaRequest.cpp
dom/mobileconnection/src/MobileConnectionArray.cpp
dom/network/src/Connection.cpp
dom/nfc/MozNDEFRecord.cpp
dom/power/PowerManager.cpp
dom/power/WakeLock.cpp
dom/promise/Promise.cpp
dom/smil/TimeEvent.h
dom/speakermanager/SpeakerManager.cpp
dom/src/geolocation/nsGeoPosition.cpp
dom/src/geolocation/nsGeolocation.cpp
dom/src/notification/DesktopNotification.cpp
dom/src/notification/Notification.cpp
dom/src/offline/nsDOMOfflineResourceList.cpp
dom/system/gonk/AudioChannelManager.cpp
dom/telephony/CallEvent.cpp
dom/telephony/CallsList.cpp
dom/telephony/Telephony.cpp
dom/telephony/TelephonyCall.cpp
dom/telephony/TelephonyCallGroup.cpp
dom/time/TimeManager.cpp
dom/voicemail/Voicemail.cpp
dom/workers/FileReaderSync.cpp
dom/workers/Location.cpp
dom/workers/MessagePort.cpp
dom/workers/Navigator.cpp
dom/workers/SharedWorker.cpp
dom/workers/URL.cpp
dom/workers/WorkerPrivate.cpp
dom/workers/XMLHttpRequest.cpp
dom/workers/XMLHttpRequestUpload.cpp
dom/xbl/XBLChildrenElement.cpp
dom/xslt/xpath/XPathEvaluator.cpp
js/xpconnect/src/event_impl_gen.py
layout/generic/nsSelection.cpp
layout/style/MediaQueryList.cpp
layout/style/nsCSSRules.cpp
layout/style/nsCSSStyleSheet.cpp
layout/style/nsDOMCSSDeclaration.cpp
layout/style/nsDOMCSSRGBColor.cpp
layout/style/nsDOMCSSRect.cpp
layout/style/nsDOMCSSValueList.cpp
layout/style/nsROCSSPrimitiveValue.cpp
layout/xul/tree/nsTreeColumns.cpp
media/webrtc/signaling/src/peerconnection/MediaStreamList.cpp
media/webrtc/signaling/src/peerconnection/PeerConnectionImpl.cpp
security/manager/ssl/src/nsCrypto.cpp
--- a/content/base/src/Attr.cpp
+++ b/content/base/src/Attr.cpp
@@ -396,17 +396,17 @@ void
 Attr::Shutdown()
 {
   sInitialized = false;
 }
 
 JSObject*
 Attr::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return AttrBinding::Wrap(aCx, aScope, this);
+  return AttrBinding::Wrap(aCx, this);
 }
 
 Element*
 Attr::GetContentInternal() const
 {
   return mAttrMap ? mAttrMap->GetContent() : nullptr;
 }
 
--- a/content/base/src/Comment.cpp
+++ b/content/base/src/Comment.cpp
@@ -71,13 +71,13 @@ Comment::Constructor(const GlobalObject&
   }
 
   return window->GetDoc()->CreateComment(aData);
 }
 
 JSObject*
 Comment::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return CommentBinding::Wrap(aCx, aScope, this);
+  return CommentBinding::Wrap(aCx, this);
 }
 
 } // namespace dom
 } // namespace mozilla
--- a/content/base/src/DOMImplementation.cpp
+++ b/content/base/src/DOMImplementation.cpp
@@ -26,17 +26,17 @@ NS_INTERFACE_MAP_END
 NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE_1(DOMImplementation, mOwner)
 
 NS_IMPL_CYCLE_COLLECTING_ADDREF(DOMImplementation)
 NS_IMPL_CYCLE_COLLECTING_RELEASE(DOMImplementation)
 
 JSObject*
 DOMImplementation::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return DOMImplementationBinding::Wrap(aCx, aScope, this);
+  return DOMImplementationBinding::Wrap(aCx, this);
 }
 
 bool
 DOMImplementation::HasFeature(const nsAString& aFeature,
                               const nsAString& aVersion)
 {
   return nsContentUtils::InternalIsSupported(
            static_cast<nsIDOMDOMImplementation*>(this),
--- a/content/base/src/DOMParser.h
+++ b/content/base/src/DOMParser.h
@@ -71,17 +71,17 @@ public:
   nsISupports* GetParentObject() const
   {
     return mOwner;
   }
 
   virtual JSObject* WrapObject(JSContext* aCx,
                                JS::Handle<JSObject*> aScope) MOZ_OVERRIDE
   {
-    return mozilla::dom::DOMParserBinding::Wrap(aCx, aScope, this);
+    return mozilla::dom::DOMParserBinding::Wrap(aCx, this);
   }
 
 private:
   DOMParser(nsISupports* aOwner) : mOwner(aOwner), mAttemptedInit(false)
   {
     MOZ_ASSERT(aOwner);
     SetIsDOMBinding();
   }
--- a/content/base/src/DOMPoint.cpp
+++ b/content/base/src/DOMPoint.cpp
@@ -34,10 +34,10 @@ DOMPoint::Constructor(const GlobalObject
   nsRefPtr<DOMPoint> obj =
     new DOMPoint(aGlobal.GetAsSupports(), aX, aY, aZ, aW);
   return obj.forget();
 }
 
 JSObject*
 DOMPoint::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return DOMPointBinding::Wrap(aCx, aScope, this);
+  return DOMPointBinding::Wrap(aCx, this);
 }
--- a/content/base/src/DOMQuad.cpp
+++ b/content/base/src/DOMQuad.cpp
@@ -37,17 +37,17 @@ DOMQuad::DOMQuad(nsISupports* aParent)
 
 DOMQuad::~DOMQuad()
 {
 }
 
 JSObject*
 DOMQuad::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return DOMQuadBinding::Wrap(aCx, aScope, this);
+  return DOMQuadBinding::Wrap(aCx, this);
 }
 
 already_AddRefed<DOMQuad>
 DOMQuad::Constructor(const GlobalObject& aGlobal,
                      const DOMPointInit& aP1,
                      const DOMPointInit& aP2,
                      const DOMPointInit& aP3,
                      const DOMPointInit& aP4,
--- a/content/base/src/DOMRect.cpp
+++ b/content/base/src/DOMRect.cpp
@@ -19,17 +19,17 @@ NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(
   NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY
   NS_INTERFACE_MAP_ENTRY(nsISupports)
 NS_INTERFACE_MAP_END
 
 JSObject*
 DOMRectReadOnly::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
   MOZ_ASSERT(mParent);
-  return DOMRectReadOnlyBinding::Wrap(aCx, aScope, this);
+  return DOMRectReadOnlyBinding::Wrap(aCx, this);
 }
 
 // -----------------------------------------------------------------------------
 
 NS_IMPL_ISUPPORTS_INHERITED1(DOMRect, DOMRectReadOnly, nsIDOMClientRect)
 
 #define FORWARD_GETTER(_name)                                                   \
   NS_IMETHODIMP                                                                 \
@@ -45,17 +45,17 @@ FORWARD_GETTER(Right)
 FORWARD_GETTER(Bottom)
 FORWARD_GETTER(Width)
 FORWARD_GETTER(Height)
 
 JSObject*
 DOMRect::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
   MOZ_ASSERT(mParent);
-  return DOMRectBinding::Wrap(aCx, aScope, this);
+  return DOMRectBinding::Wrap(aCx, this);
 }
 
 already_AddRefed<DOMRect>
 DOMRect::Constructor(const GlobalObject& aGlobal, ErrorResult& aRV)
 {
   nsRefPtr<DOMRect> obj =
     new DOMRect(aGlobal.GetAsSupports(), 0.0, 0.0, 0.0, 0.0);
   return obj.forget();
@@ -96,17 +96,17 @@ DOMRectList::Item(uint32_t aIndex, nsIDO
 {
   NS_IF_ADDREF(*aReturn = Item(aIndex));
   return NS_OK;
 }
 
 JSObject*
 DOMRectList::WrapObject(JSContext *cx, JS::Handle<JSObject*> scope)
 {
-  return mozilla::dom::DOMRectListBinding::Wrap(cx, scope, this);
+  return mozilla::dom::DOMRectListBinding::Wrap(cx, this);
 }
 
 static double
 RoundFloat(double aValue)
 {
   return floor(aValue + 0.5);
 }
 
--- a/content/base/src/DOMStringList.cpp
+++ b/content/base/src/DOMStringList.cpp
@@ -21,13 +21,13 @@ NS_INTERFACE_MAP_END
 
 DOMStringList::~DOMStringList()
 {
 }
 
 JSObject*
 DOMStringList::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return DOMStringListBinding::Wrap(aCx, aScope, this);
+  return DOMStringListBinding::Wrap(aCx, this);
 }
 
 } // namespace dom
 } // namespace mozilla
--- a/content/base/src/DocumentFragment.cpp
+++ b/content/base/src/DocumentFragment.cpp
@@ -21,17 +21,17 @@
 #include "mozilla/IntegerPrintfMacros.h"
 
 namespace mozilla {
 namespace dom {
 
 JSObject*
 DocumentFragment::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return DocumentFragmentBinding::Wrap(aCx, aScope, this);
+  return DocumentFragmentBinding::Wrap(aCx, this);
 }
 
 bool
 DocumentFragment::IsNodeOfType(uint32_t aFlags) const
 {
   return !(aFlags & ~(eCONTENT | eDOCUMENT_FRAGMENT));
 }
 
--- a/content/base/src/DocumentType.cpp
+++ b/content/base/src/DocumentType.cpp
@@ -57,17 +57,17 @@ NS_NewDOMDocumentType(nsNodeInfoManager*
 }
 
 namespace mozilla {
 namespace dom {
 
 JSObject*
 DocumentType::WrapNode(JSContext *cx, JS::Handle<JSObject*> scope)
 {
-  return DocumentTypeBinding::Wrap(cx, scope, this);
+  return DocumentTypeBinding::Wrap(cx, this);
 }
 
 DocumentType::DocumentType(already_AddRefed<nsINodeInfo>& aNodeInfo,
                            const nsAString& aPublicId,
                            const nsAString& aSystemId,
                            const nsAString& aInternalSubset) :
   DocumentTypeForward(aNodeInfo),
   mPublicId(aPublicId),
--- a/content/base/src/EventSource.cpp
+++ b/content/base/src/EventSource.cpp
@@ -268,17 +268,17 @@ EventSource::Init(nsISupports* aOwner,
   InitChannelAndRequestEventSource();
 
   return NS_OK;
 }
 
 /* virtual */ JSObject*
 EventSource::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return EventSourceBinding::Wrap(aCx, aScope, this);
+  return EventSourceBinding::Wrap(aCx, this);
 }
 
 /* static */ already_AddRefed<EventSource>
 EventSource::Constructor(const GlobalObject& aGlobal,
                          const nsAString& aURL,
                          const EventSourceInit& aEventSourceInitDict,
                          ErrorResult& aRv)
 {
--- a/content/base/src/FragmentOrElement.cpp
+++ b/content/base/src/FragmentOrElement.cpp
@@ -377,17 +377,17 @@ NS_INTERFACE_TABLE_HEAD(nsChildContentLi
   NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY
   NS_INTERFACE_TABLE2(nsChildContentList, nsINodeList, nsIDOMNodeList)
   NS_INTERFACE_TABLE_TO_MAP_SEGUE_CYCLE_COLLECTION(nsChildContentList)
 NS_INTERFACE_MAP_END
 
 JSObject*
 nsChildContentList::WrapObject(JSContext *cx, JS::Handle<JSObject*> scope)
 {
-  return NodeListBinding::Wrap(cx, scope, this);
+  return NodeListBinding::Wrap(cx, this);
 }
 
 NS_IMETHODIMP
 nsChildContentList::GetLength(uint32_t* aLength)
 {
   *aLength = mNode ? mNode->GetChildCount() : 0;
 
   return NS_OK;
--- a/content/base/src/NodeIterator.cpp
+++ b/content/base/src/NodeIterator.cpp
@@ -286,13 +286,13 @@ void NodeIterator::ContentRemoved(nsIDoc
 
     mPointer.AdjustAfterRemoval(mRoot, container, aChild, aPreviousSibling);
     mWorkingPointer.AdjustAfterRemoval(mRoot, container, aChild, aPreviousSibling);
 }
 
 JSObject*
 NodeIterator::WrapObject(JSContext *cx, JS::Handle<JSObject*> scope)
 {
-    return NodeIteratorBinding::Wrap(cx, scope, this);
+    return NodeIteratorBinding::Wrap(cx, this);
 }
 
 } // namespace dom
 } // namespace mozilla
--- a/content/base/src/ShadowRoot.cpp
+++ b/content/base/src/ShadowRoot.cpp
@@ -94,17 +94,17 @@ ShadowRoot::~ShadowRoot()
 
   ClearInDocument();
   SetHost(nullptr);
 }
 
 JSObject*
 ShadowRoot::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return mozilla::dom::ShadowRootBinding::Wrap(aCx, aScope, this);
+  return mozilla::dom::ShadowRootBinding::Wrap(aCx, this);
 }
 
 ShadowRoot*
 ShadowRoot::FromNode(nsINode* aNode)
 {
   if (aNode->HasFlag(NODE_IS_IN_SHADOW_TREE) && !aNode->GetParentNode()) {
     MOZ_ASSERT(aNode->NodeType() == nsIDOMNode::DOCUMENT_FRAGMENT_NODE,
                "ShadowRoot is a document fragment.");
--- a/content/base/src/TreeWalker.cpp
+++ b/content/base/src/TreeWalker.cpp
@@ -448,13 +448,13 @@ TreeWalker::NextSiblingInternal(bool aRe
             return nullptr;
         }
     }
 }
 
 JSObject*
 TreeWalker::WrapObject(JSContext *cx, JS::Handle<JSObject*> scope)
 {
-    return TreeWalkerBinding::Wrap(cx, scope, this);
+    return TreeWalkerBinding::Wrap(cx, this);
 }
 
 } // namespace dom
 } // namespace mozilla
--- a/content/base/src/WebSocket.cpp
+++ b/content/base/src/WebSocket.cpp
@@ -468,17 +468,17 @@ WebSocket::~WebSocket()
   if (!mDisconnected) {
     Disconnect();
   }
 }
 
 JSObject*
 WebSocket::WrapObject(JSContext* cx, JS::Handle<JSObject*> scope)
 {
-  return WebSocketBinding::Wrap(cx, scope, this);
+  return WebSocketBinding::Wrap(cx, this);
 }
 
 //---------------------------------------------------------------------------
 // WebIDL
 //---------------------------------------------------------------------------
 
 // Constructor:
 already_AddRefed<WebSocket>
--- a/content/base/src/nsContentList.cpp
+++ b/content/base/src/nsContentList.cpp
@@ -142,17 +142,17 @@ NS_INTERFACE_MAP_END_INHERITING(nsBaseCo
 
 
 NS_IMPL_ADDREF_INHERITED(nsSimpleContentList, nsBaseContentList)
 NS_IMPL_RELEASE_INHERITED(nsSimpleContentList, nsBaseContentList)
 
 JSObject*
 nsSimpleContentList::WrapObject(JSContext *cx, JS::Handle<JSObject*> scope)
 {
-  return NodeListBinding::Wrap(cx, scope, this);
+  return NodeListBinding::Wrap(cx, this);
 }
 
 // Hashtable for storing nsContentLists
 static PLDHashTable gContentListHashTable;
 
 #define RECENTLY_USED_CONTENT_LIST_CACHE_SIZE 31
 static nsContentList*
   sRecentlyUsedContentLists[RECENTLY_USED_CONTENT_LIST_CACHE_SIZE] = {};
@@ -265,24 +265,24 @@ const nsCacheableFuncStringContentList::
   nsCacheableFuncStringNodeList::sType = nsCacheableFuncStringContentList::eNodeList;
 const nsCacheableFuncStringContentList::ContentListType
   nsCacheableFuncStringHTMLCollection::sType = nsCacheableFuncStringContentList::eHTMLCollection;
 #endif
 
 JSObject*
 nsCacheableFuncStringNodeList::WrapObject(JSContext *cx, JS::Handle<JSObject*> scope)
 {
-  return NodeListBinding::Wrap(cx, scope, this);
+  return NodeListBinding::Wrap(cx, this);
 }
 
 
 JSObject*
 nsCacheableFuncStringHTMLCollection::WrapObject(JSContext *cx, JS::Handle<JSObject*> scope)
 {
-  return HTMLCollectionBinding::Wrap(cx, scope, this);
+  return HTMLCollectionBinding::Wrap(cx, this);
 }
 
 // Hashtable for storing nsCacheableFuncStringContentList
 static PLDHashTable gFuncStringContentListHashTable;
 
 struct FuncStringContentListHashEntry : public PLDHashEntryHdr
 {
   nsCacheableFuncStringContentList* mContentList;
@@ -484,17 +484,17 @@ nsContentList::~nsContentList()
     // Clean up mData
     (*mDestroyFunc)(mData);
   }
 }
 
 JSObject*
 nsContentList::WrapObject(JSContext *cx, JS::Handle<JSObject*> scope)
 {
-  return HTMLCollectionBinding::Wrap(cx, scope, this);
+  return HTMLCollectionBinding::Wrap(cx, this);
 }
 
 NS_IMPL_ISUPPORTS_INHERITED3(nsContentList, nsBaseContentList,
                              nsIHTMLCollection, nsIDOMHTMLCollection,
                              nsIMutationObserver)
 
 uint32_t
 nsContentList::Length(bool aDoFlush)
--- a/content/base/src/nsDOMAttributeMap.cpp
+++ b/content/base/src/nsDOMAttributeMap.cpp
@@ -550,10 +550,10 @@ nsDOMAttributeMap::SizeOfIncludingThis(M
 
   // NB: mContent is non-owning and thus not counted.
   return n;
 }
 
 /* virtual */ JSObject*
 nsDOMAttributeMap::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return MozNamedAttrMapBinding::Wrap(aCx, aScope, this);
+  return MozNamedAttrMapBinding::Wrap(aCx, this);
 }
--- a/content/base/src/nsDOMCaretPosition.cpp
+++ b/content/base/src/nsDOMCaretPosition.cpp
@@ -54,17 +54,17 @@ nsDOMCaretPosition::GetClientRect() cons
   rect = domRange->GetBoundingClientRect();
 
   return rect.forget();
 }
 
 JSObject*
 nsDOMCaretPosition::WrapObject(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return mozilla::dom::CaretPositionBinding::Wrap(aCx, aScope, this);
+  return mozilla::dom::CaretPositionBinding::Wrap(aCx, this);
 }
 
 NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE_2(nsDOMCaretPosition,
                                         mOffsetNode, mAnonymousContentNode)
 
 NS_IMPL_CYCLE_COLLECTING_ADDREF(nsDOMCaretPosition)
 NS_IMPL_CYCLE_COLLECTING_RELEASE(nsDOMCaretPosition)
 
--- a/content/base/src/nsDOMDataChannel.cpp
+++ b/content/base/src/nsDOMDataChannel.cpp
@@ -55,17 +55,17 @@ nsDOMDataChannel::~nsDOMDataChannel()
   LOG(("Close()ing %p", mDataChannel.get()));
   mDataChannel->SetListener(nullptr, nullptr);
   mDataChannel->Close();
 }
 
 /* virtual */ JSObject*
 nsDOMDataChannel::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return DataChannelBinding::Wrap(aCx, aScope, this);
+  return DataChannelBinding::Wrap(aCx, this);
 }
 
 NS_IMPL_CYCLE_COLLECTION_CLASS(nsDOMDataChannel)
 
 NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN_INHERITED(nsDOMDataChannel,
                                                   DOMEventTargetHelper)
 NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
 
--- a/content/base/src/nsDOMFile.cpp
+++ b/content/base/src/nsDOMFile.cpp
@@ -738,17 +738,17 @@ NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(
 NS_INTERFACE_MAP_END
 
 NS_IMPL_CYCLE_COLLECTING_ADDREF(nsDOMFileList)
 NS_IMPL_CYCLE_COLLECTING_RELEASE(nsDOMFileList)
 
 JSObject*
 nsDOMFileList::WrapObject(JSContext *cx, JS::Handle<JSObject*> scope)
 {
-  return FileListBinding::Wrap(cx, scope, this);
+  return FileListBinding::Wrap(cx, this);
 }
 
 NS_IMETHODIMP
 nsDOMFileList::GetLength(uint32_t* aLength)
 {
   *aLength = Length();
 
   return NS_OK;
--- a/content/base/src/nsDOMFileReader.cpp
+++ b/content/base/src/nsDOMFileReader.cpp
@@ -549,10 +549,10 @@ nsDOMFileReader::GetAsDataURL(nsIDOMBlob
   }
 
   return NS_OK;
 }
 
 /* virtual */ JSObject*
 nsDOMFileReader::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return FileReaderBinding::Wrap(aCx, aScope, this);
+  return FileReaderBinding::Wrap(aCx, this);
 }
--- a/content/base/src/nsDOMMutationObserver.h
+++ b/content/base/src/nsDOMMutationObserver.h
@@ -44,17 +44,17 @@ public:
   nsISupports* GetParentObject() const
   {
     return mOwner;
   }
 
   virtual JSObject* WrapObject(JSContext* aCx,
                                JS::Handle<JSObject*> aScope) MOZ_OVERRIDE
   {
-    return mozilla::dom::MutationRecordBinding::Wrap(aCx, aScope, this);
+    return mozilla::dom::MutationRecordBinding::Wrap(aCx, this);
   }
 
   NS_DECL_CYCLE_COLLECTING_ISUPPORTS
   NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(nsDOMMutationRecord)
 
   void GetType(mozilla::dom::DOMString& aRetVal) const
   {
     aRetVal.SetOwnedAtom(mType, mozilla::dom::DOMString::eNullNotExpected);
@@ -358,17 +358,17 @@ public:
   static already_AddRefed<nsDOMMutationObserver>
   Constructor(const mozilla::dom::GlobalObject& aGlobal,
               mozilla::dom::MutationCallback& aCb,
               mozilla::ErrorResult& aRv);
 
   virtual JSObject* WrapObject(JSContext* aCx,
                                JS::Handle<JSObject*> aScope) MOZ_OVERRIDE
   {
-    return mozilla::dom::MutationObserverBinding::Wrap(aCx, aScope, this);
+    return mozilla::dom::MutationObserverBinding::Wrap(aCx, this);
   }
 
   nsISupports* GetParentObject() const
   {
     return mOwner;
   }
 
   void Observe(nsINode& aTarget,
--- a/content/base/src/nsDOMSerializer.h
+++ b/content/base/src/nsDOMSerializer.h
@@ -47,17 +47,17 @@ public:
   nsISupports* GetParentObject() const
   {
     return mOwner;
   }
 
   virtual JSObject* WrapObject(JSContext* aCx,
                                JS::Handle<JSObject*> aScope) MOZ_OVERRIDE
   {
-    return mozilla::dom::XMLSerializerBinding::Wrap(aCx, aScope, this);
+    return mozilla::dom::XMLSerializerBinding::Wrap(aCx, this);
   }
 
 private:
   nsDOMSerializer(nsISupports* aOwner) : mOwner(aOwner)
   {
     MOZ_ASSERT(aOwner);
     SetIsDOMBinding();
   }
--- a/content/base/src/nsDOMSettableTokenList.cpp
+++ b/content/base/src/nsDOMSettableTokenList.cpp
@@ -18,10 +18,10 @@ nsDOMSettableTokenList::SetValue(const n
   }
 
   rv = mElement->SetAttr(kNameSpaceID_None, mAttrAtom, aValue, true);
 }
 
 JSObject*
 nsDOMSettableTokenList::WrapObject(JSContext *cx, JS::Handle<JSObject*> scope)
 {
-  return mozilla::dom::DOMSettableTokenListBinding::Wrap(cx, scope, this);
+  return mozilla::dom::DOMSettableTokenListBinding::Wrap(cx, this);
 }
--- a/content/base/src/nsDOMTokenList.cpp
+++ b/content/base/src/nsDOMTokenList.cpp
@@ -306,11 +306,11 @@ nsDOMTokenList::Stringify(nsAString& aRe
   }
 
   mElement->GetAttr(kNameSpaceID_None, mAttrAtom, aResult);
 }
 
 JSObject*
 nsDOMTokenList::WrapObject(JSContext *cx, JS::Handle<JSObject*> scope)
 {
-  return DOMTokenListBinding::Wrap(cx, scope, this);
+  return DOMTokenListBinding::Wrap(cx, this);
 }
 
--- a/content/base/src/nsFormData.cpp
+++ b/content/base/src/nsFormData.cpp
@@ -98,17 +98,17 @@ nsFormData::Append(const nsAString& aNam
 
   Append(aName, valAsString);
   return NS_OK;
 }
 
 /* virtual */ JSObject*
 nsFormData::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return FormDataBinding::Wrap(aCx, aScope, this);
+  return FormDataBinding::Wrap(aCx, this);
 }
 
 /* static */ already_AddRefed<nsFormData>
 nsFormData::Constructor(const GlobalObject& aGlobal,
                         const Optional<NonNull<HTMLFormElement> >& aFormElement,
                         ErrorResult& aRv)
 {
   nsRefPtr<nsFormData> formData = new nsFormData(aGlobal.GetAsSupports());
--- a/content/base/src/nsRange.cpp
+++ b/content/base/src/nsRange.cpp
@@ -36,17 +36,17 @@
 #include "nsCSSFrameConstructor.h"
 
 using namespace mozilla;
 using namespace mozilla::dom;
 
 JSObject*
 nsRange::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return RangeBinding::Wrap(aCx, aScope, this);
+  return RangeBinding::Wrap(aCx, this);
 }
 
 /******************************************************
  * stack based utilty class for managing monitor
  ******************************************************/
 
 static void InvalidateAllFrames(nsINode* aNode)
 {
--- a/content/base/src/nsTextNode.cpp
+++ b/content/base/src/nsTextNode.cpp
@@ -97,17 +97,17 @@ nsTextNode::~nsTextNode()
 }
 
 NS_IMPL_ISUPPORTS_INHERITED3(nsTextNode, nsGenericDOMDataNode, nsIDOMNode,
                              nsIDOMText, nsIDOMCharacterData)
 
 JSObject*
 nsTextNode::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return TextBinding::Wrap(aCx, aScope, this);
+  return TextBinding::Wrap(aCx, this);
 }
 
 bool
 nsTextNode::IsNodeOfType(uint32_t aFlags) const
 {
   return !(aFlags & ~(eCONTENT | eTEXT | eDATA_NODE));
 }
 
--- a/content/base/src/nsXMLHttpRequest.cpp
+++ b/content/base/src/nsXMLHttpRequest.cpp
@@ -261,17 +261,17 @@ NS_INTERFACE_MAP_BEGIN(nsXMLHttpRequestU
 NS_INTERFACE_MAP_END_INHERITING(nsXHREventTarget)
 
 NS_IMPL_ADDREF_INHERITED(nsXMLHttpRequestUpload, nsXHREventTarget)
 NS_IMPL_RELEASE_INHERITED(nsXMLHttpRequestUpload, nsXHREventTarget)
 
 /* virtual */ JSObject*
 nsXMLHttpRequestUpload::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return XMLHttpRequestUploadBinding::Wrap(aCx, aScope, this);
+  return XMLHttpRequestUploadBinding::Wrap(aCx, this);
 }
 
 /////////////////////////////////////////////
 //
 //
 /////////////////////////////////////////////
 
 bool
--- a/content/base/src/nsXMLHttpRequest.h
+++ b/content/base/src/nsXMLHttpRequest.h
@@ -180,17 +180,17 @@ class nsXMLHttpRequest : public nsXHREve
 
 public:
   nsXMLHttpRequest();
   virtual ~nsXMLHttpRequest();
 
   virtual JSObject* WrapObject(JSContext *cx,
                                JS::Handle<JSObject*> scope) MOZ_OVERRIDE
   {
-    return mozilla::dom::XMLHttpRequestBinding::Wrap(cx, scope, this);
+    return mozilla::dom::XMLHttpRequestBinding::Wrap(cx, this);
   }
   nsISupports* GetParentObject()
   {
     return GetOwner();
   }
 
   // The WebIDL constructors.
   static already_AddRefed<nsXMLHttpRequest>
--- a/content/canvas/src/CanvasGradient.h
+++ b/content/canvas/src/CanvasGradient.h
@@ -50,17 +50,17 @@ public:
     return mStops;
   }
 
   // WebIDL
   void AddColorStop(float offset, const nsAString& colorstr, ErrorResult& rv);
 
   JSObject* WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope) MOZ_OVERRIDE
   {
-    return CanvasGradientBinding::Wrap(aCx, aScope, this);
+    return CanvasGradientBinding::Wrap(aCx, this);
   }
 
   CanvasRenderingContext2D* GetParentObject()
   {
     return mContext;
   }
 
 protected:
--- a/content/canvas/src/CanvasPattern.h
+++ b/content/canvas/src/CanvasPattern.h
@@ -48,17 +48,17 @@ public:
     , mForceWriteOnly(forceWriteOnly)
     , mCORSUsed(CORSUsed)
   {
     SetIsDOMBinding();
   }
 
   JSObject* WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope) MOZ_OVERRIDE
   {
-    return CanvasPatternBinding::Wrap(aCx, aScope, this);
+    return CanvasPatternBinding::Wrap(aCx, this);
   }
 
   CanvasRenderingContext2D* GetParentObject()
   {
     return mContext;
   }
 
   nsRefPtr<CanvasRenderingContext2D> mContext;
--- a/content/canvas/src/CanvasRenderingContext2D.cpp
+++ b/content/canvas/src/CanvasRenderingContext2D.cpp
@@ -559,17 +559,17 @@ CanvasRenderingContext2D::~CanvasRenderi
   }
 
   RemoveDemotableContext(this);
 }
 
 JSObject*
 CanvasRenderingContext2D::WrapObject(JSContext *cx, JS::Handle<JSObject*> scope)
 {
-  return CanvasRenderingContext2DBinding::Wrap(cx, scope, this);
+  return CanvasRenderingContext2DBinding::Wrap(cx, this);
 }
 
 bool
 CanvasRenderingContext2D::ParseColor(const nsAString& aString,
                                      nscolor* aColor)
 {
   nsIDocument* document = mCanvasElement
                           ? mCanvasElement->OwnerDoc()
@@ -4365,17 +4365,17 @@ CanvasPath::CanvasPath(nsCOMPtr<nsISuppo
   if (!mPathBuilder) {
     mPathBuilder = gfxPlatform::GetPlatform()->ScreenReferenceDrawTarget()->CreatePathBuilder();
   }
 }
 
 JSObject*
 CanvasPath::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return Path2DBinding::Wrap(aCx, aScope, this);
+  return Path2DBinding::Wrap(aCx, this);
 }
 
 already_AddRefed<CanvasPath>
 CanvasPath::Constructor(const GlobalObject& aGlobal, ErrorResult& aRv)
 {
   nsRefPtr<CanvasPath> path = new CanvasPath(aGlobal.GetAsSupports());
   return path.forget();
 }
--- a/content/canvas/src/ImageData.cpp
+++ b/content/canvas/src/ImageData.cpp
@@ -102,13 +102,13 @@ ImageData::DropData()
     mData = nullptr;
     mozilla::DropJSObjects(this);
   }
 }
 
 JSObject*
 ImageData::WrapObject(JSContext* cx, JS::Handle<JSObject*> scope)
 {
-  return ImageDataBinding::Wrap(cx, scope, this);
+  return ImageDataBinding::Wrap(cx, this);
 }
 
 } // namespace dom
 } // namespace mozilla
--- a/content/canvas/src/TextMetrics.h
+++ b/content/canvas/src/TextMetrics.h
@@ -28,17 +28,17 @@ public:
   float Width() const
   {
     return width;
   }
 
   JSObject* WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope,
                        bool* aTookOwnership)
   {
-    return TextMetricsBinding::Wrap(aCx, aScope, this, aTookOwnership);
+    return TextMetricsBinding::Wrap(aCx, this, aTookOwnership);
   }
 
 private:
   float width;
 };
 
 } // namespace dom
 } // namespace mozilla
--- a/content/canvas/src/WebGL1Context.cpp
+++ b/content/canvas/src/WebGL1Context.cpp
@@ -26,17 +26,17 @@ WebGL1Context::~WebGL1Context()
 
 
 // -----------------------------------------------------------------------------
 // IMPLEMENT nsWrapperCache
 
 JSObject*
 WebGL1Context::WrapObject(JSContext *cx, JS::Handle<JSObject*> scope)
 {
-    return dom::WebGLRenderingContextBinding::Wrap(cx, scope, this);
+    return dom::WebGLRenderingContextBinding::Wrap(cx, this);
 }
 
 
 // -----------------------------------------------------------------------------
 // INSTANCING nsIDOMWebGLRenderingContext
 
 nsresult
 NS_NewCanvasRenderingContextWebGL(nsIDOMWebGLRenderingContext** aResult)
--- a/content/canvas/src/WebGL2Context.cpp
+++ b/content/canvas/src/WebGL2Context.cpp
@@ -45,17 +45,17 @@ WebGL2Context::Create()
 
 
 // -----------------------------------------------------------------------------
 // IMPLEMENT nsWrapperCache
 
 JSObject*
 WebGL2Context::WrapObject(JSContext *cx, JS::Handle<JSObject*> scope)
 {
-    return dom::WebGL2RenderingContextBinding::Wrap(cx, scope, this);
+    return dom::WebGL2RenderingContextBinding::Wrap(cx, this);
 }
 
 
 // -----------------------------------------------------------------------------
 // WebGL 2 initialisation
 
 bool
 WebGLContext::InitWebGL2()
--- a/content/canvas/src/WebGLActiveInfo.cpp
+++ b/content/canvas/src/WebGLActiveInfo.cpp
@@ -6,10 +6,10 @@
 #include "WebGLContext.h"
 #include "WebGLTexture.h"
 #include "mozilla/dom/WebGLRenderingContextBinding.h"
 
 using namespace mozilla;
 
 JSObject*
 WebGLActiveInfo::WrapObject(JSContext *cx, JS::Handle<JSObject*> scope) {
-    return dom::WebGLActiveInfoBinding::Wrap(cx, scope, this);
+    return dom::WebGLActiveInfoBinding::Wrap(cx, this);
 }
--- a/content/canvas/src/WebGLBuffer.cpp
+++ b/content/canvas/src/WebGLBuffer.cpp
@@ -70,15 +70,15 @@ WebGLBuffer::Validate(GLenum type, uint3
                       uint32_t* out_upperBound)
 {
     return mCache->Validate(type, max_allowed, first, count, out_upperBound);
 }
 
 
 JSObject*
 WebGLBuffer::WrapObject(JSContext *cx, JS::Handle<JSObject*> scope) {
-    return dom::WebGLBufferBinding::Wrap(cx, scope, this);
+    return dom::WebGLBufferBinding::Wrap(cx, this);
 }
 
 NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE_0(WebGLBuffer)
 
 NS_IMPL_CYCLE_COLLECTION_ROOT_NATIVE(WebGLBuffer, AddRef)
 NS_IMPL_CYCLE_COLLECTION_UNROOT_NATIVE(WebGLBuffer, Release)
--- a/content/canvas/src/WebGLExtensions.h
+++ b/content/canvas/src/WebGLExtensions.h
@@ -41,17 +41,17 @@ protected:
 
 #define DECL_WEBGL_EXTENSION_GOOP                                           \
     virtual JSObject* WrapObject(JSContext *cx,                             \
                                  JS::Handle<JSObject*> scope) MOZ_OVERRIDE;
 
 #define IMPL_WEBGL_EXTENSION_GOOP(WebGLExtensionType) \
     JSObject* \
     WebGLExtensionType::WrapObject(JSContext *cx, JS::Handle<JSObject*> scope) { \
-        return dom::WebGLExtensionType##Binding::Wrap(cx, scope, this); \
+        return dom::WebGLExtensionType##Binding::Wrap(cx, this); \
     }
 
 class WebGLExtensionCompressedTextureATC
     : public WebGLExtensionBase
 {
 public:
     WebGLExtensionCompressedTextureATC(WebGLContext*);
     virtual ~WebGLExtensionCompressedTextureATC();
--- a/content/canvas/src/WebGLFramebuffer.cpp
+++ b/content/canvas/src/WebGLFramebuffer.cpp
@@ -15,17 +15,17 @@
 #include "WebGLContextUtils.h"
 
 using namespace mozilla;
 using namespace mozilla::gl;
 
 JSObject*
 WebGLFramebuffer::WrapObject(JSContext* cx, JS::Handle<JSObject*> scope)
 {
-    return dom::WebGLFramebufferBinding::Wrap(cx, scope, this);
+    return dom::WebGLFramebufferBinding::Wrap(cx, this);
 }
 
 WebGLFramebuffer::WebGLFramebuffer(WebGLContext* context)
     : WebGLContextBoundObject(context)
     , mStatus(0)
     , mHasEverBeenBound(false)
     , mDepthAttachment(LOCAL_GL_DEPTH_ATTACHMENT)
     , mStencilAttachment(LOCAL_GL_STENCIL_ATTACHMENT)
--- a/content/canvas/src/WebGLProgram.cpp
+++ b/content/canvas/src/WebGLProgram.cpp
@@ -41,17 +41,17 @@ static bool SplitLastSquareBracket(nsACS
     *s = 0;
     string.EndWriting();
     string.SetLength(s - string_start);
     return true;
 }
 
 JSObject*
 WebGLProgram::WrapObject(JSContext *cx, JS::Handle<JSObject*> scope) {
-    return dom::WebGLProgramBinding::Wrap(cx, scope, this);
+    return dom::WebGLProgramBinding::Wrap(cx, this);
 }
 
 WebGLProgram::WebGLProgram(WebGLContext *context)
     : WebGLContextBoundObject(context)
     , mLinkStatus(false)
     , mGeneration(0)
     , mAttribMaxNameLength(0)
 {
--- a/content/canvas/src/WebGLQuery.cpp
+++ b/content/canvas/src/WebGLQuery.cpp
@@ -8,17 +8,17 @@
 #include "WebGLQuery.h"
 #include "mozilla/dom/WebGL2RenderingContextBinding.h"
 #include "nsContentUtils.h"
 
 using namespace mozilla;
 
 JSObject*
 WebGLQuery::WrapObject(JSContext *cx, JS::Handle<JSObject*> scope) {
-    return dom::WebGLQueryBinding::Wrap(cx, scope, this);
+    return dom::WebGLQueryBinding::Wrap(cx, this);
 }
 
 WebGLQuery::WebGLQuery(WebGLContext* context)
     : WebGLContextBoundObject(context)
     , mGLName(0)
     , mType(0)
 {
     SetIsDOMBinding();
--- a/content/canvas/src/WebGLRenderbuffer.cpp
+++ b/content/canvas/src/WebGLRenderbuffer.cpp
@@ -34,17 +34,17 @@ NeedsDepthStencilEmu(GLContext* gl, GLen
     if (internalFormat != LOCAL_GL_DEPTH24_STENCIL8)
         return false;
 
     return !SupportsDepthStencil(gl);
 }
 
 JSObject*
 WebGLRenderbuffer::WrapObject(JSContext *cx, JS::Handle<JSObject*> scope) {
-    return dom::WebGLRenderbufferBinding::Wrap(cx, scope, this);
+    return dom::WebGLRenderbufferBinding::Wrap(cx, this);
 }
 
 WebGLRenderbuffer::WebGLRenderbuffer(WebGLContext *context)
     : WebGLContextBoundObject(context)
     , mPrimaryRB(0)
     , mSecondaryRB(0)
     , mInternalFormat(0)
     , mInternalFormatForGL(0)
--- a/content/canvas/src/WebGLShader.cpp
+++ b/content/canvas/src/WebGLShader.cpp
@@ -9,17 +9,17 @@
 #include "mozilla/MemoryReporting.h"
 #include "mozilla/dom/WebGLRenderingContextBinding.h"
 #include "GLContext.h"
 
 using namespace mozilla;
 
 JSObject*
 WebGLShader::WrapObject(JSContext *cx, JS::Handle<JSObject*> scope) {
-    return dom::WebGLShaderBinding::Wrap(cx, scope, this);
+    return dom::WebGLShaderBinding::Wrap(cx, this);
 }
 
 WebGLShader::WebGLShader(WebGLContext *context, GLenum stype)
     : WebGLContextBoundObject(context)
     , mType(stype)
     , mNeedsTranslation(true)
     , mAttribMaxNameLength(0)
     , mCompileStatus(false)
--- a/content/canvas/src/WebGLShaderPrecisionFormat.cpp
+++ b/content/canvas/src/WebGLShaderPrecisionFormat.cpp
@@ -7,10 +7,10 @@
 #include "WebGLShaderPrecisionFormat.h"
 #include "mozilla/dom/WebGLRenderingContextBinding.h"
 
 using namespace mozilla;
 
 JSObject*
 WebGLShaderPrecisionFormat::WrapObject(JSContext *cx, JS::Handle<JSObject*> scope)
 {
-    return dom::WebGLShaderPrecisionFormatBinding::Wrap(cx, scope, this);
+    return dom::WebGLShaderPrecisionFormatBinding::Wrap(cx, this);
 }
--- a/content/canvas/src/WebGLTexture.cpp
+++ b/content/canvas/src/WebGLTexture.cpp
@@ -10,17 +10,17 @@
 #include "WebGLTexelConversions.h"
 #include "mozilla/dom/WebGLRenderingContextBinding.h"
 #include <algorithm>
 
 using namespace mozilla;
 
 JSObject*
 WebGLTexture::WrapObject(JSContext *cx, JS::Handle<JSObject*> scope) {
-    return dom::WebGLTextureBinding::Wrap(cx, scope, this);
+    return dom::WebGLTextureBinding::Wrap(cx, this);
 }
 
 WebGLTexture::WebGLTexture(WebGLContext *context)
     : WebGLContextBoundObject(context)
     , mHasEverBeenBound(false)
     , mTarget(0)
     , mMinFilter(LOCAL_GL_NEAREST_MIPMAP_LINEAR)
     , mMagFilter(LOCAL_GL_LINEAR)
--- a/content/canvas/src/WebGLUniformLocation.cpp
+++ b/content/canvas/src/WebGLUniformLocation.cpp
@@ -9,17 +9,17 @@
 #include "WebGLProgram.h"
 #include "mozilla/dom/WebGLRenderingContextBinding.h"
 
 using namespace mozilla;
 
 JSObject*
 WebGLUniformLocation::WrapObject(JSContext *cx, JS::Handle<JSObject*> scope)
 {
-    return dom::WebGLUniformLocationBinding::Wrap(cx, scope, this);
+    return dom::WebGLUniformLocationBinding::Wrap(cx, this);
 }
 
 WebGLUniformLocation::WebGLUniformLocation(WebGLContext *context, WebGLProgram *program, GLint location, const WebGLUniformInfo& info)
     : WebGLContextBoundObject(context)
     , mProgram(program)
     , mProgramGeneration(program->Generation())
     , mLocation(location)
     , mInfo(info)
--- a/content/canvas/src/WebGLVertexArray.cpp
+++ b/content/canvas/src/WebGLVertexArray.cpp
@@ -8,17 +8,17 @@
 #include "WebGLVertexArray.h"
 #include "mozilla/dom/WebGLRenderingContextBinding.h"
 #include "GLContext.h"
 
 using namespace mozilla;
 
 JSObject*
 WebGLVertexArray::WrapObject(JSContext *cx, JS::Handle<JSObject*> scope) {
-    return dom::WebGLVertexArrayBinding::Wrap(cx, scope, this);
+    return dom::WebGLVertexArrayBinding::Wrap(cx, this);
 }
 
 WebGLVertexArray::WebGLVertexArray(WebGLContext* context)
     : WebGLContextBoundObject(context)
     , mGLName(0)
     , mHasEverBeenBound(false)
 {
     SetIsDOMBinding();
--- a/content/html/content/src/HTMLAnchorElement.cpp
+++ b/content/html/content/src/HTMLAnchorElement.cpp
@@ -66,17 +66,17 @@ NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN_IN
   NS_IMPL_CYCLE_COLLECTION_UNLINK(mRelList)
 NS_IMPL_CYCLE_COLLECTION_UNLINK_END
 
 NS_IMPL_ELEMENT_CLONE(HTMLAnchorElement)
 
 JSObject*
 HTMLAnchorElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return HTMLAnchorElementBinding::Wrap(aCx, aScope, this);
+  return HTMLAnchorElementBinding::Wrap(aCx, this);
 }
 
 NS_IMPL_STRING_ATTR(HTMLAnchorElement, Charset, charset)
 NS_IMPL_STRING_ATTR(HTMLAnchorElement, Coords, coords)
 NS_IMPL_URI_ATTR(HTMLAnchorElement, Href, href)
 NS_IMPL_STRING_ATTR(HTMLAnchorElement, Hreflang, hreflang)
 NS_IMPL_STRING_ATTR(HTMLAnchorElement, Name, name)
 NS_IMPL_STRING_ATTR(HTMLAnchorElement, Rel, rel)
--- a/content/html/content/src/HTMLAreaElement.cpp
+++ b/content/html/content/src/HTMLAreaElement.cpp
@@ -257,13 +257,13 @@ HTMLAreaElement::SizeOfExcludingThis(moz
 {
   return nsGenericHTMLElement::SizeOfExcludingThis(aMallocSizeOf) +
          Link::SizeOfExcludingThis(aMallocSizeOf);
 }
 
 JSObject*
 HTMLAreaElement::WrapNode(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return HTMLAreaElementBinding::Wrap(aCx, aScope, this);
+  return HTMLAreaElementBinding::Wrap(aCx, this);
 }
 
 } // namespace dom
 } // namespace mozilla
--- a/content/html/content/src/HTMLAudioElement.cpp
+++ b/content/html/content/src/HTMLAudioElement.cpp
@@ -92,13 +92,13 @@ nsresult HTMLAudioElement::SetAcceptHead
     return aChannel->SetRequestHeader(NS_LITERAL_CSTRING("Accept"),
                                       value,
                                       false);
 }
 
 JSObject*
 HTMLAudioElement::WrapNode(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return HTMLAudioElementBinding::Wrap(aCx, aScope, this);
+  return HTMLAudioElementBinding::Wrap(aCx, this);
 }
 
 } // namespace dom
 } // namespace mozilla
--- a/content/html/content/src/HTMLBRElement.cpp
+++ b/content/html/content/src/HTMLBRElement.cpp
@@ -92,13 +92,13 @@ nsMapRuleToAttributesFunc
 HTMLBRElement::GetAttributeMappingFunction() const
 {
   return &MapAttributesIntoRule;
 }
 
 JSObject*
 HTMLBRElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return HTMLBRElementBinding::Wrap(aCx, aScope, this);
+  return HTMLBRElementBinding::Wrap(aCx, this);
 }
 
 } // namespace dom
 } // namespace mozilla
--- a/content/html/content/src/HTMLBodyElement.cpp
+++ b/content/html/content/src/HTMLBodyElement.cpp
@@ -186,17 +186,17 @@ HTMLBodyElement::~HTMLBodyElement()
   if (mContentStyleRule) {
     mContentStyleRule->mPart = nullptr;
   }
 }
 
 JSObject*
 HTMLBodyElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return HTMLBodyElementBinding::Wrap(aCx, aScope, this);
+  return HTMLBodyElementBinding::Wrap(aCx, this);
 }
 
 NS_IMPL_ISUPPORTS_INHERITED1(HTMLBodyElement, nsGenericHTMLElement,
                              nsIDOMHTMLBodyElement)
 
 NS_IMPL_ELEMENT_CLONE(HTMLBodyElement)
 
 NS_IMETHODIMP 
--- a/content/html/content/src/HTMLButtonElement.cpp
+++ b/content/html/content/src/HTMLButtonElement.cpp
@@ -537,13 +537,13 @@ HTMLButtonElement::IntrinsicState() cons
   }
 
   return state;
 }
 
 JSObject*
 HTMLButtonElement::WrapNode(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return HTMLButtonElementBinding::Wrap(aCx, aScope, this);
+  return HTMLButtonElementBinding::Wrap(aCx, this);
 }
 
 } // namespace dom
 } // namespace mozilla
--- a/content/html/content/src/HTMLCanvasElement.cpp
+++ b/content/html/content/src/HTMLCanvasElement.cpp
@@ -69,17 +69,17 @@ HTMLCanvasPrintState::HTMLCanvasPrintSta
 
 HTMLCanvasPrintState::~HTMLCanvasPrintState()
 {
 }
 
 /* virtual */ JSObject*
 HTMLCanvasPrintState::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return MozCanvasPrintStateBinding::Wrap(aCx, aScope, this);
+  return MozCanvasPrintStateBinding::Wrap(aCx, this);
 }
 
 nsISupports*
 HTMLCanvasPrintState::Context() const
 {
   return mContext;
 }
 
@@ -136,17 +136,17 @@ NS_INTERFACE_TABLE_HEAD_CYCLE_COLLECTION
                                 nsICanvasElementExternal)
 NS_INTERFACE_TABLE_TAIL_INHERITING(nsGenericHTMLElement)
 
 NS_IMPL_ELEMENT_CLONE(HTMLCanvasElement)
 
 /* virtual */ JSObject*
 HTMLCanvasElement::WrapNode(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return HTMLCanvasElementBinding::Wrap(aCx, aScope, this);
+  return HTMLCanvasElementBinding::Wrap(aCx, this);
 }
 
 nsIntSize
 HTMLCanvasElement::GetWidthHeight()
 {
   nsIntSize size(DEFAULT_CANVAS_WIDTH, DEFAULT_CANVAS_HEIGHT);
   const nsAttrValue* value;
 
--- a/content/html/content/src/HTMLContentElement.cpp
+++ b/content/html/content/src/HTMLContentElement.cpp
@@ -41,17 +41,17 @@ NS_IMPL_RELEASE_INHERITED(HTMLContentEle
 NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION_INHERITED(HTMLContentElement)
 NS_INTERFACE_MAP_END_INHERITING(nsGenericHTMLElement)
 
 NS_IMPL_ELEMENT_CLONE(HTMLContentElement)
 
 JSObject*
 HTMLContentElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return HTMLContentElementBinding::Wrap(aCx, aScope, this);
+  return HTMLContentElementBinding::Wrap(aCx, this);
 }
 
 nsresult
 HTMLContentElement::BindToTree(nsIDocument* aDocument,
                                nsIContent* aParent,
                                nsIContent* aBindingParent,
                                bool aCompileEventHandlers)
 {
@@ -312,11 +312,11 @@ int32_t
 DistributedContentList::IndexOf(nsIContent* aContent)
 {
   return mDistributedNodes.IndexOf(aContent);
 }
 
 JSObject*
 DistributedContentList::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return NodeListBinding::Wrap(aCx, aScope, this);
+  return NodeListBinding::Wrap(aCx, this);
 }
 
--- a/content/html/content/src/HTMLDataElement.cpp
+++ b/content/html/content/src/HTMLDataElement.cpp
@@ -21,17 +21,17 @@ HTMLDataElement::~HTMLDataElement()
 {
 }
 
 NS_IMPL_ELEMENT_CLONE(HTMLDataElement)
 
 JSObject*
 HTMLDataElement::WrapNode(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return HTMLDataElementBinding::Wrap(aCx, aScope, this);
+  return HTMLDataElementBinding::Wrap(aCx, this);
 }
 
 void
 HTMLDataElement::GetItemValueText(nsAString& text)
 {
   GetValue(text);
 }
 
--- a/content/html/content/src/HTMLDataListElement.cpp
+++ b/content/html/content/src/HTMLDataListElement.cpp
@@ -13,17 +13,17 @@ namespace dom {
 
 HTMLDataListElement::~HTMLDataListElement()
 {
 }
 
 JSObject*
 HTMLDataListElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return HTMLDataListElementBinding::Wrap(aCx, aScope, this);
+  return HTMLDataListElementBinding::Wrap(aCx, this);
 }
 
 NS_IMPL_CYCLE_COLLECTION_INHERITED_1(HTMLDataListElement, nsGenericHTMLElement,
                                      mOptions)
 
 NS_IMPL_ADDREF_INHERITED(HTMLDataListElement, Element)
 NS_IMPL_RELEASE_INHERITED(HTMLDataListElement, Element)
 
--- a/content/html/content/src/HTMLDivElement.cpp
+++ b/content/html/content/src/HTMLDivElement.cpp
@@ -21,17 +21,17 @@ HTMLDivElement::~HTMLDivElement()
 NS_IMPL_ISUPPORTS_INHERITED1(HTMLDivElement, nsGenericHTMLElement,
                              nsIDOMHTMLDivElement)
 
 NS_IMPL_ELEMENT_CLONE(HTMLDivElement)
 
 JSObject*
 HTMLDivElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return dom::HTMLDivElementBinding::Wrap(aCx, aScope, this);
+  return dom::HTMLDivElementBinding::Wrap(aCx, this);
 }
 
 bool
 HTMLDivElement::ParseAttribute(int32_t aNamespaceID,
                                nsIAtom* aAttribute,
                                const nsAString& aValue,
                                nsAttrValue& aResult)
 {
--- a/content/html/content/src/HTMLElement.cpp
+++ b/content/html/content/src/HTMLElement.cpp
@@ -56,17 +56,17 @@ HTMLElement::GetInnerHTML(nsAString& aIn
   }
 
   return nsGenericHTMLElement::GetInnerHTML(aInnerHTML);
 }
 
 JSObject*
 HTMLElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return dom::HTMLElementBinding::Wrap(aCx, aScope, this);
+  return dom::HTMLElementBinding::Wrap(aCx, this);
 }
 
 } // namespace dom
 } // namespace mozilla
 
 // Here, we expand 'NS_IMPL_NS_NEW_HTML_ELEMENT()' by hand.
 // (Calling the macro directly (with no args) produces compiler warnings.)
 nsGenericHTMLElement*
--- a/content/html/content/src/HTMLFieldSetElement.cpp
+++ b/content/html/content/src/HTMLFieldSetElement.cpp
@@ -367,13 +367,13 @@ HTMLFieldSetElement::IntrinsicState() co
   }
 
   return state;
 }
 
 JSObject*
 HTMLFieldSetElement::WrapNode(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return HTMLFieldSetElementBinding::Wrap(aCx, aScope, this);
+  return HTMLFieldSetElementBinding::Wrap(aCx, this);
 }
 
 } // namespace dom
 } // namespace mozilla
--- a/content/html/content/src/HTMLFontElement.cpp
+++ b/content/html/content/src/HTMLFontElement.cpp
@@ -17,17 +17,17 @@ namespace dom {
 
 HTMLFontElement::~HTMLFontElement()
 {
 }
 
 JSObject*
 HTMLFontElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return HTMLFontElementBinding::Wrap(aCx, aScope, this);
+  return HTMLFontElementBinding::Wrap(aCx, this);
 }
 
 NS_IMPL_ELEMENT_CLONE(HTMLFontElement)
 
 bool
 HTMLFontElement::ParseAttribute(int32_t aNamespaceID,
                                 nsIAtom* aAttribute,
                                 const nsAString& aValue,
--- a/content/html/content/src/HTMLFormControlsCollection.cpp
+++ b/content/html/content/src/HTMLFormControlsCollection.cpp
@@ -403,13 +403,13 @@ HTMLFormControlsCollection::GetSupported
   // this enumeration.
   mNameLookupTable.EnumerateRead(CollectNames, &aNames);
 }
 
 /* virtual */ JSObject*
 HTMLFormControlsCollection::WrapObject(JSContext* aCx,
                                        JS::Handle<JSObject*> aScope)
 {
-  return HTMLFormControlsCollectionBinding::Wrap(aCx, aScope, this);
+  return HTMLFormControlsCollectionBinding::Wrap(aCx, this);
 }
 
 } // namespace dom
 } // namespace mozilla
--- a/content/html/content/src/HTMLFormElement.cpp
+++ b/content/html/content/src/HTMLFormElement.cpp
@@ -2363,13 +2363,13 @@ HTMLFormElement::AddToPastNamesMap(const
   if (node) {
     mPastNameLookupTable.Put(aName, aChild);
   }
 }
  
 JSObject*
 HTMLFormElement::WrapNode(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return HTMLFormElementBinding::Wrap(aCx, aScope, this);
+  return HTMLFormElementBinding::Wrap(aCx, this);
 }
 
 } // namespace dom
 } // namespace mozilla
--- a/content/html/content/src/HTMLFrameElement.cpp
+++ b/content/html/content/src/HTMLFrameElement.cpp
@@ -78,13 +78,13 @@ HTMLFrameElement::ParseAttribute(int32_t
 
   return nsGenericHTMLFrameElement::ParseAttribute(aNamespaceID, aAttribute,
                                                    aValue, aResult);
 }
 
 JSObject*
 HTMLFrameElement::WrapNode(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return HTMLFrameElementBinding::Wrap(aCx, aScope, this);
+  return HTMLFrameElementBinding::Wrap(aCx, this);
 }
 
 } // namespace mozilla
 } // namespace dom
--- a/content/html/content/src/HTMLFrameSetElement.cpp
+++ b/content/html/content/src/HTMLFrameSetElement.cpp
@@ -15,17 +15,17 @@ namespace dom {
 
 HTMLFrameSetElement::~HTMLFrameSetElement()
 {
 }
 
 JSObject*
 HTMLFrameSetElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return HTMLFrameSetElementBinding::Wrap(aCx, aScope, this);
+  return HTMLFrameSetElementBinding::Wrap(aCx, this);
 }
 
 NS_IMPL_ISUPPORTS_INHERITED1(HTMLFrameSetElement, nsGenericHTMLElement,
                              nsIDOMHTMLFrameSetElement)
 
 NS_IMPL_ELEMENT_CLONE(HTMLFrameSetElement)
 
 NS_IMETHODIMP 
--- a/content/html/content/src/HTMLHRElement.cpp
+++ b/content/html/content/src/HTMLHRElement.cpp
@@ -254,13 +254,13 @@ nsMapRuleToAttributesFunc
 HTMLHRElement::GetAttributeMappingFunction() const
 {
   return &MapAttributesIntoRule;
 }
 
 JSObject*
 HTMLHRElement::WrapNode(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return HTMLHRElementBinding::Wrap(aCx, aScope, this);
+  return HTMLHRElementBinding::Wrap(aCx, this);
 }
 
 } // namespace mozilla
 } // namespace dom
--- a/content/html/content/src/HTMLHeadingElement.cpp
+++ b/content/html/content/src/HTMLHeadingElement.cpp
@@ -24,17 +24,17 @@ HTMLHeadingElement::~HTMLHeadingElement(
 NS_IMPL_ISUPPORTS_INHERITED1(HTMLHeadingElement, nsGenericHTMLElement,
                              nsIDOMHTMLHeadingElement)
 
 NS_IMPL_ELEMENT_CLONE(HTMLHeadingElement)
 
 JSObject*
 HTMLHeadingElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return HTMLHeadingElementBinding::Wrap(aCx, aScope, this);
+  return HTMLHeadingElementBinding::Wrap(aCx, this);
 }
 
 NS_IMPL_STRING_ATTR(HTMLHeadingElement, Align, align)
 
 
 bool
 HTMLHeadingElement::ParseAttribute(int32_t aNamespaceID,
                                    nsIAtom* aAttribute,
--- a/content/html/content/src/HTMLIFrameElement.cpp
+++ b/content/html/content/src/HTMLIFrameElement.cpp
@@ -244,13 +244,13 @@ HTMLIFrameElement::GetSandboxFlags()
 {
   const nsAttrValue* sandboxAttr = GetParsedAttr(nsGkAtoms::sandbox);
   return nsContentUtils::ParseSandboxAttributeToFlags(sandboxAttr);
 }
 
 JSObject*
 HTMLIFrameElement::WrapNode(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return HTMLIFrameElementBinding::Wrap(aCx, aScope, this);
+  return HTMLIFrameElementBinding::Wrap(aCx, this);
 }
 
 } // namespace dom
 } // namespace mozilla
--- a/content/html/content/src/HTMLImageElement.cpp
+++ b/content/html/content/src/HTMLImageElement.cpp
@@ -645,17 +645,17 @@ CORSMode
 HTMLImageElement::GetCORSMode()
 {
   return AttrValueToCORSMode(GetParsedAttr(nsGkAtoms::crossorigin));
 }
 
 JSObject*
 HTMLImageElement::WrapNode(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return HTMLImageElementBinding::Wrap(aCx, aScope, this);
+  return HTMLImageElementBinding::Wrap(aCx, this);
 }
 
 #ifdef DEBUG
 nsIDOMHTMLFormElement*
 HTMLImageElement::GetForm() const
 {
   return mForm;
 }
--- a/content/html/content/src/HTMLInputElement.cpp
+++ b/content/html/content/src/HTMLInputElement.cpp
@@ -7406,15 +7406,15 @@ void
 HTMLInputElement::PickerClosed()
 {
   mPickerRunning = false;
 }
 
 JSObject*
 HTMLInputElement::WrapNode(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return HTMLInputElementBinding::Wrap(aCx, aScope, this);
+  return HTMLInputElementBinding::Wrap(aCx, this);
 }
 
 } // namespace dom
 } // namespace mozilla
 
 #undef NS_ORIGINAL_CHECKED_VALUE
--- a/content/html/content/src/HTMLLIElement.cpp
+++ b/content/html/content/src/HTMLLIElement.cpp
@@ -106,13 +106,13 @@ nsMapRuleToAttributesFunc
 HTMLLIElement::GetAttributeMappingFunction() const
 {
   return &MapAttributesIntoRule;
 }
 
 JSObject*
 HTMLLIElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return HTMLLIElementBinding::Wrap(aCx, aScope, this);
+  return HTMLLIElementBinding::Wrap(aCx, this);
 }
 
 } // namespace dom
 } // namespace mozilla
--- a/content/html/content/src/HTMLLabelElement.cpp
+++ b/content/html/content/src/HTMLLabelElement.cpp
@@ -22,17 +22,17 @@ namespace dom {
 
 HTMLLabelElement::~HTMLLabelElement()
 {
 }
 
 JSObject*
 HTMLLabelElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return HTMLLabelElementBinding::Wrap(aCx, aScope, this);
+  return HTMLLabelElementBinding::Wrap(aCx, this);
 }
 
 // nsISupports
 
 NS_IMPL_ISUPPORTS_INHERITED1(HTMLLabelElement, nsGenericHTMLFormElement,
                              nsIDOMHTMLLabelElement)
 
 // nsIDOMHTMLLabelElement
--- a/content/html/content/src/HTMLLegendElement.cpp
+++ b/content/html/content/src/HTMLLegendElement.cpp
@@ -143,13 +143,13 @@ HTMLLegendElement::GetForm()
   MOZ_ASSERT_IF(form, form->IsHTML(nsGkAtoms::form));
   nsRefPtr<HTMLFormElement> ret = static_cast<HTMLFormElement*>(form);
   return ret.forget();
 }
 
 JSObject*
 HTMLLegendElement::WrapNode(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return HTMLLegendElementBinding::Wrap(aCx, aScope, this);
+  return HTMLLegendElementBinding::Wrap(aCx, this);
 }
 
 } // namespace dom
 } // namespace mozilla
--- a/content/html/content/src/HTMLLinkElement.cpp
+++ b/content/html/content/src/HTMLLinkElement.cpp
@@ -430,13 +430,13 @@ HTMLLinkElement::SizeOfExcludingThis(moz
 {
   return nsGenericHTMLElement::SizeOfExcludingThis(aMallocSizeOf) +
          Link::SizeOfExcludingThis(aMallocSizeOf);
 }
 
 JSObject*
 HTMLLinkElement::WrapNode(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return HTMLLinkElementBinding::Wrap(aCx, aScope, this);
+  return HTMLLinkElementBinding::Wrap(aCx, this);
 }
 
 } // namespace dom
 } // namespace mozilla
--- a/content/html/content/src/HTMLMapElement.cpp
+++ b/content/html/content/src/HTMLMapElement.cpp
@@ -64,13 +64,13 @@ HTMLMapElement::GetAreas(nsIDOMHTMLColle
 
 
 NS_IMPL_STRING_ATTR(HTMLMapElement, Name, name)
 
 
 JSObject*
 HTMLMapElement::WrapNode(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return HTMLMapElementBinding::Wrap(aCx, aScope, this);
+  return HTMLMapElementBinding::Wrap(aCx, this);
 }
 
 } // namespace dom
 } // namespace mozilla
--- a/content/html/content/src/HTMLMenuElement.cpp
+++ b/content/html/content/src/HTMLMenuElement.cpp
@@ -256,13 +256,13 @@ HTMLMenuElement::AddSeparator(nsIMenuBui
  
   aBuilder->AddSeparator();
   aSeparator = ST_TRUE;
 }
 
 JSObject*
 HTMLMenuElement::WrapNode(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return HTMLMenuElementBinding::Wrap(aCx, aScope, this);
+  return HTMLMenuElementBinding::Wrap(aCx, this);
 }
 
 } // namespace dom
 } // namespace mozilla
--- a/content/html/content/src/HTMLMenuItemElement.cpp
+++ b/content/html/content/src/HTMLMenuItemElement.cpp
@@ -482,15 +482,15 @@ HTMLMenuItemElement::InitChecked()
     ClearCheckedVisitor visitor(this);
     WalkRadioGroup(&visitor);
   }
 }
 
 JSObject*
 HTMLMenuItemElement::WrapNode(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return HTMLMenuItemElementBinding::Wrap(aCx, aScope, this);
+  return HTMLMenuItemElementBinding::Wrap(aCx, this);
 }
 
 } // namespace dom
 } // namespace mozilla
 
 #undef NS_ORIGINAL_CHECKED_VALUE
--- a/content/html/content/src/HTMLMetaElement.cpp
+++ b/content/html/content/src/HTMLMetaElement.cpp
@@ -86,13 +86,13 @@ HTMLMetaElement::CreateAndDispatchEvent(
   nsRefPtr<AsyncEventDispatcher> asyncDispatcher =
     new AsyncEventDispatcher(this, aEventName, true, true);
   asyncDispatcher->PostDOMEvent();
 }
 
 JSObject*
 HTMLMetaElement::WrapNode(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return HTMLMetaElementBinding::Wrap(aCx, aScope, this);
+  return HTMLMetaElementBinding::Wrap(aCx, this);
 }
 
 } // namespace dom
 } // namespace mozilla
--- a/content/html/content/src/HTMLMeterElement.cpp
+++ b/content/html/content/src/HTMLMeterElement.cpp
@@ -253,13 +253,13 @@ HTMLMeterElement::GetOptimumState() cons
     return NS_EVENT_STATE_OPTIMUM;
   }
   return NS_EVENT_STATE_SUB_OPTIMUM;
 }
 
 JSObject*
 HTMLMeterElement::WrapNode(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return HTMLMeterElementBinding::Wrap(aCx, aScope, this);
+  return HTMLMeterElementBinding::Wrap(aCx, this);
 }
 
 } // namespace dom
 } // namespace mozilla
--- a/content/html/content/src/HTMLModElement.cpp
+++ b/content/html/content/src/HTMLModElement.cpp
@@ -21,13 +21,13 @@ HTMLModElement::~HTMLModElement()
 {
 }
 
 NS_IMPL_ELEMENT_CLONE(HTMLModElement)
 
 JSObject*
 HTMLModElement::WrapNode(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return HTMLModElementBinding::Wrap(aCx, aScope, this);
+  return HTMLModElementBinding::Wrap(aCx, this);
 }
 
 } // namespace dom
 } // namespace mozilla
--- a/content/html/content/src/HTMLObjectElement.cpp
+++ b/content/html/content/src/HTMLObjectElement.cpp
@@ -440,17 +440,17 @@ HTMLObjectElement::CopyInnerTo(Element* 
 
   return rv;
 }
 
 JSObject*
 HTMLObjectElement::WrapNode(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
   JS::Rooted<JSObject*> obj(aCx,
-    HTMLObjectElementBinding::Wrap(aCx, aScope, this));
+    HTMLObjectElementBinding::Wrap(aCx, this));
   if (!obj) {
     return nullptr;
   }
   SetupProtoChain(aCx, obj);
   return obj;
 }
 
 } // namespace dom
--- a/content/html/content/src/HTMLOptGroupElement.cpp
+++ b/content/html/content/src/HTMLOptGroupElement.cpp
@@ -139,13 +139,13 @@ HTMLOptGroupElement::IntrinsicState() co
   }
 
   return state;
 }
 
 JSObject*
 HTMLOptGroupElement::WrapNode(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return HTMLOptGroupElementBinding::Wrap(aCx, aScope, this);
+  return HTMLOptGroupElementBinding::Wrap(aCx, this);
 }
 
 } // namespace dom
 } // namespace mozilla
--- a/content/html/content/src/HTMLOptionElement.cpp
+++ b/content/html/content/src/HTMLOptionElement.cpp
@@ -425,13 +425,13 @@ HTMLOptionElement::CopyInnerTo(Element* 
     static_cast<HTMLOptionElement*>(aDest)->SetSelected(Selected());
   }
   return NS_OK;
 }
 
 JSObject*
 HTMLOptionElement::WrapNode(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return HTMLOptionElementBinding::Wrap(aCx, aScope, this);
+  return HTMLOptionElementBinding::Wrap(aCx, this);
 }
 
 } // namespace dom
 } // namespace mozilla
--- a/content/html/content/src/HTMLOptionsCollection.cpp
+++ b/content/html/content/src/HTMLOptionsCollection.cpp
@@ -105,17 +105,17 @@ NS_INTERFACE_MAP_END
 
 NS_IMPL_CYCLE_COLLECTING_ADDREF(HTMLOptionsCollection)
 NS_IMPL_CYCLE_COLLECTING_RELEASE(HTMLOptionsCollection)
 
 
 JSObject*
 HTMLOptionsCollection::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return HTMLOptionsCollectionBinding::Wrap(aCx, aScope, this);
+  return HTMLOptionsCollectionBinding::Wrap(aCx, this);
 }
 
 NS_IMETHODIMP
 HTMLOptionsCollection::GetLength(uint32_t* aLength)
 {
   *aLength = mElements.Length();
 
   return NS_OK;
--- a/content/html/content/src/HTMLOutputElement.cpp
+++ b/content/html/content/src/HTMLOutputElement.cpp
@@ -209,13 +209,13 @@ void HTMLOutputElement::ContentRemoved(n
                                        nsIContent* aPreviousSibling)
 {
   DescendantsChanged();
 }
 
 JSObject*
 HTMLOutputElement::WrapNode(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return HTMLOutputElementBinding::Wrap(aCx, aScope, this);
+  return HTMLOutputElementBinding::Wrap(aCx, this);
 }
 
 } // namespace dom
 } // namespace mozilla
--- a/content/html/content/src/HTMLParagraphElement.cpp
+++ b/content/html/content/src/HTMLParagraphElement.cpp
@@ -65,13 +65,13 @@ nsMapRuleToAttributesFunc
 HTMLParagraphElement::GetAttributeMappingFunction() const
 {
   return &MapAttributesIntoRule;
 }
 
 JSObject*
 HTMLParagraphElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return HTMLParagraphElementBinding::Wrap(aCx, aScope, this);
+  return HTMLParagraphElementBinding::Wrap(aCx, this);
 }
 
 } // namespace dom
 } // namespace mozilla
--- a/content/html/content/src/HTMLPreElement.cpp
+++ b/content/html/content/src/HTMLPreElement.cpp
@@ -80,13 +80,13 @@ nsMapRuleToAttributesFunc
 HTMLPreElement::GetAttributeMappingFunction() const
 {
   return &MapAttributesIntoRule;
 }
 
 JSObject*
 HTMLPreElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return HTMLPreElementBinding::Wrap(aCx, aScope, this);
+  return HTMLPreElementBinding::Wrap(aCx, this);
 }
 
 } // namespace dom
 } // namespace mozilla
--- a/content/html/content/src/HTMLProgressElement.cpp
+++ b/content/html/content/src/HTMLProgressElement.cpp
@@ -96,13 +96,13 @@ HTMLProgressElement::IsIndeterminate() c
 {
   const nsAttrValue* attrValue = mAttrsAndChildren.GetAttr(nsGkAtoms::value);
   return !attrValue || attrValue->Type() != nsAttrValue::eDoubleValue;
 }
 
 JSObject*
 HTMLProgressElement::WrapNode(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return HTMLProgressElementBinding::Wrap(aCx, aScope, this);
+  return HTMLProgressElementBinding::Wrap(aCx, this);
 }
 
 } // namespace dom
 } // namespace mozilla
--- a/content/html/content/src/HTMLPropertiesCollection.cpp
+++ b/content/html/content/src/HTMLPropertiesCollection.cpp
@@ -91,17 +91,17 @@ HTMLPropertiesCollection::SetDocument(ns
   }
   mNamedItemEntries.EnumerateRead(SetPropertyListDocument, aDocument);
   mIsDirty = true;
 }
 
 JSObject*
 HTMLPropertiesCollection::WrapObject(JSContext* cx, JS::Handle<JSObject*> scope)
 {
-  return HTMLPropertiesCollectionBinding::Wrap(cx, scope, this);
+  return HTMLPropertiesCollectionBinding::Wrap(cx, this);
 }
 
 NS_IMETHODIMP
 HTMLPropertiesCollection::GetLength(uint32_t* aLength)
 {
   EnsureFresh();
   *aLength = mProperties.Length();
   return NS_OK;
@@ -375,17 +375,17 @@ nsINode*
 PropertyNodeList::GetParentObject()
 {
   return mParent;
 }
 
 JSObject*
 PropertyNodeList::WrapObject(JSContext *cx, JS::Handle<JSObject*> scope)
 {
-  return PropertyNodeListBinding::Wrap(cx, scope, this);
+  return PropertyNodeListBinding::Wrap(cx, this);
 }
 
 NS_IMPL_CYCLE_COLLECTION_CLASS(PropertyNodeList)
 
 NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(PropertyNodeList)
   // SetDocument(nullptr) ensures that we remove ourselves as a mutation observer
   tmp->SetDocument(nullptr);
   NS_IMPL_CYCLE_COLLECTION_UNLINK(mParent)
--- a/content/html/content/src/HTMLScriptElement.cpp
+++ b/content/html/content/src/HTMLScriptElement.cpp
@@ -26,17 +26,17 @@
 NS_IMPL_NS_NEW_HTML_ELEMENT_CHECK_PARSER(Script)
 
 namespace mozilla {
 namespace dom {
 
 JSObject*
 HTMLScriptElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return HTMLScriptElementBinding::Wrap(aCx, aScope, this);
+  return HTMLScriptElementBinding::Wrap(aCx, this);
 }
 
 HTMLScriptElement::HTMLScriptElement(already_AddRefed<nsINodeInfo>& aNodeInfo,
                                      FromParser aFromParser)
   : nsGenericHTMLElement(aNodeInfo)
   , nsScriptElement(aFromParser)
 {
   AddMutationObserver(this);
--- a/content/html/content/src/HTMLSelectElement.cpp
+++ b/content/html/content/src/HTMLSelectElement.cpp
@@ -1905,13 +1905,13 @@ HTMLSelectElement::UpdateSelectedOptions
   if (mSelectedOptions) {
     mSelectedOptions->SetDirty();
   }
 }
 
 JSObject*
 HTMLSelectElement::WrapNode(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return HTMLSelectElementBinding::Wrap(aCx, aScope, this);
+  return HTMLSelectElementBinding::Wrap(aCx, this);
 }
 
 } // namespace dom
 } // namespace mozilla
--- a/content/html/content/src/HTMLShadowElement.cpp
+++ b/content/html/content/src/HTMLShadowElement.cpp
@@ -47,17 +47,17 @@ NS_IMPL_RELEASE_INHERITED(HTMLShadowElem
 NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION_INHERITED(HTMLShadowElement)
 NS_INTERFACE_MAP_END_INHERITING(nsGenericHTMLElement)
 
 NS_IMPL_ELEMENT_CLONE(HTMLShadowElement)
 
 JSObject*
 HTMLShadowElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return HTMLShadowElementBinding::Wrap(aCx, aScope, this);
+  return HTMLShadowElementBinding::Wrap(aCx, this);
 }
 
 void
 HTMLShadowElement::SetProjectedShadow(ShadowRoot* aProjectedShadow)
 {
   if (mProjectedShadow) {
     mProjectedShadow->RemoveMutationObserver(this);
   }
--- a/content/html/content/src/HTMLSharedElement.cpp
+++ b/content/html/content/src/HTMLSharedElement.cpp
@@ -312,29 +312,29 @@ HTMLSharedElement::GetAttributeMappingFu
 
   return nsGenericHTMLElement::GetAttributeMappingFunction();
 }
 
 JSObject*
 HTMLSharedElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
   if (mNodeInfo->Equals(nsGkAtoms::param)) {
-    return HTMLParamElementBinding::Wrap(aCx, aScope, this);
+    return HTMLParamElementBinding::Wrap(aCx, this);
   }
   if (mNodeInfo->Equals(nsGkAtoms::base)) {
-    return HTMLBaseElementBinding::Wrap(aCx, aScope, this);
+    return HTMLBaseElementBinding::Wrap(aCx, this);
   }
   if (mNodeInfo->Equals(nsGkAtoms::dir)) {
-    return HTMLDirectoryElementBinding::Wrap(aCx, aScope, this);
+    return HTMLDirectoryElementBinding::Wrap(aCx, this);
   }
   if (mNodeInfo->Equals(nsGkAtoms::q) ||
       mNodeInfo->Equals(nsGkAtoms::blockquote)) {
-    return HTMLQuoteElementBinding::Wrap(aCx, aScope, this);
+    return HTMLQuoteElementBinding::Wrap(aCx, this);
   }
   if (mNodeInfo->Equals(nsGkAtoms::head)) {
-    return HTMLHeadElementBinding::Wrap(aCx, aScope, this);
+    return HTMLHeadElementBinding::Wrap(aCx, this);
   }
   MOZ_ASSERT(mNodeInfo->Equals(nsGkAtoms::html));
-  return HTMLHtmlElementBinding::Wrap(aCx, aScope, this);
+  return HTMLHtmlElementBinding::Wrap(aCx, this);
 }
 
 } // namespace mozilla
 } // namespace dom
--- a/content/html/content/src/HTMLSharedListElement.cpp
+++ b/content/html/content/src/HTMLSharedListElement.cpp
@@ -141,19 +141,19 @@ HTMLSharedListElement::GetAttributeMappi
 
   return nsGenericHTMLElement::GetAttributeMappingFunction();
 }
 
 JSObject*
 HTMLSharedListElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
   if (mNodeInfo->Equals(nsGkAtoms::ol)) {
-    return HTMLOListElementBinding::Wrap(aCx, aScope, this);
+    return HTMLOListElementBinding::Wrap(aCx, this);
   }
   if (mNodeInfo->Equals(nsGkAtoms::dl)) {
-    return HTMLDListElementBinding::Wrap(aCx, aScope, this);
+    return HTMLDListElementBinding::Wrap(aCx, this);
   }
   MOZ_ASSERT(mNodeInfo->Equals(nsGkAtoms::ul));
-  return HTMLUListElementBinding::Wrap(aCx, aScope, this);
+  return HTMLUListElementBinding::Wrap(aCx, this);
 }
 
 } // namespace dom
 } // namespace mozilla
--- a/content/html/content/src/HTMLSharedObjectElement.cpp
+++ b/content/html/content/src/HTMLSharedObjectElement.cpp
@@ -342,20 +342,20 @@ HTMLSharedObjectElement::CopyInnerTo(Ele
   return rv;
 }
 
 JSObject*
 HTMLSharedObjectElement::WrapNode(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
   JSObject* obj;
   if (mNodeInfo->Equals(nsGkAtoms::applet)) {
-    obj = HTMLAppletElementBinding::Wrap(aCx, aScope, this);
+    obj = HTMLAppletElementBinding::Wrap(aCx, this);
   } else {
     MOZ_ASSERT(mNodeInfo->Equals(nsGkAtoms::embed));
-    obj = HTMLEmbedElementBinding::Wrap(aCx, aScope, this);
+    obj = HTMLEmbedElementBinding::Wrap(aCx, this);
   }
   if (!obj) {
     return nullptr;
   }
   JS::Rooted<JSObject*> rootedObj(aCx, obj);
   SetupProtoChain(aCx, rootedObj);
   return rootedObj;
 }
--- a/content/html/content/src/HTMLSourceElement.cpp
+++ b/content/html/content/src/HTMLSourceElement.cpp
@@ -62,13 +62,13 @@ HTMLSourceElement::BindToTree(nsIDocumen
   media->NotifyAddedSource();
 
   return NS_OK;
 }
 
 JSObject*
 HTMLSourceElement::WrapNode(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return HTMLSourceElementBinding::Wrap(aCx, aScope, this);
+  return HTMLSourceElementBinding::Wrap(aCx, this);
 }
 
 } // namespace dom
 } // namespace mozilla
--- a/content/html/content/src/HTMLSpanElement.cpp
+++ b/content/html/content/src/HTMLSpanElement.cpp
@@ -20,13 +20,13 @@ HTMLSpanElement::~HTMLSpanElement()
 {
 }
 
 NS_IMPL_ELEMENT_CLONE(HTMLSpanElement)
 
 JSObject*
 HTMLSpanElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return HTMLSpanElementBinding::Wrap(aCx, aScope, this);
+  return HTMLSpanElementBinding::Wrap(aCx, this);
 }
 
 } // namespace dom
 } // namespace mozilla
--- a/content/html/content/src/HTMLStyleElement.cpp
+++ b/content/html/content/src/HTMLStyleElement.cpp
@@ -266,14 +266,14 @@ HTMLStyleElement::GetStyleSheetInfo(nsAS
   // If we get here we assume that we're loading a css file, so set the
   // type to 'text/css'
   aType.AssignLiteral("text/css");
 }
 
 JSObject*
 HTMLStyleElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return HTMLStyleElementBinding::Wrap(aCx, aScope, this);
+  return HTMLStyleElementBinding::Wrap(aCx, this);
 }
 
 } // namespace dom
 } // namespace mozilla
 
--- a/content/html/content/src/HTMLTableCaptionElement.cpp
+++ b/content/html/content/src/HTMLTableCaptionElement.cpp
@@ -16,17 +16,17 @@ namespace dom {
 
 HTMLTableCaptionElement::~HTMLTableCaptionElement()
 {
 }
 
 JSObject*
 HTMLTableCaptionElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return HTMLTableCaptionElementBinding::Wrap(aCx, aScope, this);
+  return HTMLTableCaptionElementBinding::Wrap(aCx, this);
 }
 
 NS_IMPL_ISUPPORTS_INHERITED1(HTMLTableCaptionElement, nsGenericHTMLElement,
                              nsIDOMHTMLTableCaptionElement)
 
 NS_IMPL_ELEMENT_CLONE(HTMLTableCaptionElement)
 
 NS_IMPL_STRING_ATTR(HTMLTableCaptionElement, Align, align)
--- a/content/html/content/src/HTMLTableCellElement.cpp
+++ b/content/html/content/src/HTMLTableCellElement.cpp
@@ -20,17 +20,17 @@ namespace dom {
 
 HTMLTableCellElement::~HTMLTableCellElement()
 {
 }
 
 JSObject*
 HTMLTableCellElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return HTMLTableCellElementBinding::Wrap(aCx, aScope, this);
+  return HTMLTableCellElementBinding::Wrap(aCx, this);
 }
 
 NS_IMPL_ISUPPORTS_INHERITED1(HTMLTableCellElement, nsGenericHTMLElement,
                              nsIDOMHTMLTableCellElement)
 
 NS_IMPL_ELEMENT_CLONE(HTMLTableCellElement)
 
 
--- a/content/html/content/src/HTMLTableColElement.cpp
+++ b/content/html/content/src/HTMLTableColElement.cpp
@@ -20,17 +20,17 @@ namespace dom {
 
 HTMLTableColElement::~HTMLTableColElement()
 {
 }
 
 JSObject*
 HTMLTableColElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return HTMLTableColElementBinding::Wrap(aCx, aScope, this);
+  return HTMLTableColElementBinding::Wrap(aCx, this);
 }
 
 NS_IMPL_ELEMENT_CLONE(HTMLTableColElement)
 
 bool
 HTMLTableColElement::ParseAttribute(int32_t aNamespaceID,
                                     nsIAtom* aAttribute,
                                     const nsAString& aValue,
--- a/content/html/content/src/HTMLTableElement.cpp
+++ b/content/html/content/src/HTMLTableElement.cpp
@@ -81,17 +81,17 @@ TableRowsCollection::~TableRowsCollectio
   // instantiator who provided mParent is responsible for managing our
   // reference for us.
 }
 
 JSObject*
 TableRowsCollection::WrapObject(JSContext* aCx,
                                 JS::Handle<JSObject*> aScope)
 {
-  return HTMLCollectionBinding::Wrap(aCx, aScope, this);
+  return HTMLCollectionBinding::Wrap(aCx, this);
 }
 
 NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE_1(TableRowsCollection, mOrphanRows)
 NS_IMPL_CYCLE_COLLECTING_ADDREF(TableRowsCollection)
 NS_IMPL_CYCLE_COLLECTING_RELEASE(TableRowsCollection)
 
 NS_INTERFACE_TABLE_HEAD(TableRowsCollection)
   NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY
@@ -295,17 +295,17 @@ HTMLTableElement::~HTMLTableElement()
     mRows->ParentDestroyed();
   }
   ReleaseInheritedAttributes();
 }
 
 JSObject*
 HTMLTableElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return HTMLTableElementBinding::Wrap(aCx, aScope, this);
+  return HTMLTableElementBinding::Wrap(aCx, this);
 }
 
 NS_IMPL_CYCLE_COLLECTION_CLASS(HTMLTableElement)
 
 NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN_INHERITED(HTMLTableElement, nsGenericHTMLElement)
   NS_IMPL_CYCLE_COLLECTION_UNLINK(mTBodies)
   if (tmp->mRows) {
     tmp->mRows->ParentDestroyed();
--- a/content/html/content/src/HTMLTableRowElement.cpp
+++ b/content/html/content/src/HTMLTableRowElement.cpp
@@ -16,17 +16,17 @@
 NS_IMPL_NS_NEW_HTML_ELEMENT(TableRow)
 
 namespace mozilla {
 namespace dom {
 
 JSObject*
 HTMLTableRowElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return HTMLTableRowElementBinding::Wrap(aCx, aScope, this);
+  return HTMLTableRowElementBinding::Wrap(aCx, this);
 }
 
 NS_IMPL_CYCLE_COLLECTION_CLASS(HTMLTableRowElement)
 
 NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN_INHERITED(HTMLTableRowElement,
                                                   nsGenericHTMLElement)
   NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mCells)
 NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
--- a/content/html/content/src/HTMLTableSectionElement.cpp
+++ b/content/html/content/src/HTMLTableSectionElement.cpp
@@ -16,17 +16,17 @@ NS_IMPL_NS_NEW_HTML_ELEMENT(TableSection
 namespace mozilla {
 namespace dom {
 
 // you will see the phrases "rowgroup" and "section" used interchangably
 
 JSObject*
 HTMLTableSectionElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return HTMLTableSectionElementBinding::Wrap(aCx, aScope, this);
+  return HTMLTableSectionElementBinding::Wrap(aCx, this);
 }
 
 NS_IMPL_CYCLE_COLLECTION_CLASS(HTMLTableSectionElement)
 
 NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN_INHERITED(HTMLTableSectionElement,
                                                   nsGenericHTMLElement)
   NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mRows)
 NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
--- a/content/html/content/src/HTMLTemplateElement.cpp
+++ b/content/html/content/src/HTMLTemplateElement.cpp
@@ -77,14 +77,14 @@ NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
 NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION_INHERITED(HTMLTemplateElement)
 NS_INTERFACE_MAP_END_INHERITING(nsGenericHTMLElement)
 
 NS_IMPL_ELEMENT_CLONE_WITH_INIT(HTMLTemplateElement)
 
 JSObject*
 HTMLTemplateElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return HTMLTemplateElementBinding::Wrap(aCx, aScope, this);
+  return HTMLTemplateElementBinding::Wrap(aCx, this);
 }
 
 } // namespace dom
 } // namespace mozilla
 
--- a/content/html/content/src/HTMLTextAreaElement.cpp
+++ b/content/html/content/src/HTMLTextAreaElement.cpp
@@ -1522,13 +1522,13 @@ HTMLTextAreaElement::FieldSetDisabledCha
   UpdateBarredFromConstraintValidation();
 
   nsGenericHTMLFormElementWithState::FieldSetDisabledChanged(aNotify);
 }
 
 JSObject*
 HTMLTextAreaElement::WrapNode(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return HTMLTextAreaElementBinding::Wrap(aCx, aScope, this);
+  return HTMLTextAreaElementBinding::Wrap(aCx, this);
 }
 
 } // namespace dom
 } // namespace mozilla
--- a/content/html/content/src/HTMLTimeElement.cpp
+++ b/content/html/content/src/HTMLTimeElement.cpp
@@ -23,17 +23,17 @@ HTMLTimeElement::~HTMLTimeElement()
 {
 }
 
 NS_IMPL_ELEMENT_CLONE(HTMLTimeElement)
 
 JSObject*
 HTMLTimeElement::WrapNode(JSContext* cx, JS::Handle<JSObject*> scope)
 {
-  return HTMLTimeElementBinding::Wrap(cx, scope, this);
+  return HTMLTimeElementBinding::Wrap(cx, this);
 }
 
 void
 HTMLTimeElement::GetItemValueText(nsAString& text)
 {
   if (HasAttr(kNameSpaceID_None, nsGkAtoms::datetime)) {
     GetDateTime(text);
   } else {
--- a/content/html/content/src/HTMLTitleElement.cpp
+++ b/content/html/content/src/HTMLTitleElement.cpp
@@ -30,17 +30,17 @@ HTMLTitleElement::~HTMLTitleElement()
 NS_IMPL_ISUPPORTS_INHERITED2(HTMLTitleElement, nsGenericHTMLElement,
                              nsIDOMHTMLTitleElement, nsIMutationObserver)
 
 NS_IMPL_ELEMENT_CLONE(HTMLTitleElement)
 
 JSObject*
 HTMLTitleElement::WrapNode(JSContext* cx, JS::Handle<JSObject*> scope)
 {
-  return HTMLTitleElementBinding::Wrap(cx, scope, this);
+  return HTMLTitleElementBinding::Wrap(cx, this);
 }
 
 
 NS_IMETHODIMP 
 HTMLTitleElement::GetText(nsAString& aTitle)
 {
   if (!nsContentUtils::GetNodeTextContent(this, false, aTitle)) {
     return NS_ERROR_OUT_OF_MEMORY;
--- a/content/html/content/src/HTMLTrackElement.cpp
+++ b/content/html/content/src/HTMLTrackElement.cpp
@@ -114,17 +114,17 @@ HTMLTrackElement::OnChannelRedirect(nsIC
 {
   NS_ASSERTION(aChannel == mChannel, "Channels should match!");
   mChannel = aNewChannel;
 }
 
 JSObject*
 HTMLTrackElement::WrapNode(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return HTMLTrackElementBinding::Wrap(aCx, aScope, this);
+  return HTMLTrackElementBinding::Wrap(aCx, this);
 }
 
 bool
 HTMLTrackElement::IsWebVTTEnabled()
 {
   // Our callee does not use its arguments.
   return HTMLTrackElementBinding::ConstructorEnabled(nullptr, JS::NullPtr());
 }
--- a/content/html/content/src/HTMLUnknownElement.cpp
+++ b/content/html/content/src/HTMLUnknownElement.cpp
@@ -11,15 +11,15 @@
 NS_IMPL_NS_NEW_HTML_ELEMENT(Unknown)
 
 namespace mozilla {
 namespace dom {
 
 JSObject*
 HTMLUnknownElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return HTMLUnknownElementBinding::Wrap(aCx, aScope, this);
+  return HTMLUnknownElementBinding::Wrap(aCx, this);
 }
 
 NS_IMPL_ELEMENT_CLONE(HTMLUnknownElement)
 
 } // namespace dom
 } // namespace mozilla
--- a/content/html/content/src/HTMLVideoElement.cpp
+++ b/content/html/content/src/HTMLVideoElement.cpp
@@ -231,17 +231,17 @@ bool HTMLVideoElement::MozHasAudio() con
 NS_IMETHODIMP HTMLVideoElement::GetMozHasAudio(bool *aHasAudio) {
   *aHasAudio = MozHasAudio();
   return NS_OK;
 }
 
 JSObject*
 HTMLVideoElement::WrapNode(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return HTMLVideoElementBinding::Wrap(aCx, aScope, this);
+  return HTMLVideoElementBinding::Wrap(aCx, this);
 }
 
 void
 HTMLVideoElement::NotifyOwnerDocumentActivityChanged()
 {
   HTMLMediaElement::NotifyOwnerDocumentActivityChanged();
   UpdateScreenWakeLock();
 }
--- a/content/html/content/src/MediaError.cpp
+++ b/content/html/content/src/MediaError.cpp
@@ -34,13 +34,13 @@ NS_IMETHODIMP MediaError::GetCode(uint16
     *aCode = Code();
 
   return NS_OK;
 }
 
 JSObject*
 MediaError::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return MediaErrorBinding::Wrap(aCx, aScope, this);
+  return MediaErrorBinding::Wrap(aCx, this);
 }
 
 } // namespace dom
 } // namespace mozilla
--- a/content/html/content/src/TimeRanges.cpp
+++ b/content/html/content/src/TimeRanges.cpp
@@ -116,13 +116,13 @@ TimeRanges::Normalize()
 
     mRanges = normalized;
   }
 }
 
 JSObject*
 TimeRanges::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return TimeRangesBinding::Wrap(aCx, aScope, this);
+  return TimeRangesBinding::Wrap(aCx, this);
 }
 
 } // namespace dom
 } // namespace mozilla
--- a/content/html/content/src/UndoManager.h
+++ b/content/html/content/src/UndoManager.h
@@ -51,17 +51,17 @@ public:
   nsISupports* GetParentObject() const
   {
     return mHostNode;
   }
 
   virtual JSObject* WrapObject(JSContext* aCx,
 			       JS::Handle<JSObject*> aScope) MOZ_OVERRIDE
   {
-    return mozilla::dom::UndoManagerBinding::Wrap(aCx, aScope, this);
+    return mozilla::dom::UndoManagerBinding::Wrap(aCx, this);
   }
 
   nsITransactionManager* GetTransactionManager();
 
 protected:
   virtual ~UndoManager();
   nsCOMPtr<nsITransactionManager> mTxnManager;
   nsCOMPtr<nsIContent> mHostNode;
--- a/content/html/content/src/ValidityState.cpp
+++ b/content/html/content/src/ValidityState.cpp
@@ -95,14 +95,14 @@ ValidityState::GetValid(bool* aValid)
 {
   *aValid = Valid();
   return NS_OK;
 }
 
 JSObject*
 ValidityState::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return ValidityStateBinding::Wrap(aCx, aScope, this);
+  return ValidityStateBinding::Wrap(aCx, this);
 }
 
 } // namespace dom
 } // namespace mozilla
 
--- a/content/html/content/src/nsDOMStringMap.cpp
+++ b/content/html/content/src/nsDOMStringMap.cpp
@@ -69,17 +69,17 @@ nsDOMStringMap::~nsDOMStringMap()
     mElement->RemoveMutationObserver(this);
   }
 }
 
 /* virtual */
 JSObject*
 nsDOMStringMap::WrapObject(JSContext *cx, JS::Handle<JSObject*> scope)
 {
-  return DOMStringMapBinding::Wrap(cx, scope, this);
+  return DOMStringMapBinding::Wrap(cx, this);
 }
 
 void
 nsDOMStringMap::NamedGetter(const nsAString& aProp, bool& found,
                             DOMString& aResult) const
 {
   nsAutoString attr;
 
--- a/content/html/document/src/ImageDocument.cpp
+++ b/content/html/document/src/ImageDocument.cpp
@@ -171,17 +171,17 @@ ImageDocument::Init()
   mFirstResize = true;
 
   return NS_OK;
 }
 
 JSObject*
 ImageDocument::WrapNode(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return ImageDocumentBinding::Wrap(aCx, aScope, this);
+  return ImageDocumentBinding::Wrap(aCx, this);
 }
 
 nsresult
 ImageDocument::StartDocumentLoad(const char*         aCommand,
                                  nsIChannel*         aChannel,
                                  nsILoadGroup*       aLoadGroup,
                                  nsISupports*        aContainer,
                                  nsIStreamListener** aDocListener,
--- a/content/html/document/src/nsHTMLDocument.cpp
+++ b/content/html/document/src/nsHTMLDocument.cpp
@@ -218,17 +218,17 @@ NS_IMPL_RELEASE_INHERITED(nsHTMLDocument
 NS_INTERFACE_TABLE_HEAD_CYCLE_COLLECTION_INHERITED(nsHTMLDocument)
   NS_INTERFACE_TABLE_INHERITED2(nsHTMLDocument, nsIHTMLDocument,
                                 nsIDOMHTMLDocument)
 NS_INTERFACE_TABLE_TAIL_INHERITING(nsDocument)
 
 JSObject*
 nsHTMLDocument::WrapNode(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return HTMLDocumentBinding::Wrap(aCx, aScope, this);
+  return HTMLDocumentBinding::Wrap(aCx, this);
 }
 
 nsresult
 nsHTMLDocument::Init()
 {
   nsresult rv = nsDocument::Init();
   NS_ENSURE_SUCCESS(rv, rv);
 
--- a/content/mathml/content/src/nsMathMLElement.cpp
+++ b/content/mathml/content/src/nsMathMLElement.cpp
@@ -1112,10 +1112,10 @@ nsMathMLElement::UnsetAttr(int32_t aName
   }
 
   return rv;
 }
 
 JSObject*
 nsMathMLElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return ElementBinding::Wrap(aCx, aScope, this);
+  return ElementBinding::Wrap(aCx, this);
 }
--- a/content/media/AudioStreamTrack.cpp
+++ b/content/media/AudioStreamTrack.cpp
@@ -8,13 +8,13 @@
 #include "mozilla/dom/AudioStreamTrackBinding.h"
 
 namespace mozilla {
 namespace dom {
 
 JSObject*
 AudioStreamTrack::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return AudioStreamTrackBinding::Wrap(aCx, aScope, this);
+  return AudioStreamTrackBinding::Wrap(aCx, this);
 }
 
 }
 }
--- a/content/media/DOMMediaStream.cpp
+++ b/content/media/DOMMediaStream.cpp
@@ -150,17 +150,17 @@ DOMMediaStream::Destroy()
     mStream->Destroy();
     mStream = nullptr;
   }
 }
 
 JSObject*
 DOMMediaStream::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return dom::MediaStreamBinding::Wrap(aCx, aScope, this);
+  return dom::MediaStreamBinding::Wrap(aCx, this);
 }
 
 double
 DOMMediaStream::CurrentTime()
 {
   if (!mStream) {
     return 0.0;
   }
@@ -347,17 +347,17 @@ DOMLocalMediaStream::~DOMLocalMediaStrea
     // Make sure Listeners of this stream know it's going away
     Stop();
   }
 }
 
 JSObject*
 DOMLocalMediaStream::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return dom::LocalMediaStreamBinding::Wrap(aCx, aScope, this);
+  return dom::LocalMediaStreamBinding::Wrap(aCx, this);
 }
 
 void
 DOMLocalMediaStream::Stop()
 {
   if (mStream && mStream->AsSourceStream()) {
     mStream->AsSourceStream()->EndAllTrackAndFinish();
   }
--- a/content/media/MediaRecorder.cpp
+++ b/content/media/MediaRecorder.cpp
@@ -633,17 +633,17 @@ MediaRecorder::RequestData(ErrorResult& 
     new CreateAndDispatchBlobEventRunnable(mSessions.LastElement()->GetEncodedData(),
                                            this),
                                            NS_DISPATCH_NORMAL);
 }
 
 JSObject*
 MediaRecorder::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return MediaRecorderBinding::Wrap(aCx, aScope, this);
+  return MediaRecorderBinding::Wrap(aCx, this);
 }
 
 /* static */ already_AddRefed<MediaRecorder>
 MediaRecorder::Constructor(const GlobalObject& aGlobal,
                            DOMMediaStream& aStream,
                            const MediaRecorderOptions& aInitDict,
                            ErrorResult& aRv)
 {
--- a/content/media/TextTrack.cpp
+++ b/content/media/TextTrack.cpp
@@ -76,17 +76,17 @@ TextTrack::SetDefaultSettings()
   mActiveCueList = new TextTrackCueList(mParent);
   mCuePos = 0;
   mDirty = false;
 }
 
 JSObject*
 TextTrack::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return TextTrackBinding::Wrap(aCx, aScope, this);
+  return TextTrackBinding::Wrap(aCx, this);
 }
 
 void
 TextTrack::SetMode(TextTrackMode aValue)
 {
   if (mMode != aValue) {
     mMode = aValue;
     if (mTextTrackList) {
--- a/content/media/TextTrackCue.cpp
+++ b/content/media/TextTrackCue.cpp
@@ -140,17 +140,17 @@ void
 TextTrackCue::SetTrackElement(HTMLTrackElement* aTrackElement)
 {
   mTrackElement = aTrackElement;
 }
 
 JSObject*
 TextTrackCue::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return VTTCueBinding::Wrap(aCx, aScope, this);
+  return VTTCueBinding::Wrap(aCx, this);
 }
 
 TextTrackRegion*
 TextTrackCue::GetRegion()
 {
   return mRegion;
 }
 
--- a/content/media/TextTrackCueList.cpp
+++ b/content/media/TextTrackCueList.cpp
@@ -36,17 +36,17 @@ NS_INTERFACE_MAP_END
 TextTrackCueList::TextTrackCueList(nsISupports* aParent) : mParent(aParent)
 {
   SetIsDOMBinding();
 }
 
 JSObject*
 TextTrackCueList::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return TextTrackCueListBinding::Wrap(aCx, aScope, this);
+  return TextTrackCueListBinding::Wrap(aCx, this);
 }
 
 TextTrackCue*
 TextTrackCueList::IndexedGetter(uint32_t aIndex, bool& aFound)
 {
   aFound = aIndex < mList.Length();
   return aFound ? mList[aIndex] : nullptr;
 }
--- a/content/media/TextTrackList.cpp
+++ b/content/media/TextTrackList.cpp
@@ -54,17 +54,17 @@ TextTrackList::UpdateAndGetShowingCues(n
       aCues.AppendElements(cues);
     }
   }
 }
 
 JSObject*
 TextTrackList::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return TextTrackListBinding::Wrap(aCx, aScope, this);
+  return TextTrackListBinding::Wrap(aCx, this);
 }
 
 TextTrack*
 TextTrackList::IndexedGetter(uint32_t aIndex, bool& aFound)
 {
   aFound = aIndex < mTextTracks.Length();
   return aFound ? mTextTracks[aIndex] : nullptr;
 }
--- a/content/media/TextTrackRegion.cpp
+++ b/content/media/TextTrackRegion.cpp
@@ -16,17 +16,17 @@ NS_IMPL_CYCLE_COLLECTING_RELEASE(TextTra
 NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(TextTrackRegion)
   NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY
   NS_INTERFACE_MAP_ENTRY(nsISupports)
 NS_INTERFACE_MAP_END
 
 JSObject*
 TextTrackRegion::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return VTTRegionBinding::Wrap(aCx, aScope, this);
+  return VTTRegionBinding::Wrap(aCx, this);
 }
 
 already_AddRefed<TextTrackRegion>
 TextTrackRegion::Constructor(const GlobalObject& aGlobal, ErrorResult& aRv)
 {
   nsCOMPtr<nsPIDOMWindow> window = do_QueryInterface(aGlobal.GetAsSupports());
   if (!window) {
     aRv.Throw(NS_ERROR_FAILURE);
--- a/content/media/VideoPlaybackQuality.cpp
+++ b/content/media/VideoPlaybackQuality.cpp
@@ -32,17 +32,17 @@ HTMLMediaElement*
 VideoPlaybackQuality::GetParentObject() const
 {
   return mElement;
 }
 
 JSObject*
 VideoPlaybackQuality::WrapObject(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return VideoPlaybackQualityBinding::Wrap(aCx, aScope, this);
+  return VideoPlaybackQualityBinding::Wrap(aCx, this);
 }
 
 NS_IMPL_CYCLE_COLLECTION_ROOT_NATIVE(VideoPlaybackQuality, AddRef)
 NS_IMPL_CYCLE_COLLECTION_UNROOT_NATIVE(VideoPlaybackQuality, Release)
 
 NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE_1(VideoPlaybackQuality, mElement)
 
 } // namespace dom
--- a/content/media/VideoStreamTrack.cpp
+++ b/content/media/VideoStreamTrack.cpp
@@ -8,13 +8,13 @@
 #include "mozilla/dom/VideoStreamTrackBinding.h"
 
 namespace mozilla {
 namespace dom {
 
 JSObject*
 VideoStreamTrack::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return VideoStreamTrackBinding::Wrap(aCx, aScope, this);
+  return VideoStreamTrackBinding::Wrap(aCx, this);
 }
 
 }
 }
--- a/content/media/mediasource/MediaSource.cpp
+++ b/content/media/mediasource/MediaSource.cpp
@@ -354,17 +354,17 @@ nsPIDOMWindow*
 MediaSource::GetParentObject() const
 {
   return GetOwner();
 }
 
 JSObject*
 MediaSource::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return MediaSourceBinding::Wrap(aCx, aScope, this);
+  return MediaSourceBinding::Wrap(aCx, this);
 }
 
 void
 MediaSource::NotifyEvicted(double aStart, double aEnd)
 {
   // Cycle through all SourceBuffers and tell them to evict data in
   // the given range.
   mSourceBuffers->Evict(aStart, aEnd);
--- a/content/media/mediasource/SourceBuffer.cpp
+++ b/content/media/mediasource/SourceBuffer.cpp
@@ -278,17 +278,17 @@ MediaSource*
 SourceBuffer::GetParentObject() const
 {
   return mMediaSource;
 }
 
 JSObject*
 SourceBuffer::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return SourceBufferBinding::Wrap(aCx, aScope, this);
+  return SourceBufferBinding::Wrap(aCx, this);
 }
 
 void
 SourceBuffer::DispatchSimpleEvent(const char* aName)
 {
   MSE_DEBUG("%p Dispatching event %s to SourceBuffer", this, aName);
   DispatchTrustedEvent(NS_ConvertUTF8toUTF16(aName));
 }
--- a/content/media/mediasource/SourceBufferList.cpp
+++ b/content/media/mediasource/SourceBufferList.cpp
@@ -145,17 +145,17 @@ MediaSource*
 SourceBufferList::GetParentObject() const
 {
   return mMediaSource;
 }
 
 JSObject*
 SourceBufferList::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return SourceBufferListBinding::Wrap(aCx, aScope, this);
+  return SourceBufferListBinding::Wrap(aCx, this);
 }
 
 NS_IMPL_CYCLE_COLLECTION_INHERITED_2(SourceBufferList, DOMEventTargetHelper,
                                      mMediaSource, mSourceBuffers)
 
 NS_IMPL_ADDREF_INHERITED(SourceBufferList, DOMEventTargetHelper)
 NS_IMPL_RELEASE_INHERITED(SourceBufferList, DOMEventTargetHelper)
 
--- a/content/media/webaudio/AnalyserNode.cpp
+++ b/content/media/webaudio/AnalyserNode.cpp
@@ -88,17 +88,17 @@ AnalyserNode::AnalyserNode(AudioContext*
   mStream = aContext->Graph()->CreateAudioNodeStream(new AnalyserNodeEngine(this),
                                                      MediaStreamGraph::INTERNAL_STREAM);
   AllocateBuffer();
 }
 
 JSObject*
 AnalyserNode::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return AnalyserNodeBinding::Wrap(aCx, aScope, this);
+  return AnalyserNodeBinding::Wrap(aCx, this);
 }
 
 void
 AnalyserNode::SetFftSize(uint32_t aValue, ErrorResult& aRv)
 {
   // Disallow values that are not a power of 2 and outside the [32,2048] range
   if (aValue < 32 ||
       aValue > 2048 ||
--- a/content/media/webaudio/AudioBuffer.cpp
+++ b/content/media/webaudio/AudioBuffer.cpp
@@ -79,17 +79,17 @@ AudioBuffer::InitializeBuffers(uint32_t 
   }
 
   return true;
 }
 
 JSObject*
 AudioBuffer::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return AudioBufferBinding::Wrap(aCx, aScope, this);
+  return AudioBufferBinding::Wrap(aCx, this);
 }
 
 bool
 AudioBuffer::RestoreJSChannelData(JSContext* aJSContext)
 {
   if (mSharedChannels) {
     for (uint32_t i = 0; i < mJSChannels.Length(); ++i) {
       const float* data = mSharedChannels->GetData(i);
--- a/content/media/webaudio/AudioBufferSourceNode.cpp
+++ b/content/media/webaudio/AudioBufferSourceNode.cpp
@@ -532,17 +532,17 @@ AudioBufferSourceNode::~AudioBufferSourc
   if (Context()) {
     Context()->UnregisterAudioBufferSourceNode(this);
   }
 }
 
 JSObject*
 AudioBufferSourceNode::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return AudioBufferSourceNodeBinding::Wrap(aCx, aScope, this);
+  return AudioBufferSourceNodeBinding::Wrap(aCx, this);
 }
 
 void
 AudioBufferSourceNode::Start(double aWhen, double aOffset,
                              const Optional<double>& aDuration, ErrorResult& aRv)
 {
   if (!WebAudioUtils::IsTimeValid(aWhen) ||
       (aDuration.WasPassed() && !WebAudioUtils::IsTimeValid(aDuration.Value()))) {
--- a/content/media/webaudio/AudioContext.cpp
+++ b/content/media/webaudio/AudioContext.cpp
@@ -109,19 +109,19 @@ AudioContext::~AudioContext()
 
   UnregisterWeakMemoryReporter(this);
 }
 
 JSObject*
 AudioContext::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
   if (mIsOffline) {
-    return OfflineAudioContextBinding::Wrap(aCx, aScope, this);
+    return OfflineAudioContextBinding::Wrap(aCx, this);
   } else {
-    return AudioContextBinding::Wrap(aCx, aScope, this);
+    return AudioContextBinding::Wrap(aCx, this);
   }
 }
 
 /* static */ already_AddRefed<AudioContext>
 AudioContext::Constructor(const GlobalObject& aGlobal,
                           ErrorResult& aRv)
 {
   nsCOMPtr<nsPIDOMWindow> window = do_QueryInterface(aGlobal.GetAsSupports());
--- a/content/media/webaudio/AudioDestinationNode.cpp
+++ b/content/media/webaudio/AudioDestinationNode.cpp
@@ -342,17 +342,17 @@ AudioDestinationNode::OfflineShutdown()
 
   MediaStreamGraph::DestroyNonRealtimeInstance(mStream->Graph());
   mOfflineRenderingRef.Drop(this);
 }
 
 JSObject*
 AudioDestinationNode::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return AudioDestinationNodeBinding::Wrap(aCx, aScope, this);
+  return AudioDestinationNodeBinding::Wrap(aCx, this);
 }
 
 void
 AudioDestinationNode::StartRendering()
 {
   mOfflineRenderingRef.Take(this);
   mStream->Graph()->StartNonRealtimeProcessing(TrackRate(Context()->SampleRate()), mFramesToProduce);
 }
--- a/content/media/webaudio/AudioListener.cpp
+++ b/content/media/webaudio/AudioListener.cpp
@@ -27,17 +27,17 @@ AudioListener::AudioListener(AudioContex
 {
   MOZ_ASSERT(aContext);
   SetIsDOMBinding();
 }
 
 JSObject*
 AudioListener::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return AudioListenerBinding::Wrap(aCx, aScope, this);
+  return AudioListenerBinding::Wrap(aCx, this);
 }
 
 void
 AudioListener::SetOrientation(double aX, double aY, double aZ,
                               double aXUp, double aYUp, double aZUp)
 {
   ThreeDPoint front(aX, aY, aZ);
   // The panning effect and the azimuth and elevation calculation in the Web
--- a/content/media/webaudio/AudioParam.cpp
+++ b/content/media/webaudio/AudioParam.cpp
@@ -57,17 +57,17 @@ AudioParam::AudioParam(AudioNode* aNode,
 AudioParam::~AudioParam()
 {
   MOZ_ASSERT(mInputNodes.IsEmpty());
 }
 
 JSObject*
 AudioParam::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return AudioParamBinding::Wrap(aCx, aScope, this);
+  return AudioParamBinding::Wrap(aCx, this);
 }
 
 void
 AudioParam::DisconnectFromGraphAndDestroyStream()
 {
   // Addref this temporarily so the refcount bumping below doesn't destroy us
   // prematurely
   nsRefPtr<AudioParam> kungFuDeathGrip = this;
--- a/content/media/webaudio/AudioProcessingEvent.cpp
+++ b/content/media/webaudio/AudioProcessingEvent.cpp
@@ -28,17 +28,17 @@ AudioProcessingEvent::AudioProcessingEve
   , mNode(aOwner)
 {
   SetIsDOMBinding();
 }
 
 JSObject*
 AudioProcessingEvent::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return AudioProcessingEventBinding::Wrap(aCx, aScope, this);
+  return AudioProcessingEventBinding::Wrap(aCx, this);
 }
 
 void
 AudioProcessingEvent::LazilyCreateBuffer(nsRefPtr<AudioBuffer>& aBuffer,
                                          uint32_t aNumberOfChannels)
 {
   AutoPushJSContext cx(mNode->Context()->GetJSContext());
 
--- a/content/media/webaudio/BiquadFilterNode.cpp
+++ b/content/media/webaudio/BiquadFilterNode.cpp
@@ -240,17 +240,17 @@ BiquadFilterNode::BiquadFilterNode(Audio
   BiquadFilterNodeEngine* engine = new BiquadFilterNodeEngine(this, aContext->Destination());
   mStream = aContext->Graph()->CreateAudioNodeStream(engine, MediaStreamGraph::INTERNAL_STREAM);
   engine->SetSourceStream(static_cast<AudioNodeStream*> (mStream.get()));
 }
 
 JSObject*
 BiquadFilterNode::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return BiquadFilterNodeBinding::Wrap(aCx, aScope, this);
+  return BiquadFilterNodeBinding::Wrap(aCx, this);
 }
 
 void
 BiquadFilterNode::SetType(BiquadFilterType aType)
 {
   if (!Preferences::GetBool("media.webaudio.legacy.BiquadFilterNode")) {
     // Do not accept the alternate enum values unless the legacy pref
     // has been turned on.
--- a/content/media/webaudio/ChannelMergerNode.cpp
+++ b/content/media/webaudio/ChannelMergerNode.cpp
@@ -65,14 +65,14 @@ ChannelMergerNode::ChannelMergerNode(Aud
 {
   mStream = aContext->Graph()->CreateAudioNodeStream(new ChannelMergerNodeEngine(this),
                                                      MediaStreamGraph::INTERNAL_STREAM);
 }
 
 JSObject*
 ChannelMergerNode::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return ChannelMergerNodeBinding::Wrap(aCx, aScope, this);
+  return ChannelMergerNodeBinding::Wrap(aCx, this);
 }
 
 }
 }
 
--- a/content/media/webaudio/ChannelSplitterNode.cpp
+++ b/content/media/webaudio/ChannelSplitterNode.cpp
@@ -57,14 +57,14 @@ ChannelSplitterNode::ChannelSplitterNode
 {
   mStream = aContext->Graph()->CreateAudioNodeStream(new ChannelSplitterNodeEngine(this),
                                                      MediaStreamGraph::INTERNAL_STREAM);
 }
 
 JSObject*
 ChannelSplitterNode::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return ChannelSplitterNodeBinding::Wrap(aCx, aScope, this);
+  return ChannelSplitterNodeBinding::Wrap(aCx, this);
 }
 
 }
 }
 
--- a/content/media/webaudio/ConvolverNode.cpp
+++ b/content/media/webaudio/ConvolverNode.cpp
@@ -173,17 +173,17 @@ ConvolverNode::ConvolverNode(AudioContex
 {
   ConvolverNodeEngine* engine = new ConvolverNodeEngine(this, mNormalize);
   mStream = aContext->Graph()->CreateAudioNodeStream(engine, MediaStreamGraph::INTERNAL_STREAM);
 }
 
 JSObject*
 ConvolverNode::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return ConvolverNodeBinding::Wrap(aCx, aScope, this);
+  return ConvolverNodeBinding::Wrap(aCx, this);
 }
 
 void
 ConvolverNode::SetBuffer(JSContext* aCx, AudioBuffer* aBuffer, ErrorResult& aRv)
 {
   if (aBuffer) {
     switch (aBuffer->NumberOfChannels()) {
     case 1:
--- a/content/media/webaudio/DelayNode.cpp
+++ b/content/media/webaudio/DelayNode.cpp
@@ -183,17 +183,17 @@ DelayNode::DelayNode(AudioContext* aCont
                         aContext->SampleRate() * aMaxDelay);
   mStream = aContext->Graph()->CreateAudioNodeStream(engine, MediaStreamGraph::INTERNAL_STREAM);
   engine->SetSourceStream(static_cast<AudioNodeStream*> (mStream.get()));
 }
 
 JSObject*
 DelayNode::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return DelayNodeBinding::Wrap(aCx, aScope, this);
+  return DelayNodeBinding::Wrap(aCx, this);
 }
 
 void
 DelayNode::SendDelayToStream(AudioNode* aNode)
 {
   DelayNode* This = static_cast<DelayNode*>(aNode);
   SendTimelineParameterToStream(This, DelayNodeEngine::DELAY, *This->mDelay);
 }
--- a/content/media/webaudio/DynamicsCompressorNode.cpp
+++ b/content/media/webaudio/DynamicsCompressorNode.cpp
@@ -203,17 +203,17 @@ DynamicsCompressorNode::DynamicsCompress
   DynamicsCompressorNodeEngine* engine = new DynamicsCompressorNodeEngine(this, aContext->Destination());
   mStream = aContext->Graph()->CreateAudioNodeStream(engine, MediaStreamGraph::INTERNAL_STREAM);
   engine->SetSourceStream(static_cast<AudioNodeStream*> (mStream.get()));
 }
 
 JSObject*
 DynamicsCompressorNode::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return DynamicsCompressorNodeBinding::Wrap(aCx, aScope, this);
+  return DynamicsCompressorNodeBinding::Wrap(aCx, this);
 }
 
 void
 DynamicsCompressorNode::SendThresholdToStream(AudioNode* aNode)
 {
   DynamicsCompressorNode* This = static_cast<DynamicsCompressorNode*>(aNode);
   SendTimelineParameterToStream(This, DynamicsCompressorNodeEngine::THRESHOLD, *This->mThreshold);
 }
--- a/content/media/webaudio/GainNode.cpp
+++ b/content/media/webaudio/GainNode.cpp
@@ -117,17 +117,17 @@ GainNode::GainNode(AudioContext* aContex
   GainNodeEngine* engine = new GainNodeEngine(this, aContext->Destination());
   mStream = aContext->Graph()->CreateAudioNodeStream(engine, MediaStreamGraph::INTERNAL_STREAM);
   engine->SetSourceStream(static_cast<AudioNodeStream*> (mStream.get()));
 }
 
 JSObject*
 GainNode::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return GainNodeBinding::Wrap(aCx, aScope, this);
+  return GainNodeBinding::Wrap(aCx, this);
 }
 
 void
 GainNode::SendGainToStream(AudioNode* aNode)
 {
   GainNode* This = static_cast<GainNode*>(aNode);
   SendTimelineParameterToStream(This, GainNodeEngine::GAIN, *This->mGain);
 }
--- a/content/media/webaudio/MediaElementAudioSourceNode.cpp
+++ b/content/media/webaudio/MediaElementAudioSourceNode.cpp
@@ -14,13 +14,13 @@ MediaElementAudioSourceNode::MediaElemen
                                                          DOMMediaStream* aStream)
   : MediaStreamAudioSourceNode(aContext, aStream)
 {
 }
 
 JSObject*
 MediaElementAudioSourceNode::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return MediaElementAudioSourceNodeBinding::Wrap(aCx, aScope, this);
+  return MediaElementAudioSourceNodeBinding::Wrap(aCx, this);
 }
 
 }
 }
--- a/content/media/webaudio/MediaStreamAudioDestinationNode.cpp
+++ b/content/media/webaudio/MediaStreamAudioDestinationNode.cpp
@@ -89,13 +89,13 @@ MediaStreamAudioDestinationNode::Destroy
     mPort->Destroy();
     mPort = nullptr;
   }
 }
 
 JSObject*
 MediaStreamAudioDestinationNode::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return MediaStreamAudioDestinationNodeBinding::Wrap(aCx, aScope, this);
+  return MediaStreamAudioDestinationNodeBinding::Wrap(aCx, this);
 }
 
 }
 }
--- a/content/media/webaudio/MediaStreamAudioSourceNode.cpp
+++ b/content/media/webaudio/MediaStreamAudioSourceNode.cpp
@@ -57,14 +57,14 @@ MediaStreamAudioSourceNode::DestroyMedia
     mInputPort = nullptr;
   }
   AudioNode::DestroyMediaStream();
 }
 
 JSObject*
 MediaStreamAudioSourceNode::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return MediaStreamAudioSourceNodeBinding::Wrap(aCx, aScope, this);
+  return MediaStreamAudioSourceNodeBinding::Wrap(aCx, this);
 }
 
 }
 }
 
--- a/content/media/webaudio/OfflineAudioCompletionEvent.cpp
+++ b/content/media/webaudio/OfflineAudioCompletionEvent.cpp
@@ -26,14 +26,14 @@ OfflineAudioCompletionEvent::OfflineAudi
   : Event(aOwner, aPresContext, aEvent)
 {
   SetIsDOMBinding();
 }
 
 JSObject*
 OfflineAudioCompletionEvent::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return OfflineAudioCompletionEventBinding::Wrap(aCx, aScope, this);
+  return OfflineAudioCompletionEventBinding::Wrap(aCx, this);
 }
 
 }
 }
 
--- a/content/media/webaudio/OscillatorNode.cpp
+++ b/content/media/webaudio/OscillatorNode.cpp
@@ -510,17 +510,17 @@ OscillatorNode::OscillatorNode(AudioCont
 
 OscillatorNode::~OscillatorNode()
 {
 }
 
 JSObject*
 OscillatorNode::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return OscillatorNodeBinding::Wrap(aCx, aScope, this);
+  return OscillatorNodeBinding::Wrap(aCx, this);
 }
 
 void
 OscillatorNode::SendFrequencyToStream(AudioNode* aNode)
 {
   OscillatorNode* This = static_cast<OscillatorNode*>(aNode);
   SendTimelineParameterToStream(This, OscillatorNodeEngine::FREQUENCY, *This->mFrequency);
 }
--- a/content/media/webaudio/PannerNode.cpp
+++ b/content/media/webaudio/PannerNode.cpp
@@ -240,17 +240,17 @@ PannerNode::~PannerNode()
   if (Context()) {
     Context()->UnregisterPannerNode(this);
   }
 }
 
 JSObject*
 PannerNode::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return PannerNodeBinding::Wrap(aCx, aScope, this);
+  return PannerNodeBinding::Wrap(aCx, this);
 }
 
 void PannerNode::DestroyMediaStream()
 {
   if (Context()) {
     Context()->UnregisterPannerNode(this);
   }
   AudioNode::DestroyMediaStream();
--- a/content/media/webaudio/PeriodicWave.cpp
+++ b/content/media/webaudio/PeriodicWave.cpp
@@ -42,14 +42,14 @@ PeriodicWave::PeriodicWave(AudioContext*
   mCoefficients->SetData(0, buffer, buffer);
   PodCopy(buffer+aLength, aImagData, aLength);
   mCoefficients->SetData(1, nullptr, buffer+aLength);
 }
 
 JSObject*
 PeriodicWave::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return PeriodicWaveBinding::Wrap(aCx, aScope, this);
+  return PeriodicWaveBinding::Wrap(aCx, this);
 }
 
 } // namespace dom
 } // namespace mozilla
 
--- a/content/media/webaudio/ScriptProcessorNode.cpp
+++ b/content/media/webaudio/ScriptProcessorNode.cpp
@@ -448,14 +448,14 @@ ScriptProcessorNode::ScriptProcessorNode
 
 ScriptProcessorNode::~ScriptProcessorNode()
 {
 }
 
 JSObject*
 ScriptProcessorNode::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return ScriptProcessorNodeBinding::Wrap(aCx, aScope, this);
+  return ScriptProcessorNodeBinding::Wrap(aCx, this);
 }
 
 }
 }
 
--- a/content/media/webaudio/WaveShaperNode.cpp
+++ b/content/media/webaudio/WaveShaperNode.cpp
@@ -274,17 +274,17 @@ WaveShaperNode::ClearCurve()
 {
   mCurve = nullptr;
   mozilla::DropJSObjects(this);
 }
 
 JSObject*
 WaveShaperNode::WrapObject(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return WaveShaperNodeBinding::Wrap(aCx, aScope, this);
+  return WaveShaperNodeBinding::Wrap(aCx, this);
 }
 
 void
 WaveShaperNode::SetCurve(const Nullable<Float32Array>& aCurve)
 {
   nsTArray<float> curve;
   if (!aCurve.IsNull()) {
     mCurve = aCurve.Value().Obj();
--- a/content/media/webspeech/recognition/SpeechGrammar.cpp
+++ b/content/media/webspeech/recognition/SpeechGrammar.cpp
@@ -41,17 +41,17 @@ nsISupports*
 SpeechGrammar::GetParentObject() const
 {
   return mParent;
 }
 
 JSObject*
 SpeechGrammar::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return SpeechGrammarBinding::Wrap(aCx, aScope, this);
+  return SpeechGrammarBinding::Wrap(aCx, this);
 }
 
 void
 SpeechGrammar::GetSrc(nsString& aRetVal, ErrorResult& aRv) const
 {
   aRv.Throw(NS_ERROR_NOT_IMPLEMENTED);
   return;
 }
--- a/content/media/webspeech/recognition/SpeechGrammarList.cpp
+++ b/content/media/webspeech/recognition/SpeechGrammarList.cpp
@@ -35,17 +35,17 @@ SpeechGrammarList::Constructor(const Glo
                                ErrorResult& aRv)
 {
   return new SpeechGrammarList(aGlobal.GetAsSupports());
 }
 
 JSObject*
 SpeechGrammarList::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return SpeechGrammarListBinding::Wrap(aCx, aScope, this);
+  return SpeechGrammarListBinding::Wrap(aCx, this);
 }
 
 nsISupports*
 SpeechGrammarList::GetParentObject() const
 {
   return mParent;
 }
 
--- a/content/media/webspeech/recognition/SpeechRecognition.cpp
+++ b/content/media/webspeech/recognition/SpeechRecognition.cpp
@@ -103,17 +103,17 @@ SpeechRecognition::SetState(FSMState sta
   mCurrentState = state;
   SR_LOG("Transitioned to state %s", GetName(mCurrentState));
   return;
 }
 
 JSObject*
 SpeechRecognition::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return SpeechRecognitionBinding::Wrap(aCx, aScope, this);
+  return SpeechRecognitionBinding::Wrap(aCx, this);
 }
 
 already_AddRefed<SpeechRecognition>
 SpeechRecognition::Constructor(const GlobalObject& aGlobal,
                                ErrorResult& aRv)
 {
   nsCOMPtr<nsPIDOMWindow> win = do_QueryInterface(aGlobal.GetAsSupports());
   if (!win) {
--- a/content/media/webspeech/recognition/SpeechRecognitionAlternative.cpp
+++ b/content/media/webspeech/recognition/SpeechRecognitionAlternative.cpp
@@ -32,17 +32,17 @@ SpeechRecognitionAlternative::SpeechReco
 SpeechRecognitionAlternative::~SpeechRecognitionAlternative()
 {
 }
 
 JSObject*
 SpeechRecognitionAlternative::WrapObject(JSContext* aCx,
                                          JS::Handle<JSObject*> aScope)
 {
-  return SpeechRecognitionAlternativeBinding::Wrap(aCx, aScope, this);
+  return SpeechRecognitionAlternativeBinding::Wrap(aCx, this);
 }
 
 nsISupports*
 SpeechRecognitionAlternative::GetParentObject() const
 {
   return static_cast<DOMEventTargetHelper*>(mParent.get());
 }
 
--- a/content/media/webspeech/recognition/SpeechRecognitionResult.cpp
+++ b/content/media/webspeech/recognition/SpeechRecognitionResult.cpp
@@ -29,17 +29,17 @@ SpeechRecognitionResult::SpeechRecogniti
 SpeechRecognitionResult::~SpeechRecognitionResult()
 {
 }
 
 JSObject*
 SpeechRecognitionResult::WrapObject(JSContext* aCx,
                                     JS::Handle<JSObject*> aScope)
 {
-  return SpeechRecognitionResultBinding::Wrap(aCx, aScope, this);
+  return SpeechRecognitionResultBinding::Wrap(aCx, this);
 }
 
 nsISupports*
 SpeechRecognitionResult::GetParentObject() const
 {
   return static_cast<DOMEventTargetHelper*>(mParent.get());
 }
 
--- a/content/media/webspeech/recognition/SpeechRecognitionResultList.cpp
+++ b/content/media/webspeech/recognition/SpeechRecognitionResultList.cpp
@@ -36,17 +36,17 @@ SpeechRecognitionResultList::GetParentOb
 {
   return static_cast<DOMEventTargetHelper*>(mParent.get());
 }
 
 JSObject*
 SpeechRecognitionResultList::WrapObject(JSContext* aCx,
                                         JS::Handle<JSObject*> aScope)
 {
-  return SpeechRecognitionResultListBinding::Wrap(aCx, aScope, this);
+  return SpeechRecognitionResultListBinding::Wrap(aCx, this);
 }
 
 already_AddRefed<SpeechRecognitionResult>
 SpeechRecognitionResultList::IndexedGetter(uint32_t aIndex, bool& aPresent)
 {
   if (aIndex >= Length()) {
     aPresent = false;
     return nullptr;
--- a/content/media/webspeech/synth/SpeechSynthesis.cpp
+++ b/content/media/webspeech/synth/SpeechSynthesis.cpp
@@ -82,17 +82,17 @@ SpeechSynthesis::SpeechSynthesis(nsPIDOM
 
 SpeechSynthesis::~SpeechSynthesis()
 {
 }
 
 JSObject*
 SpeechSynthesis::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return SpeechSynthesisBinding::Wrap(aCx, aScope, this);
+  return SpeechSynthesisBinding::Wrap(aCx, this);
 }
 
 nsIDOMWindow*
 SpeechSynthesis::GetParentObject() const
 {
   return mParent;
 }
 
--- a/content/media/webspeech/synth/SpeechSynthesisUtterance.cpp
+++ b/content/media/webspeech/synth/SpeechSynthesisUtterance.cpp
@@ -42,17 +42,17 @@ SpeechSynthesisUtterance::SpeechSynthesi
 }
 
 SpeechSynthesisUtterance::~SpeechSynthesisUtterance() {}
 
 JSObject*
 SpeechSynthesisUtterance::WrapObject(JSContext* aCx,
                                      JS::Handle<JSObject*> aScope)
 {
-  return SpeechSynthesisUtteranceBinding::Wrap(aCx, aScope, this);
+  return SpeechSynthesisUtteranceBinding::Wrap(aCx, this);
 }
 
 nsISupports*
 SpeechSynthesisUtterance::GetParentObject() const
 {
   return GetOwner();
 }
 
--- a/content/media/webspeech/synth/SpeechSynthesisVoice.cpp
+++ b/content/media/webspeech/synth/SpeechSynthesisVoice.cpp
@@ -29,17 +29,17 @@ SpeechSynthesisVoice::SpeechSynthesisVoi
 
 SpeechSynthesisVoice::~SpeechSynthesisVoice()
 {
 }
 
 JSObject*
 SpeechSynthesisVoice::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return SpeechSynthesisVoiceBinding::Wrap(aCx, aScope, this);
+  return SpeechSynthesisVoiceBinding::Wrap(aCx, this);
 }
 
 nsISupports*
 SpeechSynthesisVoice::GetParentObject() const
 {
   return mParent;
 }
 
--- a/content/svg/content/src/DOMSVGAnimatedLengthList.cpp
+++ b/content/svg/content/src/DOMSVGAnimatedLengthList.cpp
@@ -27,17 +27,17 @@ SVGAnimatedLengthListTearoffTable()
 NS_SVG_VAL_IMPL_CYCLE_COLLECTION_WRAPPERCACHED(DOMSVGAnimatedLengthList, mElement)
 
 NS_IMPL_CYCLE_COLLECTION_ROOT_NATIVE(DOMSVGAnimatedLengthList, AddRef)
 NS_IMPL_CYCLE_COLLECTION_UNROOT_NATIVE(DOMSVGAnimatedLengthList, Release)
 
 JSObject*
 DOMSVGAnimatedLengthList::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return dom::SVGAnimatedLengthListBinding::Wrap(aCx, aScope, this);
+  return dom::SVGAnimatedLengthListBinding::Wrap(aCx, this);
 }
 
 already_AddRefed<DOMSVGLengthList>
 DOMSVGAnimatedLengthList::BaseVal()
 {
   if (!mBaseVal) {
     mBaseVal = new DOMSVGLengthList(this, InternalAList().GetBaseValue());
   }
--- a/content/svg/content/src/DOMSVGAnimatedNumberList.cpp
+++ b/content/svg/content/src/DOMSVGAnimatedNumberList.cpp
@@ -32,17 +32,17 @@ NS_IMPL_CYCLE_COLLECTING_RELEASE(DOMSVGA
 NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(DOMSVGAnimatedNumberList)
   NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY
   NS_INTERFACE_MAP_ENTRY(nsISupports)
 NS_INTERFACE_MAP_END
 
 JSObject*
 DOMSVGAnimatedNumberList::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return mozilla::dom::SVGAnimatedNumberListBinding::Wrap(aCx, aScope, this);
+  return mozilla::dom::SVGAnimatedNumberListBinding::Wrap(aCx, this);
 }
 
 already_AddRefed<DOMSVGNumberList>
 DOMSVGAnimatedNumberList::BaseVal()
 {
   if (!mBaseVal) {
     mBaseVal = new DOMSVGNumberList(this, InternalAList().GetBaseValue());
   }
--- a/content/svg/content/src/DOMSVGLengthList.cpp
+++ b/content/svg/content/src/DOMSVGLengthList.cpp
@@ -66,17 +66,17 @@ NS_IMPL_CYCLE_COLLECTING_RELEASE(DOMSVGL
 NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(DOMSVGLengthList)
   NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY
   NS_INTERFACE_MAP_ENTRY(nsISupports)
 NS_INTERFACE_MAP_END
 
 JSObject*
 DOMSVGLengthList::WrapObject(JSContext *cx, JS::Handle<JSObject*> scope)
 {
-  return mozilla::dom::SVGLengthListBinding::Wrap(cx, scope, this);
+  return mozilla::dom::SVGLengthListBinding::Wrap(cx, this);
 }
 
 //----------------------------------------------------------------------
 // Helper class: AutoChangeLengthListNotifier
 // Stack-based helper class to pair calls to WillChangeLengthList and
 // DidChangeLengthList.
 class MOZ_STACK_CLASS AutoChangeLengthListNotifier
 {
--- a/content/svg/content/src/DOMSVGNumberList.cpp
+++ b/content/svg/content/src/DOMSVGNumberList.cpp
@@ -67,17 +67,17 @@ NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(
   NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY
   NS_INTERFACE_MAP_ENTRY(nsISupports)
 NS_INTERFACE_MAP_END
 
 
 JSObject*
 DOMSVGNumberList::WrapObject(JSContext *cx, JS::Handle<JSObject*> scope)
 {
-  return mozilla::dom::SVGNumberListBinding::Wrap(cx, scope, this);
+  return mozilla::dom::SVGNumberListBinding::Wrap(cx, this);
 }
 
 //----------------------------------------------------------------------
 // Helper class: AutoChangeNumberListNotifier
 // Stack-based helper class to pair calls to WillChangeNumberList and
 // DidChangeNumberList.
 class MOZ_STACK_CLASS AutoChangeNumberListNotifier
 {
--- a/content/svg/content/src/DOMSVGPathSeg.h
+++ b/content/svg/content/src/DOMSVGPathSeg.h
@@ -57,17 +57,17 @@ namespace mozilla {
   PtrToMemberArgs()                                                           \
   {                                                                           \
     return mArgs;                                                             \
   }                                                                           \
                                                                               \
   virtual JSObject*                                                           \
   WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope) MOZ_OVERRIDE       \
   {                                                                           \
-    return dom::SVGPathSeg##segName##Binding::Wrap(aCx, aScope, this);        \
+    return dom::SVGPathSeg##segName##Binding::Wrap(aCx, this);        \
   }
 
 
 /**
  * Class DOMSVGPathSeg
  *
  * This class is the base class of the classes that create the DOM objects that
  * wrap the internal path segments that are encoded in an SVGPathData. Its
--- a/content/svg/content/src/DOMSVGPathSegList.cpp
+++ b/content/svg/content/src/DOMSVGPathSegList.cpp
@@ -108,17 +108,17 @@ DOMSVGPathSegList::~DOMSVGPathSegList()
     InternalAList().GetAnimValKey() :
     InternalAList().GetBaseValKey();
   SVGPathSegListTearoffTable().RemoveTearoff(key);
 }
 
 JSObject*
 DOMSVGPathSegList::WrapObject(JSContext *cx, JS::Handle<JSObject*> scope)
 {
-  return mozilla::dom::SVGPathSegListBinding::Wrap(cx, scope, this);
+  return mozilla::dom::SVGPathSegListBinding::Wrap(cx, this);
 }
 
 void
 DOMSVGPathSegList::InternalListWillChangeTo(const SVGPathData& aNewValue)
 {
   // When the number of items in our internal counterpart changes, we MUST stay
   // in sync. Everything in the scary comment in
   // DOMSVGLengthList::InternalBaseValListWillChangeTo applies here just as
--- a/content/svg/content/src/DOMSVGPointList.cpp
+++ b/content/svg/content/src/DOMSVGPointList.cpp
@@ -127,17 +127,17 @@ DOMSVGPointList::~DOMSVGPointList()
     InternalAList().GetAnimValKey() :
     InternalAList().GetBaseValKey();
   SVGPointListTearoffTable().RemoveTearoff(key);
 }
 
 JSObject*
 DOMSVGPointList::WrapObject(JSContext *cx, JS::Handle<JSObject*> scope)
 {
-  return mozilla::dom::SVGPointListBinding::Wrap(cx, scope, this);
+  return mozilla::dom::SVGPointListBinding::Wrap(cx, this);
 }
 
 void
 DOMSVGPointList::InternalListWillChangeTo(const SVGPointList& aNewValue)
 {
   // When the number of items in our internal counterpart changes, we MUST stay
   // in sync. Everything in the scary comment in
   // DOMSVGLengthList::InternalBaseValListWillChangeTo applies here too!
--- a/content/svg/content/src/DOMSVGStringList.cpp
+++ b/content/svg/content/src/DOMSVGStringList.cpp
@@ -87,17 +87,17 @@ DOMSVGStringList::~DOMSVGStringList()
 {
   // Script no longer has any references to us.
   SVGStringListTearoffTable().RemoveTearoff(&InternalList());
 }
 
 /* virtual */ JSObject*
 DOMSVGStringList::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return SVGStringListBinding::Wrap(aCx, aScope, this);
+  return SVGStringListBinding::Wrap(aCx, this);
 }
 
 // ----------------------------------------------------------------------------
 // SVGStringList implementation:
 
 uint32_t
 DOMSVGStringList::NumberOfItems() const
 {
--- a/content/svg/content/src/DOMSVGTransformList.cpp
+++ b/content/svg/content/src/DOMSVGTransformList.cpp
@@ -68,17 +68,17 @@ NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(
 NS_INTERFACE_MAP_END
 
 //----------------------------------------------------------------------
 // DOMSVGTransformList methods:
 
 JSObject*
 DOMSVGTransformList::WrapObject(JSContext *cx, JS::Handle<JSObject*> scope)
 {
-  return mozilla::dom::SVGTransformListBinding::Wrap(cx, scope, this);
+  return mozilla::dom::SVGTransformListBinding::Wrap(cx, this);
 }
 
 //----------------------------------------------------------------------
 // Helper class: AutoChangeTransformListNotifier
 // Stack-based helper class to pair calls to WillChangeTransformList and
 // DidChangeTransformList.
 class MOZ_STACK_CLASS AutoChangeTransformListNotifier
 {
--- a/content/svg/content/src/SVGAElement.cpp
+++ b/content/svg/content/src/SVGAElement.cpp
@@ -18,17 +18,17 @@
 NS_IMPL_NS_NEW_NAMESPACED_SVG_ELEMENT(A)
 
 namespace mozilla {
 namespace dom {
 
 JSObject*
 SVGAElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return SVGAElementBinding::Wrap(aCx, aScope, this);
+  return SVGAElementBinding::Wrap(aCx, this);
 }
 
 nsSVGElement::StringInfo SVGAElement::sStringInfo[2] =
 {
   { &nsGkAtoms::href, kNameSpaceID_XLink, true },
   { &nsGkAtoms::target, kNameSpaceID_None, true }
 };
 
--- a/content/svg/content/src/SVGAltGlyphElement.cpp
+++ b/content/svg/content/src/SVGAltGlyphElement.cpp
@@ -9,17 +9,17 @@
 NS_IMPL_NS_NEW_NAMESPACED_SVG_ELEMENT(AltGlyph)
 
 namespace mozilla {
 namespace dom {
 
 JSObject*
 SVGAltGlyphElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return SVGAltGlyphElementBinding::Wrap(aCx, aScope, this);
+  return SVGAltGlyphElementBinding::Wrap(aCx, this);
 }
 
 nsSVGElement::StringInfo SVGAltGlyphElement::sStringInfo[1] =
 {
   { &nsGkAtoms::href, kNameSpaceID_XLink, false }
 };
 
 
--- a/content/svg/content/src/SVGAngle.cpp
+++ b/content/svg/content/src/SVGAngle.cpp
@@ -13,17 +13,17 @@ using namespace mozilla::dom;
 NS_SVG_VAL_IMPL_CYCLE_COLLECTION_WRAPPERCACHED(SVGAngle, mSVGElement)
 
 NS_IMPL_CYCLE_COLLECTION_ROOT_NATIVE(SVGAngle, AddRef)
 NS_IMPL_CYCLE_COLLECTION_UNROOT_NATIVE(SVGAngle, Release)
 
 JSObject*
 SVGAngle::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return SVGAngleBinding::Wrap(aCx, aScope, this);
+  return SVGAngleBinding::Wrap(aCx, this);
 }
 
 uint16_t
 SVGAngle::UnitType() const
 {
   if (mType == AnimValue) {
     return mVal->mAnimValUnit;
   }
--- a/content/svg/content/src/SVGAnimateElement.cpp
+++ b/content/svg/content/src/SVGAnimateElement.cpp
@@ -9,17 +9,17 @@
 NS_IMPL_NS_NEW_NAMESPACED_SVG_ELEMENT(Animate)
 
 namespace mozilla {
 namespace dom {
 
 JSObject*
 SVGAnimateElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return SVGAnimateElementBinding::Wrap(aCx, aScope, this);
+  return SVGAnimateElementBinding::Wrap(aCx, this);
 }
 
 //----------------------------------------------------------------------
 // Implementation
 
 SVGAnimateElement::SVGAnimateElement(already_AddRefed<nsINodeInfo>& aNodeInfo)
   : SVGAnimationElement(aNodeInfo)
 {
--- a/content/svg/content/src/SVGAnimateMotionElement.cpp
+++ b/content/svg/content/src/SVGAnimateMotionElement.cpp
@@ -9,17 +9,17 @@
 NS_IMPL_NS_NEW_NAMESPACED_SVG_ELEMENT(AnimateMotion)
 
 namespace mozilla {
 namespace dom {
 
 JSObject*
 SVGAnimateMotionElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return SVGAnimateMotionElementBinding::Wrap(aCx, aScope, this);
+  return SVGAnimateMotionElementBinding::Wrap(aCx, this);
 }
 
 //----------------------------------------------------------------------
 // Implementation
 
 SVGAnimateMotionElement::SVGAnimateMotionElement(already_AddRefed<nsINodeInfo>& aNodeInfo)
   : SVGAnimationElement(aNodeInfo)
 {
--- a/content/svg/content/src/SVGAnimateTransformElement.cpp
+++ b/content/svg/content/src/SVGAnimateTransformElement.cpp
@@ -9,17 +9,17 @@
 NS_IMPL_NS_NEW_NAMESPACED_SVG_ELEMENT(AnimateTransform)
 
 namespace mozilla {
 namespace dom {
 
 JSObject*
 SVGAnimateTransformElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return SVGAnimateTransformElementBinding::Wrap(aCx, aScope, this);
+  return SVGAnimateTransformElementBinding::Wrap(aCx, this);
 }
 
 //----------------------------------------------------------------------
 // Implementation
 
 SVGAnimateTransformElement::SVGAnimateTransformElement(already_AddRefed<nsINodeInfo>& aNodeInfo)
   : SVGAnimationElement(aNodeInfo)
 {
--- a/content/svg/content/src/SVGAnimatedAngle.cpp
+++ b/content/svg/content/src/SVGAnimatedAngle.cpp
@@ -13,17 +13,17 @@ using namespace mozilla::dom;
 NS_SVG_VAL_IMPL_CYCLE_COLLECTION_WRAPPERCACHED(SVGAnimatedAngle, mSVGElement)
 
 NS_IMPL_CYCLE_COLLECTION_ROOT_NATIVE(SVGAnimatedAngle, AddRef)
 NS_IMPL_CYCLE_COLLECTION_UNROOT_NATIVE(SVGAnimatedAngle, Release)
 
 JSObject*
 SVGAnimatedAngle::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return SVGAnimatedAngleBinding::Wrap(aCx, aScope, this);
+  return SVGAnimatedAngleBinding::Wrap(aCx, this);
 }
 
 already_AddRefed<SVGAngle>
 SVGAnimatedAngle::BaseVal()
 {
   return mVal->ToDOMBaseVal(mSVGElement);
 }
 
--- a/content/svg/content/src/SVGAnimatedBoolean.cpp
+++ b/content/svg/content/src/SVGAnimatedBoolean.cpp
@@ -12,11 +12,11 @@ using namespace mozilla::dom;
 NS_SVG_VAL_IMPL_CYCLE_COLLECTION_WRAPPERCACHED(SVGAnimatedBoolean, mSVGElement)
 
 NS_IMPL_CYCLE_COLLECTION_ROOT_NATIVE(SVGAnimatedBoolean, AddRef)
 NS_IMPL_CYCLE_COLLECTION_UNROOT_NATIVE(SVGAnimatedBoolean, Release)
 
 JSObject*
 SVGAnimatedBoolean::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return SVGAnimatedBooleanBinding::Wrap(aCx, aScope, this);
+  return SVGAnimatedBooleanBinding::Wrap(aCx, this);
 }
 
--- a/content/svg/content/src/SVGAnimatedEnumeration.cpp
+++ b/content/svg/content/src/SVGAnimatedEnumeration.cpp
@@ -20,13 +20,13 @@ NS_IMPL_CYCLE_COLLECTING_RELEASE(SVGAnim
 NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(SVGAnimatedEnumeration)
   NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY
   NS_INTERFACE_MAP_ENTRY(nsISupports)
 NS_INTERFACE_MAP_END
 
 JSObject*
 SVGAnimatedEnumeration::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return SVGAnimatedEnumerationBinding::Wrap(aCx, aScope, this);
+  return SVGAnimatedEnumerationBinding::Wrap(aCx, this);
 }
 
 } // namespace dom
 } // namespace mozilla
--- a/content/svg/content/src/SVGAnimatedInteger.cpp
+++ b/content/svg/content/src/SVGAnimatedInteger.cpp
@@ -20,13 +20,13 @@ NS_IMPL_CYCLE_COLLECTING_RELEASE(SVGAnim
 NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(SVGAnimatedInteger)
   NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY
   NS_INTERFACE_MAP_ENTRY(nsISupports)
 NS_INTERFACE_MAP_END
 
 JSObject*
 SVGAnimatedInteger::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return SVGAnimatedIntegerBinding::Wrap(aCx, aScope, this);
+  return SVGAnimatedIntegerBinding::Wrap(aCx, this);
 }
 
 } // namespace dom
 } // namespace mozilla
--- a/content/svg/content/src/SVGAnimatedLength.cpp
+++ b/content/svg/content/src/SVGAnimatedLength.cpp
@@ -13,17 +13,17 @@ namespace dom {
 NS_SVG_VAL_IMPL_CYCLE_COLLECTION_WRAPPERCACHED(SVGAnimatedLength, mSVGElement)
 
 NS_IMPL_CYCLE_COLLECTION_ROOT_NATIVE(SVGAnimatedLength, AddRef)
 NS_IMPL_CYCLE_COLLECTION_UNROOT_NATIVE(SVGAnimatedLength, Release)
 
 JSObject*
 SVGAnimatedLength::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return SVGAnimatedLengthBinding::Wrap(aCx, aScope, this);
+  return SVGAnimatedLengthBinding::Wrap(aCx, this);
 }
 
 already_AddRefed<nsIDOMSVGLength>
 SVGAnimatedLength::BaseVal()
 {
   nsRefPtr<nsIDOMSVGLength> angle;
   mVal->ToDOMBaseVal(getter_AddRefs(angle), mSVGElement);
   return angle.forget();
--- a/content/svg/content/src/SVGAnimatedNumber.cpp
+++ b/content/svg/content/src/SVGAnimatedNumber.cpp
@@ -20,13 +20,13 @@ NS_IMPL_CYCLE_COLLECTING_RELEASE(SVGAnim
 NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(SVGAnimatedNumber)
   NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY
   NS_INTERFACE_MAP_ENTRY(nsISupports)
 NS_INTERFACE_MAP_END
 
 JSObject*
 SVGAnimatedNumber::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return SVGAnimatedNumberBinding::Wrap(aCx, aScope, this);
+  return SVGAnimatedNumberBinding::Wrap(aCx, this);
 }
 
 } // namespace dom
 } // namespace mozilla
--- a/content/svg/content/src/SVGAnimatedPreserveAspectRatio.cpp
+++ b/content/svg/content/src/SVGAnimatedPreserveAspectRatio.cpp
@@ -26,17 +26,17 @@ NS_IMPL_CYCLE_COLLECTING_RELEASE(DOMSVGA
 NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(DOMSVGAnimatedPreserveAspectRatio)
   NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY
   NS_INTERFACE_MAP_ENTRY(nsISupports)
 NS_INTERFACE_MAP_END
 
 JSObject*
 DOMSVGAnimatedPreserveAspectRatio::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return SVGAnimatedPreserveAspectRatioBinding::Wrap(aCx, aScope, this);
+  return SVGAnimatedPreserveAspectRatioBinding::Wrap(aCx, this);
 }
 
 /* Implementation */
 
 static const char *sAlignStrings[] =
   { "none", "xMinYMin", "xMidYMin", "xMaxYMin", "xMinYMid", "xMidYMid",
     "xMaxYMid", "xMinYMax", "xMidYMax", "xMaxYMax" };
 
--- a/content/svg/content/src/SVGAnimatedRect.cpp
+++ b/content/svg/content/src/SVGAnimatedRect.cpp
@@ -40,13 +40,13 @@ SVGAnimatedRect::GetAnimVal()
 {
   return mVal->ToDOMAnimVal(mSVGElement);
 }
 
 JSObject*
 SVGAnimatedRect::WrapObject(JSContext* aCx,
                             JS::Handle<JSObject*> aScope)
 {
-  return SVGAnimatedRectBinding::Wrap(aCx, aScope, this);
+  return SVGAnimatedRectBinding::Wrap(aCx, this);
 }
 
 } // namespace dom
 } // namespace mozilla
--- a/content/svg/content/src/SVGAnimatedString.cpp
+++ b/content/svg/content/src/SVGAnimatedString.cpp
@@ -8,13 +8,13 @@
 
 namespace mozilla {
 namespace dom {
 
 JSObject*
 SVGAnimatedString::WrapObject(JSContext* aCx,
                               JS::Handle<JSObject*> aScope)
 {
-  return SVGAnimatedStringBinding::Wrap(aCx, aScope, this);
+  return SVGAnimatedStringBinding::Wrap(aCx, this);
 }
 
 } // namespace dom
 } // namespace mozilla
--- a/content/svg/content/src/SVGAnimatedTransformList.cpp
+++ b/content/svg/content/src/SVGAnimatedTransformList.cpp
@@ -19,17 +19,17 @@ static
 NS_SVG_VAL_IMPL_CYCLE_COLLECTION_WRAPPERCACHED(SVGAnimatedTransformList, mElement)
 
 NS_IMPL_CYCLE_COLLECTION_ROOT_NATIVE(SVGAnimatedTransformList, AddRef)
 NS_IMPL_CYCLE_COLLECTION_UNROOT_NATIVE(SVGAnimatedTransformList, Release)
 
 JSObject*
 SVGAnimatedTransformList::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return SVGAnimatedTransformListBinding::Wrap(aCx, aScope, this);
+  return SVGAnimatedTransformListBinding::Wrap(aCx, this);
 }
 
 //----------------------------------------------------------------------
 already_AddRefed<DOMSVGTransformList>
 SVGAnimatedTransformList::BaseVal()
 {
   if (!mBaseVal) {
     mBaseVal = new DOMSVGTransformList(this, InternalAList().GetBaseValue());
--- a/content/svg/content/src/SVGCircleElement.cpp
+++ b/content/svg/content/src/SVGCircleElement.cpp
@@ -14,17 +14,17 @@ NS_IMPL_NS_NEW_NAMESPACED_SVG_ELEMENT(Ci
 using namespace mozilla::gfx;
 
 namespace mozilla {
 namespace dom {
 
 JSObject*
 SVGCircleElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return SVGCircleElementBinding::Wrap(aCx, aScope, this);
+  return SVGCircleElementBinding::Wrap(aCx, this);
 }
 
 nsSVGElement::LengthInfo SVGCircleElement::sLengthInfo[3] =
 {
   { &nsGkAtoms::cx, 0, nsIDOMSVGLength::SVG_LENGTHTYPE_NUMBER, SVGContentUtils::X },
   { &nsGkAtoms::cy, 0, nsIDOMSVGLength::SVG_LENGTHTYPE_NUMBER, SVGContentUtils::Y },
   { &nsGkAtoms::r, 0, nsIDOMSVGLength::SVG_LENGTHTYPE_NUMBER, SVGContentUtils::XY }
 };
--- a/content/svg/content/src/SVGClipPathElement.cpp
+++ b/content/svg/content/src/SVGClipPathElement.cpp
@@ -12,17 +12,17 @@
 NS_IMPL_NS_NEW_NAMESPACED_SVG_ELEMENT(ClipPath)
 
 namespace mozilla {
 namespace dom {
 
 JSObject*
 SVGClipPathElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return SVGClipPathElementBinding::Wrap(aCx, aScope, this);
+  return SVGClipPathElementBinding::Wrap(aCx, this);
 }
 
 nsSVGElement::EnumInfo SVGClipPathElement::sEnumInfo[1] =
 {
   { &nsGkAtoms::clipPathUnits,
     sSVGUnitTypesMap,
     SVG_UNIT_TYPE_USERSPACEONUSE
   }
--- a/content/svg/content/src/SVGDefsElement.cpp
+++ b/content/svg/content/src/SVGDefsElement.cpp
@@ -9,17 +9,17 @@
 NS_IMPL_NS_NEW_NAMESPACED_SVG_ELEMENT(Defs)
 
 namespace mozilla {
 namespace dom {
 
 JSObject*
 SVGDefsElement::WrapNode(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return SVGDefsElementBinding::Wrap(aCx, aScope, this);
+  return SVGDefsElementBinding::Wrap(aCx, this);
 }
 
 //----------------------------------------------------------------------
 // Implementation
 
 SVGDefsElement::SVGDefsElement(already_AddRefed<nsINodeInfo>& aNodeInfo)
   : SVGGraphicsElement(aNodeInfo)
 {
--- a/content/svg/content/src/SVGDescElement.cpp
+++ b/content/svg/content/src/SVGDescElement.cpp
@@ -9,17 +9,17 @@
 NS_IMPL_NS_NEW_NAMESPACED_SVG_ELEMENT(Desc)
 
 namespace mozilla {
 namespace dom {
 
 JSObject*
 SVGDescElement::WrapNode(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return SVGDescElementBinding::Wrap(aCx, aScope, this);
+  return SVGDescElementBinding::Wrap(aCx, this);
 }
 
 //----------------------------------------------------------------------
 // Implementation
 
 SVGDescElement::SVGDescElement(already_AddRefed<nsINodeInfo>& aNodeInfo)
   : SVGDescElementBase(aNodeInfo)
 {
--- a/content/svg/content/src/SVGEllipseElement.cpp
+++ b/content/svg/content/src/SVGEllipseElement.cpp
@@ -14,17 +14,17 @@ NS_IMPL_NS_NEW_NAMESPACED_SVG_ELEMENT(El
 using namespace mozilla::gfx;
 
 namespace mozilla {
 namespace dom {
 
 JSObject*
 SVGEllipseElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return SVGEllipseElementBinding::Wrap(aCx, aScope, this);
+  return SVGEllipseElementBinding::Wrap(aCx, this);
 }
 
 nsSVGElement::LengthInfo SVGEllipseElement::sLengthInfo[4] =
 {
   { &nsGkAtoms::cx, 0, nsIDOMSVGLength::SVG_LENGTHTYPE_NUMBER, SVGContentUtils::X },
   { &nsGkAtoms::cy, 0, nsIDOMSVGLength::SVG_LENGTHTYPE_NUMBER, SVGContentUtils::Y },
   { &nsGkAtoms::rx, 0, nsIDOMSVGLength::SVG_LENGTHTYPE_NUMBER, SVGContentUtils::X },
   { &nsGkAtoms::ry, 0, nsIDOMSVGLength::SVG_LENGTHTYPE_NUMBER, SVGContentUtils::Y },
--- a/content/svg/content/src/SVGFEBlendElement.cpp
+++ b/content/svg/content/src/SVGFEBlendElement.cpp
@@ -12,17 +12,17 @@ NS_IMPL_NS_NEW_NAMESPACED_SVG_ELEMENT(FE
 using namespace mozilla::gfx;
 
 namespace mozilla {
 namespace dom {
 
 JSObject*
 SVGFEBlendElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return SVGFEBlendElementBinding::Wrap(aCx, aScope, this);
+  return SVGFEBlendElementBinding::Wrap(aCx, this);
 }
 
 nsSVGEnumMapping SVGFEBlendElement::sModeMap[] = {
   {&nsGkAtoms::normal, SVG_FEBLEND_MODE_NORMAL},
   {&nsGkAtoms::multiply, SVG_FEBLEND_MODE_MULTIPLY},
   {&nsGkAtoms::screen, SVG_FEBLEND_MODE_SCREEN},
   {&nsGkAtoms::darken, SVG_FEBLEND_MODE_DARKEN},
   {&nsGkAtoms::lighten, SVG_FEBLEND_MODE_LIGHTEN},
--- a/content/svg/content/src/SVGFEColorMatrixElement.cpp
+++ b/content/svg/content/src/SVGFEColorMatrixElement.cpp
@@ -15,17 +15,17 @@ NS_IMPL_NS_NEW_NAMESPACED_SVG_ELEMENT(FE
 using namespace mozilla::gfx;
 
 namespace mozilla {
 namespace dom {
 
 JSObject*
 SVGFEColorMatrixElement::WrapNode(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return SVGFEColorMatrixElementBinding::Wrap(aCx, aScope, this);
+  return SVGFEColorMatrixElementBinding::Wrap(aCx, this);
 }
 
 nsSVGEnumMapping SVGFEColorMatrixElement::sTypeMap[] = {
   {&nsGkAtoms::matrix, SVG_FECOLORMATRIX_TYPE_MATRIX},
   {&nsGkAtoms::saturate, SVG_FECOLORMATRIX_TYPE_SATURATE},
   {&nsGkAtoms::hueRotate, SVG_FECOLORMATRIX_TYPE_HUE_ROTATE},
   {&nsGkAtoms::luminanceToAlpha, SVG_FECOLORMATRIX_TYPE_LUMINANCE_TO_ALPHA},
   {nullptr, 0}
--- a/content/svg/content/src/SVGFEComponentTransferElement.cpp
+++ b/content/svg/content/src/SVGFEComponentTransferElement.cpp
@@ -14,17 +14,17 @@ NS_IMPL_NS_NEW_NAMESPACED_SVG_ELEMENT(FE
 using namespace mozilla::gfx;;
 
 namespace mozilla {
 namespace dom {
 
 JSObject*
 SVGFEComponentTransferElement::WrapNode(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return SVGFEComponentTransferElementBinding::Wrap(aCx, aScope, this);
+  return SVGFEComponentTransferElementBinding::Wrap(aCx, this);
 }
 
 nsSVGElement::StringInfo SVGFEComponentTransferElement::sStringInfo[2] =
 {
   { &nsGkAtoms::result, kNameSpaceID_None, true },
   { &nsGkAtoms::in, kNameSpaceID_None, true }
 };
 
--- a/content/svg/content/src/SVGFECompositeElement.cpp
+++ b/content/svg/content/src/SVGFECompositeElement.cpp
@@ -11,17 +11,17 @@ NS_IMPL_NS_NEW_NAMESPACED_SVG_ELEMENT(FE
 using namespace mozilla::gfx;
 
 namespace mozilla {
 namespace dom {
 
 JSObject*
 SVGFECompositeElement::WrapNode(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return SVGFECompositeElementBinding::Wrap(aCx, aScope, this);
+  return SVGFECompositeElementBinding::Wrap(aCx, this);
 }
 
 nsSVGElement::NumberInfo SVGFECompositeElement::sNumberInfo[4] =
 {
   { &nsGkAtoms::k1, 0, false },
   { &nsGkAtoms::k2, 0, false },
   { &nsGkAtoms::k3, 0, false },
   { &nsGkAtoms::k4, 0, false }
--- a/content/svg/content/src/SVGFEConvolveMatrixElement.cpp
+++ b/content/svg/content/src/SVGFEConvolveMatrixElement.cpp
@@ -14,17 +14,17 @@ NS_IMPL_NS_NEW_NAMESPACED_SVG_ELEMENT(FE
 using namespace mozilla::gfx;
 
 namespace mozilla {
 namespace dom {
 
 JSObject*
 SVGFEConvolveMatrixElement::WrapNode(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return SVGFEConvolveMatrixElementBinding::Wrap(aCx, aScope, this);
+  return SVGFEConvolveMatrixElementBinding::Wrap(aCx, this);
 }
 
 nsSVGElement::NumberInfo SVGFEConvolveMatrixElement::sNumberInfo[2] =
 {
   { &nsGkAtoms::divisor, 1, false },
   { &nsGkAtoms::bias, 0, false }
 };
 
--- a/content/svg/content/src/SVGFEDiffuseLightingElement.cpp
+++ b/content/svg/content/src/SVGFEDiffuseLightingElement.cpp
@@ -13,17 +13,17 @@ NS_IMPL_NS_NEW_NAMESPACED_SVG_ELEMENT(FE
 using namespace mozilla::gfx;
 
 namespace mozilla {
 namespace dom {
 
 JSObject*
 SVGFEDiffuseLightingElement::WrapNode(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return SVGFEDiffuseLightingElementBinding::Wrap(aCx, aScope, this);
+  return SVGFEDiffuseLightingElementBinding::Wrap(aCx, this);
 }
 
 //----------------------------------------------------------------------
 // nsIDOMNode methods
 
 NS_IMPL_ELEMENT_CLONE_WITH_INIT(SVGFEDiffuseLightingElement)
 
 //----------------------------------------------------------------------
--- a/content/svg/content/src/SVGFEDisplacementMapElement.cpp
+++ b/content/svg/content/src/SVGFEDisplacementMapElement.cpp
@@ -13,17 +13,17 @@ NS_IMPL_NS_NEW_NAMESPACED_SVG_ELEMENT(FE
 using namespace mozilla::gfx;
 
 namespace mozilla {
 namespace dom {
 
 JSObject*
 SVGFEDisplacementMapElement::WrapNode(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return SVGFEDisplacementMapElementBinding::Wrap(aCx, aScope, this);
+  return SVGFEDisplacementMapElementBinding::Wrap(aCx, this);
 }
 
 nsSVGElement::NumberInfo SVGFEDisplacementMapElement::sNumberInfo[1] =
 {
   { &nsGkAtoms::scale, 0, false },
 };
 
 nsSVGEnumMapping SVGFEDisplacementMapElement::sChannelMap[] = {
--- a/content/svg/content/src/SVGFEDistantLightElement.cpp
+++ b/content/svg/content/src/SVGFEDistantLightElement.cpp
@@ -12,17 +12,17 @@ NS_IMPL_NS_NEW_NAMESPACED_SVG_ELEMENT(FE
 using namespace mozilla::gfx;
 
 namespace mozilla {
 namespace dom {
 
 JSObject*
 SVGFEDistantLightElement::WrapNode(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return SVGFEDistantLightElementBinding::Wrap(aCx, aScope, this);
+  return SVGFEDistantLightElementBinding::Wrap(aCx, this);
 }
 
 nsSVGElement::NumberInfo SVGFEDistantLightElement::sNumberInfo[2] =
 {
   { &nsGkAtoms::azimuth,   0, false },
   { &nsGkAtoms::elevation, 0, false }
 };
 
--- a/content/svg/content/src/SVGFEDropShadowElement.cpp
+++ b/content/svg/content/src/SVGFEDropShadowElement.cpp
@@ -12,17 +12,17 @@ NS_IMPL_NS_NEW_NAMESPACED_SVG_ELEMENT(FE
 using namespace mozilla::gfx;
 
 namespace mozilla {
 namespace dom {
 
 JSObject*
 SVGFEDropShadowElement::WrapNode(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return SVGFEDropShadowElementBinding::Wrap(aCx, aScope, this);
+  return SVGFEDropShadowElementBinding::Wrap(aCx, this);
 }
 
 nsSVGElement::NumberInfo SVGFEDropShadowElement::sNumberInfo[2] =
 {
   { &nsGkAtoms::dx, 2, false },
   { &nsGkAtoms::dy, 2, false }
 };
 
--- a/content/svg/content/src/SVGFEFloodElement.cpp
+++ b/content/svg/content/src/SVGFEFloodElement.cpp
@@ -15,17 +15,17 @@ NS_IMPL_NS_NEW_NAMESPACED_SVG_ELEMENT(FE
 using namespace mozilla::gfx;
 
 namespace mozilla {
 namespace dom {
 
 JSObject*
 SVGFEFloodElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return SVGFEFloodElementBinding::Wrap(aCx, aScope, this);
+  return SVGFEFloodElementBinding::Wrap(aCx, this);
 }
 
 nsSVGElement::StringInfo SVGFEFloodElement::sStringInfo[1] =
 {
   { &nsGkAtoms::result, kNameSpaceID_None, true }
 };
 
 //----------------------------------------------------------------------
--- a/content/svg/content/src/SVGFEGaussianBlurElement.cpp
+++ b/content/svg/content/src/SVGFEGaussianBlurElement.cpp
@@ -13,17 +13,17 @@ NS_IMPL_NS_NEW_NAMESPACED_SVG_ELEMENT(FE
 using namespace mozilla::gfx;
 
 namespace mozilla {
 namespace dom {
 
 JSObject*
 SVGFEGaussianBlurElement::WrapNode(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return SVGFEGaussianBlurElementBinding::Wrap(aCx, aScope, this);
+  return SVGFEGaussianBlurElementBinding::Wrap(aCx, this);
 }
 
 nsSVGElement::NumberPairInfo SVGFEGaussianBlurElement::sNumberPairInfo[1] =
 {
   { &nsGkAtoms::stdDeviation, 0, 0 }
 };
 
 nsSVGElement::StringInfo SVGFEGaussianBlurElement::sStringInfo[2] =
--- a/content/svg/content/src/SVGFEImageElement.cpp
+++ b/content/svg/content/src/SVGFEImageElement.cpp
@@ -20,17 +20,17 @@ NS_IMPL_NS_NEW_NAMESPACED_SVG_ELEMENT(FE
 using namespace mozilla::gfx;
 
 namespace mozilla {
 namespace dom {
 
 JSObject*
 SVGFEImageElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return SVGFEImageElementBinding::Wrap(aCx, aScope, this);
+  return SVGFEImageElementBinding::Wrap(aCx, this);
 }
 
 nsSVGElement::StringInfo SVGFEImageElement::sStringInfo[2] =
 {
   { &nsGkAtoms::result, kNameSpaceID_None, true },
   { &nsGkAtoms::href, kNameSpaceID_XLink, true }
 };
 
--- a/content/svg/content/src/SVGFEMergeElement.cpp
+++ b/content/svg/content/src/SVGFEMergeElement.cpp
@@ -12,17 +12,17 @@ NS_IMPL_NS_NEW_NAMESPACED_SVG_ELEMENT(FE
 using namespace mozilla::gfx;
 
 namespace mozilla {
 namespace dom {
 
 JSObject*
 SVGFEMergeElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return SVGFEMergeElementBinding::Wrap(aCx, aScope, this);
+  return SVGFEMergeElementBinding::Wrap(aCx, this);
 }
 
 nsSVGElement::StringInfo SVGFEMergeElement::sStringInfo[1] =
 {
   { &nsGkAtoms::result, kNameSpaceID_None, true }
 };
 
 NS_IMPL_ELEMENT_CLONE_WITH_INIT(SVGFEMergeElement)
--- a/content/svg/content/src/SVGFEMergeNodeElement.cpp
+++ b/content/svg/content/src/SVGFEMergeNodeElement.cpp
@@ -9,17 +9,17 @@
 NS_IMPL_NS_NEW_NAMESPACED_SVG_ELEMENT(FEMergeNode)
 
 namespace mozilla {
 namespace dom {
 
 JSObject*
 SVGFEMergeNodeElement::WrapNode(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return SVGFEMergeNodeElementBinding::Wrap(aCx, aScope, this);
+  return SVGFEMergeNodeElementBinding::Wrap(aCx, this);
 }
 
 nsSVGElement::StringInfo SVGFEMergeNodeElement::sStringInfo[1] =
 {
   { &nsGkAtoms::in, kNameSpaceID_None, true }
 };
 
 //----------------------------------------------------------------------
--- a/content/svg/content/src/SVGFEMorphologyElement.cpp
+++ b/content/svg/content/src/SVGFEMorphologyElement.cpp
@@ -12,17 +12,17 @@ NS_IMPL_NS_NEW_NAMESPACED_SVG_ELEMENT(FE
 using namespace mozilla::gfx;
 
 namespace mozilla {
 namespace dom {
 
 JSObject*
 SVGFEMorphologyElement::WrapNode(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return SVGFEMorphologyElementBinding::Wrap(aCx, aScope, this);
+  return SVGFEMorphologyElementBinding::Wrap(aCx, this);
 }
 
 nsSVGElement::NumberPairInfo SVGFEMorphologyElement::sNumberPairInfo[1] =
 {
   { &nsGkAtoms::radius, 0, 0 }
 };
 
 nsSVGEnumMapping SVGFEMorphologyElement::sOperatorMap[] = {
--- a/content/svg/content/src/SVGFEOffsetElement.cpp
+++ b/content/svg/content/src/SVGFEOffsetElement.cpp
@@ -12,17 +12,17 @@ NS_IMPL_NS_NEW_NAMESPACED_SVG_ELEMENT(FE
 using namespace mozilla::gfx;
 
 namespace mozilla {
 namespace dom {
 
 JSObject*
 SVGFEOffsetElement::WrapNode(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return SVGFEOffsetElementBinding::Wrap(aCx, aScope, this);
+  return SVGFEOffsetElementBinding::Wrap(aCx, this);
 }
 
 nsSVGElement::NumberInfo SVGFEOffsetElement::sNumberInfo[2] =
 {
   { &nsGkAtoms::dx, 0, false },
   { &nsGkAtoms::dy, 0, false }
 };
 
--- a/content/svg/content/src/SVGFEPointLightElement.cpp
+++ b/content/svg/content/src/SVGFEPointLightElement.cpp
@@ -12,17 +12,17 @@ NS_IMPL_NS_NEW_NAMESPACED_SVG_ELEMENT(FE
 using namespace mozilla::gfx;
 
 namespace mozilla {
 namespace dom {
 
 JSObject*
 SVGFEPointLightElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return SVGFEPointLightElementBinding::Wrap(aCx, aScope, this);
+  return SVGFEPointLightElementBinding::Wrap(aCx, this);
 }
 
 nsSVGElement::NumberInfo SVGFEPointLightElement::sNumberInfo[3] =
 {
   { &nsGkAtoms::x, 0, false },
   { &nsGkAtoms::y, 0, false },
   { &nsGkAtoms::z, 0, false }
 };
--- a/content/svg/content/src/SVGFESpecularLightingElement.cpp
+++ b/content/svg/content/src/SVGFESpecularLightingElement.cpp
@@ -13,17 +13,17 @@ NS_IMPL_NS_NEW_NAMESPACED_SVG_ELEMENT(FE
 using namespace mozilla::gfx;
 
 namespace mozilla {
 namespace dom {
 
 JSObject*
 SVGFESpecularLightingElement::WrapNode(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return SVGFESpecularLightingElementBinding::Wrap(aCx, aScope, this);
+  return SVGFESpecularLightingElementBinding::Wrap(aCx, this);
 }
 
 //----------------------------------------------------------------------
 // nsIDOMNode methods
 
 NS_IMPL_ELEMENT_CLONE_WITH_INIT(SVGFESpecularLightingElement)
 
 already_AddRefed<SVGAnimatedString>
--- a/content/svg/content/src/SVGFESpotLightElement.cpp
+++ b/content/svg/content/src/SVGFESpotLightElement.cpp
@@ -12,17 +12,17 @@ NS_IMPL_NS_NEW_NAMESPACED_SVG_ELEMENT(FE
 using namespace mozilla::gfx;
 
 namespace mozilla {
 namespace dom {
 
 JSObject*
 SVGFESpotLightElement::WrapNode(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return SVGFESpotLightElementBinding::Wrap(aCx, aScope, this);
+  return SVGFESpotLightElementBinding::Wrap(aCx, this);
 }
 
 nsSVGElement::NumberInfo SVGFESpotLightElement::sNumberInfo[8] =
 {
   { &nsGkAtoms::x, 0, false },
   { &nsGkAtoms::y, 0, false },
   { &nsGkAtoms::z, 0, false },
   { &nsGkAtoms::pointsAtX, 0, false },
--- a/content/svg/content/src/SVGFETileElement.cpp
+++ b/content/svg/content/src/SVGFETileElement.cpp
@@ -12,17 +12,17 @@ NS_IMPL_NS_NEW_NAMESPACED_SVG_ELEMENT(FE
 using namespace mozilla::gfx;
 
 namespace mozilla {
 namespace dom {
 
 JSObject*
 SVGFETileElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return SVGFETileElementBinding::Wrap(aCx, aScope, this);
+  return SVGFETileElementBinding::Wrap(aCx, this);
 }
 
 nsSVGElement::StringInfo SVGFETileElement::sStringInfo[2] =
 {
   { &nsGkAtoms::result, kNameSpaceID_None, true },
   { &nsGkAtoms::in, kNameSpaceID_None, true }
 };
 
--- a/content/svg/content/src/SVGFETurbulenceElement.cpp
+++ b/content/svg/content/src/SVGFETurbulenceElement.cpp
@@ -19,17 +19,17 @@ namespace dom {
 static const unsigned short SVG_STITCHTYPE_STITCH = 1;
 static const unsigned short SVG_STITCHTYPE_NOSTITCH = 2;
 
 static const int32_t MAX_OCTAVES = 10;
 
 JSObject*
 SVGFETurbulenceElement::WrapNode(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return SVGFETurbulenceElementBinding::Wrap(aCx, aScope, this);
+  return SVGFETurbulenceElementBinding::Wrap(aCx, this);
 }
 
 nsSVGElement::NumberInfo SVGFETurbulenceElement::sNumberInfo[1] =
 {
   { &nsGkAtoms::seed, 0, false }
 };
 
 nsSVGElement::NumberPairInfo SVGFETurbulenceElement::sNumberPairInfo[1] =
--- a/content/svg/content/src/SVGFilterElement.cpp
+++ b/content/svg/content/src/SVGFilterElement.cpp
@@ -14,17 +14,17 @@
 NS_IMPL_NS_NEW_NAMESPACED_SVG_ELEMENT(Filter)
 
 namespace mozilla {
 namespace dom {
 
 JSObject*
 SVGFilterElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return SVGFilterElementBinding::Wrap(aCx, aScope, this);
+  return SVGFilterElementBinding::Wrap(aCx, this);
 }
 
 nsSVGElement::LengthInfo SVGFilterElement::sLengthInfo[4] =
 {
   { &nsGkAtoms::x, -10, nsIDOMSVGLength::SVG_LENGTHTYPE_PERCENTAGE, SVGContentUtils::X },
   { &nsGkAtoms::y, -10, nsIDOMSVGLength::SVG_LENGTHTYPE_PERCENTAGE, SVGContentUtils::Y },
   { &nsGkAtoms::width, 120, nsIDOMSVGLength::SVG_LENGTHTYPE_PERCENTAGE, SVGContentUtils::X },
   { &nsGkAtoms::height, 120, nsIDOMSVGLength::SVG_LENGTHTYPE_PERCENTAGE, SVGContentUtils::Y },
--- a/content/svg/content/src/SVGForeignObjectElement.cpp
+++ b/content/svg/content/src/SVGForeignObjectElement.cpp
@@ -12,17 +12,17 @@
 NS_IMPL_NS_NEW_NAMESPACED_SVG_ELEMENT(ForeignObject)
 
 namespace mozilla {
 namespace dom {
 
 JSObject*
 SVGForeignObjectElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return SVGForeignObjectElementBinding::Wrap(aCx, aScope, this);
+  return SVGForeignObjectElementBinding::Wrap(aCx, this);
 }
 
 nsSVGElement::LengthInfo SVGForeignObjectElement::sLengthInfo[4] =
 {
   { &nsGkAtoms::x, 0, nsIDOMSVGLength::SVG_LENGTHTYPE_NUMBER, SVGContentUtils::X },
   { &nsGkAtoms::y, 0, nsIDOMSVGLength::SVG_LENGTHTYPE_NUMBER, SVGContentUtils::Y },
   { &nsGkAtoms::width, 0, nsIDOMSVGLength::SVG_LENGTHTYPE_NUMBER, SVGContentUtils::X },
   { &nsGkAtoms::height, 0, nsIDOMSVGLength::SVG_LENGTHTYPE_NUMBER, SVGContentUtils::Y },
--- a/content/svg/content/src/SVGGElement.cpp
+++ b/content/svg/content/src/SVGGElement.cpp
@@ -9,17 +9,17 @@
 NS_IMPL_NS_NEW_NAMESPACED_SVG_ELEMENT(G)
 
 namespace mozilla {
 namespace dom {
 
 JSObject*
 SVGGElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return SVGGElementBinding::Wrap(aCx, aScope, this);
+  return SVGGElementBinding::Wrap(aCx, this);
 }
 
 //----------------------------------------------------------------------
 // Implementation
 
 SVGGElement::SVGGElement(already_AddRefed<nsINodeInfo>& aNodeInfo)
   : SVGGraphicsElement(aNodeInfo)
 {
--- a/content/svg/content/src/SVGGradientElement.cpp
+++ b/content/svg/content/src/SVGGradientElement.cpp
@@ -113,17 +113,17 @@ SVGGradientElement::IsAttributeMapped(co
     SVGGradientElementBase::IsAttributeMapped(name);
 }
 
 //---------------------Linear Gradients------------------------
 
 JSObject*
 SVGLinearGradientElement::WrapNode(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return SVGLinearGradientElementBinding::Wrap(aCx, aScope, this);
+  return SVGLinearGradientElementBinding::Wrap(aCx, this);
 }
 
 nsSVGElement::LengthInfo SVGLinearGradientElement::sLengthInfo[4] =
 {
   { &nsGkAtoms::x1, 0, nsIDOMSVGLength::SVG_LENGTHTYPE_PERCENTAGE, SVGContentUtils::X },
   { &nsGkAtoms::y1, 0, nsIDOMSVGLength::SVG_LENGTHTYPE_PERCENTAGE, SVGContentUtils::Y },
   { &nsGkAtoms::x2, 100, nsIDOMSVGLength::SVG_LENGTHTYPE_PERCENTAGE, SVGContentUtils::X },
   { &nsGkAtoms::y2, 0, nsIDOMSVGLength::SVG_LENGTHTYPE_PERCENTAGE, SVGContentUtils::Y },
@@ -187,17 +187,17 @@ SVGLinearGradientElement::GetLengthInfo(
                               ArrayLength(sLengthInfo));
 }
 
 //-------------------------- Radial Gradients ----------------------------
 
 JSObject*
 SVGRadialGradientElement::WrapNode(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return SVGRadialGradientElementBinding::Wrap(aCx, aScope, this);
+  return SVGRadialGradientElementBinding::Wrap(aCx, this);
 }
 
 nsSVGElement::LengthInfo SVGRadialGradientElement::sLengthInfo[5] =
 {
   { &nsGkAtoms::cx, 50, nsIDOMSVGLength::SVG_LENGTHTYPE_PERCENTAGE, SVGContentUtils::X },
   { &nsGkAtoms::cy, 50, nsIDOMSVGLength::SVG_LENGTHTYPE_PERCENTAGE, SVGContentUtils::Y },
   { &nsGkAtoms::r, 50, nsIDOMSVGLength::SVG_LENGTHTYPE_PERCENTAGE, SVGContentUtils::XY },
   { &nsGkAtoms::fx, 50, nsIDOMSVGLength::SVG_LENGTHTYPE_PERCENTAGE, SVGContentUtils::X },
--- a/content/svg/content/src/SVGIRect.h
+++ b/content/svg/content/src/SVGIRect.h
@@ -28,17 +28,17 @@ public:
   }
 
   virtual ~SVGIRect()
   {
   }
 
   JSObject* WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope) MOZ_OVERRIDE
   {
-    return SVGRectBinding::Wrap(aCx, aScope, this);
+    return SVGRectBinding::Wrap(aCx, this);
   }
 
   virtual nsIContent* GetParentObject() const = 0;
 
   virtual float X() const = 0;
 
   virtual void SetX(float aX, ErrorResult& aRv) = 0;
 
--- a/content/svg/content/src/SVGImageElement.cpp
+++ b/content/svg/content/src/SVGImageElement.cpp
@@ -21,17 +21,17 @@ NS_IMPL_NS_NEW_NAMESPACED_SVG_ELEMENT(Im
 using namespace mozilla::gfx;
 
 namespace mozilla {
 namespace dom {
 
 JSObject*
 SVGImageElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return SVGImageElementBinding::Wrap(aCx, aScope, this);
+  return SVGImageElementBinding::Wrap(aCx, this);
 }
 
 nsSVGElement::LengthInfo SVGImageElement::sLengthInfo[4] =
 {
   { &nsGkAtoms::x, 0, nsIDOMSVGLength::SVG_LENGTHTYPE_NUMBER, SVGContentUtils::X },
   { &nsGkAtoms::y, 0, nsIDOMSVGLength::SVG_LENGTHTYPE_NUMBER, SVGContentUtils::Y },
   { &nsGkAtoms::width, 0, nsIDOMSVGLength::SVG_LENGTHTYPE_NUMBER, SVGContentUtils::X },
   { &nsGkAtoms::height, 0, nsIDOMSVGLength::SVG_LENGTHTYPE_NUMBER, SVGContentUtils::Y },
--- a/content/svg/content/src/SVGLineElement.cpp
+++ b/content/svg/content/src/SVGLineElement.cpp
@@ -13,17 +13,17 @@ NS_IMPL_NS_NEW_NAMESPACED_SVG_ELEMENT(Li
 using namespace mozilla::gfx;
 
 namespace mozilla {
 namespace dom {
 
 JSObject*
 SVGLineElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return SVGLineElementBinding::Wrap(aCx, aScope, this);
+  return SVGLineElementBinding::Wrap(aCx, this);
 }
 
 nsSVGElement::LengthInfo SVGLineElement::sLengthInfo[4] =
 {
   { &nsGkAtoms::x1, 0, nsIDOMSVGLength::SVG_LENGTHTYPE_NUMBER, SVGContentUtils::X },
   { &nsGkAtoms::y1, 0, nsIDOMSVGLength::SVG_LENGTHTYPE_NUMBER, SVGContentUtils::Y },
   { &nsGkAtoms::x2, 0, nsIDOMSVGLength::SVG_LENGTHTYPE_NUMBER, SVGContentUtils::X },
   { &nsGkAtoms::y2, 0, nsIDOMSVGLength::SVG_LENGTHTYPE_NUMBER, SVGContentUtils::Y },
--- a/content/svg/content/src/SVGMPathElement.cpp
+++ b/content/svg/content/src/SVGMPathElement.cpp
@@ -16,17 +16,17 @@
 NS_IMPL_NS_NEW_NAMESPACED_SVG_ELEMENT(MPath)
 
 namespace mozilla {
 namespace dom {
 
 JSObject*
 SVGMPathElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return SVGMPathElementBinding::Wrap(aCx, aScope, this);
+  return SVGMPathElementBinding::Wrap(aCx, this);
 }
 
 nsSVGElement::StringInfo SVGMPathElement::sStringInfo[1] =
 {
   { &nsGkAtoms::href, kNameSpaceID_XLink, false }
 };
 
 // Cycle collection magic -- based on nsSVGUseElement
--- a/content/svg/content/src/SVGMarkerElement.cpp
+++ b/content/svg/content/src/SVGMarkerElement.cpp
@@ -19,17 +19,17 @@
 NS_IMPL_NS_NEW_NAMESPACED_SVG_ELEMENT(Marker)
 
 namespace mozilla {
 namespace dom {
 
 JSObject*
 SVGMarkerElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return SVGMarkerElementBinding::Wrap(aCx, aScope, this);
+  return SVGMarkerElementBinding::Wrap(aCx, this);
 }
 
 nsSVGElement::LengthInfo SVGMarkerElement::sLengthInfo[4] =
 {
   { &nsGkAtoms::refX, 0, nsIDOMSVGLength::SVG_LENGTHTYPE_NUMBER, SVGContentUtils::X },
   { &nsGkAtoms::refY, 0, nsIDOMSVGLength::SVG_LENGTHTYPE_NUMBER, SVGContentUtils::Y },
   { &nsGkAtoms::markerWidth, 3, nsIDOMSVGLength::SVG_LENGTHTYPE_NUMBER, SVGContentUtils::X },
   { &nsGkAtoms::markerHeight, 3, nsIDOMSVGLength::SVG_LENGTHTYPE_NUMBER, SVGContentUtils::Y },
--- a/content/svg/content/src/SVGMaskElement.cpp
+++ b/content/svg/content/src/SVGMaskElement.cpp
@@ -13,17 +13,17 @@
 NS_IMPL_NS_NEW_NAMESPACED_SVG_ELEMENT(Mask)
 
 namespace mozilla {
 namespace dom {
 
 JSObject*
 SVGMaskElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return SVGMaskElementBinding::Wrap(aCx, aScope, this);
+  return SVGMaskElementBinding::Wrap(aCx, this);
 }
 
 //--------------------- Masks ------------------------
 
 nsSVGElement::LengthInfo SVGMaskElement::sLengthInfo[4] =
 {
   { &nsGkAtoms::x, -10, nsIDOMSVGLength::SVG_LENGTHTYPE_PERCENTAGE, SVGContentUtils::X },
   { &nsGkAtoms::y, -10, nsIDOMSVGLength::SVG_LENGTHTYPE_PERCENTAGE, SVGContentUtils::Y },
--- a/content/svg/content/src/SVGMatrix.cpp
+++ b/content/svg/content/src/SVGMatrix.cpp
@@ -23,17 +23,17 @@ SVGTransform*
 SVGMatrix::GetParentObject() const
 {
   return mTransform;
 }
 
 JSObject*
 SVGMatrix::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return SVGMatrixBinding::Wrap(aCx, aScope, this);
+  return SVGMatrixBinding::Wrap(aCx, this);
 }
 
 void
 SVGMatrix::SetA(float aA, ErrorResult& rv)
 {
   if (IsAnimVal()) {
     rv.Throw(NS_ERROR_DOM_NO_MODIFICATION_ALLOWED_ERR);
     return;
--- a/content/svg/content/src/SVGMetadataElement.cpp
+++ b/content/svg/content/src/SVGMetadataElement.cpp
@@ -9,17 +9,17 @@
 NS_IMPL_NS_NEW_NAMESPACED_SVG_ELEMENT(Metadata)
 
 namespace mozilla {
 namespace dom {
 
 JSObject*
 SVGMetadataElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return SVGMetadataElementBinding::Wrap(aCx, aScope, this);
+  return SVGMetadataElementBinding::Wrap(aCx, this);
 }
 
 //----------------------------------------------------------------------
 // Implementation
 
 SVGMetadataElement::SVGMetadataElement(already_AddRefed<nsINodeInfo>& aNodeInfo)
   : SVGMetadataElementBase(aNodeInfo)
 {
--- a/content/svg/content/src/SVGPathElement.cpp
+++ b/content/svg/content/src/SVGPathElement.cpp
@@ -27,17 +27,17 @@ NS_IMPL_NS_NEW_NAMESPACED_SVG_ELEMENT(Pa
 using namespace mozilla::gfx;
 
 namespace mozilla {
 namespace dom {
 
 JSObject*
 SVGPathElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return SVGPathElementBinding::Wrap(aCx, aScope, this);
+  return SVGPathElementBinding::Wrap(aCx, this);
 }
 
 nsSVGElement::NumberInfo SVGPathElement::sNumberInfo = 
 { &nsGkAtoms::pathLength, 0, false };
 
 //----------------------------------------------------------------------
 // Implementation
 
--- a/content/svg/content/src/SVGPatternElement.cpp
+++ b/content/svg/content/src/SVGPatternElement.cpp
@@ -14,17 +14,17 @@
 NS_IMPL_NS_NEW_NAMESPACED_SVG_ELEMENT(Pattern)
 
 namespace mozilla {
 namespace dom {
 
 JSObject*
 SVGPatternElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return SVGPatternElementBinding::Wrap(aCx, aScope, this);
+  return SVGPatternElementBinding::Wrap(aCx, this);
 }
 
 //--------------------- Patterns ------------------------
 
 nsSVGElement::LengthInfo SVGPatternElement::sLengthInfo[4] =
 {
   { &nsGkAtoms::x, 0, nsIDOMSVGLength::SVG_LENGTHTYPE_PERCENTAGE, SVGContentUtils::X },
   { &nsGkAtoms::y, 0, nsIDOMSVGLength::SVG_LENGTHTYPE_PERCENTAGE, SVGContentUtils::Y },
--- a/content/svg/content/src/SVGPolygonElement.cpp
+++ b/content/svg/content/src/SVGPolygonElement.cpp
@@ -11,17 +11,17 @@
 NS_IMPL_NS_NEW_NAMESPACED_SVG_ELEMENT(Polygon)
 
 namespace mozilla {
 namespace dom {
 
 JSObject*
 SVGPolygonElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return SVGPolygonElementBinding::Wrap(aCx, aScope, this);
+  return SVGPolygonElementBinding::Wrap(aCx, this);
 }
 
 //----------------------------------------------------------------------
 // Implementation
 
 SVGPolygonElement::SVGPolygonElement(already_AddRefed<nsINodeInfo>& aNodeInfo)
   : SVGPolygonElementBase(aNodeInfo)
 {
--- a/content/svg/content/src/SVGPolylineElement.cpp
+++ b/content/svg/content/src/SVGPolylineElement.cpp
@@ -9,17 +9,17 @@
 NS_IMPL_NS_NEW_NAMESPACED_SVG_ELEMENT(Polyline)
 
 namespace mozilla {
 namespace dom {
 
 JSObject*
 SVGPolylineElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return SVGPolylineElementBinding::Wrap(aCx, aScope, this);
+  return SVGPolylineElementBinding::Wrap(aCx, this);
 }
 
 //----------------------------------------------------------------------
 // Implementation
 
 SVGPolylineElement::SVGPolylineElement(already_AddRefed<nsINodeInfo>& aNodeInfo)
   : SVGPolylineElementBase(aNodeInfo)
 {
--- a/content/svg/content/src/SVGPreserveAspectRatio.cpp
+++ b/content/svg/content/src/SVGPreserveAspectRatio.cpp
@@ -26,17 +26,17 @@ SVGPreserveAspectRatio::operator==(const
   return mAlign == aOther.mAlign &&
     mMeetOrSlice == aOther.mMeetOrSlice &&
     mDefer == aOther.mDefer;
 }
 
 JSObject*
 DOMSVGPreserveAspectRatio::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return mozilla::dom::SVGPreserveAspectRatioBinding::Wrap(aCx, aScope, this);
+  return mozilla::dom::SVGPreserveAspectRatioBinding::Wrap(aCx, this);
 }
 
 uint16_t
 DOMSVGPreserveAspectRatio::Align()
 {
   if (mIsBaseValue) {
     return mVal->GetBaseValue().GetAlign();
   }
--- a/content/svg/content/src/SVGRectElement.cpp
+++ b/content/svg/content/src/SVGRectElement.cpp
@@ -18,17 +18,17 @@ using namespace mozilla::gfx;
 namespace mozilla {
 namespace dom {
 
 class SVGAnimatedLength;
 
 JSObject*
 SVGRectElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return SVGRectElementBinding::Wrap(aCx, aScope, this);
+  return SVGRectElementBinding::Wrap(aCx, this);
 }
 
 nsSVGElement::LengthInfo SVGRectElement::sLengthInfo[6] =
 {
   { &nsGkAtoms::x, 0, nsIDOMSVGLength::SVG_LENGTHTYPE_NUMBER, SVGContentUtils::X },
   { &nsGkAtoms::y, 0, nsIDOMSVGLength::SVG_LENGTHTYPE_NUMBER, SVGContentUtils::Y },
   { &nsGkAtoms::width, 0, nsIDOMSVGLength::SVG_LENGTHTYPE_NUMBER, SVGContentUtils::X },
   { &nsGkAtoms::height, 0, nsIDOMSVGLength::SVG_LENGTHTYPE_NUMBER, SVGContentUtils::Y },
--- a/content/svg/content/src/SVGSVGElement.cpp
+++ b/content/svg/content/src/SVGSVGElement.cpp
@@ -47,17 +47,17 @@ using namespace mozilla::gfx;
 namespace mozilla {
 namespace dom {
 
 class SVGAnimatedLength;
 
 JSObject*
 SVGSVGElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return SVGSVGElementBinding::Wrap(aCx, aScope, this);
+  return SVGSVGElementBinding::Wrap(aCx, this);
 }
 
 NS_IMPL_CYCLE_COLLECTION_INHERITED_1(DOMSVGTranslatePoint, nsISVGPoint,
                                      mElement)
 
 NS_IMPL_ADDREF_INHERITED(DOMSVGTranslatePoint, nsISVGPoint)
 NS_IMPL_RELEASE_INHERITED(DOMSVGTranslatePoint, nsISVGPoint)
 
--- a/content/svg/content/src/SVGScriptElement.cpp
+++ b/content/svg/content/src/SVGScriptElement.cpp
@@ -13,17 +13,17 @@
 NS_IMPL_NS_NEW_NAMESPACED_SVG_ELEMENT_CHECK_PARSER(Script)
 
 namespace mozilla {
 namespace dom {
 
 JSObject*
 SVGScriptElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return SVGScriptElementBinding::Wrap(aCx, aScope, this);
+  return SVGScriptElementBinding::Wrap(aCx, this);
 }
 
 nsSVGElement::StringInfo SVGScriptElement::sStringInfo[1] =
 {
   { &nsGkAtoms::href, kNameSpaceID_XLink, false }
 };
 
 //----------------------------------------------------------------------
--- a/content/svg/content/src/SVGSetElement.cpp
+++ b/content/svg/content/src/SVGSetElement.cpp
@@ -9,17 +9,17 @@
 NS_IMPL_NS_NEW_NAMESPACED_SVG_ELEMENT(Set)
 
 namespace mozilla {
 namespace dom {
 
 JSObject*
 SVGSetElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return SVGSetElementBinding::Wrap(aCx, aScope, this);
+  return SVGSetElementBinding::Wrap(aCx, this);
 }
 
 //----------------------------------------------------------------------
 // Implementation
 
 SVGSetElement::SVGSetElement(already_AddRefed<nsINodeInfo>& aNodeInfo)
   : SVGAnimationElement(aNodeInfo)
 {
--- a/content/svg/content/src/SVGStopElement.cpp
+++ b/content/svg/content/src/SVGStopElement.cpp
@@ -9,17 +9,17 @@
 NS_IMPL_NS_NEW_NAMESPACED_SVG_ELEMENT(Stop)
 
 namespace mozilla {
 namespace dom {
 
 JSObject*
 SVGStopElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return SVGStopElementBinding::Wrap(aCx, aScope, this);
+  return SVGStopElementBinding::Wrap(aCx, this);
 }
 
 nsSVGElement::NumberInfo SVGStopElement::sNumberInfo =
 { &nsGkAtoms::offset, 0, true };
 
 //----------------------------------------------------------------------
 // Implementation
 
--- a/content/svg/content/src/SVGStyleElement.cpp
+++ b/content/svg/content/src/SVGStyleElement.cpp
@@ -11,17 +11,17 @@
 NS_IMPL_NS_NEW_NAMESPACED_SVG_ELEMENT(Style)
 
 namespace mozilla {
 namespace dom {
 
 JSObject*
 SVGStyleElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return SVGStyleElementBinding::Wrap(aCx, aScope, this);
+  return SVGStyleElementBinding::Wrap(aCx, this);
 }
 
 //----------------------------------------------------------------------
 // nsISupports methods
 
 NS_IMPL_ADDREF_INHERITED(SVGStyleElement, SVGStyleElementBase)
 NS_IMPL_RELEASE_INHERITED(SVGStyleElement, SVGStyleElementBase)
 
--- a/content/svg/content/src/SVGSwitchElement.cpp
+++ b/content/svg/content/src/SVGSwitchElement.cpp
@@ -15,17 +15,17 @@ class nsIFrame;
 NS_IMPL_NS_NEW_NAMESPACED_SVG_ELEMENT(Switch)
 
 namespace mozilla {
 namespace dom {
 
 JSObject*
 SVGSwitchElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return SVGSwitchElementBinding::Wrap(aCx, aScope, this);
+  return SVGSwitchElementBinding::Wrap(aCx, this);
 }
 
 //----------------------------------------------------------------------
 // nsISupports methods
 
 NS_IMPL_CYCLE_COLLECTION_INHERITED_1(SVGSwitchElement, SVGSwitchElementBase,
                                      mActiveChild)
 
--- a/content/svg/content/src/SVGSymbolElement.cpp
+++ b/content/svg/content/src/SVGSymbolElement.cpp
@@ -9,17 +9,17 @@
 NS_IMPL_NS_NEW_NAMESPACED_SVG_ELEMENT(Symbol)
 
 namespace mozilla {
 namespace dom {
 
 JSObject*
 SVGSymbolElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return SVGSymbolElementBinding::Wrap(aCx, aScope, this);
+  return SVGSymbolElementBinding::Wrap(aCx, this);
 }
 
 //----------------------------------------------------------------------
 // nsISupports methods
 
 NS_IMPL_ISUPPORTS_INHERITED4(SVGSymbolElement, SVGSymbolElementBase,
                              nsIDOMNode, nsIDOMElement,
                              nsIDOMSVGElement, mozilla::dom::SVGTests)
--- a/content/svg/content/src/SVGTSpanElement.cpp
+++ b/content/svg/content/src/SVGTSpanElement.cpp
@@ -9,17 +9,17 @@
 NS_IMPL_NS_NEW_NAMESPACED_SVG_ELEMENT(TSpan)
 
 namespace mozilla {
 namespace dom {
 
 JSObject*
 SVGTSpanElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return SVGTSpanElementBinding::Wrap(aCx, aScope, this);
+  return SVGTSpanElementBinding::Wrap(aCx, this);
 }
 
 
 //----------------------------------------------------------------------
 // Implementation
 
 SVGTSpanElement::SVGTSpanElement(already_AddRefed<nsINodeInfo>& aNodeInfo)
   : SVGTSpanElementBase(aNodeInfo)
--- a/content/svg/content/src/SVGTextElement.cpp
+++ b/content/svg/content/src/SVGTextElement.cpp
@@ -9,17 +9,17 @@
 NS_IMPL_NS_NEW_NAMESPACED_SVG_ELEMENT(Text)
 
 namespace mozilla {
 namespace dom {
 
 JSObject*
 SVGTextElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return SVGTextElementBinding::Wrap(aCx, aScope, this);
+  return SVGTextElementBinding::Wrap(aCx, this);
 }
 
 //----------------------------------------------------------------------
 // Implementation
 
 SVGTextElement::SVGTextElement(already_AddRefed<nsINodeInfo>& aNodeInfo)
   : SVGTextElementBase(aNodeInfo)
 {
--- a/content/svg/content/src/SVGTextPathElement.cpp
+++ b/content/svg/content/src/SVGTextPathElement.cpp
@@ -14,17 +14,17 @@ NS_IMPL_NS_NEW_NAMESPACED_SVG_ELEMENT(Te
 namespace mozilla {
 namespace dom {
 
 class SVGAnimatedLength;
 
 JSObject*
 SVGTextPathElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return SVGTextPathElementBinding::Wrap(aCx, aScope, this);
+  return SVGTextPathElementBinding::Wrap(aCx, this);
 }
 
 nsSVGElement::LengthInfo SVGTextPathElement::sLengthInfo[2] =
 {
   // from SVGTextContentElement:
   { &nsGkAtoms::textLength, 0, nsIDOMSVGLength::SVG_LENGTHTYPE_NUMBER, SVGContentUtils::XY },
   // from SVGTextPathElement:
   { &nsGkAtoms::startOffset, 0, nsIDOMSVGLength::SVG_LENGTHTYPE_NUMBER, SVGContentUtils::X }
--- a/content/svg/content/src/SVGTitleElement.cpp
+++ b/content/svg/content/src/SVGTitleElement.cpp
@@ -9,17 +9,17 @@
 NS_IMPL_NS_NEW_NAMESPACED_SVG_ELEMENT(Title)
 
 namespace mozilla {
 namespace dom {
 
 JSObject*
 SVGTitleElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return SVGTitleElementBinding::Wrap(aCx, aScope, this);
+  return SVGTitleElementBinding::Wrap(aCx, this);
 }
 
 //----------------------------------------------------------------------
 // nsISupports methods
 
 NS_IMPL_ISUPPORTS_INHERITED4(SVGTitleElement, SVGTitleElementBase,
                              nsIDOMNode, nsIDOMElement,
                              nsIDOMSVGElement,
--- a/content/svg/content/src/SVGTransform.cpp
+++ b/content/svg/content/src/SVGTransform.cpp
@@ -58,17 +58,17 @@ NS_IMPL_CYCLE_COLLECTION_TRACE_PRESERVED
 NS_IMPL_CYCLE_COLLECTION_TRACE_END
 
 NS_IMPL_CYCLE_COLLECTION_ROOT_NATIVE(SVGTransform, AddRef)
 NS_IMPL_CYCLE_COLLECTION_UNROOT_NATIVE(SVGTransform, Release)
 
 JSObject*
 SVGTransform::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return SVGTransformBinding::Wrap(aCx, aScope, this);
+  return SVGTransformBinding::Wrap(aCx, this);
 }
 
 //----------------------------------------------------------------------
 // Helper class: AutoChangeTransformNotifier
 // Stack-based helper class to pair calls to WillChangeTransformList
 // and DidChangeTransformList.
 class MOZ_STACK_CLASS AutoChangeTransformNotifier
 {
--- a/content/svg/content/src/SVGUseElement.cpp
+++ b/content/svg/content/src/SVGUseElement.cpp
@@ -18,17 +18,17 @@
 NS_IMPL_NS_NEW_NAMESPACED_SVG_ELEMENT(Use)
 
 namespace mozilla {
 namespace dom {
 
 JSObject*
 SVGUseElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return SVGUseElementBinding::Wrap(aCx, aScope, this);
+  return SVGUseElementBinding::Wrap(aCx, this);
 }
 
 ////////////////////////////////////////////////////////////////////////
 // implementation
 
 nsSVGElement::LengthInfo SVGUseElement::sLengthInfo[4] =
 {
   { &nsGkAtoms::x, 0, nsIDOMSVGLength::SVG_LENGTHTYPE_NUMBER, SVGContentUtils::X },
--- a/content/svg/content/src/SVGViewElement.cpp
+++ b/content/svg/content/src/SVGViewElement.cpp
@@ -10,17 +10,17 @@
 NS_IMPL_NS_NEW_NAMESPACED_SVG_ELEMENT(View)
 
 namespace mozilla {
 namespace dom {
 
 JSObject*
 SVGViewElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return SVGViewElementBinding::Wrap(aCx, aScope, this);
+  return SVGViewElementBinding::Wrap(aCx, this);
 }
 
 nsSVGElement::StringListInfo SVGViewElement::sStringListInfo[1] =
 {
   { &nsGkAtoms::viewTarget }
 };
 
 nsSVGEnumMapping SVGViewElement::sZoomAndPanMap[] = {
--- a/content/svg/content/src/SVGZoomEvent.h
+++ b/content/svg/content/src/SVGZoomEvent.h
@@ -31,17 +31,17 @@ public:
                WidgetGUIEvent* aEvent);
 
   // Forward to base class
   NS_FORWARD_TO_UIEVENT
 
   virtual JSObject* WrapObject(JSContext* aCx,
                                JS::Handle<JSObject*> aScope) MOZ_OVERRIDE
   {
-    return SVGZoomEventBinding::Wrap(aCx, aScope, this);
+    return SVGZoomEventBinding::Wrap(aCx, this);
   }
 
   float PreviousScale() const
   {
     return mPreviousScale;
   }
 
   nsISVGPoint* GetPreviousTranslate() const
--- a/content/svg/content/src/nsISVGPoint.h
+++ b/content/svg/content/src/nsISVGPoint.h
@@ -137,17 +137,17 @@ public:
   // WebIDL
   virtual float X() = 0;
   virtual void SetX(float aX, ErrorResult& rv) = 0;
   virtual float Y() = 0;
   virtual void SetY(float aY, ErrorResult& rv) = 0;
   virtual already_AddRefed<nsISVGPoint> MatrixTransform(dom::SVGMatrix& matrix) = 0;
   virtual JSObject* WrapObject(JSContext *cx,
                                JS::Handle<JSObject*> scope) MOZ_OVERRIDE
-    { return dom::SVGPointBinding::Wrap(cx, scope, this); }
+    { return dom::SVGPointBinding::Wrap(cx, this); }
 
   virtual nsISupports* GetParentObject() = 0;
 
 protected:
 #ifdef DEBUG
   bool IndexIsValid();
 #endif
 
--- a/content/svg/content/src/nsSVGElement.cpp
+++ b/content/svg/content/src/nsSVGElement.cpp
@@ -87,17 +87,17 @@ nsSVGEnumMapping nsSVGElement::sSVGUnitT
 nsSVGElement::nsSVGElement(already_AddRefed<nsINodeInfo>& aNodeInfo)
   : nsSVGElementBase(aNodeInfo)
 {
 }
 
 JSObject*
 nsSVGElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return SVGElementBinding::Wrap(aCx, aScope, this);
+  return SVGElementBinding::Wrap(aCx, this);
 }
 
 //----------------------------------------------------------------------
 
 /* readonly attribute SVGAnimatedString className; */
 NS_IMETHODIMP
 nsSVGElement::GetClassName(nsISupports** aClassName)
 {
--- a/content/svg/content/src/nsSVGFilters.cpp
+++ b/content/svg/content/src/nsSVGFilters.cpp
@@ -363,65 +363,65 @@ SVGComponentTransferFunctionElement::Get
 {
   return NumberAttributesInfo(mNumberAttributes, sNumberInfo,
                               ArrayLength(sNumberInfo));
 }
 
 /* virtual */ JSObject*
 SVGFEFuncRElement::WrapNode(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return SVGFEFuncRElementBinding::Wrap(aCx, aScope, this);
+  return SVGFEFuncRElementBinding::Wrap(aCx, this);
 }
 
 } // namespace dom
 } // namespace mozilla
 
 NS_IMPL_NS_NEW_NAMESPACED_SVG_ELEMENT(FEFuncR)
 
 namespace mozilla {
 namespace dom {
 
 NS_IMPL_ELEMENT_CLONE_WITH_INIT(SVGFEFuncRElement)
 
 /* virtual */ JSObject*
 SVGFEFuncGElement::WrapNode(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return SVGFEFuncGElementBinding::Wrap(aCx, aScope, this);
+  return SVGFEFuncGElementBinding::Wrap(aCx, this);
 }
 
 } // namespace dom
 } // namespace mozilla
 
 NS_IMPL_NS_NEW_NAMESPACED_SVG_ELEMENT(FEFuncG)
 
 namespace mozilla {
 namespace dom {
 
 NS_IMPL_ELEMENT_CLONE_WITH_INIT(SVGFEFuncGElement)
 
 /* virtual */ JSObject*
 SVGFEFuncBElement::WrapNode(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return SVGFEFuncBElementBinding::Wrap(aCx, aScope, this);
+  return SVGFEFuncBElementBinding::Wrap(aCx, this);
 }
 
 } // namespace dom
 } // namespace mozilla
 
 NS_IMPL_NS_NEW_NAMESPACED_SVG_ELEMENT(FEFuncB)
 
 namespace mozilla {
 namespace dom {
 
 NS_IMPL_ELEMENT_CLONE_WITH_INIT(SVGFEFuncBElement)
 
 /* virtual */ JSObject*
 SVGFEFuncAElement::WrapNode(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return SVGFEFuncAElementBinding::Wrap(aCx, aScope, this);
+  return SVGFEFuncAElementBinding::Wrap(aCx, this);
 }
 
 } // namespace dom
 } // namespace mozilla
 
 NS_IMPL_NS_NEW_NAMESPACED_SVG_ELEMENT(FEFuncA)
 
 namespace mozilla {
--- a/content/svg/document/src/SVGDocument.cpp
+++ b/content/svg/document/src/SVGDocument.cpp
@@ -66,17 +66,17 @@ SVGDocument::Clone(nsINodeInfo *aNodeInf
   NS_ENSURE_SUCCESS(rv, rv);
 
   return CallQueryInterface(clone.get(), aResult);
 }
 
 JSObject*
 SVGDocument::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return SVGDocumentBinding::Wrap(aCx, aScope, this);
+  return SVGDocumentBinding::Wrap(aCx, this);
 }
 
 } // namespace dom
 } // namespace mozilla
 
 ////////////////////////////////////////////////////////////////////////
 // Exported creation functions
 
--- a/content/xml/content/src/CDATASection.cpp
+++ b/content/xml/content/src/CDATASection.cpp
@@ -16,17 +16,17 @@ CDATASection::~CDATASection()
 
 NS_IMPL_ISUPPORTS_INHERITED4(CDATASection, nsGenericDOMDataNode, nsIDOMNode,
                              nsIDOMCharacterData, nsIDOMText,
                              nsIDOMCDATASection)
 
 JSObject*
 CDATASection::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return CDATASectionBinding::Wrap(aCx, aScope, this);
+  return CDATASectionBinding::Wrap(aCx, this);
 }
 
 bool
 CDATASection::IsNodeOfType(uint32_t aFlags) const
 {
   return !(aFlags & ~(eCONTENT | eTEXT | eDATA_NODE));
 }
 
--- a/content/xml/content/src/ProcessingInstruction.cpp
+++ b/content/xml/content/src/ProcessingInstruction.cpp
@@ -64,17 +64,17 @@ ProcessingInstruction::~ProcessingInstru
 
 NS_IMPL_ISUPPORTS_INHERITED3(ProcessingInstruction, nsGenericDOMDataNode,
                              nsIDOMNode, nsIDOMCharacterData,
                              nsIDOMProcessingInstruction)
 
 JSObject*
 ProcessingInstruction::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return ProcessingInstructionBinding::Wrap(aCx, aScope, this);
+  return ProcessingInstructionBinding::Wrap(aCx, this);
 }
 
 NS_IMETHODIMP
 ProcessingInstruction::GetTarget(nsAString& aTarget)
 {
   aTarget = NodeName();
 
   return NS_OK;
--- a/content/xml/content/src/XMLStylesheetProcessingInstruction.cpp
+++ b/content/xml/content/src/XMLStylesheetProcessingInstruction.cpp
@@ -39,17 +39,17 @@ NS_IMPL_CYCLE_COLLECTION_UNLINK_END
 
 XMLStylesheetProcessingInstruction::~XMLStylesheetProcessingInstruction()
 {
 }
 
 JSObject*
 XMLStylesheetProcessingInstruction::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return XMLStylesheetProcessingInstructionBinding::Wrap(aCx, aScope, this);
+  return XMLStylesheetProcessingInstructionBinding::Wrap(aCx, this);
 }
 
 // nsIContent
 
 nsresult
 XMLStylesheetProcessingInstruction::BindToTree(nsIDocument* aDocument,
                                                nsIContent* aParent,
                                                nsIContent* aBindingParent,
--- a/content/xml/content/src/nsXMLElement.cpp
+++ b/content/xml/content/src/nsXMLElement.cpp
@@ -20,17 +20,17 @@ NS_NewXMLElement(Element** aInstancePtrR
 }
 
 NS_IMPL_ISUPPORTS_INHERITED2(nsXMLElement, Element,
                              nsIDOMNode, nsIDOMElement)
 
 JSObject*
 nsXMLElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return ElementBinding::Wrap(aCx, aScope, this);
+  return ElementBinding::Wrap(aCx, this);
 }
 
 NS_IMPL_ELEMENT_CLONE(nsXMLElement)
 
 nsresult
 nsXMLElement::UnsetAttr(int32_t aNameSpaceID, nsIAtom* aAttribute,
                         bool aNotify)
 {
--- a/content/xml/document/src/XMLDocument.cpp
+++ b/content/xml/document/src/XMLDocument.cpp
@@ -597,13 +597,13 @@ XMLDocument::Clone(nsINodeInfo *aNodeInf
   clone->mAsync = mAsync;
 
   return CallQueryInterface(clone.get(), aResult);
 }
 
 JSObject*
 XMLDocument::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return XMLDocumentBinding::Wrap(aCx, aScope, this);
+  return XMLDocumentBinding::Wrap(aCx, this);
 }
 
 } // namespace dom
 } // namespace mozilla
--- a/content/xul/content/src/nsXULElement.cpp
+++ b/content/xul/content/src/nsXULElement.cpp
@@ -1946,17 +1946,17 @@ bool
 nsXULElement::IsEventAttributeName(nsIAtom *aName)
 {
   return nsContentUtils::IsEventAttributeName(aName, EventNameType_XUL);
 }
 
 JSObject*
 nsXULElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-    return dom::XULElementBinding::Wrap(aCx, aScope, this);
+    return dom::XULElementBinding::Wrap(aCx, this);
 }
 
 NS_IMPL_CYCLE_COLLECTION_CLASS(nsXULPrototypeNode)
 
 NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(nsXULPrototypeNode)
     if (tmp->mType == nsXULPrototypeNode::eType_Element) {
         static_cast<nsXULPrototypeElement*>(tmp)->Unlink();
     }
--- a/content/xul/document/src/XULDocument.cpp
+++ b/content/xul/document/src/XULDocument.cpp
@@ -4779,13 +4779,13 @@ XULDocument::GetBoxObjectFor(nsIDOMEleme
     nsCOMPtr<Element> el = do_QueryInterface(aElement);
     *aResult = GetBoxObjectFor(el, rv).take();
     return rv.ErrorCode();
 }
 
 JSObject*
 XULDocument::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aScope)
 {
-  return XULDocumentBinding::Wrap(aCx, aScope, this);
+  return XULDocumentBinding::Wrap(aCx, this);
 }
 
 } // namespace dom
 } // namespace mozilla
--- a/dom/activities/src/Activity.cpp
+++ b/dom/activities/src/Activity.cpp
@@ -22,17 +22,17 @@ NS_IMPL_CYCLE_COLLECTION_INHERITED_1(Act
                                      mProxy)
 
 NS_IMPL_CYCLE_COLLECTION_TRACE_BEGIN_INHERITED(Activity, DOMRequest)
 NS_IMPL_CYCLE_COLLECTION_TRACE_END
 
 /* virtual */ JSObject*
 Activity::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return MozActivityBinding::Wrap(aCx, aScope, this);
+  return MozActivityBinding::Wrap(aCx, this);
 }
 
 nsresult
 Activity::Initialize(nsPIDOMWindow* aWindow,
                      JSContext* aCx,
                      const ActivityOptions& aOptions)
 {
   MOZ_ASSERT(aWindow);
--- a/dom/base/BarProps.cpp
+++ b/dom/base/BarProps.cpp
@@ -32,17 +32,17 @@ nsPIDOMWindow*
 BarProp::GetParentObject() const
 {
   return mDOMWindow;
 }
 
 JSObject*
 BarProp::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return BarPropBinding::Wrap(aCx, aScope, this);
+  return BarPropBinding::Wrap(aCx, this);
 }
 
 NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE_1(BarProp, mDOMWindow)
 NS_IMPL_CYCLE_COLLECTING_ADDREF(BarProp)
 NS_IMPL_CYCLE_COLLECTING_RELEASE(BarProp)
 NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(BarProp)
   NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY
   NS_INTERFACE_MAP_ENTRY(nsISupports)
--- a/dom/base/Console.cpp
+++ b/dom/base/Console.cpp
@@ -589,17 +589,17 @@ Console::Observe(nsISupports* aSubject, 
   }
 
   return NS_OK;
 }
 
 JSObject*
 Console::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return ConsoleBinding::Wrap(aCx, aScope, this);
+  return ConsoleBinding::Wrap(aCx, this);
 }
 
 #define METHOD(name, string)                                          \
   void                                                                \
   Console::name(JSContext* aCx, const Sequence<JS::Value>& aData)     \
   {                                                                   \
     Method(aCx, Method##name, NS_LITERAL_STRING(string), aData);      \
   }
--- a/dom/base/Crypto.cpp
+++ b/dom/base/Crypto.cpp
@@ -47,17 +47,17 @@ Crypto::Init(nsIDOMWindow* aWindow)
 {
   mWindow = do_QueryInterface(aWindow);
   MOZ_ASSERT(mWindow);
 }
 
 /* virtual */ JSObject*
 Crypto::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return CryptoBinding::Wrap(aCx, aScope, this);
+  return CryptoBinding::Wrap(aCx, this);
 }
 
 JSObject *
 Crypto::GetRandomValues(JSContext* aCx, const ArrayBufferView& aArray,
 			ErrorResult& aRv)
 {
   NS_ABORT_IF_FALSE(NS_IsMainThread(), "Called on the wrong thread");
 
--- a/dom/base/DOMCursor.cpp
+++ b/dom/base/DOMCursor.cpp
@@ -73,13 +73,13 @@ DOMCursor::Continue(ErrorResult& aRv)
 
   Reset();
   mCallback->HandleContinue();
 }
 
 /* virtual */ JSObject*
 DOMCursor::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return DOMCursorBinding::Wrap(aCx, aScope, this);
+  return DOMCursorBinding::Wrap(aCx, this);
 }
 
 } // namespace dom
 } // namespace mozilla
--- a/dom/base/DOMError.cpp
+++ b/dom/base/DOMError.cpp
@@ -56,17 +56,17 @@ DOMError::DOMError(nsPIDOMWindow* aWindo
 
 DOMError::~DOMError()
 {
 }
 
 JSObject*
 DOMError::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return DOMErrorBinding::Wrap(aCx, aScope, this);
+  return DOMErrorBinding::Wrap(aCx, this);
 }
 
 /* static */ already_AddRefed<DOMError>
 DOMError::Constructor(const GlobalObject& aGlobal,
                       const nsAString& aName, const nsAString& aMessage,
                       ErrorResult& aRv)
 {
   nsCOMPtr<nsPIDOMWindow> window = do_QueryInterface(aGlobal.GetAsSupports());
--- a/dom/base/DOMException.cpp
+++ b/dom/base/DOMException.cpp
@@ -471,17 +471,17 @@ Exception::Initialize(const nsACString& 
 
   mInitialized = true;
   return NS_OK;
 }
 
 JSObject*
 Exception::WrapObject(JSContext* cx, JS::Handle<JSObject*> scope)
 {
-  return ExceptionBinding::Wrap(cx, scope, this);
+  return ExceptionBinding::Wrap(cx, this);
 }
 
 void
 Exception::GetMessageMoz(nsString& retval)
 {
   nsCString str;
 #ifdef DEBUG
   DebugOnly<nsresult> rv = 
@@ -661,17 +661,17 @@ void
 DOMException::GetMessageMoz(nsString& retval)
 {
   CopyUTF8toUTF16(mMessage, retval);
 }
 
 JSObject*
 DOMException::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return DOMExceptionBinding::Wrap(aCx, aScope, this);
+  return DOMExceptionBinding::Wrap(aCx, this);
 }
 
 /* static */already_AddRefed<DOMException>
 DOMException::Create(nsresult aRv)
 {
   nsCString name;
   nsCString message;
   uint16_t code;
--- a/dom/base/DOMRequest.cpp
+++ b/dom/base/DOMRequest.cpp
@@ -50,17 +50,17 @@ NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION_
 NS_INTERFACE_MAP_END_INHERITING(DOMEventTargetHelper)
 
 NS_IMPL_ADDREF_INHERITED(DOMRequest, DOMEventTargetHelper)
 NS_IMPL_RELEASE_INHERITED(DOMRequest, DOMEventTargetHelper)
 
 /* virtual */ JSObject*
 DOMRequest::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return DOMRequestBinding::Wrap(aCx, aScope, this);
+  return DOMRequestBinding::Wrap(aCx, this);
 }
 
 NS_IMPL_EVENT_HANDLER(DOMRequest, success)
 NS_IMPL_EVENT_HANDLER(DOMRequest, error)
 
 NS_IMETHODIMP
 DOMRequest::GetReadyState(nsAString& aReadyState)
 {
--- a/dom/base/MessageChannel.cpp
+++ b/dom/base/MessageChannel.cpp
@@ -56,17 +56,17 @@ MessageChannel::MessageChannel(nsPIDOMWi
 MessageChannel::~MessageChannel()
 {
   MOZ_COUNT_DTOR(MessageChannel);
 }
 
 JSObject*
 MessageChannel::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return MessageChannelBinding::Wrap(aCx, aScope, this);
+  return MessageChannelBinding::Wrap(aCx, this);
 }
 
 /* static */ already_AddRefed<MessageChannel>
 MessageChannel::Constructor(const GlobalObject& aGlobal, ErrorResult& aRv)
 {
   nsCOMPtr<nsPIDOMWindow> window = do_QueryInterface(aGlobal.GetAsSupports());
   if (!window) {
     aRv.Throw(NS_ERROR_UNEXPECTED);
--- a/dom/base/MessagePort.cpp
+++ b/dom/base/MessagePort.cpp
@@ -381,17 +381,17 @@ MessagePort::MessagePort(nsPIDOMWindow* 
 MessagePort::~MessagePort()
 {
   Close();
 }
 
 JSObject*
 MessagePort::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return MessagePortBinding::Wrap(aCx, aScope, this);
+  return MessagePortBinding::Wrap(aCx, this);
 }
 
 void
 MessagePort::PostMessageMoz(JSContext* aCx, JS::Handle<JS::Value> aMessage,
                             const Optional<Sequence<JS::Value>>& aTransferable,
                             ErrorResult& aRv)
 {
   nsRefPtr<PostMessageRunnable> event = new PostMessageRunnable();
--- a/dom/base/MessagePortList.cpp
+++ b/dom/base/MessagePortList.cpp
@@ -17,13 +17,13 @@ NS_IMPL_CYCLE_COLLECTING_RELEASE(Message
 NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(MessagePortList)
   NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY
   NS_INTERFACE_MAP_ENTRY(nsISupports)
 NS_INTERFACE_MAP_END
 
 JSObject*
 MessagePortList::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return MessagePortListBinding::Wrap(aCx, aScope, this);
+  return MessagePortListBinding::Wrap(aCx, this);
 }
 
 } // namespace dom
 } // namespace mozilla
--- a/dom/base/Navigator.cpp
+++ b/dom/base/Navigator.cpp
@@ -1983,17 +1983,17 @@ Navigator::GetOwnPropertyNames(JSContext
   }
 
   nameSpaceManager->EnumerateNavigatorNames(SaveNavigatorName, &aNames);
 }
 
 JSObject*
 Navigator::WrapObject(JSContext* cx, JS::Handle<JSObject*> scope)
 {
-  return NavigatorBinding::Wrap(cx, scope, this);
+  return NavigatorBinding::Wrap(cx, this);
 }
 
 /* static */
 bool
 Navigator::HasBatterySupport(JSContext* /* unused*/, JSObject* /*unused */)
 {
   return battery::BatteryManager::HasSupport();
 }
--- a/dom/base/URL.cpp
+++ b/dom/base/URL.cpp
@@ -43,17 +43,17 @@ NS_INTERFACE_MAP_END
 URL::URL(nsIURI* aURI)
   : mURI(aURI)
 {
 }
 
 JSObject*
 URL::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return URLBinding::Wrap(aCx, aScope, this);
+  return URLBinding::Wrap(aCx, this);
 }
 
 /* static */ already_AddRefed<URL>
 URL::Constructor(const GlobalObject& aGlobal, const nsAString& aUrl,
                  URL& aBase, ErrorResult& aRv)
 {
   nsresult rv;
   nsCOMPtr<nsIIOService> ioService(do_GetService(NS_IOSERVICE_CONTRACTID, &rv));
--- a/dom/base/URLSearchParams.cpp
+++ b/dom/base/URLSearchParams.cpp
@@ -26,17 +26,17 @@ URLSearchParams::URLSearchParams()
 URLSearchParams::~URLSearchParams()
 {
   DeleteAll();
 }
 
 JSObject*
 URLSearchParams::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return URLSearchParamsBinding::Wrap(aCx, aScope, this);
+  return URLSearchParamsBinding::Wrap(aCx, this);
 }
 
 /* static */ already_AddRefed<URLSearchParams>
 URLSearchParams::Constructor(const GlobalObject& aGlobal,
                              const nsAString& aInit,
                              ErrorResult& aRv)
 {
   nsRefPtr<URLSearchParams> sp = new URLSearchParams();
--- a/dom/base/nsHistory.cpp
+++ b/dom/base/nsHistory.cpp
@@ -58,17 +58,17 @@ nsHistory::GetParentObject() const
 {
   nsCOMPtr<nsPIDOMWindow> win(do_QueryReferent(mInnerWindow));
   return win;
 }
 
 JSObject*
 nsHistory::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return HistoryBinding::Wrap(aCx, aScope, this);
+  return HistoryBinding::Wrap(aCx, this);
 }
 
 uint32_t
 nsHistory::GetLength(ErrorResult& aRv) const
 {
   nsCOMPtr<nsPIDOMWindow> win(do_QueryReferent(mInnerWindow));
   if (!win || !win->HasActiveDocument()) {
     aRv.Throw(NS_ERROR_DOM_SECURITY_ERR);
--- a/dom/base/nsMimeTypeArray.cpp
+++ b/dom/base/nsMimeTypeArray.cpp
@@ -38,17 +38,17 @@ nsMimeTypeArray::nsMimeTypeArray(nsPIDOM
 
 nsMimeTypeArray::~nsMimeTypeArray()
 {
 }
 
 JSObject*
 nsMimeTypeArray::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return MimeTypeArrayBinding::Wrap(aCx, aScope, this);
+  return MimeTypeArrayBinding::Wrap(aCx, this);
 }
 
 void
 nsMimeTypeArray::Refresh()
 {
   mMimeTypes.Clear();
   mHiddenMimeTypes.Clear();
 }
@@ -248,17 +248,17 @@ nsMimeType::GetParentObject() const
 {
   MOZ_ASSERT(mWindow);
   return mWindow;
 }
 
 JSObject*
 nsMimeType::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return MimeTypeBinding::Wrap(aCx, aScope, this);
+  return MimeTypeBinding::Wrap(aCx, this);
 }
 
 void
 nsMimeType::GetDescription(nsString& retval) const
 {
   retval.Truncate();
 
   if (mPluginElement) {
--- a/dom/base/nsPerformance.cpp
+++ b/dom/base/nsPerformance.cpp
@@ -140,17 +140,17 @@ nsPerformanceTiming::ResponseEnd() const
     stamp = cacheStamp;
   }
   return GetDOMTiming()->TimeStampToDOMOrFetchStart(stamp);
 }
 
 JSObject*
 nsPerformanceTiming::WrapObject(JSContext *cx, JS::Handle<JSObject*> scope)
 {
-  return dom::PerformanceTimingBinding::Wrap(cx, scope, this);
+  return dom::PerformanceTimingBinding::Wrap(cx, this);
 }
 
 
 NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE_1(nsPerformanceNavigation, mPerformance)
 
 NS_IMPL_CYCLE_COLLECTION_ROOT_NATIVE(nsPerformanceNavigation, AddRef)
 NS_IMPL_CYCLE_COLLECTION_UNROOT_NATIVE(nsPerformanceNavigation, Release)
 
@@ -163,17 +163,17 @@ nsPerformanceNavigation::nsPerformanceNa
 
 nsPerformanceNavigation::~nsPerformanceNavigation()
 {
 }
 
 JSObject*
 nsPerformanceNavigation::WrapObject(JSContext *cx, JS::Handle<JSObject*> scope)
 {
-  return dom::PerformanceNavigationBinding::Wrap(cx, scope, this);
+  return dom::PerformanceNavigationBinding::Wrap(cx, this);
 }
 
 
 NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE_3(nsPerformance,
                                         mWindow, mTiming,
                                         mNavigation)
 NS_IMPL_CYCLE_COLLECTING_ADDREF(nsPerformance)
 NS_IMPL_CYCLE_COLLECTING_RELEASE(nsPerformance)
@@ -222,11 +222,11 @@ DOMHighResTimeStamp
 nsPerformance::Now()
 {
   return GetDOMTiming()->TimeStampToDOMHighRes(mozilla::TimeStamp::Now());
 }
 
 JSObject*
 nsPerformance::WrapObject(JSContext *cx, JS::Handle<JSObject*> scope)
 {
-  return dom::PerformanceBinding::Wrap(cx, scope, this);
+  return dom::PerformanceBinding::Wrap(cx, this);
 }
 
--- a/dom/base/nsPluginArray.cpp
+++ b/dom/base/nsPluginArray.cpp
@@ -49,17 +49,17 @@ nsPluginArray::GetParentObject() const
 {
   MOZ_ASSERT(mWindow);
   return mWindow;
 }
 
 JSObject*
 nsPluginArray::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return PluginArrayBinding::Wrap(aCx, aScope, this);
+  return PluginArrayBinding::Wrap(aCx, this);
 }
 
 NS_IMPL_CYCLE_COLLECTING_ADDREF(nsPluginArray)
 NS_IMPL_CYCLE_COLLECTING_RELEASE(nsPluginArray)
 NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(nsPluginArray)
   NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY
   NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIObserver)
   NS_INTERFACE_MAP_ENTRY(nsIObserver)
@@ -365,17 +365,17 @@ nsPluginElement::GetParentObject() const
 {
   MOZ_ASSERT(mWindow);
   return mWindow;
 }
 
 JSObject*
 nsPluginElement::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return PluginBinding::Wrap(aCx, aScope, this);
+  return PluginBinding::Wrap(aCx, this);
 }
 
 void
 nsPluginElement::GetDescription(nsString& retval) const
 {
   CopyUTF8toUTF16(mPluginTag->mDescription, retval);
 }
 
--- a/dom/base/nsScreen.cpp
+++ b/dom/base/nsScreen.cpp
@@ -319,17 +319,17 @@ nsScreen::IsDeviceSizePageSize()
   }
   return false;
 }
 
 /* virtual */
 JSObject*
 nsScreen::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return ScreenBinding::Wrap(aCx, aScope, this);
+  return ScreenBinding::Wrap(aCx, this);
 }
 
 NS_IMPL_ISUPPORTS1(nsScreen::FullScreenEventListener, nsIDOMEventListener)
 
 NS_IMETHODIMP
 nsScreen::FullScreenEventListener::HandleEvent(nsIDOMEvent* aEvent)
 {
 #ifdef DEBUG
--- a/dom/battery/BatteryManager.cpp
+++ b/dom/battery/BatteryManager.cpp
@@ -48,17 +48,17 @@ void
 BatteryManager::Shutdown()
 {
   hal::UnregisterBatteryObserver(this);
 }
 
 JSObject*
 BatteryManager::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return BatteryManagerBinding::Wrap(aCx, aScope, this);
+  return BatteryManagerBinding::Wrap(aCx, this);
 }
 
 double
 BatteryManager::DischargingTime() const
 {
   if (mCharging || mRemainingTime == kUnknownRemainingTime) {
     return std::numeric_limits<double>::infinity();
   }
--- a/dom/bindings/Codegen.py
+++ b/dom/bindings/Codegen.py
@@ -2688,29 +2688,27 @@ class CGWrapWithCacheMethod(CGAbstractMe
     """
     Create a wrapper JSObject for a given native that implements nsWrapperCache.
 
     properties should be a PropertyArrays instance.
     """
     def __init__(self, descriptor, properties):
         assert descriptor.interface.hasInterfacePrototypeObject()
         args = [Argument('JSContext*', 'aCx'),
-                Argument('JS::Handle<JSObject*>', 'aScope'),
                 Argument(descriptor.nativeType + '*', 'aObject'),
                 Argument('nsWrapperCache*', 'aCache')]
         CGAbstractMethod.__init__(self, descriptor, 'Wrap', 'JSObject*', args)
         self.properties = properties
 
     def definition_body(self):
         assertISupportsInheritance = (
             '  MOZ_ASSERT(ToSupportsIsOnPrimaryInheritanceChain(aObject, aCache),\n'
             '             "nsISupports must be on our primary inheritance chain");\n')
         return """%s
 %s
-  MOZ_ASSERT(js::IsObjectInContextCompartment(aScope, aCx));
   JS::Rooted<JSObject*> parent(aCx,
     GetRealParentObject(aObject,
                         WrapNativeParent(aCx, aObject->GetParentObject())));
   if (!parent) {
     return nullptr;
   }
 
   // That might have ended up wrapping us already, due to the wonders
@@ -2742,46 +2740,43 @@ class CGWrapWithCacheMethod(CGAbstractMe
                     InitMemberSlots(self.descriptor, True))
 
 
 class CGWrapMethod(CGAbstractMethod):
     def __init__(self, descriptor):
         # XXX can we wrap if we don't have an interface prototype object?
         assert descriptor.interface.hasInterfacePrototypeObject()
         args = [Argument('JSContext*', 'aCx'),
-                Argument('JS::Handle<JSObject*>', 'aScope'),
                 Argument('T*', 'aObject')]
         CGAbstractMethod.__init__(self, descriptor, 'Wrap', 'JSObject*', args,
                                   inline=True, templateArgs=["class T"])
 
     def definition_body(self):
-        return "  return Wrap(aCx, aScope, aObject, aObject);"
+        return "  return Wrap(aCx, aObject, aObject);"
 
 
 class CGWrapNonWrapperCacheMethod(CGAbstractMethod):
     """
     Create a wrapper JSObject for a given native that does not implement
     nsWrapperCache.
 
     properties should be a PropertyArrays instance.
     """
     def __init__(self, descriptor, properties):
         # XXX can we wrap if we don't have an interface prototype object?
         assert descriptor.interface.hasInterfacePrototypeObject()
         args = [Argument('JSContext*', 'aCx'),
-                Argument('JS::Handle<JSObject*>', 'aScope'),
                 Argument(descriptor.nativeType + '*', 'aObject')]
         if descriptor.nativeOwnership == 'owned':
             args.append(Argument('bool*', 'aTookOwnership'))
         CGAbstractMethod.__init__(self, descriptor, 'Wrap', 'JSObject*', args)
         self.properties = properties
 
     def definition_body(self):
         return """%s
-  MOZ_ASSERT(js::IsObjectInContextCompartment(aScope, aCx));
   JS::Rooted<JSObject*> global(aCx, JS::CurrentGlobalOrNull(aCx));
   JS::Handle<JSObject*> proto = GetProtoObject(aCx, global);
   if (!proto) {
     return nullptr;
   }
 
 %s
 %s
@@ -11269,17 +11264,17 @@ NS_INTERFACE_MAP_END
 """
         else:
             classImpl = ""
 
         classImpl += """%s
 JSObject*
 ${nativeType}::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return ${ifaceName}Binding::Wrap(aCx, aScope, this);
+  return ${ifaceName}Binding::Wrap(aCx, this);
 }
 
 """ % ctordtor
         return string.Template(classImpl).substitute({
             "ifaceName": self.descriptor.name,
             "nativeType": self.nativeLeafName(self.descriptor),
             "parentType": self.nativeLeafName(self.parentDesc) if self.parentIface else "",
         })
@@ -11614,17 +11609,17 @@ class CGJSImplClass(CGBindingImplClass):
                          constructors=[constructor],
                          destructor=destructor,
                          methods=self.methodDecls,
                          decorators=decorators,
                          extradeclarations=extradeclarations,
                          extradefinitions=extradefinitions)
 
     def getWrapObjectBody(self):
-        return ("JS::Rooted<JSObject*> obj(aCx, %sBinding::Wrap(aCx, aScope, this));\n"
+        return ("JS::Rooted<JSObject*> obj(aCx, %sBinding::Wrap(aCx, this));\n"
                 "if (!obj) {\n"
                 "  return nullptr;\n"
                 "}\n"
                 "\n"
                 "// Now define it on our chrome object\n"
                 "JSAutoCompartment ac(aCx, mImpl->Callback());\n"
                 "if (!JS_WrapObject(aCx, &obj)) {\n"
                 "  return nullptr;\n"
@@ -12793,17 +12788,17 @@ class CGEventClass(CGBindingImplClass):
 
         CGClass.__init__(self, className,
                          bases=[ClassBase(self.parentType)],
                          methods=[asConcreteTypeMethod]+self.methodDecls,
                          members=members,
                          extradeclarations=baseDeclarations)
 
     def getWrapObjectBody(self):
-        return "return %sBinding::Wrap(aCx, aScope, this);" % self.descriptor.name
+        return "return %sBinding::Wrap(aCx, this);" % self.descriptor.name
 
     def implTraverse(self):
         retVal = ""
         for m in self.descriptor.interface.members:
             if m.isAttr() and m.type.isGeckoInterface():
                 retVal += ("  NS_IMPL_CYCLE_COLLECTION_TRAVERSE(" +
                            CGDictionary.makeMemberName(m.identifier.name) +
                            ")\n")
--- a/dom/bluetooth/BluetoothAdapter.cpp
+++ b/dom/bluetooth/BluetoothAdapter.cpp
@@ -1029,10 +1029,10 @@ BluetoothAdapter::SendMediaPlayStatus(co
                      results);
 
   return request.forget();
 }
 
 JSObject*
 BluetoothAdapter::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return BluetoothAdapterBinding::Wrap(aCx, aScope, this);
+  return BluetoothAdapterBinding::Wrap(aCx, this);
 }
--- a/dom/bluetooth/BluetoothDevice.cpp
+++ b/dom/bluetooth/BluetoothDevice.cpp
@@ -230,10 +230,10 @@ BluetoothDevice::GetServices(JSContext* 
 
   JS::ExposeObjectToActiveJS(mJsServices);
   return JS::ObjectValue(*mJsServices);
 }
 
 JSObject*
 BluetoothDevice::WrapObject(JSContext* aContext, JS::Handle<JSObject*> aScope)
 {
-  return BluetoothDeviceBinding::Wrap(aContext, aScope, this);
+  return BluetoothDeviceBinding::Wrap(aContext, this);
 }
--- a/dom/bluetooth/BluetoothManager.cpp
+++ b/dom/bluetooth/BluetoothManager.cpp
@@ -242,10 +242,10 @@ BluetoothManager::IsConnected(uint16_t a
   }
 
   return bs->IsConnected(aProfileId);
 }
 
 JSObject*
 BluetoothManager::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return BluetoothManagerBinding::Wrap(aCx, aScope, this);
+  return BluetoothManagerBinding::Wrap(aCx, this);
 }
--- a/dom/camera/DOMCameraCapabilities.cpp
+++ b/dom/camera/DOMCameraCapabilities.cpp
@@ -58,17 +58,17 @@ CameraCapabilities::~CameraCapabilities(
   mRecorderProfiles = JS::UndefinedValue();
   mozilla::DropJSObjects(this);
   MOZ_COUNT_DTOR(CameraCapabilities);
 }
 
 JSObject*
 CameraCapabilities::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return CameraCapabilitiesBinding::Wrap(aCx, aScope, this);
+  return CameraCapabilitiesBinding::Wrap(aCx, this);
 }
 
 #define LOG_IF_ERROR(rv, param)                               \
   do {                                                        \
     if (NS_FAILED(rv)) {                                      \
       DOM_CAMERA_LOGW("Error %x trying to get " #param "\n",  \
         (rv));                                                \
     }                                                         \
--- a/dom/camera/DOMCameraControl.cpp
+++ b/dom/camera/DOMCameraControl.cpp
@@ -197,17 +197,17 @@ nsDOMCameraControl::nsDOMCameraControl(u
 nsDOMCameraControl::~nsDOMCameraControl()
 {
   DOM_CAMERA_LOGT("%s:%d : this=%p\n", __func__, __LINE__, this);
 }
 
 JSObject*
 nsDOMCameraControl::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return CameraControlBinding::Wrap(aCx, aScope, this);
+  return CameraControlBinding::Wrap(aCx, this);
 }
 
 bool
 nsDOMCameraControl::IsWindowStillActive()
 {
   return nsDOMCameraManager::IsWindowStillActive(mWindow->WindowID());
 }
 
--- a/dom/camera/DOMCameraManager.cpp
+++ b/dom/camera/DOMCameraManager.cpp
@@ -434,10 +434,10 @@ nsDOMCameraManager::IsWindowStillActive(
   }
 
   return !!sActiveWindows->Get(aWindowId);
 }
 
 JSObject*
 nsDOMCameraManager::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return CameraManagerBinding::Wrap(aCx, aScope, this);
+  return CameraManagerBinding::Wrap(aCx, this);
 }
--- a/dom/cellbroadcast/src/CellBroadcast.cpp
+++ b/dom/cellbroadcast/src/CellBroadcast.cpp
@@ -82,17 +82,17 @@ CellBroadcast::~CellBroadcast()
   mListener->Disconnect();
   mProvider->UnregisterCellBroadcastMsg(mListener);
 }
 
 JSObject*
 CellBroadcast::WrapObject(JSContext* aCx,
                           JS::Handle<JSObject*> aScope)
 {
-  return MozCellBroadcastBinding::Wrap(aCx, aScope, this);
+  return MozCellBroadcastBinding::Wrap(aCx, this);
 }
 
 // Forwarded nsICellBroadcastListener methods
 
 NS_IMETHODIMP
 CellBroadcast::NotifyMessageReceived(nsIDOMMozCellBroadcastMessage* aMessage)
 {
   nsCOMPtr<nsIDOMEvent> event;
--- a/dom/devicestorage/nsDeviceStorage.cpp
+++ b/dom/devicestorage/nsDeviceStorage.cpp
@@ -3103,17 +3103,17 @@ nsDOMDeviceStorage::nsDOMDeviceStorage(n
   , mIsWatchingFile(false)
   , mAllowedToWatchFile(false)
 {
 }
 
 /* virtual */ JSObject*
 nsDOMDeviceStorage::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return DeviceStorageBinding::Wrap(aCx, aScope, this);
+  return DeviceStorageBinding::Wrap(aCx, this);
 }
 
 nsresult
 nsDOMDeviceStorage::Init(nsPIDOMWindow* aWindow, const nsAString &aType,
                          const nsAString &aVolName)
 {
   DebugOnly<FileUpdateDispatcher*> observer
     = FileUpdateDispatcher::GetSingleton();
--- a/dom/encoding/TextDecoder.h
+++ b/dom/encoding/TextDecoder.h
@@ -44,17 +44,17 @@ public:
   ~TextDecoder()
   {
     MOZ_COUNT_DTOR(TextDecoder);
   }
 
   JSObject* WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope,
                        bool* aTookOwnership)
   {
-    return TextDecoderBinding::Wrap(aCx, aScope, this, aTookOwnership);
+    return TextDecoderBinding::Wrap(aCx, this, aTookOwnership);
   }
 
   nsISupports*
   GetParentObject()
   {
     return nullptr;
   }
 
--- a/dom/encoding/TextEncoder.h
+++ b/dom/encoding/TextEncoder.h
@@ -39,17 +39,17 @@ public:
 
   virtual
   ~TextEncoder()
   {}
 
   JSObject* WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope,
                        bool* aTookOwnership)
   {
-    return TextEncoderBinding::Wrap(aCx, aScope, this, aTookOwnership);
+    return TextEncoderBinding::Wrap(aCx, this, aTookOwnership);
   }
 
   nsISupports*
   GetParentObject()
   {
     return nullptr;
   }
 
--- a/dom/events/AnimationEvent.h
+++ b/dom/events/AnimationEvent.h
@@ -31,17 +31,17 @@ public:
   Constructor(const GlobalObject& aGlobal,
               const nsAString& aType,
               const AnimationEventInit& aParam,
               ErrorResult& aRv);
 
   virtual JSObject* WrapObject(JSContext* aCx,
                                JS::Handle<JSObject*> aScope) MOZ_OVERRIDE
   {
-    return AnimationEventBinding::Wrap(aCx, aScope, this);
+    return AnimationEventBinding::Wrap(aCx, this);
   }
 
   // xpidl implementation
   // GetAnimationName(nsAString& aAnimationName);
   // GetPseudoElement(nsAString& aPseudoElement);
 
   float ElapsedTime();
 };
--- a/dom/events/BeforeUnloadEvent.h
+++ b/dom/events/BeforeUnloadEvent.h
@@ -22,17 +22,17 @@ public:
                     WidgetEvent* aEvent)
     : Event(aOwner, aPresContext, aEvent)
   {
   }
 
   virtual JSObject* WrapObject(JSContext* aCx,
                                JS::Handle<JSObject*> aScope) MOZ_OVERRIDE
   {
-    return BeforeUnloadEventBinding::Wrap(aCx, aScope, this);
+    return BeforeUnloadEventBinding::Wrap(aCx, this);
   }
 
   NS_DECL_ISUPPORTS_INHERITED
 
   // Forward to Event
   NS_FORWARD_TO_EVENT
 
   // nsIDOMBeforeUnloadEvent Interface
--- a/dom/events/ClipboardEvent.h
+++ b/dom/events/ClipboardEvent.h
@@ -28,17 +28,17 @@ public:
   NS_DECL_NSIDOMCLIPBOARDEVENT
 
   // Forward to base class
   NS_FORWARD_TO_EVENT
 
   virtual JSObject* WrapObject(JSContext* aCx,
                                JS::Handle<JSObject*> aScope) MOZ_OVERRIDE
   {
-    return ClipboardEventBinding::Wrap(aCx, aScope, this);
+    return ClipboardEventBinding::Wrap(aCx, this);
   }
 
   static already_AddRefed<ClipboardEvent>
   Constructor(const GlobalObject& aGlobal,
               const nsAString& aType,
               const ClipboardEventInit& aParam,
               ErrorResult& aRv);
 
--- a/dom/events/CommandEvent.h
+++ b/dom/events/CommandEvent.h
@@ -27,17 +27,17 @@ public:
   NS_DECL_NSIDOMCOMMANDEVENT
 
   // Forward to base class
   NS_FORWARD_TO_EVENT
 
   virtual JSObject* WrapObject(JSContext* aCx,
                                JS::Handle<JSObject*> aScope) MOZ_OVERRIDE
   {
-    return CommandEventBinding::Wrap(aCx, aScope, this);
+    return CommandEventBinding::Wrap(aCx, this);
   }
 
   void InitCommandEvent(const nsAString& aType,
                         bool aCanBubble,
                         bool aCancelable,
                         const nsAString& aCommand,
                         ErrorResult& aRv)
   {
--- a/dom/events/CompositionEvent.h
+++ b/dom/events/CompositionEvent.h
@@ -25,17 +25,17 @@ public:
 
   NS_DECL_ISUPPORTS_INHERITED
   NS_FORWARD_TO_UIEVENT
   NS_DECL_NSIDOMCOMPOSITIONEVENT
 
   virtual JSObject* WrapObject(JSContext* aCx,
                                JS::Handle<JSObject*> aScope) MOZ_OVERRIDE
   {
-    return CompositionEventBinding::Wrap(aCx, aScope, this);
+    return CompositionEventBinding::Wrap(aCx, this);
   }
 
   void InitCompositionEvent(const nsAString& aType,
                             bool aCanBubble,
                             bool aCancelable,
                             nsIDOMWindow* aView,
                             const nsAString& aData,
                             const nsAString& aLocale,
--- a/dom/events/DataContainerEvent.h
+++ b/dom/events/DataContainerEvent.h
@@ -28,17 +28,17 @@ public:
 
   NS_FORWARD_TO_EVENT
 
   NS_DECL_NSIDOMDATACONTAINEREVENT
 
   virtual JSObject*
   WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope) MOZ_OVERRIDE
   {
-    return DataContainerEventBinding::Wrap(aCx, aScope, this);
+    return DataContainerEventBinding::Wrap(aCx, this);
   }
 
   already_AddRefed<nsIVariant> GetData(const nsAString& aKey)
   {
     nsCOMPtr<nsIVariant> val;
     GetData(aKey, getter_AddRefs(val));
     return val.forget();
   }
--- a/dom/events/DataTransfer.cpp
+++ b/dom/events/DataTransfer.cpp
@@ -166,17 +166,17 @@ DataTransfer::Constructor(const GlobalOb
                                                      eventType, aIsExternal,
                                                      -1);
   return transfer.forget();
 }
 
 JSObject*
 DataTransfer::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return DataTransferBinding::Wrap(aCx, aScope, this);
+  return DataTransferBinding::Wrap(aCx, this);
 }
 
 NS_IMETHODIMP
 DataTransfer::GetDropEffect(nsAString& aDropEffect)
 {
   nsString dropEffect;
   GetDropEffect(dropEffect);
   aDropEffect = dropEffect;
--- a/dom/events/DeviceMotionEvent.h
+++ b/dom/events/DeviceMotionEvent.h
@@ -30,17 +30,17 @@ public:
   DeviceMotionEvent* GetParentObject() const
   {
     return mOwner;
   }
 
   virtual JSObject* WrapObject(JSContext* aCx,
                                JS::Handle<JSObject*> aScope) MOZ_OVERRIDE
   {
-    return DeviceRotationRateBinding::Wrap(aCx, aScope, this);
+    return DeviceRotationRateBinding::Wrap(aCx, this);
   }
 
   Nullable<double> GetAlpha() const { return mAlpha; }
   Nullable<double> GetBeta() const { return mBeta; }
   Nullable<double> GetGamma() const { return mGamma; }
 
 private:
   ~DeviceRotationRate();
@@ -68,17 +68,17 @@ public:
   DeviceMotionEvent* GetParentObject() const
   {
     return mOwner;
   }
 
   virtual JSObject* WrapObject(JSContext* aCx,
                                JS::Handle<JSObject*> aScope) MOZ_OVERRIDE
   {
-    return DeviceAccelerationBinding::Wrap(aCx, aScope, this);
+    return DeviceAccelerationBinding::Wrap(aCx, this);
   }
 
   Nullable<double> GetX() const { return mX; }
   Nullable<double> GetY() const { return mY; }
   Nullable<double> GetZ() const { return mZ; }
 
 private:
   ~DeviceAcceleration();
@@ -104,17 +104,17 @@ public:
   // Forward to Event
   NS_FORWARD_TO_EVENT
 
   NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(DeviceMotionEvent, Event)
 
   virtual JSObject* WrapObject(JSContext* aCx,
                                JS::Handle<JSObject*> aScope) MOZ_OVERRIDE
   {
-    return DeviceMotionEventBinding::Wrap(aCx, aScope, this);
+    return DeviceMotionEventBinding::Wrap(aCx, this);
   }
 
   DeviceAcceleration* GetAcceleration() const
   {
     return mAcceleration;
   }
 
   DeviceAcceleration* GetAccelerationIncludingGravity() const
--- a/dom/events/DragEvent.h
+++ b/dom/events/DragEvent.h
@@ -28,17 +28,17 @@ public:
 
   NS_DECL_NSIDOMDRAGEVENT
 
   NS_FORWARD_TO_MOUSEEVENT
 
   virtual JSObject* WrapObject(JSContext* aCx,
                                JS::Handle<JSObject*> aScope) MOZ_OVERRIDE
   {
-    return DragEventBinding::Wrap(aCx, aScope, this);
+    return DragEventBinding::Wrap(aCx, this);
   }
 
   DataTransfer* GetDataTransfer();
 
   void InitDragEvent(const nsAString& aType,
                      bool aCanBubble, bool aCancelable,
                      nsIDOMWindow* aView, int32_t aDetail,
                      int32_t aScreenX, int32_t aScreenY,
--- a/dom/events/Event.h
+++ b/dom/events/Event.h
@@ -85,17 +85,17 @@ public:
   nsISupports* GetParentObject()
   {
     return mOwner;
   }
 
   virtual JSObject* WrapObject(JSContext* aCx,
                                JS::Handle<JSObject*> aScope) MOZ_OVERRIDE
   {
-    return EventBinding::Wrap(aCx, aScope, this);
+    return EventBinding::Wrap(aCx, this);
   }
 
   virtual ErrorEvent* AsErrorEvent()
   {
     return nullptr;
   }
 
   // nsIDOMEvent Interface
--- a/dom/events/FocusEvent.h
+++ b/dom/events/FocusEvent.h
@@ -21,17 +21,17 @@ public:
   NS_DECL_NSIDOMFOCUSEVENT
 
   // Forward to base class
   NS_FORWARD_TO_UIEVENT
 
   virtual JSObject* WrapObject(JSContext* aCx,
                                JS::Handle<JSObject*> aScope) MOZ_OVERRIDE
   {
-    return FocusEventBinding::Wrap(aCx, aScope, this);
+    return FocusEventBinding::Wrap(aCx, this);
   }
 
   FocusEvent(EventTarget* aOwner,
              nsPresContext* aPresContext,
              InternalFocusEvent* aEvent);
 
   EventTarget* GetRelatedTarget();
 
--- a/dom/events/KeyboardEvent.h
+++ b/dom/events/KeyboardEvent.h
@@ -28,17 +28,17 @@ public:
   NS_DECL_NSIDOMKEYEVENT
 
   // Forward to base class
   NS_FORWARD_TO_UIEVENT
 
   virtual JSObject* WrapObject(JSContext* aCx,
                                JS::Handle<JSObject*> aScope) MOZ_OVERRIDE
   {
-    return KeyboardEventBinding::Wrap(aCx, aScope, this);
+    return KeyboardEventBinding::Wrap(aCx, this);
   }
 
   bool AltKey();
   bool CtrlKey();
   bool ShiftKey();
   bool MetaKey();
 
   bool GetModifierState(const nsAString& aKey)
--- a/dom/events/MessageEvent.cpp
+++ b/dom/events/MessageEvent.cpp
@@ -54,17 +54,17 @@ MessageEvent::~MessageEvent()
 {
   mData = JSVAL_VOID;
   DropJSObjects(this);
 }
 
 JSObject*
 MessageEvent::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return mozilla::dom::MessageEventBinding::Wrap(aCx, aScope, this);
+  return mozilla::dom::MessageEventBinding::Wrap(aCx, this);
 }
 
 NS_IMETHODIMP
 MessageEvent::GetData(JSContext* aCx, JS::MutableHandle<JS::Value> aData)
 {
   ErrorResult rv;
   aData.set(GetData(aCx, rv));
   return rv.ErrorCode();
--- a/dom/events/MouseEvent.h
+++ b/dom/events/MouseEvent.h
@@ -28,17 +28,17 @@ public:
   NS_DECL_NSIDOMMOUSEEVENT
 
   // Forward to base class
   NS_FORWARD_TO_UIEVENT
 
   virtual JSObject* WrapObject(JSContext* aCx,
                                JS::Handle<JSObject*> aScope) MOZ_OVERRIDE
   {
-    return MouseEventBinding::Wrap(aCx, aScope, this);
+    return MouseEventBinding::Wrap(aCx, this);
   }
 
   // Web IDL binding methods
   virtual uint32_t Which() MOZ_OVERRIDE
   {
     return Button() + 1;
   }
 
--- a/dom/events/MouseScrollEvent.h
+++ b/dom/events/MouseScrollEvent.h
@@ -27,17 +27,17 @@ public:
   NS_DECL_NSIDOMMOUSESCROLLEVENT
 
   // Forward to base class
   NS_FORWARD_TO_MOUSEEVENT
 
   virtual JSObject* WrapObject(JSContext* aCx,
                                JS::Handle<JSObject*> aScope) MOZ_OVERRIDE
   {
-    return MouseScrollEventBinding::Wrap(aCx, aScope, this);
+    return MouseScrollEventBinding::Wrap(aCx, this);
   }
 
   int32_t Axis();
 
   void InitMouseScrollEvent(const nsAString& aType, bool aCanBubble,
                             bool aCancelable, nsIDOMWindow* aView,
                             int32_t aDetail, int32_t aScreenX, int32_t aScreenY,
                             int32_t aClientX, int32_t aClientY,
--- a/dom/events/MutationEvent.h
+++ b/dom/events/MutationEvent.h
@@ -28,17 +28,17 @@ public:
   NS_DECL_NSIDOMMUTATIONEVENT
 
   // Forward to base class
   NS_FORWARD_TO_EVENT
 
   virtual JSObject* WrapObject(JSContext* aCx,
                                JS::Handle<JSObject*> aScope) MOZ_OVERRIDE
   {
-    return MutationEventBinding::Wrap(aCx, aScope, this);
+    return MutationEventBinding::Wrap(aCx, this);
   }
 
   // xpidl implementation
   // GetPrevValue(nsAString& aPrevValue);
   // GetNewValue(nsAString& aNewValue);
   // GetAttrName(nsAString& aAttrName);
 
   already_AddRefed<nsINode> GetRelatedNode();
--- a/dom/events/NotifyPaintEvent.h
+++ b/dom/events/NotifyPaintEvent.h
@@ -41,17 +41,17 @@ public:
     return Event::DuplicatePrivateData();
   }
   NS_IMETHOD_(void) Serialize(IPC::Message* aMsg, bool aSerializeInterfaceType) MOZ_OVERRIDE;
   NS_IMETHOD_(bool) Deserialize(const IPC::Message* aMsg, void** aIter) MOZ_OVERRIDE;
 
   virtual JSObject* WrapObject(JSContext* aCx,
                                JS::Handle<JSObject*> aScope) MOZ_OVERRIDE
   {
-    return NotifyPaintEventBinding::Wrap(aCx, aScope, this);
+    return NotifyPaintEventBinding::Wrap(aCx, this);
   }
 
   already_AddRefed<DOMRectList> ClientRects();
 
   already_AddRefed<DOMRect> BoundingClientRect();
 
   already_AddRefed<PaintRequestList> PaintRequests();
 private:
--- a/dom/events/PaintRequest.cpp
+++ b/dom/events/PaintRequest.cpp
@@ -25,17 +25,17 @@ NS_INTERFACE_TABLE_HEAD(PaintRequest)
 NS_INTERFACE_MAP_END
 
 NS_IMPL_CYCLE_COLLECTING_ADDREF(PaintRequest)
 NS_IMPL_CYCLE_COLLECTING_RELEASE(PaintRequest)
 
 /* virtual */ JSObject*
 PaintRequest::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return PaintRequestBinding::Wrap(aCx, aScope, this);
+  return PaintRequestBinding::Wrap(aCx, this);
 }
 
 already_AddRefed<DOMRect>
 PaintRequest::ClientRect()
 {
   nsRefPtr<DOMRect> clientRect = new DOMRect(this);
   clientRect->SetLayoutRect(mRequest.mRect);
   return clientRect.forget();
@@ -68,13 +68,13 @@ NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(
 NS_INTERFACE_MAP_END
 
 NS_IMPL_CYCLE_COLLECTING_ADDREF(PaintRequestList)
 NS_IMPL_CYCLE_COLLECTING_RELEASE(PaintRequestList)
 
 JSObject*
 PaintRequestList::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return PaintRequestListBinding::Wrap(aCx, aScope, this);
+  return PaintRequestListBinding::Wrap(aCx, this);
 }
 
 } // namespace dom
 } // namespace mozilla
--- a/dom/events/PointerEvent.h
+++ b/dom/events/PointerEvent.h
@@ -20,17 +20,17 @@ class PointerEvent : public MouseEvent
 public:
   PointerEvent(EventTarget* aOwner,
                nsPresContext* aPresContext,
                WidgetPointerEvent* aEvent);
 
   virtual JSObject* WrapObject(JSContext* aCx,
                                JS::Handle<JSObject*> aScope) MOZ_OVERRIDE
   {
-    return PointerEventBinding::Wrap(aCx, aScope, this);
+    return PointerEventBinding::Wrap(aCx, this);
   }
 
   static already_AddRefed<PointerEvent>
   Constructor(const GlobalObject& aGlobal,
               const nsAString& aType,
               const PointerEventInit& aParam,
               ErrorResult& aRv);
 
--- a/dom/events/ScrollAreaEvent.h
+++ b/dom/events/ScrollAreaEvent.h
@@ -36,17 +36,17 @@ public:
     return Event::DuplicatePrivateData();
   }
   NS_IMETHOD_(void) Serialize(IPC::Message* aMsg, bool aSerializeInterfaceType) MOZ_OVERRIDE;
   NS_IMETHOD_(bool) Deserialize(const IPC::Message* aMsg, void** aIter) MOZ_OVERRIDE;
 
   virtual JSObject* WrapObject(JSContext* aCx,
                                JS::Handle<JSObject*> aScope) MOZ_OVERRIDE
   {
-    return ScrollAreaEventBinding::Wrap(aCx, aScope, this);
+    return ScrollAreaEventBinding::Wrap(aCx, this);
   }
 
   float X() const
   {
     return mClientArea.Left();
   }
 
   float Y() const
--- a/dom/events/SimpleGestureEvent.h
+++ b/dom/events/SimpleGestureEvent.h
@@ -28,17 +28,17 @@ public:
   NS_DECL_NSIDOMSIMPLEGESTUREEVENT
 
   // Forward to base class
   NS_FORWARD_TO_MOUSEEVENT
 
   virtual JSObject* WrapObject(JSContext* aCx,
                                JS::Handle<JSObject*> aScope) MOZ_OVERRIDE
   {
-    return SimpleGestureEventBinding::Wrap(aCx, aScope, this);
+    return SimpleGestureEventBinding::Wrap(aCx, this);
   }
 
   uint32_t AllowedDirections();
   uint32_t Direction();
   double Delta();
   uint32_t ClickCount();
 
   void InitSimpleGestureEvent(const nsAString& aType,
--- a/dom/events/SpeechRecognitionError.h
+++ b/dom/events/SpeechRecognitionError.h
@@ -23,17 +23,17 @@ public:
   static already_AddRefed<SpeechRecognitionError>
   Constructor(const GlobalObject& aGlobal,
               const nsAString& aType,
               const SpeechRecognitionErrorInit& aParam,
               ErrorResult& aRv);
 
   virtual JSObject* WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope) MOZ_OVERRIDE
   {
-    return mozilla::dom::SpeechRecognitionErrorBinding::Wrap(aCx, aScope, this);
+    return mozilla::dom::SpeechRecognitionErrorBinding::Wrap(aCx, this);
   }
 
   void
   GetMessage(nsAString& aString)
   {
     aString = mMessage;
   }
 
--- a/dom/events/Touch.cpp
+++ b/dom/events/Touch.cpp
@@ -132,17 +132,17 @@ Touch::Equals(Touch* aTouch)
          mRotationAngle == aTouch->RotationAngle() &&
          mRadius.x == aTouch->RadiusX() &&
          mRadius.y == aTouch->RadiusY();
 }
 
 JSObject*
 Touch::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return TouchBinding::Wrap(aCx, aScope, this);
+  return TouchBinding::Wrap(aCx, this);
 }
 
 // Parent ourselves to the window of the target. This achieves the desirable
 // effects of parenting to the target, but avoids making the touch inaccessible
 // when the target happens to be NAC and therefore reflected into the XBL scope.
 EventTarget*
 Touch::GetParentObject()
 {
--- a/dom/events/TouchEvent.cpp
+++ b/dom/events/TouchEvent.cpp
@@ -33,17 +33,17 @@ NS_INTERFACE_MAP_END
 NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE_2(TouchList, mParent, mPoints)
 
 NS_IMPL_CYCLE_COLLECTING_ADDREF(TouchList)
 NS_IMPL_CYCLE_COLLECTING_RELEASE(TouchList)
 
 JSObject*
 TouchList::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return TouchListBinding::Wrap(aCx, aScope, this);
+  return TouchListBinding::Wrap(aCx, this);
 }
 
 // static
 bool
 TouchList::PrefEnabled(JSContext* aCx, JSObject* aGlobal)
 {
   return TouchEvent::PrefEnabled(aCx, aGlobal);
 }
--- a/dom/events/TouchEvent.h
+++ b/dom/events/TouchEvent.h
@@ -88,17 +88,17 @@ public:
              WidgetTouchEvent* aEvent);
 
   NS_DECL_ISUPPORTS_INHERITED
   NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(TouchEvent, UIEvent)
 
   virtual JSObject* WrapObject(JSContext* aCx,
                                JS::Handle<JSObject*> aScope) MOZ_OVERRIDE
   {
-    return TouchEventBinding::Wrap(aCx, aScope, this);
+    return TouchEventBinding::Wrap(aCx, this);
   }
 
   TouchList* Touches();
   TouchList* TargetTouches();
   TouchList* ChangedTouches();
 
   bool AltKey();
   bool MetaKey();
--- a/dom/events/TransitionEvent.h
+++ b/dom/events/TransitionEvent.h
@@ -31,17 +31,17 @@ public:
   Constructor(const GlobalObject& aGlobal,
               const nsAString& aType,
               const TransitionEventInit& aParam,
               ErrorResult& aRv);
 
   virtual JSObject* WrapObject(JSContext* aCx,
                                JS::Handle<JSObject*> aScope) MOZ_OVERRIDE
   {
-    return TransitionEventBinding::Wrap(aCx, aScope, this);
+    return TransitionEventBinding::Wrap(aCx, this);
   }
 
   // xpidl implementation
   // GetPropertyName(nsAString& aPropertyName)
   // GetPseudoElement(nsAString& aPreudoElement)
 
   float ElapsedTime();
 };
--- a/dom/events/UIEvent.h
+++ b/dom/events/UIEvent.h
@@ -100,17 +100,17 @@ public:
   static already_AddRefed<UIEvent> Constructor(const GlobalObject& aGlobal,
                                                const nsAString& aType,
                                                const UIEventInit& aParam,
                                                ErrorResult& aRv);
 
   virtual JSObject* WrapObject(JSContext* aCx,
                                JS::Handle<JSObject*> aScope) MOZ_OVERRIDE
   {
-    return UIEventBinding::Wrap(aCx, aScope, this);
+    return UIEventBinding::Wrap(aCx, this);
   }
 
   nsIDOMWindow* GetView() const
   {
     return mView;
   }
 
   int32_t Detail() const
--- a/dom/events/WheelEvent.h
+++ b/dom/events/WheelEvent.h
@@ -35,17 +35,17 @@ public:
   already_AddRefed<WheelEvent> Constructor(const GlobalObject& aGlobal,
                                            const nsAString& aType,
                                            const WheelEventInit& aParam,
                                            ErrorResult& aRv);
 
   virtual JSObject* WrapObject(JSContext* aCx,
                                JS::Handle<JSObject*> aScope) MOZ_OVERRIDE
   {
-    return WheelEventBinding::Wrap(aCx, aScope, this);
+    return WheelEventBinding::Wrap(aCx, this);
   }
 
   // NOTE: DeltaX(), DeltaY() and DeltaZ() return CSS pixels when deltaMode is
   //       DOM_DELTA_PIXEL. (The internal event's delta values are device pixels
   //       if it's dispatched by widget)
   double DeltaX();
   double DeltaY();
   double DeltaZ();
--- a/dom/events/XULCommandEvent.h
+++ b/dom/events/XULCommandEvent.h
@@ -29,17 +29,17 @@ public:
   NS_DECL_NSIDOMXULCOMMANDEVENT
 
   // Forward our inherited virtual methods to the base class
   NS_FORWARD_TO_UIEVENT
 
   virtual JSObject* WrapObject(JSContext* aCx,
                                JS::Handle<JSObject*> aScope) MOZ_OVERRIDE
   {
-    return XULCommandEventBinding::Wrap(aCx, aScope, this);
+    return XULCommandEventBinding::Wrap(aCx, this);
   }
 
   bool AltKey();
   bool CtrlKey();
   bool ShiftKey();
   bool MetaKey();
 
   already_AddRefed<Event> GetSourceEvent()
--- a/dom/file/ArchiveReader.cpp
+++ b/dom/file/ArchiveReader.cpp
@@ -62,17 +62,17 @@ ArchiveReader::ArchiveReader(nsIDOMBlob*
 
 ArchiveReader::~ArchiveReader()
 {
 }
 
 /* virtual */ JSObject*
 ArchiveReader::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return ArchiveReaderBinding::Wrap(aCx, aScope, this);
+  return ArchiveReaderBinding::Wrap(aCx, this);
 }
 
 nsresult
 ArchiveReader::RegisterRequest(ArchiveRequest* aRequest)
 {
   switch (mStatus) {
     // Append to the list and let's start to work:
     case NOT_STARTED:
--- a/dom/file/ArchiveRequest.cpp
+++ b/dom/file/ArchiveRequest.cpp
@@ -73,17 +73,17 @@ ArchiveRequest::PreHandleEvent(EventChai
   aVisitor.mCanHandle = true;
   aVisitor.mParentTarget = nullptr;
   return NS_OK;
 }
 
 /* virtual */ JSObject*
 ArchiveRequest::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return ArchiveRequestBinding::Wrap(aCx, aScope, this);
+  return ArchiveRequestBinding::Wrap(aCx, this);
 }
 
 ArchiveReader*
 ArchiveRequest::Reader() const
 {
   NS_ASSERTION(NS_IsMainThread(), "Wrong thread!");
 
   return mArchiveReader;
--- a/dom/file/FileHandle.cpp
+++ b/dom/file/FileHandle.cpp
@@ -120,17 +120,17 @@ FileHandle::CreateFileObject(LockedFile*
 
   return file.forget();
 }
 
 // virtual
 JSObject*
 FileHandle::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return FileHandleBinding::Wrap(aCx, aScope, this);
+  return FileHandleBinding::Wrap(aCx, this);
 }
 
 already_AddRefed<LockedFile>
 FileHandle::Open(FileMode aMode, ErrorResult& aError)
 {
   MOZ_ASSERT(NS_IsMainThread());
 
   if (FileService::IsShuttingDown() || mFileStorage->IsShuttingDown()) {
--- a/dom/file/FileRequest.cpp
+++ b/dom/file/FileRequest.cpp
@@ -107,17 +107,17 @@ NS_IMPL_RELEASE_INHERITED(FileRequest, D
 
 // virtual
 JSObject*
 FileRequest::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
   if (mWrapAsDOMRequest) {
     return DOMRequest::WrapObject(aCx, aScope);
   }
-  return FileRequestBinding::Wrap(aCx, aScope, this);
+  return FileRequestBinding::Wrap(aCx, this);
 }
 
 LockedFile*
 FileRequest::GetLockedFile() const
 {
   MOZ_ASSERT(NS_IsMainThread(), "Wrong thread!");
   return mLockedFile;
 }
--- a/dom/file/LockedFile.cpp
+++ b/dom/file/LockedFile.cpp
@@ -388,17 +388,17 @@ LockedFile::IsOpen() const
 
   return false;
 }
 
 // virtual
 JSObject*
 LockedFile::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return LockedFileBinding::Wrap(aCx, aScope, this);
+  return LockedFileBinding::Wrap(aCx, this);
 }
 
 already_AddRefed<FileRequest>
 LockedFile::GetMetadata(const DOMFileMetadataParameters& aParameters,
                         ErrorResult& aRv)
 {
   NS_ASSERTION(NS_IsMainThread(), "Wrong thread!");
 
--- a/dom/filesystem/Directory.cpp
+++ b/dom/filesystem/Directory.cpp
@@ -66,17 +66,17 @@ nsPIDOMWindow*
 Directory::GetParentObject() const
 {
   return mFileSystem->GetWindow();
 }
 
 JSObject*
 Directory::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return DirectoryBinding::Wrap(aCx, aScope, this);
+  return DirectoryBinding::Wrap(aCx, this);
 }
 
 void
 Directory::GetName(nsString& aRetval) const
 {
   aRetval.Truncate();
 
   if (mPath.IsEmpty()) {
--- a/dom/fmradio/FMRadio.cpp
+++ b/dom/fmradio/FMRadio.cpp
@@ -181,17 +181,17 @@ FMRadio::Shutdown()
                                     /* useCapture = */ true);
 
   mIsShutdown = true;
 }
 
 JSObject*
 FMRadio::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return FMRadioBinding::Wrap(aCx, aScope, this);
+  return FMRadioBinding::Wrap(aCx, this);
 }
 
 void
 FMRadio::Notify(const SwitchEvent& aEvent)
 {
   MOZ_ASSERT(!mHasInternalAntenna);
 
   if (mHeadphoneState != aEvent.status()) {
--- a/dom/gamepad/Gamepad.cpp
+++ b/dom/gamepad/Gamepad.cpp
@@ -101,13 +101,13 @@ Gamepad::Clone(nsISupports* aParent)
                 mButtons.Length(), mAxes.Length());
   out->SyncState(this);
   return out.forget();
 }
 
 /* virtual */ JSObject*
 Gamepad::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return GamepadBinding::Wrap(aCx, aScope, this);
+  return GamepadBinding::Wrap(aCx, this);
 }
 
 } // namespace dom
 } // namespace mozilla
--- a/dom/gamepad/GamepadButton.cpp
+++ b/dom/gamepad/GamepadButton.cpp
@@ -16,13 +16,13 @@ NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(
   NS_INTERFACE_MAP_ENTRY(nsISupports)
 NS_INTERFACE_MAP_END
 
 NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE_1(GamepadButton, mParent)
 
 /* virtual */ JSObject*
 GamepadButton::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return GamepadButtonBinding::Wrap(aCx, aScope, this);
+  return GamepadButtonBinding::Wrap(aCx, this);
 }
 
 } // namespace dom
 } // namespace mozilla
--- a/dom/icc/src/Icc.cpp
+++ b/dom/icc/src/Icc.cpp
@@ -73,17 +73,17 @@ Icc::NotifyStkEvent(const nsAString& aNa
   return DispatchTrustedEvent(event);
 }
 
 // WrapperCache
 
 JSObject*
 Icc::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return MozIccBinding::Wrap(aCx, aScope, this);
+  return MozIccBinding::Wrap(aCx, this);
 }
 
 // MozIcc WebIDL
 
 already_AddRefed<nsIDOMMozIccInfo>
 Icc::GetIccInfo() const
 {
   if (!mProvider) {
--- a/dom/indexedDB/IDBCursor.cpp
+++ b/dom/indexedDB/IDBCursor.cpp
@@ -548,21 +548,21 @@ NS_IMPL_CYCLE_COLLECTING_RELEASE(IDBCurs
 JSObject*
 IDBCursor::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
   MOZ_ASSERT(NS_IsMainThread());
 
   switch (mType) {
     case OBJECTSTORE:
     case INDEXOBJECT:
-      return IDBCursorWithValueBinding::Wrap(aCx, aScope, this);
+      return IDBCursorWithValueBinding::Wrap(aCx, this);
 
     case OBJECTSTOREKEY:
     case INDEXKEY:
-      return IDBCursorBinding::Wrap(aCx, aScope, this);
+      return IDBCursorBinding::Wrap(aCx, this);
 
     default:
       MOZ_ASSUME_UNREACHABLE("Bad type!");
   }
 }
 
 mozilla::dom::IDBCursorDirection
 IDBCursor::GetDirection() const
--- a/dom/indexedDB/IDBDatabase.cpp
+++ b/dom/indexedDB/IDBDatabase.cpp
@@ -480,17 +480,17 @@ NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION_
 NS_INTERFACE_MAP_END_INHERITING(IDBWrapperCache)
 
 NS_IMPL_ADDREF_INHERITED(IDBDatabase, IDBWrapperCache)
 NS_IMPL_RELEASE_INHERITED(IDBDatabase, IDBWrapperCache)
 
 JSObject*
 IDBDatabase::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return IDBDatabaseBinding::Wrap(aCx, aScope, this);
+  return IDBDatabaseBinding::Wrap(aCx, this);
 }
 
 uint64_t
 IDBDatabase::Version() const
 {
   NS_ASSERTION(NS_IsMainThread(), "Wrong thread!");
   DatabaseInfo* info = Info();
   return info->version;
--- a/dom/indexedDB/IDBEvents.h
+++ b/dom/indexedDB/IDBEvents.h
@@ -51,17 +51,17 @@ class IDBVersionChangeEvent : public Eve
 public:
   NS_DECL_ISUPPORTS_INHERITED
   NS_FORWARD_TO_EVENT
   NS_DECLARE_STATIC_IID_ACCESSOR(IDBVERSIONCHANGEEVENT_IID)
 
   virtual JSObject* WrapObject(JSContext* aCx,
                                JS::Handle<JSObject*> aScope) MOZ_OVERRIDE
   {
-    return mozilla::dom::IDBVersionChangeEventBinding::Wrap(aCx, aScope, this);
+    return mozilla::dom::IDBVersionChangeEventBinding::Wrap(aCx, this);
   }
 
   static already_AddRefed<IDBVersionChangeEvent>
   Constructor(const GlobalObject& aGlobal,
               const nsAString& aType,
               const IDBVersionChangeEventInit& aOptions,
               ErrorResult& aRv)
   {
--- a/dom/indexedDB/IDBFactory.cpp
+++ b/dom/indexedDB/IDBFactory.cpp
@@ -693,17 +693,17 @@ IDBFactory::OpenInternal(const nsAString
 
   request.forget(_retval);
   return NS_OK;
 }
 
 JSObject*
 IDBFactory::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return IDBFactoryBinding::Wrap(aCx, aScope, this);
+  return IDBFactoryBinding::Wrap(aCx, this);
 }
 
 already_AddRefed<IDBOpenDBRequest>
 IDBFactory::Open(const nsAString& aName, const IDBOpenDBOptions& aOptions,
                  ErrorResult& aRv)
 {
   return Open(nullptr, aName, aOptions.mVersion, aOptions.mStorage, false, aRv);
 }
--- a/dom/indexedDB/IDBFileHandle.cpp
+++ b/dom/indexedDB/IDBFileHandle.cpp
@@ -105,17 +105,17 @@ IDBFileHandle::CreateFileObject(mozilla:
 
   return file.forget();
 }
 
 // virtual
 JSObject*
 IDBFileHandle::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return IDBFileHandleBinding::Wrap(aCx, aScope, this);
+  return IDBFileHandleBinding::Wrap(aCx, this);
 }
 
 IDBDatabase*
 IDBFileHandle::Database()
 {
   NS_ASSERTION(NS_IsMainThread(), "Wrong thread!");
 
   IDBDatabase* database = static_cast<IDBDatabase*>(mFileStorage.get());
--- a/dom/indexedDB/IDBIndex.cpp
+++ b/dom/indexedDB/IDBIndex.cpp
@@ -818,17 +818,17 @@ NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(
 NS_INTERFACE_MAP_END
 
 NS_IMPL_CYCLE_COLLECTING_ADDREF(IDBIndex)
 NS_IMPL_CYCLE_COLLECTING_RELEASE(IDBIndex)
 
 JSObject*
 IDBIndex::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return IDBIndexBinding::Wrap(aCx, aScope, this);
+  return IDBIndexBinding::Wrap(aCx, this);
 }
 
 JS::Value
 IDBIndex::GetKeyPath(JSContext* aCx, ErrorResult& aRv)
 {
   NS_ASSERTION(NS_IsMainThread(), "Wrong thread!");
 
   if (!JSVAL_IS_VOID(mCachedKeyPath)) {
--- a/dom/indexedDB/IDBKeyRange.cpp
+++ b/dom/indexedDB/IDBKeyRange.cpp
@@ -156,17 +156,17 @@ IDBKeyRange::DropJSObjects()
 IDBKeyRange::~IDBKeyRange()
 {
   DropJSObjects();
 }
 
 JSObject*
 IDBKeyRange::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return IDBKeyRangeBinding::Wrap(aCx, aScope, this);
+  return IDBKeyRangeBinding::Wrap(aCx, this);
 }
 
 JS::Value
 IDBKeyRange::GetLower(JSContext* aCx, ErrorResult& aRv)
 {
   MOZ_ASSERT(NS_IsMainThread(), "Wrong thread!");
 
   if (!mHaveCachedLowerVal) {
--- a/dom/indexedDB/IDBObjectStore.cpp
+++ b/dom/indexedDB/IDBObjectStore.cpp
@@ -2615,17 +2615,17 @@ NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(
 NS_INTERFACE_MAP_END
 
 NS_IMPL_CYCLE_COLLECTING_ADDREF(IDBObjectStore)
 NS_IMPL_CYCLE_COLLECTING_RELEASE(IDBObjectStore)
 
 JSObject*
 IDBObjectStore::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return IDBObjectStoreBinding::Wrap(aCx, aScope, this);
+  return IDBObjectStoreBinding::Wrap(aCx, this);
 }
 
 JS::Value
 IDBObjectStore::GetKeyPath(JSContext* aCx, ErrorResult& aRv)
 {
   NS_ASSERTION(NS_IsMainThread(), "Wrong thread!");
 
   if (!JSVAL_IS_VOID(mCachedKeyPath)) {
--- a/dom/indexedDB/IDBRequest.cpp
+++ b/dom/indexedDB/IDBRequest.cpp
@@ -318,17 +318,17 @@ IDBRequest::ReadyState() const
   }
 
   return IDBRequestReadyState::Done;
 }
 
 JSObject*
 IDBRequest::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return IDBRequestBinding::Wrap(aCx, aScope, this);
+  return IDBRequestBinding::Wrap(aCx, this);
 }
 
 JS::Value
 IDBRequest::GetResult(JSContext* aCx, mozilla::ErrorResult& aRv) const
 {
   NS_ASSERTION(NS_IsMainThread(), "Wrong thread!");
 
   if (!mHaveResultOrErrorCode) {
@@ -460,10 +460,10 @@ nsresult
 IDBOpenDBRequest::PostHandleEvent(EventChainPostVisitor& aVisitor)
 {
   return IndexedDatabaseManager::FireWindowOnError(GetOwner(), aVisitor);
 }
 
 JSObject*
 IDBOpenDBRequest::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return IDBOpenDBRequestBinding::Wrap(aCx, aScope, this);
+  return IDBOpenDBRequestBinding::Wrap(aCx, this);
 }
--- a/dom/indexedDB/IDBTransaction.cpp
+++ b/dom/indexedDB/IDBTransaction.cpp
@@ -629,17 +629,17 @@ NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION_
 NS_INTERFACE_MAP_END_INHERITING(IDBWrapperCache)
 
 NS_IMPL_ADDREF_INHERITED(IDBTransaction, IDBWrapperCache)
 NS_IMPL_RELEASE_INHERITED(IDBTransaction, IDBWrapperCache)
 
 JSObject*
 IDBTransaction::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return IDBTransactionBinding::Wrap(aCx, aScope, this);
+  return IDBTransactionBinding::Wrap(aCx, this);
 }
 
 mozilla::dom::IDBTransactionMode
 IDBTransaction::GetMode(ErrorResult& aRv) const
 {
   NS_ASSERTION(NS_IsMainThread(), "Wrong thread!");
 
   switch (mMode) {
--- a/dom/media/GetUserMediaRequest.cpp
+++ b/dom/media/GetUserMediaRequest.cpp
@@ -31,17 +31,17 @@ NS_IMPL_CYCLE_COLLECTING_RELEASE(GetUser
 NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(GetUserMediaRequest)
   NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY
   NS_INTERFACE_MAP_ENTRY(nsISupports)
 NS_INTERFACE_MAP_END
 
 JSObject*
 GetUserMediaRequest::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return GetUserMediaRequestBinding::Wrap(aCx, aScope, this);
+  return GetUserMediaRequestBinding::Wrap(aCx, this);
 }
 
 nsISupports* GetUserMediaRequest::GetParentObject()
 {
   return nullptr;
 }
 
 void GetUserMediaRequest::GetCallID(nsString& retval)
--- a/dom/mobileconnection/src/MobileConnectionArray.cpp
+++ b/dom/mobileconnection/src/MobileConnectionArray.cpp
@@ -77,17 +77,17 @@ MobileConnectionArray::GetParentObject()
 {
   MOZ_ASSERT(mWindow);
   return mWindow;
 }
 
 JSObject*
 MobileConnectionArray::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return MozMobileConnectionArrayBinding::Wrap(aCx, aScope, this);
+  return MozMobileConnectionArrayBinding::Wrap(aCx, this);
 }
 
 nsIDOMMozMobileConnection*
 MobileConnectionArray::Item(uint32_t aIndex)
 {
   bool unused;
   return IndexedGetter(aIndex, unused);
 }
--- a/dom/network/src/Connection.cpp
+++ b/dom/network/src/Connection.cpp
@@ -89,14 +89,14 @@ Connection::Notify(const hal::NetworkInf
   }
 
   DispatchTrustedEvent(CHANGE_EVENT_NAME);
 }
 
 JSObject*
 Connection::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
 {
-  return NetworkInformationBinding::Wrap(aCx, aScope, this);