Bug 991742 part 8. Remove the "aScope" argument of WebIDL/nsWrapperCache WrapObject() methods. r=bholley
authorBoris Zbarsky <bzbarsky@mit.edu>
Tue, 08 Apr 2014 18:27:18 -0400
changeset 177628 de7487db16d9df8f72eaeb4d6cc7288b47cedb54
parent 177627 56f352a5c0230107da2c0b1bd6c689bd22845bc0
child 177629 c51fa6ea5011b941f1d44d331847a5d8b0f5fce2
push id1
push userroot
push dateMon, 20 Oct 2014 17:29:22 +0000
reviewersbholley
bugs991742
milestone31.0a1
Bug 991742 part 8. Remove the "aScope" argument of WebIDL/nsWrapperCache WrapObject() methods. r=bholley This patch was mostly generated with the following command: find . -name "*.h" -o -name "*.cpp" | xargs sed -e '/WrapObject(JSContext/ {; N; s/\(WrapObject(JSContext *\* *a\{0,1\}[Cc]x\),\n\{0,1\} *JS::Handle<JSObject\*> a\{0,1\}[sS]cope/\1/ ; }' -i "" and then reverting the changes that made to dom/bindings/BindingUtils.h, since those WrapObject methods are not the ones we're trying to change here, plus a bunch of manual fixups for cases that this command did not catch (including all the callsites of WrapObject()).
content/base/public/Element.h
content/base/public/FragmentOrElement.h
content/base/public/nsDOMFile.h
content/base/public/nsIDocument.h
content/base/public/nsINode.h
content/base/src/Attr.cpp
content/base/src/Attr.h
content/base/src/DOMImplementation.cpp
content/base/src/DOMImplementation.h
content/base/src/DOMParser.h
content/base/src/DOMPoint.cpp
content/base/src/DOMPoint.h
content/base/src/DOMQuad.cpp
content/base/src/DOMQuad.h
content/base/src/DOMRect.cpp
content/base/src/DOMRect.h
content/base/src/DOMStringList.cpp
content/base/src/DOMStringList.h
content/base/src/Element.cpp
content/base/src/EventSource.cpp
content/base/src/EventSource.h
content/base/src/FragmentOrElement.cpp
content/base/src/NodeIterator.cpp
content/base/src/NodeIterator.h
content/base/src/ShadowRoot.cpp
content/base/src/ShadowRoot.h
content/base/src/TreeWalker.cpp
content/base/src/TreeWalker.h
content/base/src/WebSocket.cpp
content/base/src/WebSocket.h
content/base/src/nsContentList.cpp
content/base/src/nsContentList.h
content/base/src/nsDOMAttributeMap.cpp
content/base/src/nsDOMAttributeMap.h
content/base/src/nsDOMCaretPosition.cpp
content/base/src/nsDOMCaretPosition.h
content/base/src/nsDOMDataChannel.cpp
content/base/src/nsDOMDataChannel.h
content/base/src/nsDOMFile.cpp
content/base/src/nsDOMFileReader.cpp
content/base/src/nsDOMFileReader.h
content/base/src/nsDOMMutationObserver.h
content/base/src/nsDOMSerializer.h
content/base/src/nsDOMSettableTokenList.cpp
content/base/src/nsDOMSettableTokenList.h
content/base/src/nsDOMTokenList.cpp
content/base/src/nsDOMTokenList.h
content/base/src/nsDocument.cpp
content/base/src/nsFormData.cpp
content/base/src/nsFormData.h
content/base/src/nsINode.cpp
content/base/src/nsRange.cpp
content/base/src/nsRange.h
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/CanvasRenderingContext2D.h
content/canvas/src/ImageData.cpp
content/canvas/src/ImageData.h
content/canvas/src/TextMetrics.h
content/canvas/src/WebGL1Context.cpp
content/canvas/src/WebGL1Context.h
content/canvas/src/WebGL2Context.cpp
content/canvas/src/WebGL2Context.h
content/canvas/src/WebGLActiveInfo.cpp
content/canvas/src/WebGLActiveInfo.h
content/canvas/src/WebGLBuffer.cpp
content/canvas/src/WebGLBuffer.h
content/canvas/src/WebGLContext.h
content/canvas/src/WebGLExtensions.h
content/canvas/src/WebGLFramebuffer.cpp
content/canvas/src/WebGLFramebuffer.h
content/canvas/src/WebGLProgram.cpp
content/canvas/src/WebGLProgram.h
content/canvas/src/WebGLQuery.cpp
content/canvas/src/WebGLQuery.h
content/canvas/src/WebGLRenderbuffer.cpp
content/canvas/src/WebGLRenderbuffer.h
content/canvas/src/WebGLShader.cpp
content/canvas/src/WebGLShader.h
content/canvas/src/WebGLShaderPrecisionFormat.cpp
content/canvas/src/WebGLShaderPrecisionFormat.h
content/canvas/src/WebGLTexture.cpp
content/canvas/src/WebGLTexture.h
content/canvas/src/WebGLUniformLocation.cpp
content/canvas/src/WebGLUniformLocation.h
content/canvas/src/WebGLVertexArray.cpp
content/canvas/src/WebGLVertexArray.h
content/html/content/public/HTMLCanvasElement.h
content/html/content/public/nsIHTMLCollection.h
content/html/content/src/HTMLCanvasElement.cpp
content/html/content/src/HTMLContentElement.cpp
content/html/content/src/HTMLContentElement.h
content/html/content/src/HTMLFormControlsCollection.cpp
content/html/content/src/HTMLFormControlsCollection.h
content/html/content/src/HTMLOptionsCollection.cpp
content/html/content/src/HTMLOptionsCollection.h
content/html/content/src/HTMLPropertiesCollection.cpp
content/html/content/src/HTMLPropertiesCollection.h
content/html/content/src/HTMLTableElement.cpp
content/html/content/src/MediaError.cpp
content/html/content/src/MediaError.h
content/html/content/src/TimeRanges.cpp
content/html/content/src/TimeRanges.h
content/html/content/src/UndoManager.h
content/html/content/src/ValidityState.cpp
content/html/content/src/ValidityState.h
content/html/content/src/nsDOMStringMap.cpp
content/html/content/src/nsDOMStringMap.h
content/media/AudioStreamTrack.cpp
content/media/AudioStreamTrack.h
content/media/DOMMediaStream.cpp
content/media/DOMMediaStream.h
content/media/MediaRecorder.cpp
content/media/MediaRecorder.h
content/media/MediaStreamTrack.h
content/media/TextTrack.cpp
content/media/TextTrack.h
content/media/TextTrackCue.cpp
content/media/TextTrackCue.h
content/media/TextTrackCueList.cpp
content/media/TextTrackCueList.h
content/media/TextTrackList.cpp
content/media/TextTrackList.h
content/media/TextTrackRegion.cpp
content/media/TextTrackRegion.h
content/media/VideoPlaybackQuality.cpp
content/media/VideoPlaybackQuality.h
content/media/VideoStreamTrack.cpp
content/media/VideoStreamTrack.h
content/media/mediasource/MediaSource.cpp
content/media/mediasource/MediaSource.h
content/media/mediasource/SourceBuffer.cpp
content/media/mediasource/SourceBuffer.h
content/media/mediasource/SourceBufferList.cpp
content/media/mediasource/SourceBufferList.h
content/media/webaudio/AnalyserNode.cpp
content/media/webaudio/AnalyserNode.h
content/media/webaudio/AudioBuffer.cpp
content/media/webaudio/AudioBuffer.h
content/media/webaudio/AudioBufferSourceNode.cpp
content/media/webaudio/AudioBufferSourceNode.h
content/media/webaudio/AudioContext.cpp
content/media/webaudio/AudioContext.h
content/media/webaudio/AudioDestinationNode.cpp
content/media/webaudio/AudioDestinationNode.h
content/media/webaudio/AudioListener.cpp
content/media/webaudio/AudioListener.h
content/media/webaudio/AudioParam.cpp
content/media/webaudio/AudioParam.h
content/media/webaudio/AudioProcessingEvent.cpp
content/media/webaudio/AudioProcessingEvent.h
content/media/webaudio/BiquadFilterNode.cpp
content/media/webaudio/BiquadFilterNode.h
content/media/webaudio/ChannelMergerNode.cpp
content/media/webaudio/ChannelMergerNode.h
content/media/webaudio/ChannelSplitterNode.cpp
content/media/webaudio/ChannelSplitterNode.h
content/media/webaudio/ConvolverNode.cpp
content/media/webaudio/ConvolverNode.h
content/media/webaudio/DelayNode.cpp
content/media/webaudio/DelayNode.h
content/media/webaudio/DynamicsCompressorNode.cpp
content/media/webaudio/DynamicsCompressorNode.h
content/media/webaudio/GainNode.cpp
content/media/webaudio/GainNode.h
content/media/webaudio/MediaElementAudioSourceNode.cpp
content/media/webaudio/MediaElementAudioSourceNode.h
content/media/webaudio/MediaStreamAudioDestinationNode.cpp
content/media/webaudio/MediaStreamAudioDestinationNode.h
content/media/webaudio/MediaStreamAudioSourceNode.cpp
content/media/webaudio/MediaStreamAudioSourceNode.h
content/media/webaudio/OfflineAudioCompletionEvent.cpp
content/media/webaudio/OfflineAudioCompletionEvent.h
content/media/webaudio/OscillatorNode.cpp
content/media/webaudio/OscillatorNode.h
content/media/webaudio/PannerNode.cpp
content/media/webaudio/PannerNode.h
content/media/webaudio/PeriodicWave.cpp
content/media/webaudio/PeriodicWave.h
content/media/webaudio/ScriptProcessorNode.cpp
content/media/webaudio/ScriptProcessorNode.h
content/media/webaudio/WaveShaperNode.cpp
content/media/webaudio/WaveShaperNode.h
content/media/webspeech/recognition/SpeechGrammar.cpp
content/media/webspeech/recognition/SpeechGrammar.h
content/media/webspeech/recognition/SpeechGrammarList.cpp
content/media/webspeech/recognition/SpeechGrammarList.h
content/media/webspeech/recognition/SpeechRecognition.cpp
content/media/webspeech/recognition/SpeechRecognition.h
content/media/webspeech/recognition/SpeechRecognitionAlternative.cpp
content/media/webspeech/recognition/SpeechRecognitionAlternative.h
content/media/webspeech/recognition/SpeechRecognitionResult.cpp
content/media/webspeech/recognition/SpeechRecognitionResult.h
content/media/webspeech/recognition/SpeechRecognitionResultList.cpp
content/media/webspeech/recognition/SpeechRecognitionResultList.h
content/media/webspeech/synth/SpeechSynthesis.cpp
content/media/webspeech/synth/SpeechSynthesis.h
content/media/webspeech/synth/SpeechSynthesisUtterance.cpp
content/media/webspeech/synth/SpeechSynthesisUtterance.h
content/media/webspeech/synth/SpeechSynthesisVoice.cpp
content/media/webspeech/synth/SpeechSynthesisVoice.h
content/svg/content/src/DOMSVGAnimatedLengthList.cpp
content/svg/content/src/DOMSVGAnimatedLengthList.h
content/svg/content/src/DOMSVGAnimatedNumberList.cpp
content/svg/content/src/DOMSVGAnimatedNumberList.h
content/svg/content/src/DOMSVGLengthList.cpp
content/svg/content/src/DOMSVGLengthList.h
content/svg/content/src/DOMSVGNumberList.cpp
content/svg/content/src/DOMSVGNumberList.h
content/svg/content/src/DOMSVGPathSeg.h
content/svg/content/src/DOMSVGPathSegList.cpp
content/svg/content/src/DOMSVGPathSegList.h
content/svg/content/src/DOMSVGPointList.cpp
content/svg/content/src/DOMSVGPointList.h
content/svg/content/src/DOMSVGStringList.cpp
content/svg/content/src/DOMSVGStringList.h
content/svg/content/src/DOMSVGTransformList.cpp
content/svg/content/src/DOMSVGTransformList.h
content/svg/content/src/SVGAngle.cpp
content/svg/content/src/SVGAngle.h
content/svg/content/src/SVGAnimatedAngle.cpp
content/svg/content/src/SVGAnimatedAngle.h
content/svg/content/src/SVGAnimatedBoolean.cpp
content/svg/content/src/SVGAnimatedBoolean.h
content/svg/content/src/SVGAnimatedEnumeration.cpp
content/svg/content/src/SVGAnimatedEnumeration.h
content/svg/content/src/SVGAnimatedInteger.cpp
content/svg/content/src/SVGAnimatedInteger.h
content/svg/content/src/SVGAnimatedLength.cpp
content/svg/content/src/SVGAnimatedLength.h
content/svg/content/src/SVGAnimatedNumber.cpp
content/svg/content/src/SVGAnimatedNumber.h
content/svg/content/src/SVGAnimatedPreserveAspectRatio.cpp
content/svg/content/src/SVGAnimatedPreserveAspectRatio.h
content/svg/content/src/SVGAnimatedRect.cpp
content/svg/content/src/SVGAnimatedRect.h
content/svg/content/src/SVGAnimatedString.cpp
content/svg/content/src/SVGAnimatedString.h
content/svg/content/src/SVGAnimatedTransformList.cpp
content/svg/content/src/SVGAnimatedTransformList.h
content/svg/content/src/SVGIRect.h
content/svg/content/src/SVGMatrix.cpp
content/svg/content/src/SVGMatrix.h
content/svg/content/src/SVGPreserveAspectRatio.cpp
content/svg/content/src/SVGPreserveAspectRatio.h
content/svg/content/src/SVGTransform.cpp
content/svg/content/src/SVGTransform.h
content/svg/content/src/SVGZoomEvent.h
content/svg/content/src/nsISVGPoint.h
dom/activities/src/Activity.cpp
dom/activities/src/Activity.h
dom/base/BarProps.cpp
dom/base/BarProps.h
dom/base/Console.cpp
dom/base/Console.h
dom/base/Crypto.cpp
dom/base/Crypto.h
dom/base/DOMCursor.cpp
dom/base/DOMCursor.h
dom/base/DOMError.cpp
dom/base/DOMError.h
dom/base/DOMException.cpp
dom/base/DOMException.h
dom/base/DOMRequest.cpp
dom/base/DOMRequest.h
dom/base/MessageChannel.cpp
dom/base/MessageChannel.h
dom/base/MessagePort.cpp
dom/base/MessagePort.h
dom/base/MessagePortList.cpp
dom/base/MessagePortList.h
dom/base/Navigator.cpp
dom/base/Navigator.h
dom/base/URL.cpp
dom/base/URL.h
dom/base/URLSearchParams.cpp
dom/base/URLSearchParams.h
dom/base/nsGlobalWindow.cpp
dom/base/nsGlobalWindow.h
dom/base/nsHistory.cpp
dom/base/nsHistory.h
dom/base/nsJSEnvironment.cpp
dom/base/nsMimeTypeArray.cpp
dom/base/nsMimeTypeArray.h
dom/base/nsPerformance.cpp
dom/base/nsPerformance.h
dom/base/nsPluginArray.cpp
dom/base/nsPluginArray.h
dom/base/nsScreen.cpp
dom/base/nsScreen.h
dom/base/nsWrapperCache.h
dom/battery/BatteryManager.cpp
dom/battery/BatteryManager.h
dom/bindings/BindingUtils.cpp
dom/bindings/BindingUtils.h
dom/bindings/Codegen.py
dom/bindings/test/TestBindingHeader.h
dom/bluetooth/BluetoothAdapter.cpp
dom/bluetooth/BluetoothAdapter.h
dom/bluetooth/BluetoothDevice.cpp
dom/bluetooth/BluetoothDevice.h
dom/bluetooth/BluetoothManager.cpp
dom/bluetooth/BluetoothManager.h
dom/camera/DOMCameraCapabilities.cpp
dom/camera/DOMCameraCapabilities.h
dom/camera/DOMCameraControl.cpp
dom/camera/DOMCameraControl.h
dom/camera/DOMCameraManager.cpp
dom/camera/DOMCameraManager.h
dom/cellbroadcast/src/CellBroadcast.cpp
dom/cellbroadcast/src/CellBroadcast.h
dom/devicestorage/DeviceStorage.h
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/DataTransfer.h
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/MessageEvent.h
dom/events/MouseEvent.h
dom/events/MouseScrollEvent.h
dom/events/MutationEvent.h
dom/events/NotifyPaintEvent.h
dom/events/PaintRequest.cpp
dom/events/PaintRequest.h
dom/events/PointerEvent.h
dom/events/ScrollAreaEvent.h
dom/events/SimpleGestureEvent.h
dom/events/SpeechRecognitionError.h
dom/events/Touch.cpp
dom/events/Touch.h
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/ArchiveReader.h
dom/file/ArchiveRequest.cpp
dom/file/ArchiveRequest.h
dom/file/FileHandle.cpp
dom/file/FileHandle.h
dom/file/FileRequest.cpp
dom/file/FileRequest.h
dom/file/LockedFile.cpp
dom/file/LockedFile.h
dom/filesystem/Directory.cpp
dom/filesystem/Directory.h
dom/fmradio/FMRadio.cpp
dom/fmradio/FMRadio.h
dom/gamepad/Gamepad.cpp
dom/gamepad/Gamepad.h
dom/gamepad/GamepadButton.cpp
dom/gamepad/GamepadButton.h
dom/icc/src/Icc.cpp
dom/icc/src/Icc.h
dom/indexedDB/IDBCursor.cpp
dom/indexedDB/IDBCursor.h
dom/indexedDB/IDBDatabase.cpp
dom/indexedDB/IDBDatabase.h
dom/indexedDB/IDBEvents.h
dom/indexedDB/IDBFactory.cpp
dom/indexedDB/IDBFactory.h
dom/indexedDB/IDBFileHandle.cpp
dom/indexedDB/IDBFileHandle.h
dom/indexedDB/IDBIndex.cpp
dom/indexedDB/IDBIndex.h
dom/indexedDB/IDBKeyRange.cpp
dom/indexedDB/IDBKeyRange.h
dom/indexedDB/IDBObjectStore.cpp
dom/indexedDB/IDBObjectStore.h
dom/indexedDB/IDBRequest.cpp
dom/indexedDB/IDBRequest.h
dom/indexedDB/IDBTransaction.cpp
dom/indexedDB/IDBTransaction.h
dom/media/GetUserMediaRequest.cpp
dom/media/GetUserMediaRequest.h
dom/mobileconnection/src/MobileConnectionArray.cpp
dom/mobileconnection/src/MobileConnectionArray.h
dom/network/src/Connection.cpp
dom/network/src/Connection.h
dom/nfc/MozNDEFRecord.cpp
dom/nfc/MozNDEFRecord.h
dom/power/PowerManager.cpp
dom/power/PowerManager.h
dom/power/WakeLock.cpp
dom/power/WakeLock.h
dom/promise/Promise.cpp
dom/promise/Promise.h
dom/smil/TimeEvent.h
dom/speakermanager/SpeakerManager.cpp
dom/speakermanager/SpeakerManager.h
dom/src/geolocation/nsGeoPosition.cpp
dom/src/geolocation/nsGeoPosition.h
dom/src/geolocation/nsGeolocation.cpp
dom/src/geolocation/nsGeolocation.h
dom/src/notification/DesktopNotification.cpp
dom/src/notification/DesktopNotification.h
dom/src/notification/Notification.cpp
dom/src/notification/Notification.h
dom/src/offline/nsDOMOfflineResourceList.cpp
dom/src/offline/nsDOMOfflineResourceList.h
dom/system/gonk/AudioChannelManager.cpp
dom/system/gonk/AudioChannelManager.h
dom/telephony/CallEvent.cpp
dom/telephony/CallEvent.h
dom/telephony/CallsList.cpp
dom/telephony/CallsList.h
dom/telephony/Telephony.cpp
dom/telephony/Telephony.h
dom/telephony/TelephonyCall.cpp
dom/telephony/TelephonyCall.h
dom/telephony/TelephonyCallGroup.cpp
dom/telephony/TelephonyCallGroup.h
dom/time/TimeManager.cpp
dom/time/TimeManager.h
dom/voicemail/Voicemail.cpp
dom/voicemail/Voicemail.h
dom/workers/FileReaderSync.cpp
dom/workers/FileReaderSync.h
dom/workers/Location.cpp
dom/workers/Location.h
dom/workers/MessagePort.cpp
dom/workers/MessagePort.h
dom/workers/Navigator.cpp
dom/workers/Navigator.h
dom/workers/SharedWorker.cpp
dom/workers/SharedWorker.h
dom/workers/URL.cpp
dom/workers/URL.h
dom/workers/WorkerPrivate.cpp
dom/workers/WorkerPrivate.h
dom/workers/WorkerScope.cpp
dom/workers/WorkerScope.h
dom/workers/XMLHttpRequest.cpp
dom/workers/XMLHttpRequest.h
dom/workers/XMLHttpRequestUpload.cpp
dom/workers/XMLHttpRequestUpload.h
dom/xbl/XBLChildrenElement.cpp
dom/xbl/XBLChildrenElement.h
dom/xslt/xpath/XPathEvaluator.cpp
dom/xslt/xpath/XPathEvaluator.h
js/xpconnect/src/XPCConvert.cpp
js/xpconnect/src/event_impl_gen.py
layout/generic/Selection.h
layout/generic/nsSelection.cpp
layout/style/MediaQueryList.cpp
layout/style/MediaQueryList.h
layout/style/nsCSSRules.cpp
layout/style/nsCSSRules.h
layout/style/nsCSSStyleSheet.cpp
layout/style/nsCSSStyleSheet.h
layout/style/nsDOMCSSDeclaration.cpp
layout/style/nsDOMCSSDeclaration.h
layout/style/nsDOMCSSRGBColor.cpp
layout/style/nsDOMCSSRGBColor.h
layout/style/nsDOMCSSRect.cpp
layout/style/nsDOMCSSRect.h
layout/style/nsDOMCSSValueList.cpp
layout/style/nsDOMCSSValueList.h
layout/style/nsIMediaList.h
layout/style/nsROCSSPrimitiveValue.cpp
layout/style/nsROCSSPrimitiveValue.h
layout/xul/tree/nsTreeColumns.cpp
layout/xul/tree/nsTreeColumns.h
media/webrtc/signaling/src/peerconnection/MediaStreamList.cpp
media/webrtc/signaling/src/peerconnection/MediaStreamList.h
media/webrtc/signaling/src/peerconnection/PeerConnectionImpl.cpp
media/webrtc/signaling/src/peerconnection/PeerConnectionImpl.h
security/manager/ssl/src/nsCrypto.cpp
security/manager/ssl/src/nsCrypto.h
toolkit/components/places/tests/cpp/mock_Link.h
--- a/content/base/public/Element.h
+++ b/content/base/public/Element.h
@@ -921,18 +921,17 @@ public:
     GetElementsByTagNameNS(const nsAString& aNamespaceURI,
                            const nsAString& aLocalName,
                            nsIDOMHTMLCollection** aResult);
   nsresult
     GetElementsByClassName(const nsAString& aClassNames,
                            nsIDOMHTMLCollection** aResult);
   void GetClassList(nsISupports** aClassList);
 
-  virtual JSObject* WrapObject(JSContext *aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_FINAL MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext *aCx) MOZ_FINAL MOZ_OVERRIDE;
 
   /**
    * Locate an nsIEditor rooted at this content node, if there is one.
    */
   nsIEditor* GetEditorInternal();
 
   /**
    * Helper method for NS_IMPL_BOOL_ATTR macro.
--- a/content/base/public/FragmentOrElement.h
+++ b/content/base/public/FragmentOrElement.h
@@ -48,18 +48,17 @@ public:
   {
     SetIsDOMBinding();
   }
 
   NS_DECL_CYCLE_COLLECTING_ISUPPORTS
   NS_DECL_CYCLE_COLLECTION_SKIPPABLE_SCRIPT_HOLDER_CLASS(nsChildContentList)
 
   // nsWrapperCache
-  virtual JSObject* WrapObject(JSContext *cx,
-                               JS::Handle<JSObject*> scope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext *cx) MOZ_OVERRIDE;
 
   // nsIDOMNodeList interface
   NS_DECL_NSIDOMNODELIST
 
   // nsINodeList interface
   virtual int32_t IndexOf(nsIContent* aContent) MOZ_OVERRIDE;
   virtual nsIContent* Item(uint32_t aIndex) MOZ_OVERRIDE;
 
--- a/content/base/public/nsDOMFile.h
+++ b/content/base/public/nsDOMFile.h
@@ -457,18 +457,17 @@ public:
     SetIsDOMBinding();
   }
 
   NS_DECL_CYCLE_COLLECTING_ISUPPORTS
   NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(nsDOMFileList)
 
   NS_DECL_NSIDOMFILELIST
 
-  virtual JSObject* WrapObject(JSContext *cx,
-                               JS::Handle<JSObject*> scope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext *cx) MOZ_OVERRIDE;
 
   nsISupports* GetParentObject()
   {
     return mParent;
   }
 
   void Disconnect()
   {
--- a/content/base/public/nsIDocument.h
+++ b/content/base/public/nsIDocument.h
@@ -2236,18 +2236,17 @@ public:
   void ObsoleteSheet(const nsAString& aSheetURI, mozilla::ErrorResult& rv);
 
   // ParentNode
   nsIHTMLCollection* Children();
   uint32_t ChildElementCount();
 
   virtual nsHTMLDocument* AsHTMLDocument() { return nullptr; }
 
-  virtual JSObject* WrapObject(JSContext *aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext *aCx) MOZ_OVERRIDE;
 
 private:
   uint64_t mWarnedAbout;
   SelectorCache mSelectorCache;
 
 protected:
   ~nsIDocument();
   nsPropertyTable* GetExtraPropertyTable(uint16_t aCategory);
--- a/content/base/public/nsINode.h
+++ b/content/base/public/nsINode.h
@@ -389,18 +389,17 @@ public:
    * type, such as Text, Document, Comment ...  Use this when you can instead of
    * checking the tag.
    *
    * @param aFlags what types you want to test for (see above)
    * @return whether the content matches ALL flags passed in
    */
   virtual bool IsNodeOfType(uint32_t aFlags) const = 0;
 
-  virtual JSObject* WrapObject(JSContext *aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext *aCx) MOZ_OVERRIDE;
 
 protected:
   /**
    * WrapNode is called from WrapObject to actually wrap this node, WrapObject
    * does some additional checks and fix-up that's common to all nodes. WrapNode
    * should just call the DOM binding's Wrap function.
    */
   virtual JSObject* WrapNode(JSContext *aCx)
--- a/content/base/src/Attr.cpp
+++ b/content/base/src/Attr.cpp
@@ -394,17 +394,17 @@ Attr::Initialize()
 
 void
 Attr::Shutdown()
 {
   sInitialized = false;
 }
 
 JSObject*
-Attr::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+Attr::WrapObject(JSContext* aCx)
 {
   return AttrBinding::Wrap(aCx, this);
 }
 
 Element*
 Attr::GetContentInternal() const
 {
   return mAttrMap ? mAttrMap->GetContent() : nullptr;
--- a/content/base/src/Attr.h
+++ b/content/base/src/Attr.h
@@ -75,18 +75,17 @@ public:
   static void Shutdown();
 
   NS_DECL_CYCLE_COLLECTION_SKIPPABLE_SCRIPT_HOLDER_CLASS_AMBIGUOUS(Attr,
                                                                    nsIAttribute)
 
   virtual nsIDOMNode* AsDOMNode() { return this; }
 
   // WebIDL
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   // XPCOM GetName() is OK
   // XPCOM GetValue() is OK
 
   void SetValue(const nsAString& aValue, ErrorResult& aRv);
 
   bool Specified() const;
 
--- a/content/base/src/DOMImplementation.cpp
+++ b/content/base/src/DOMImplementation.cpp
@@ -24,17 +24,17 @@ NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(
 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)
+DOMImplementation::WrapObject(JSContext* aCx)
 {
   return DOMImplementationBinding::Wrap(aCx, this);
 }
 
 bool
 DOMImplementation::HasFeature(const nsAString& aFeature,
                               const nsAString& aVersion)
 {
--- a/content/base/src/DOMImplementation.h
+++ b/content/base/src/DOMImplementation.h
@@ -48,18 +48,17 @@ public:
   NS_DECL_CYCLE_COLLECTING_ISUPPORTS
   NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(DOMImplementation)
 
   nsIDocument* GetParentObject() const
   {
     return mOwner;
   }
 
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   // nsIDOMDOMImplementation
   NS_DECL_NSIDOMDOMIMPLEMENTATION
 
   bool HasFeature(const nsAString& aFeature, const nsAString& aVersion);
 
   already_AddRefed<DocumentType>
   CreateDocumentType(const nsAString& aQualifiedName,
--- a/content/base/src/DOMParser.h
+++ b/content/base/src/DOMParser.h
@@ -68,18 +68,17 @@ public:
   void Init(nsIPrincipal* aPrincipal, nsIURI* aDocumentURI,
             nsIURI* aBaseURI, mozilla::ErrorResult& rv);
 
   nsISupports* GetParentObject() const
   {
     return mOwner;
   }
 
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE
   {
     return mozilla::dom::DOMParserBinding::Wrap(aCx, this);
   }
 
 private:
   DOMParser(nsISupports* aOwner) : mOwner(aOwner), mAttemptedInit(false)
   {
     MOZ_ASSERT(aOwner);
--- a/content/base/src/DOMPoint.cpp
+++ b/content/base/src/DOMPoint.cpp
@@ -32,12 +32,12 @@ DOMPoint::Constructor(const GlobalObject
                       double aZ, double aW, ErrorResult& aRV)
 {
   nsRefPtr<DOMPoint> obj =
     new DOMPoint(aGlobal.GetAsSupports(), aX, aY, aZ, aW);
   return obj.forget();
 }
 
 JSObject*
-DOMPoint::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+DOMPoint::WrapObject(JSContext* aCx)
 {
   return DOMPointBinding::Wrap(aCx, this);
 }
--- a/content/base/src/DOMPoint.h
+++ b/content/base/src/DOMPoint.h
@@ -58,18 +58,17 @@ public:
   static already_AddRefed<DOMPoint>
   Constructor(const GlobalObject& aGlobal, const DOMPointInit& aParams,
               ErrorResult& aRV);
   static already_AddRefed<DOMPoint>
   Constructor(const GlobalObject& aGlobal, double aX, double aY,
               double aZ, double aW, ErrorResult& aRV);
 
   nsISupports* GetParentObject() const { return mParent; }
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   void SetX(double aX) { mX = aX; }
   void SetY(double aY) { mY = aY; }
   void SetZ(double aZ) { mZ = aZ; }
   void SetW(double aW) { mW = aW; }
 };
 
 }
--- a/content/base/src/DOMQuad.cpp
+++ b/content/base/src/DOMQuad.cpp
@@ -35,17 +35,17 @@ DOMQuad::DOMQuad(nsISupports* aParent)
   SetIsDOMBinding();
 }
 
 DOMQuad::~DOMQuad()
 {
 }
 
 JSObject*
-DOMQuad::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+DOMQuad::WrapObject(JSContext* aCx)
 {
   return DOMQuadBinding::Wrap(aCx, this);
 }
 
 already_AddRefed<DOMQuad>
 DOMQuad::Constructor(const GlobalObject& aGlobal,
                      const DOMPointInit& aP1,
                      const DOMPointInit& aP2,
--- a/content/base/src/DOMQuad.h
+++ b/content/base/src/DOMQuad.h
@@ -29,18 +29,17 @@ public:
   DOMQuad(nsISupports* aParent, CSSPoint aPoints[4]);
   DOMQuad(nsISupports* aParent);
   ~DOMQuad();
 
   NS_INLINE_DECL_CYCLE_COLLECTING_NATIVE_REFCOUNTING(DOMQuad)
   NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_NATIVE_CLASS(DOMQuad)
 
   nsISupports* GetParentObject() const { return mParent; }
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   static already_AddRefed<DOMQuad>
   Constructor(const GlobalObject& aGlobal,
               const DOMPointInit& aP1,
               const DOMPointInit& aP2,
               const DOMPointInit& aP3,
               const DOMPointInit& aP4,
               ErrorResult& aRV);
--- a/content/base/src/DOMRect.cpp
+++ b/content/base/src/DOMRect.cpp
@@ -16,17 +16,17 @@ NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE_1(
 NS_IMPL_CYCLE_COLLECTING_ADDREF(DOMRectReadOnly)
 NS_IMPL_CYCLE_COLLECTING_RELEASE(DOMRectReadOnly)
 NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(DOMRectReadOnly)
   NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY
   NS_INTERFACE_MAP_ENTRY(nsISupports)
 NS_INTERFACE_MAP_END
 
 JSObject*
-DOMRectReadOnly::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+DOMRectReadOnly::WrapObject(JSContext* aCx)
 {
   MOZ_ASSERT(mParent);
   return DOMRectReadOnlyBinding::Wrap(aCx, this);
 }
 
 // -----------------------------------------------------------------------------
 
 NS_IMPL_ISUPPORTS_INHERITED1(DOMRect, DOMRectReadOnly, nsIDOMClientRect)
@@ -42,17 +42,17 @@ NS_IMPL_ISUPPORTS_INHERITED1(DOMRect, DO
 FORWARD_GETTER(Left)
 FORWARD_GETTER(Top)
 FORWARD_GETTER(Right)
 FORWARD_GETTER(Bottom)
 FORWARD_GETTER(Width)
 FORWARD_GETTER(Height)
 
 JSObject*
-DOMRect::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+DOMRect::WrapObject(JSContext* aCx)
 {
   MOZ_ASSERT(mParent);
   return DOMRectBinding::Wrap(aCx, this);
 }
 
 already_AddRefed<DOMRect>
 DOMRect::Constructor(const GlobalObject& aGlobal, ErrorResult& aRV)
 {
@@ -94,17 +94,17 @@ DOMRectList::GetLength(uint32_t* aLength
 NS_IMETHODIMP    
 DOMRectList::Item(uint32_t aIndex, nsIDOMClientRect** aReturn)
 {
   NS_IF_ADDREF(*aReturn = Item(aIndex));
   return NS_OK;
 }
 
 JSObject*
-DOMRectList::WrapObject(JSContext *cx, JS::Handle<JSObject*> scope)
+DOMRectList::WrapObject(JSContext *cx)
 {
   return mozilla::dom::DOMRectListBinding::Wrap(cx, this);
 }
 
 static double
 RoundFloat(double aValue)
 {
   return floor(aValue + 0.5);
--- a/content/base/src/DOMRect.h
+++ b/content/base/src/DOMRect.h
@@ -38,18 +38,17 @@ public:
     SetIsDOMBinding();
   }
 
   nsISupports* GetParentObject() const
   {
     MOZ_ASSERT(mParent);
     return mParent;
   }
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   virtual double X() const = 0;
   virtual double Y() const = 0;
   virtual double Width() const = 0;
   virtual double Height() const = 0;
 
   double Left() const
   {
@@ -94,18 +93,17 @@ public:
   NS_DECL_NSIDOMCLIENTRECT
 
   static already_AddRefed<DOMRect>
   Constructor(const GlobalObject& aGlobal, ErrorResult& aRV);
   static already_AddRefed<DOMRect>
   Constructor(const GlobalObject& aGlobal, double aX, double aY,
               double aWidth, double aHeight, ErrorResult& aRV);
 
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   void SetRect(float aX, float aY, float aWidth, float aHeight) {
     mX = aX; mY = aY; mWidth = aWidth; mHeight = aHeight;
   }
   void SetLayoutRect(const nsRect& aLayoutRect);
 
   virtual double X() const MOZ_OVERRIDE
   {
@@ -154,18 +152,17 @@ public:
     SetIsDOMBinding();
   }
 
   NS_DECL_CYCLE_COLLECTING_ISUPPORTS
   NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(DOMRectList)
 
   NS_DECL_NSIDOMCLIENTRECTLIST
   
-  virtual JSObject* WrapObject(JSContext *cx,
-                               JS::Handle<JSObject*> scope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext *cx) MOZ_OVERRIDE;
 
   nsISupports* GetParentObject()
   {
     return mParent;
   }
 
   void Append(DOMRect* aElement) { mArray.AppendElement(aElement); }
 
--- a/content/base/src/DOMStringList.cpp
+++ b/content/base/src/DOMStringList.cpp
@@ -19,15 +19,15 @@ NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(
   NS_INTERFACE_MAP_ENTRY(nsISupports)
 NS_INTERFACE_MAP_END
 
 DOMStringList::~DOMStringList()
 {
 }
 
 JSObject*
-DOMStringList::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+DOMStringList::WrapObject(JSContext* aCx)
 {
   return DOMStringListBinding::Wrap(aCx, this);
 }
 
 } // namespace dom
 } // namespace mozilla
--- a/content/base/src/DOMStringList.h
+++ b/content/base/src/DOMStringList.h
@@ -22,17 +22,17 @@ public:
   {
     SetIsDOMBinding();
   }
   virtual ~DOMStringList();
 
   NS_DECL_CYCLE_COLLECTING_ISUPPORTS
   NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(DOMStringList)
 
-  virtual JSObject* WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope);
+  virtual JSObject* WrapObject(JSContext* aCx);
   nsISupports* GetParentObject()
   {
     return nullptr;
   }
 
   void IndexedGetter(uint32_t aIndex, bool& aFound, nsAString& aResult)
   {
     EnsureFresh();
--- a/content/base/src/Element.cpp
+++ b/content/base/src/Element.cpp
@@ -345,19 +345,19 @@ Element::GetBindingURL(nsIDocument *aDoc
   NS_ENSURE_TRUE(sc, false);
 
   *aResult = sc->StyleDisplay()->mBinding;
 
   return true;
 }
 
 JSObject*
-Element::WrapObject(JSContext *aCx, JS::Handle<JSObject*> aScope)
+Element::WrapObject(JSContext *aCx)
 {
-  JS::Rooted<JSObject*> obj(aCx, nsINode::WrapObject(aCx, aScope));
+  JS::Rooted<JSObject*> obj(aCx, nsINode::WrapObject(aCx));
   if (!obj) {
     return nullptr;
   }
 
   // Custom element prototype swizzling.
   CustomElementData* data = GetCustomElementData();
   if (obj && data) {
     // If this is a registered custom element then fix the prototype.
--- a/content/base/src/EventSource.cpp
+++ b/content/base/src/EventSource.cpp
@@ -266,17 +266,17 @@ EventSource::Init(nsISupports* aOwner,
   // url parameter, so we don't care about the InitChannelAndRequestEventSource
   // result.
   InitChannelAndRequestEventSource();
 
   return NS_OK;
 }
 
 /* virtual */ JSObject*
-EventSource::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+EventSource::WrapObject(JSContext* aCx)
 {
   return EventSourceBinding::Wrap(aCx, this);
 }
 
 /* static */ already_AddRefed<EventSource>
 EventSource::Constructor(const GlobalObject& aGlobal,
                          const nsAString& aURL,
                          const EventSourceInit& aEventSourceInitDict,
--- a/content/base/src/EventSource.h
+++ b/content/base/src/EventSource.h
@@ -54,18 +54,17 @@ public:
 
   NS_DECL_NSIOBSERVER
   NS_DECL_NSISTREAMLISTENER
   NS_DECL_NSIREQUESTOBSERVER
   NS_DECL_NSICHANNELEVENTSINK
   NS_DECL_NSIINTERFACEREQUESTOR
 
   // nsWrapperCache
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   // WebIDL
   nsPIDOMWindow*
   GetParentObject() const
   {
     return GetOwner();
   }
   static already_AddRefed<EventSource>
--- a/content/base/src/FragmentOrElement.cpp
+++ b/content/base/src/FragmentOrElement.cpp
@@ -375,17 +375,17 @@ NS_IMPL_CYCLE_COLLECTION_CAN_SKIP_THIS_E
 
 NS_INTERFACE_TABLE_HEAD(nsChildContentList)
   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)
+nsChildContentList::WrapObject(JSContext *cx)
 {
   return NodeListBinding::Wrap(cx, this);
 }
 
 NS_IMETHODIMP
 nsChildContentList::GetLength(uint32_t* aLength)
 {
   *aLength = mNode ? mNode->GetChildCount() : 0;
--- a/content/base/src/NodeIterator.cpp
+++ b/content/base/src/NodeIterator.cpp
@@ -284,15 +284,15 @@ void NodeIterator::ContentRemoved(nsIDoc
 {
     nsINode *container = NODE_FROM(aContainer, aDocument);
 
     mPointer.AdjustAfterRemoval(mRoot, container, aChild, aPreviousSibling);
     mWorkingPointer.AdjustAfterRemoval(mRoot, container, aChild, aPreviousSibling);
 }
 
 JSObject*
-NodeIterator::WrapObject(JSContext *cx, JS::Handle<JSObject*> scope)
+NodeIterator::WrapObject(JSContext *cx)
 {
     return NodeIteratorBinding::Wrap(cx, this);
 }
 
 } // namespace dom
 } // namespace mozilla
--- a/content/base/src/NodeIterator.h
+++ b/content/base/src/NodeIterator.h
@@ -65,17 +65,17 @@ public:
         return NextOrPrevNode(&NodePointer::MoveToNext, aResult);
     }
     already_AddRefed<nsINode> PreviousNode(ErrorResult& aResult)
     {
         return NextOrPrevNode(&NodePointer::MoveToPrevious, aResult);
     }
     // The XPCOM Detach() is fine for our purposes
 
-    JSObject* WrapObject(JSContext *cx, JS::Handle<JSObject*> scope);
+    JSObject* WrapObject(JSContext *cx);
 
 private:
     struct NodePointer {
         NodePointer() : mNode(nullptr) {}
         NodePointer(nsINode *aNode, bool aBeforeNode);
 
         typedef bool (NodePointer::*MoveToMethodType)(nsINode*);
         bool MoveToNext(nsINode *aRoot);
--- a/content/base/src/ShadowRoot.cpp
+++ b/content/base/src/ShadowRoot.cpp
@@ -92,17 +92,17 @@ ShadowRoot::~ShadowRoot()
     mPoolHost->RemoveMutationObserver(this);
   }
 
   ClearInDocument();
   SetHost(nullptr);
 }
 
 JSObject*
-ShadowRoot::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+ShadowRoot::WrapObject(JSContext* aCx)
 {
   return mozilla::dom::ShadowRootBinding::Wrap(aCx, this);
 }
 
 ShadowRoot*
 ShadowRoot::FromNode(nsINode* aNode)
 {
   if (aNode->HasFlag(NODE_IS_IN_SHADOW_TREE) && !aNode->GetParentNode()) {
--- a/content/base/src/ShadowRoot.h
+++ b/content/base/src/ShadowRoot.h
@@ -100,17 +100,17 @@ public:
 
   void SetAssociatedBinding(nsXBLBinding* aBinding) { mAssociatedBinding = aBinding; }
 
   nsISupports* GetParentObject() const { return mPoolHost; }
 
   nsIContent* GetPoolHost() { return mPoolHost; }
   nsTArray<HTMLShadowElement*>& ShadowDescendants() { return mShadowDescendants; }
 
-  JSObject* WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   static bool IsPooledNode(nsIContent* aChild, nsIContent* aContainer,
                            nsIContent* aHost);
   static ShadowRoot* FromNode(nsINode* aNode);
   static bool IsShadowInsertionPoint(nsIContent* aContent);
 
   // WebIDL methods.
   Element* GetElementById(const nsAString& aElementId);
--- a/content/base/src/TreeWalker.cpp
+++ b/content/base/src/TreeWalker.cpp
@@ -446,15 +446,15 @@ TreeWalker::NextSiblingInternal(bool aRe
         }
         if (filtered == nsIDOMNodeFilter::FILTER_ACCEPT) {
             return nullptr;
         }
     }
 }
 
 JSObject*
-TreeWalker::WrapObject(JSContext *cx, JS::Handle<JSObject*> scope)
+TreeWalker::WrapObject(JSContext *cx)
 {
     return TreeWalkerBinding::Wrap(cx, this);
 }
 
 } // namespace dom
 } // namespace mozilla
--- a/content/base/src/TreeWalker.h
+++ b/content/base/src/TreeWalker.h
@@ -59,17 +59,17 @@ public:
     already_AddRefed<nsINode> ParentNode(ErrorResult& aResult);
     already_AddRefed<nsINode> FirstChild(ErrorResult& aResult);
     already_AddRefed<nsINode> LastChild(ErrorResult& aResult);
     already_AddRefed<nsINode> PreviousSibling(ErrorResult& aResult);
     already_AddRefed<nsINode> NextSibling(ErrorResult& aResult);
     already_AddRefed<nsINode> PreviousNode(ErrorResult& aResult);
     already_AddRefed<nsINode> NextNode(ErrorResult& aResult);
 
-    JSObject* WrapObject(JSContext *cx, JS::Handle<JSObject*> scope);
+    JSObject* WrapObject(JSContext *cx);
 
 private:
     nsCOMPtr<nsINode> mCurrentNode;
 
     /*
      * Implements FirstChild and LastChild which only vary in which direction
      * they search.
      * @param aReversed Controls whether we search forwards or backwards
--- a/content/base/src/WebSocket.cpp
+++ b/content/base/src/WebSocket.cpp
@@ -466,17 +466,17 @@ WebSocket::~WebSocket()
 
   // If we threw during Init we never called disconnect
   if (!mDisconnected) {
     Disconnect();
   }
 }
 
 JSObject*
-WebSocket::WrapObject(JSContext* cx, JS::Handle<JSObject*> scope)
+WebSocket::WrapObject(JSContext* cx)
 {
   return WebSocketBinding::Wrap(cx, this);
 }
 
 //---------------------------------------------------------------------------
 // WebIDL
 //---------------------------------------------------------------------------
 
--- a/content/base/src/WebSocket.h
+++ b/content/base/src/WebSocket.h
@@ -63,18 +63,17 @@ public:
   virtual void EventListenerAdded(nsIAtom* aType) MOZ_OVERRIDE;
   virtual void EventListenerRemoved(nsIAtom* aType) MOZ_OVERRIDE;
 
   virtual void DisconnectFromOwner() MOZ_OVERRIDE;
 
   // nsWrapperCache
   nsPIDOMWindow* GetParentObject() { return GetOwner(); }
 
-  virtual JSObject* WrapObject(JSContext *cx,
-                               JS::Handle<JSObject*> scope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext *cx) MOZ_OVERRIDE;
 
 public: // static helpers:
 
   // Determine if preferences allow WebSocket
   static bool PrefEnabled(JSContext* aCx = nullptr, JSObject* aGlobal = nullptr);
 
 public: // WebIDL interface:
 
--- a/content/base/src/nsContentList.cpp
+++ b/content/base/src/nsContentList.cpp
@@ -140,17 +140,17 @@ NS_IMPL_CYCLE_COLLECTION_INHERITED_1(nsS
 NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION_INHERITED(nsSimpleContentList)
 NS_INTERFACE_MAP_END_INHERITING(nsBaseContentList)
 
 
 NS_IMPL_ADDREF_INHERITED(nsSimpleContentList, nsBaseContentList)
 NS_IMPL_RELEASE_INHERITED(nsSimpleContentList, nsBaseContentList)
 
 JSObject*
-nsSimpleContentList::WrapObject(JSContext *cx, JS::Handle<JSObject*> scope)
+nsSimpleContentList::WrapObject(JSContext *cx)
 {
   return NodeListBinding::Wrap(cx, this);
 }
 
 // Hashtable for storing nsContentLists
 static PLDHashTable gContentListHashTable;
 
 #define RECENTLY_USED_CONTENT_LIST_CACHE_SIZE 31
@@ -263,24 +263,24 @@ NS_GetContentList(nsINode* aRootNode,
 #ifdef DEBUG
 const nsCacheableFuncStringContentList::ContentListType
   nsCacheableFuncStringNodeList::sType = nsCacheableFuncStringContentList::eNodeList;
 const nsCacheableFuncStringContentList::ContentListType
   nsCacheableFuncStringHTMLCollection::sType = nsCacheableFuncStringContentList::eHTMLCollection;
 #endif
 
 JSObject*
-nsCacheableFuncStringNodeList::WrapObject(JSContext *cx, JS::Handle<JSObject*> scope)
+nsCacheableFuncStringNodeList::WrapObject(JSContext *cx)
 {
   return NodeListBinding::Wrap(cx, this);
 }
 
 
 JSObject*
-nsCacheableFuncStringHTMLCollection::WrapObject(JSContext *cx, JS::Handle<JSObject*> scope)
+nsCacheableFuncStringHTMLCollection::WrapObject(JSContext *cx)
 {
   return HTMLCollectionBinding::Wrap(cx, this);
 }
 
 // Hashtable for storing nsCacheableFuncStringContentList
 static PLDHashTable gFuncStringContentListHashTable;
 
 struct FuncStringContentListHashEntry : public PLDHashEntryHdr
@@ -482,17 +482,17 @@ nsContentList::~nsContentList()
 
   if (mDestroyFunc) {
     // Clean up mData
     (*mDestroyFunc)(mData);
   }
 }
 
 JSObject*
-nsContentList::WrapObject(JSContext *cx, JS::Handle<JSObject*> scope)
+nsContentList::WrapObject(JSContext *cx)
 {
   return HTMLCollectionBinding::Wrap(cx, this);
 }
 
 NS_IMPL_ISUPPORTS_INHERITED3(nsContentList, nsBaseContentList,
                              nsIHTMLCollection, nsIDOMHTMLCollection,
                              nsIMutationObserver)
 
--- a/content/base/src/nsContentList.h
+++ b/content/base/src/nsContentList.h
@@ -87,17 +87,17 @@ public:
   }
 
   void Reset() {
     mElements.Clear();
   }
 
   virtual int32_t IndexOf(nsIContent *aContent, bool aDoFlush);
 
-  virtual JSObject* WrapObject(JSContext *cx, JS::Handle<JSObject*> scope)
+  virtual JSObject* WrapObject(JSContext *cx)
     MOZ_OVERRIDE = 0;
 
   void SetCapacity(uint32_t aCapacity)
   {
     mElements.SetCapacity(aCapacity);
   }
 protected:
   /**
@@ -123,18 +123,17 @@ public:
   NS_DECL_ISUPPORTS_INHERITED
   NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(nsSimpleContentList,
                                            nsBaseContentList)
 
   virtual nsINode* GetParentObject() MOZ_OVERRIDE
   {
     return mRoot;
   }
-  virtual JSObject* WrapObject(JSContext *cx,
-                               JS::Handle<JSObject*> scope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext *cx) MOZ_OVERRIDE;
 
 private:
   // This has to be a strong reference, the root might go away before the list.
   nsCOMPtr<nsINode> mRoot;
 };
 
 /**
  * Class that's used as the key to hash nsContentList implementations
@@ -248,18 +247,17 @@ public:
                 bool aDeep = true,
                 nsIAtom* aMatchAtom = nullptr,
                 int32_t aMatchNameSpaceId = kNameSpaceID_None,
                 bool aFuncMayDependOnAttr = true);
   virtual ~nsContentList();
 
   // nsWrapperCache
   using nsWrapperCache::GetWrapperPreserveColor;
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 protected:
   virtual JSObject* GetWrapperPreserveColorInternal() MOZ_OVERRIDE
   {
     return nsWrapperCache::GetWrapperPreserveColor();
   }
 public:
 
   // nsIDOMHTMLCollection
@@ -531,18 +529,17 @@ public:
     : nsCacheableFuncStringContentList(aRootNode, aFunc, aDestroyFunc,
                                        aDataAllocator, aString)
   {
 #ifdef DEBUG
     mType = eNodeList;
 #endif
   }
 
-  virtual JSObject* WrapObject(JSContext *cx,
-                               JS::Handle<JSObject*> scope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext *cx) MOZ_OVERRIDE;
 
 #ifdef DEBUG
   static const ContentListType sType;
 #endif
 };
 
 class nsCacheableFuncStringHTMLCollection
   : public nsCacheableFuncStringContentList
@@ -556,17 +553,16 @@ public:
     : nsCacheableFuncStringContentList(aRootNode, aFunc, aDestroyFunc,
                                        aDataAllocator, aString)
   {
 #ifdef DEBUG
     mType = eHTMLCollection;
 #endif
   }
 
-  virtual JSObject* WrapObject(JSContext *cx,
-                               JS::Handle<JSObject*> scope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext *cx) MOZ_OVERRIDE;
 
 #ifdef DEBUG
   static const ContentListType sType;
 #endif
 };
 
 #endif // nsContentList_h___
--- a/content/base/src/nsDOMAttributeMap.cpp
+++ b/content/base/src/nsDOMAttributeMap.cpp
@@ -548,12 +548,12 @@ nsDOMAttributeMap::SizeOfIncludingThis(M
   n += mAttributeCache.SizeOfExcludingThis(AttrCacheSizeEnumerator,
                                            aMallocSizeOf);
 
   // NB: mContent is non-owning and thus not counted.
   return n;
 }
 
 /* virtual */ JSObject*
-nsDOMAttributeMap::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+nsDOMAttributeMap::WrapObject(JSContext* aCx)
 {
   return MozNamedAttrMapBinding::Wrap(aCx, this);
 }
--- a/content/base/src/nsDOMAttributeMap.h
+++ b/content/base/src/nsDOMAttributeMap.h
@@ -136,18 +136,17 @@ public:
    * @return The number of attribute nodes that aFunc was called for.
    */
   uint32_t Enumerate(AttrCache::EnumReadFunction aFunc, void *aUserArg) const;
 
   Element* GetParentObject() const
   {
     return mContent;
   }
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   // WebIDL
   Attr* GetNamedItem(const nsAString& aAttrName);
   Attr* NamedGetter(const nsAString& aAttrName, bool& aFound);
   already_AddRefed<Attr>
   SetNamedItem(Attr& aAttr, ErrorResult& aError)
   {
     return SetNamedItemInternal(aAttr, false, aError);
--- a/content/base/src/nsDOMCaretPosition.cpp
+++ b/content/base/src/nsDOMCaretPosition.cpp
@@ -52,17 +52,17 @@ nsDOMCaretPosition::GetClientRect() cons
   NS_ASSERTION(domRange, "unable to retrieve valid dom range from CaretPosition");
 
   rect = domRange->GetBoundingClientRect();
 
   return rect.forget();
 }
 
 JSObject*
-nsDOMCaretPosition::WrapObject(JSContext *aCx, JS::Handle<JSObject*> aScope)
+nsDOMCaretPosition::WrapObject(JSContext *aCx)
 {
   return mozilla::dom::CaretPositionBinding::Wrap(aCx, this);
 }
 
 NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE_2(nsDOMCaretPosition,
                                         mOffsetNode, mAnonymousContentNode)
 
 NS_IMPL_CYCLE_COLLECTING_ADDREF(nsDOMCaretPosition)
--- a/content/base/src/nsDOMCaretPosition.h
+++ b/content/base/src/nsDOMCaretPosition.h
@@ -80,17 +80,17 @@ public:
     mAnonymousContentNode = aNode;
   }
 
   nsISupports* GetParentObject() const
   {
     return GetOffsetNode();
   }
 
-  virtual JSObject* WrapObject(JSContext *aCx, JS::Handle<JSObject*> aScope)
+  virtual JSObject* WrapObject(JSContext *aCx)
     MOZ_OVERRIDE MOZ_FINAL;
 
 protected:
   virtual ~nsDOMCaretPosition();
 
   uint32_t mOffset;
   nsCOMPtr<nsINode> mOffsetNode;
   nsCOMPtr<nsINode> mAnonymousContentNode;
--- a/content/base/src/nsDOMDataChannel.cpp
+++ b/content/base/src/nsDOMDataChannel.cpp
@@ -53,17 +53,17 @@ nsDOMDataChannel::~nsDOMDataChannel()
   // one) once we block GC until all the (appropriate) onXxxx handlers
   // are dropped. (See WebRTC spec)
   LOG(("Close()ing %p", mDataChannel.get()));
   mDataChannel->SetListener(nullptr, nullptr);
   mDataChannel->Close();
 }
 
 /* virtual */ JSObject*
-nsDOMDataChannel::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+nsDOMDataChannel::WrapObject(JSContext* aCx)
 {
   return DataChannelBinding::Wrap(aCx, this);
 }
 
 NS_IMPL_CYCLE_COLLECTION_CLASS(nsDOMDataChannel)
 
 NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN_INHERITED(nsDOMDataChannel,
                                                   DOMEventTargetHelper)
--- a/content/base/src/nsDOMDataChannel.h
+++ b/content/base/src/nsDOMDataChannel.h
@@ -34,17 +34,17 @@ public:
   NS_DECL_ISUPPORTS_INHERITED
   NS_DECL_NSIDOMDATACHANNEL
 
   NS_REALLY_FORWARD_NSIDOMEVENTTARGET(mozilla::DOMEventTargetHelper)
 
   NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(nsDOMDataChannel,
                                            mozilla::DOMEventTargetHelper)
 
-  virtual JSObject* WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+  virtual JSObject* WrapObject(JSContext* aCx)
     MOZ_OVERRIDE;
   nsPIDOMWindow* GetParentObject() const
   {
     return GetOwner();
   }
 
   // WebIDL
   // Uses XPIDL GetLabel.
--- a/content/base/src/nsDOMFile.cpp
+++ b/content/base/src/nsDOMFile.cpp
@@ -736,17 +736,17 @@ NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(
   NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIDOMFileList)
   NS_INTERFACE_MAP_ENTRY(nsIDOMFileList)
 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)
+nsDOMFileList::WrapObject(JSContext *cx)
 {
   return FileListBinding::Wrap(cx, this);
 }
 
 NS_IMETHODIMP
 nsDOMFileList::GetLength(uint32_t* aLength)
 {
   *aLength = Length();
--- a/content/base/src/nsDOMFileReader.cpp
+++ b/content/base/src/nsDOMFileReader.cpp
@@ -547,12 +547,12 @@ nsDOMFileReader::GetAsDataURL(nsIDOMBlob
   if (!AppendASCIItoUTF16(encodedData, aResult, fallible_t())) {
     return NS_ERROR_OUT_OF_MEMORY;
   }
 
   return NS_OK;
 }
 
 /* virtual */ JSObject*
-nsDOMFileReader::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+nsDOMFileReader::WrapObject(JSContext* aCx)
 {
   return FileReaderBinding::Wrap(aCx, this);
 }
--- a/content/base/src/nsDOMFileReader.h
+++ b/content/base/src/nsDOMFileReader.h
@@ -56,18 +56,17 @@ public:
   NS_IMETHOD DoOnDataAvailable(nsIRequest* aRequest, nsISupports* aContext,
                                nsIInputStream* aInputStream, uint64_t aOffset,
                                uint32_t aCount) MOZ_OVERRIDE;
 
   nsPIDOMWindow* GetParentObject() const
   {
     return GetOwner();
   }
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   // WebIDL
   static already_AddRefed<nsDOMFileReader>
   Constructor(const GlobalObject& aGlobal, ErrorResult& aRv);
   void ReadAsArrayBuffer(JSContext* aCx, nsIDOMBlob* aBlob, ErrorResult& aRv)
   {
     MOZ_ASSERT(aBlob);
     ReadFileContent(aCx, aBlob, EmptyString(), FILE_AS_ARRAYBUFFER, aRv);
--- a/content/base/src/nsDOMMutationObserver.h
+++ b/content/base/src/nsDOMMutationObserver.h
@@ -41,18 +41,17 @@ public:
   }
   virtual ~nsDOMMutationRecord() {}
 
   nsISupports* GetParentObject() const
   {
     return mOwner;
   }
 
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE
   {
     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
@@ -355,18 +354,17 @@ public:
   NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(nsDOMMutationObserver)
   NS_DECLARE_STATIC_IID_ACCESSOR(NS_DOM_MUTATION_OBSERVER_IID)
 
   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
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE
   {
     return mozilla::dom::MutationObserverBinding::Wrap(aCx, this);
   }
 
   nsISupports* GetParentObject() const
   {
     return mOwner;
   }
--- a/content/base/src/nsDOMSerializer.h
+++ b/content/base/src/nsDOMSerializer.h
@@ -44,18 +44,17 @@ public:
   SerializeToStream(nsINode& aRoot, nsIOutputStream* aStream,
                     const nsAString& aCharset, mozilla::ErrorResult& rv);
 
   nsISupports* GetParentObject() const
   {
     return mOwner;
   }
 
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE
   {
     return mozilla::dom::XMLSerializerBinding::Wrap(aCx, this);
   }
 
 private:
   nsDOMSerializer(nsISupports* aOwner) : mOwner(aOwner)
   {
     MOZ_ASSERT(aOwner);
--- a/content/base/src/nsDOMSettableTokenList.cpp
+++ b/content/base/src/nsDOMSettableTokenList.cpp
@@ -16,12 +16,12 @@ nsDOMSettableTokenList::SetValue(const n
   if (!mElement) {
     return;
   }
 
   rv = mElement->SetAttr(kNameSpaceID_None, mAttrAtom, aValue, true);
 }
 
 JSObject*
-nsDOMSettableTokenList::WrapObject(JSContext *cx, JS::Handle<JSObject*> scope)
+nsDOMSettableTokenList::WrapObject(JSContext *cx)
 {
   return mozilla::dom::DOMSettableTokenListBinding::Wrap(cx, this);
 }
--- a/content/base/src/nsDOMSettableTokenList.h
+++ b/content/base/src/nsDOMSettableTokenList.h
@@ -17,18 +17,17 @@ class nsIAtom;
 // because nsDOMSettableTokenList is traversed by Element.
 class nsDOMSettableTokenList MOZ_FINAL : public nsDOMTokenList
 {
 public:
 
   nsDOMSettableTokenList(mozilla::dom::Element* aElement, nsIAtom* aAttrAtom)
     : nsDOMTokenList(aElement, aAttrAtom) {}
 
-  virtual JSObject* WrapObject(JSContext *cx,
-                               JS::Handle<JSObject*> scope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext *cx) MOZ_OVERRIDE;
 
   // WebIDL
   void GetValue(nsAString& aResult) { Stringify(aResult); }
   void SetValue(const nsAString& aValue, mozilla::ErrorResult& rv);
 };
 
 #endif // nsDOMSettableTokenList_h___
 
--- a/content/base/src/nsDOMTokenList.cpp
+++ b/content/base/src/nsDOMTokenList.cpp
@@ -304,13 +304,13 @@ nsDOMTokenList::Stringify(nsAString& aRe
     aResult.Truncate();
     return;
   }
 
   mElement->GetAttr(kNameSpaceID_None, mAttrAtom, aResult);
 }
 
 JSObject*
-nsDOMTokenList::WrapObject(JSContext *cx, JS::Handle<JSObject*> scope)
+nsDOMTokenList::WrapObject(JSContext *cx)
 {
   return DOMTokenListBinding::Wrap(cx, this);
 }
 
--- a/content/base/src/nsDOMTokenList.h
+++ b/content/base/src/nsDOMTokenList.h
@@ -32,18 +32,17 @@ protected:
   typedef mozilla::dom::Element Element;
 
 public:
   NS_DECL_CYCLE_COLLECTING_ISUPPORTS
   NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(nsDOMTokenList)
 
   nsDOMTokenList(Element* aElement, nsIAtom* aAttrAtom);
 
-  virtual JSObject* WrapObject(JSContext *cx,
-                               JS::Handle<JSObject*> scope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext *cx) MOZ_OVERRIDE;
 
   Element* GetParentObject()
   {
     return mElement;
   }
 
   uint32_t Length();
   void Item(uint32_t aIndex, nsAString& aResult)
--- a/content/base/src/nsDocument.cpp
+++ b/content/base/src/nsDocument.cpp
@@ -12124,21 +12124,21 @@ nsDocument::Evaluate(const nsAString& aE
 {
   return XPathEvaluator()->Evaluate(aExpression, aContextNode, aResolver, aType,
                                     aInResult, aResult);
 }
 
 // This is just a hack around the fact that window.document is not
 // [Unforgeable] yet.
 JSObject*
-nsIDocument::WrapObject(JSContext *aCx, JS::Handle<JSObject*> aScope)
+nsIDocument::WrapObject(JSContext *aCx)
 {
   MOZ_ASSERT(IsDOMBinding());
 
-  JS::Rooted<JSObject*> obj(aCx, nsINode::WrapObject(aCx, aScope));
+  JS::Rooted<JSObject*> obj(aCx, nsINode::WrapObject(aCx));
   if (!obj) {
     return nullptr;
   }
 
   nsCOMPtr<nsPIDOMWindow> win = do_QueryInterface(GetInnerWindow());
   if (!win) {
     // No window, nothing else to do here
     return obj;
--- a/content/base/src/nsFormData.cpp
+++ b/content/base/src/nsFormData.cpp
@@ -96,17 +96,17 @@ nsFormData::Append(const nsAString& aNam
   nsString valAsString;
   valAsString.Adopt(stringData, stringLen);
 
   Append(aName, valAsString);
   return NS_OK;
 }
 
 /* virtual */ JSObject*
-nsFormData::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+nsFormData::WrapObject(JSContext* aCx)
 {
   return FormDataBinding::Wrap(aCx, this);
 }
 
 /* static */ already_AddRefed<nsFormData>
 nsFormData::Constructor(const GlobalObject& aGlobal,
                         const Optional<NonNull<HTMLFormElement> >& aFormElement,
                         ErrorResult& aRv)
--- a/content/base/src/nsFormData.h
+++ b/content/base/src/nsFormData.h
@@ -37,18 +37,17 @@ public:
   NS_DECL_CYCLE_COLLECTING_ISUPPORTS
   NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS_AMBIGUOUS(nsFormData,
                                                          nsIDOMFormData)
 
   NS_DECL_NSIDOMFORMDATA
   NS_DECL_NSIXHRSENDABLE
 
   // nsWrapperCache
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   // WebIDL
   nsISupports*
   GetParentObject() const
   {
     return mOwner;
   }
   static already_AddRefed<nsFormData>
--- a/content/base/src/nsINode.cpp
+++ b/content/base/src/nsINode.cpp
@@ -2622,17 +2622,17 @@ nsINode::GetElementById(const nsAString&
     if (id && id->Equals(aId)) {
       return kid->AsElement();
     }
   }
   return nullptr;
 }
 
 JSObject*
-nsINode::WrapObject(JSContext *aCx, JS::Handle<JSObject*> aScope)
+nsINode::WrapObject(JSContext *aCx)
 {
   MOZ_ASSERT(IsDOMBinding());
 
   // Make sure one of these is true
   // (1) our owner document has a script handling object,
   // (2) Our owner document has had a script handling object, or has been marked
   //     to have had one,
   // (3) we are running a privileged script.
@@ -2643,17 +2643,16 @@ nsINode::WrapObject(JSContext *aCx, JS::
   bool hasHadScriptHandlingObject = false;
   if (!OwnerDoc()->GetScriptHandlingObject(hasHadScriptHandlingObject) &&
       !hasHadScriptHandlingObject &&
       !nsContentUtils::IsCallerChrome()) {
     Throw(aCx, NS_ERROR_UNEXPECTED);
     return nullptr;
   }
 
-  MOZ_ASSERT(js::IsObjectInContextCompartment(aScope, aCx));
   JS::Rooted<JSObject*> obj(aCx, WrapNode(aCx));
   MOZ_ASSERT_IF(ChromeOnlyAccess(),
                 xpc::IsInXBLScope(obj) || !xpc::UseXBLScope(js::GetObjectCompartment(obj)));
   return obj;
 }
 
 already_AddRefed<nsINode>
 nsINode::CloneNode(bool aDeep, ErrorResult& aError)
--- a/content/base/src/nsRange.cpp
+++ b/content/base/src/nsRange.cpp
@@ -34,17 +34,17 @@
 #include "mozilla/Telemetry.h"
 #include "mozilla/Likely.h"
 #include "nsCSSFrameConstructor.h"
 
 using namespace mozilla;
 using namespace mozilla::dom;
 
 JSObject*
-nsRange::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+nsRange::WrapObject(JSContext* aCx)
 {
   return RangeBinding::Wrap(aCx, this);
 }
 
 /******************************************************
  * stack based utilty class for managing monitor
  ******************************************************/
 
--- a/content/base/src/nsRange.h
+++ b/content/base/src/nsRange.h
@@ -214,18 +214,17 @@ public:
   void SetStart(nsINode& aNode, uint32_t aOffset, ErrorResult& aErr);
   void SetStartAfter(nsINode& aNode, ErrorResult& aErr);
   void SetStartBefore(nsINode& aNode, ErrorResult& aErr);
   void SurroundContents(nsINode& aNode, ErrorResult& aErr);
   already_AddRefed<DOMRect> GetBoundingClientRect();
   already_AddRefed<DOMRectList> GetClientRects();
 
   nsINode* GetParentObject() const { return mOwner; }
-  virtual JSObject* WrapObject(JSContext* cx,
-                               JS::Handle<JSObject*> scope) MOZ_OVERRIDE MOZ_FINAL;
+  virtual JSObject* WrapObject(JSContext* cx) MOZ_OVERRIDE MOZ_FINAL;
 
 private:
   // no copy's or assigns
   nsRange(const nsRange&);
   nsRange& operator=(const nsRange&);
 
   /**
    * Cut or delete the range's contents.
--- a/content/base/src/nsXMLHttpRequest.cpp
+++ b/content/base/src/nsXMLHttpRequest.cpp
@@ -259,17 +259,17 @@ nsXHREventTarget::DisconnectFromOwner()
 NS_INTERFACE_MAP_BEGIN(nsXMLHttpRequestUpload)
   NS_INTERFACE_MAP_ENTRY(nsIXMLHttpRequestUpload)
 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)
+nsXMLHttpRequestUpload::WrapObject(JSContext* aCx)
 {
   return XMLHttpRequestUploadBinding::Wrap(aCx, this);
 }
 
 /////////////////////////////////////////////
 //
 //
 /////////////////////////////////////////////
--- a/content/base/src/nsXMLHttpRequest.h
+++ b/content/base/src/nsXMLHttpRequest.h
@@ -142,18 +142,17 @@ public:
   {
   }
 
   NS_DECL_ISUPPORTS_INHERITED
   NS_FORWARD_NSIXMLHTTPREQUESTEVENTTARGET(nsXHREventTarget::)
   NS_REALLY_FORWARD_NSIDOMEVENTTARGET(nsXHREventTarget)
   NS_DECL_NSIXMLHTTPREQUESTUPLOAD
 
-  virtual JSObject* WrapObject(JSContext *cx,
-                               JS::Handle<JSObject*> scope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext *cx) MOZ_OVERRIDE;
   nsISupports* GetParentObject()
   {
     return GetOwner();
   }
 
   bool HasListeners()
   {
     return mListenerManager && mListenerManager->HasListeners();
@@ -177,18 +176,17 @@ class nsXMLHttpRequest : public nsXHREve
 {
   friend class nsXHRParseEndListener;
   friend class nsXMLHttpRequestXPCOMifier;
 
 public:
   nsXMLHttpRequest();
   virtual ~nsXMLHttpRequest();
 
-  virtual JSObject* WrapObject(JSContext *cx,
-                               JS::Handle<JSObject*> scope) MOZ_OVERRIDE
+  virtual JSObject* WrapObject(JSContext *cx) MOZ_OVERRIDE
   {
     return mozilla::dom::XMLHttpRequestBinding::Wrap(cx, this);
   }
   nsISupports* GetParentObject()
   {
     return GetOwner();
   }
 
--- a/content/canvas/src/CanvasGradient.h
+++ b/content/canvas/src/CanvasGradient.h
@@ -48,17 +48,17 @@ public:
                                                       gfx::ExtendMode::CLAMP);
 
     return mStops;
   }
 
   // WebIDL
   void AddColorStop(float offset, const nsAString& colorstr, ErrorResult& rv);
 
-  JSObject* WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope) MOZ_OVERRIDE
+  JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE
   {
     return CanvasGradientBinding::Wrap(aCx, this);
   }
 
   CanvasRenderingContext2D* GetParentObject()
   {
     return mContext;
   }
--- a/content/canvas/src/CanvasPattern.h
+++ b/content/canvas/src/CanvasPattern.h
@@ -46,17 +46,17 @@ public:
     , mRepeat(aRepeat)
     , mPrincipal(principalForSecurityCheck)
     , mForceWriteOnly(forceWriteOnly)
     , mCORSUsed(CORSUsed)
   {
     SetIsDOMBinding();
   }
 
-  JSObject* WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope) MOZ_OVERRIDE
+  JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE
   {
     return CanvasPatternBinding::Wrap(aCx, this);
   }
 
   CanvasRenderingContext2D* GetParentObject()
   {
     return mContext;
   }
--- a/content/canvas/src/CanvasRenderingContext2D.cpp
+++ b/content/canvas/src/CanvasRenderingContext2D.cpp
@@ -557,17 +557,17 @@ CanvasRenderingContext2D::~CanvasRenderi
   if (!sNumLivingContexts) {
     NS_IF_RELEASE(sErrorTarget);
   }
 
   RemoveDemotableContext(this);
 }
 
 JSObject*
-CanvasRenderingContext2D::WrapObject(JSContext *cx, JS::Handle<JSObject*> scope)
+CanvasRenderingContext2D::WrapObject(JSContext *cx)
 {
   return CanvasRenderingContext2DBinding::Wrap(cx, this);
 }
 
 bool
 CanvasRenderingContext2D::ParseColor(const nsAString& aString,
                                      nscolor* aColor)
 {
@@ -4363,17 +4363,17 @@ CanvasPath::CanvasPath(nsCOMPtr<nsISuppo
   SetIsDOMBinding();
 
   if (!mPathBuilder) {
     mPathBuilder = gfxPlatform::GetPlatform()->ScreenReferenceDrawTarget()->CreatePathBuilder();
   }
 }
 
 JSObject*
-CanvasPath::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+CanvasPath::WrapObject(JSContext* aCx)
 {
   return Path2DBinding::Wrap(aCx, this);
 }
 
 already_AddRefed<CanvasPath>
 CanvasPath::Constructor(const GlobalObject& aGlobal, ErrorResult& aRv)
 {
   nsRefPtr<CanvasPath> path = new CanvasPath(aGlobal.GetAsSupports());
--- a/content/canvas/src/CanvasRenderingContext2D.h
+++ b/content/canvas/src/CanvasRenderingContext2D.h
@@ -49,17 +49,17 @@ class CanvasPath :
   public nsWrapperCache
 {
 public:
   NS_INLINE_DECL_CYCLE_COLLECTING_NATIVE_REFCOUNTING(CanvasPath)
   NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_NATIVE_CLASS(CanvasPath)
 
   nsCOMPtr<nsISupports> GetParentObject() { return mParent; }
 
-  JSObject* WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope);
+  JSObject* WrapObject(JSContext* aCx);
 
   static already_AddRefed<CanvasPath> Constructor(const GlobalObject& aGlobal,
                                                   ErrorResult& rv);
   static already_AddRefed<CanvasPath> Constructor(const GlobalObject& aGlobal,
                                                   CanvasPath& aCanvasPath,
                                                   ErrorResult& rv);
   static already_AddRefed<CanvasPath> Constructor(const GlobalObject& aGlobal,
                                                   const nsAString& aPathString,
@@ -114,18 +114,17 @@ class CanvasRenderingContext2D :
 {
 typedef HTMLImageElementOrHTMLCanvasElementOrHTMLVideoElement
   HTMLImageOrCanvasOrVideoElement;
 
 public:
   CanvasRenderingContext2D();
   virtual ~CanvasRenderingContext2D();
 
-  virtual JSObject* WrapObject(JSContext *cx,
-                               JS::Handle<JSObject*> scope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext *cx) MOZ_OVERRIDE;
 
   HTMLCanvasElement* GetCanvas() const
   {
     // corresponds to changes to the old bindings made in bug 745025
     return mCanvasElement->GetOriginalCanvas();
   }
 
   void Save();
--- a/content/canvas/src/ImageData.cpp
+++ b/content/canvas/src/ImageData.cpp
@@ -100,15 +100,15 @@ ImageData::DropData()
 {
   if (mData) {
     mData = nullptr;
     mozilla::DropJSObjects(this);
   }
 }
 
 JSObject*
-ImageData::WrapObject(JSContext* cx, JS::Handle<JSObject*> scope)
+ImageData::WrapObject(JSContext* cx)
 {
   return ImageDataBinding::Wrap(cx, this);
 }
 
 } // namespace dom
 } // namespace mozilla
--- a/content/canvas/src/ImageData.h
+++ b/content/canvas/src/ImageData.h
@@ -66,17 +66,17 @@ public:
     return GetDataObject();
   }
   JSObject* GetDataObject() const
   {
     JS::ExposeObjectToActiveJS(mData);
     return mData;
   }
 
-  JSObject* WrapObject(JSContext* cx, JS::Handle<JSObject*> scope);
+  JSObject* WrapObject(JSContext* cx);
 
 private:
   void HoldData();
   void DropData();
 
   ImageData() MOZ_DELETE;
 
   uint32_t mWidth, mHeight;
--- a/content/canvas/src/TextMetrics.h
+++ b/content/canvas/src/TextMetrics.h
@@ -25,18 +25,17 @@ public:
     MOZ_COUNT_DTOR(TextMetrics);
   }
 
   float Width() const
   {
     return width;
   }
 
-  JSObject* WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope,
-                       bool* aTookOwnership)
+  JSObject* WrapObject(JSContext* aCx, bool* aTookOwnership)
   {
     return TextMetricsBinding::Wrap(aCx, this, aTookOwnership);
   }
 
 private:
   float width;
 };
 
--- a/content/canvas/src/WebGL1Context.cpp
+++ b/content/canvas/src/WebGL1Context.cpp
@@ -24,17 +24,17 @@ WebGL1Context::~WebGL1Context()
 
 }
 
 
 // -----------------------------------------------------------------------------
 // IMPLEMENT nsWrapperCache
 
 JSObject*
-WebGL1Context::WrapObject(JSContext *cx, JS::Handle<JSObject*> scope)
+WebGL1Context::WrapObject(JSContext *cx)
 {
     return dom::WebGLRenderingContextBinding::Wrap(cx, this);
 }
 
 
 // -----------------------------------------------------------------------------
 // INSTANCING nsIDOMWebGLRenderingContext
 
--- a/content/canvas/src/WebGL1Context.h
+++ b/content/canvas/src/WebGL1Context.h
@@ -31,17 +31,16 @@ public:
     {
         return false;
     }
 
 
     // -------------------------------------------------------------------------
     // IMPLEMENT nsWrapperCache
 
-    virtual JSObject* WrapObject(JSContext *cx,
-                                 JS::Handle<JSObject*> scope) MOZ_OVERRIDE;
+    virtual JSObject* WrapObject(JSContext *cx) MOZ_OVERRIDE;
 
 
 };
 
 } // namespace mozilla
 
 #endif
--- a/content/canvas/src/WebGL2Context.cpp
+++ b/content/canvas/src/WebGL2Context.cpp
@@ -43,17 +43,17 @@ WebGL2Context::Create()
     return new WebGL2Context();
 }
 
 
 // -----------------------------------------------------------------------------
 // IMPLEMENT nsWrapperCache
 
 JSObject*
-WebGL2Context::WrapObject(JSContext *cx, JS::Handle<JSObject*> scope)
+WebGL2Context::WrapObject(JSContext *cx)
 {
     return dom::WebGL2RenderingContextBinding::Wrap(cx, this);
 }
 
 
 // -----------------------------------------------------------------------------
 // WebGL 2 initialisation
 
--- a/content/canvas/src/WebGL2Context.h
+++ b/content/canvas/src/WebGL2Context.h
@@ -38,18 +38,17 @@ public:
     {
         return true;
     }
 
 
     // -------------------------------------------------------------------------
     // IMPLEMENT nsWrapperCache
 
-    virtual JSObject* WrapObject(JSContext *cx,
-                                 JS::Handle<JSObject*> scope) MOZ_OVERRIDE;
+    virtual JSObject* WrapObject(JSContext *cx) MOZ_OVERRIDE;
 
 
 // -----------------------------------------------------------------------------
 // PRIVATE
 private:
 
     // -------------------------------------------------------------------------
     // CONSTRUCTOR
--- a/content/canvas/src/WebGLActiveInfo.cpp
+++ b/content/canvas/src/WebGLActiveInfo.cpp
@@ -5,11 +5,11 @@
 
 #include "WebGLContext.h"
 #include "WebGLTexture.h"
 #include "mozilla/dom/WebGLRenderingContextBinding.h"
 
 using namespace mozilla;
 
 JSObject*
-WebGLActiveInfo::WrapObject(JSContext *cx, JS::Handle<JSObject*> scope) {
+WebGLActiveInfo::WrapObject(JSContext *cx) {
     return dom::WebGLActiveInfoBinding::Wrap(cx, this);
 }
--- a/content/canvas/src/WebGLActiveInfo.h
+++ b/content/canvas/src/WebGLActiveInfo.h
@@ -30,17 +30,17 @@ public:
     GLenum Type() const {
         return mType;
     }
 
     void GetName(nsString& retval) const {
         retval = mName;
     }
 
-    JSObject* WrapObject(JSContext *cx, JS::Handle<JSObject*> scope);
+    JSObject* WrapObject(JSContext *cx);
 
    NS_INLINE_DECL_REFCOUNTING(WebGLActiveInfo)
 
 private:
     // Private destructor, to discourage deletion outside of Release():
     ~WebGLActiveInfo()
     {
     }
--- a/content/canvas/src/WebGLBuffer.cpp
+++ b/content/canvas/src/WebGLBuffer.cpp
@@ -69,16 +69,16 @@ WebGLBuffer::Validate(GLenum type, uint3
                       size_t first, size_t count,
                       uint32_t* out_upperBound)
 {
     return mCache->Validate(type, max_allowed, first, count, out_upperBound);
 }
 
 
 JSObject*
-WebGLBuffer::WrapObject(JSContext *cx, JS::Handle<JSObject*> scope) {
+WebGLBuffer::WrapObject(JSContext *cx) {
     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/WebGLBuffer.h
+++ b/content/canvas/src/WebGLBuffer.h
@@ -48,18 +48,17 @@ public:
 
     bool Validate(GLenum type, uint32_t max_allowed, size_t first, size_t count,
                   uint32_t* out_upperBound);
 
     WebGLContext *GetParentObject() const {
         return Context();
     }
 
-    virtual JSObject* WrapObject(JSContext *cx,
-                                 JS::Handle<JSObject*> scope) MOZ_OVERRIDE;
+    virtual JSObject* WrapObject(JSContext *cx) MOZ_OVERRIDE;
 
     NS_INLINE_DECL_CYCLE_COLLECTING_NATIVE_REFCOUNTING(WebGLBuffer)
     NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_NATIVE_CLASS(WebGLBuffer)
 
 protected:
 
     GLuint mGLName;
     bool mHasEverBeenBound;
--- a/content/canvas/src/WebGLContext.h
+++ b/content/canvas/src/WebGLContext.h
@@ -147,18 +147,17 @@ public:
     WebGLContext();
     virtual ~WebGLContext();
 
     NS_DECL_CYCLE_COLLECTING_ISUPPORTS
 
     NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS_AMBIGUOUS(WebGLContext,
                                                            nsIDOMWebGLRenderingContext)
 
-    virtual JSObject* WrapObject(JSContext *cx,
-                                 JS::Handle<JSObject*> scope) = 0;
+    virtual JSObject* WrapObject(JSContext *cx) = 0;
 
     NS_DECL_NSIDOMWEBGLRENDERINGCONTEXT
 
     // nsICanvasRenderingContextInternal
 #ifdef DEBUG
     virtual int32_t GetWidth() const MOZ_OVERRIDE;
     virtual int32_t GetHeight() const MOZ_OVERRIDE;
 #endif
--- a/content/canvas/src/WebGLExtensions.h
+++ b/content/canvas/src/WebGLExtensions.h
@@ -35,22 +35,21 @@ public:
     NS_INLINE_DECL_CYCLE_COLLECTING_NATIVE_REFCOUNTING(WebGLExtensionBase)
     NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_NATIVE_CLASS(WebGLExtensionBase)
 
 protected:
     bool mIsLost;
 };
 
 #define DECL_WEBGL_EXTENSION_GOOP                                           \
-    virtual JSObject* WrapObject(JSContext *cx,                             \
-                                 JS::Handle<JSObject*> scope) MOZ_OVERRIDE;
+    virtual JSObject* WrapObject(JSContext *cx) MOZ_OVERRIDE;
 
 #define IMPL_WEBGL_EXTENSION_GOOP(WebGLExtensionType) \
     JSObject* \
-    WebGLExtensionType::WrapObject(JSContext *cx, JS::Handle<JSObject*> scope) { \
+    WebGLExtensionType::WrapObject(JSContext *cx) { \
         return dom::WebGLExtensionType##Binding::Wrap(cx, this); \
     }
 
 class WebGLExtensionCompressedTextureATC
     : public WebGLExtensionBase
 {
 public:
     WebGLExtensionCompressedTextureATC(WebGLContext*);
--- a/content/canvas/src/WebGLFramebuffer.cpp
+++ b/content/canvas/src/WebGLFramebuffer.cpp
@@ -13,17 +13,17 @@
 #include "WebGLRenderbuffer.h"
 #include "GLContext.h"
 #include "WebGLContextUtils.h"
 
 using namespace mozilla;
 using namespace mozilla::gl;
 
 JSObject*
-WebGLFramebuffer::WrapObject(JSContext* cx, JS::Handle<JSObject*> scope)
+WebGLFramebuffer::WrapObject(JSContext* cx)
 {
     return dom::WebGLFramebufferBinding::Wrap(cx, this);
 }
 
 WebGLFramebuffer::WebGLFramebuffer(WebGLContext* context)
     : WebGLContextBoundObject(context)
     , mStatus(0)
     , mHasEverBeenBound(false)
--- a/content/canvas/src/WebGLFramebuffer.h
+++ b/content/canvas/src/WebGLFramebuffer.h
@@ -158,18 +158,17 @@ public:
     const WebGLRectangleObject& RectangleObject() const;
 
     WebGLContext* GetParentObject() const {
         return Context();
     }
 
     void FinalizeAttachments() const;
 
-    virtual JSObject* WrapObject(JSContext* cx,
-                                 JS::Handle<JSObject*> scope) MOZ_OVERRIDE;
+    virtual JSObject* WrapObject(JSContext* cx) MOZ_OVERRIDE;
 
     NS_INLINE_DECL_CYCLE_COLLECTING_NATIVE_REFCOUNTING(WebGLFramebuffer)
     NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_NATIVE_CLASS(WebGLFramebuffer)
 
     // mask mirrors glClear.
     bool HasCompletePlanes(GLbitfield mask);
 
     bool CheckAndInitializeAttachments();
--- a/content/canvas/src/WebGLProgram.cpp
+++ b/content/canvas/src/WebGLProgram.cpp
@@ -40,17 +40,17 @@ static bool SplitLastSquareBracket(nsACS
     bracketPart.Assign(s);
     *s = 0;
     string.EndWriting();
     string.SetLength(s - string_start);
     return true;
 }
 
 JSObject*
-WebGLProgram::WrapObject(JSContext *cx, JS::Handle<JSObject*> scope) {
+WebGLProgram::WrapObject(JSContext *cx) {
     return dom::WebGLProgramBinding::Wrap(cx, this);
 }
 
 WebGLProgram::WebGLProgram(WebGLContext *context)
     : WebGLContextBoundObject(context)
     , mLinkStatus(false)
     , mGeneration(0)
     , mAttribMaxNameLength(0)
--- a/content/canvas/src/WebGLProgram.h
+++ b/content/canvas/src/WebGLProgram.h
@@ -99,18 +99,17 @@ public:
      * Note: the input string |name| is the mapped identifier, not the original identifier.
      */
     WebGLUniformInfo GetUniformInfoForMappedIdentifier(const nsACString& name);
 
     WebGLContext *GetParentObject() const {
         return Context();
     }
 
-    virtual JSObject* WrapObject(JSContext *cx,
-                                 JS::Handle<JSObject*> scope) MOZ_OVERRIDE;
+    virtual JSObject* WrapObject(JSContext *cx) MOZ_OVERRIDE;
 
     NS_INLINE_DECL_CYCLE_COLLECTING_NATIVE_REFCOUNTING(WebGLProgram)
     NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_NATIVE_CLASS(WebGLProgram)
 
     // public post-link data
     std::map<GLint, nsCString> mActiveAttribMap;
 
 protected:
--- a/content/canvas/src/WebGLQuery.cpp
+++ b/content/canvas/src/WebGLQuery.cpp
@@ -7,17 +7,17 @@
 #include "GLContext.h"
 #include "WebGLQuery.h"
 #include "mozilla/dom/WebGL2RenderingContextBinding.h"
 #include "nsContentUtils.h"
 
 using namespace mozilla;
 
 JSObject*
-WebGLQuery::WrapObject(JSContext *cx, JS::Handle<JSObject*> scope) {
+WebGLQuery::WrapObject(JSContext *cx) {
     return dom::WebGLQueryBinding::Wrap(cx, this);
 }
 
 WebGLQuery::WebGLQuery(WebGLContext* context)
     : WebGLContextBoundObject(context)
     , mGLName(0)
     , mType(0)
 {
--- a/content/canvas/src/WebGLQuery.h
+++ b/content/canvas/src/WebGLQuery.h
@@ -53,18 +53,17 @@ public:
     WebGLContext* GetParentObject() const
     {
         return Context();
     }
 
 
     // -------------------------------------------------------------------------
     // IMPLEMENT NS
-    virtual JSObject* WrapObject(JSContext *cx,
-                                 JS::Handle<JSObject*> scope) MOZ_OVERRIDE;
+    virtual JSObject* WrapObject(JSContext *cx) MOZ_OVERRIDE;
 
     NS_INLINE_DECL_CYCLE_COLLECTING_NATIVE_REFCOUNTING(WebGLQuery)
     NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_NATIVE_CLASS(WebGLQuery)
 
 
 // -----------------------------------------------------------------------------
 // PRIVATE
 private:
--- a/content/canvas/src/WebGLRenderbuffer.cpp
+++ b/content/canvas/src/WebGLRenderbuffer.cpp
@@ -33,17 +33,17 @@ NeedsDepthStencilEmu(GLContext* gl, GLen
     MOZ_ASSERT(internalFormat != LOCAL_GL_DEPTH_STENCIL);
     if (internalFormat != LOCAL_GL_DEPTH24_STENCIL8)
         return false;
 
     return !SupportsDepthStencil(gl);
 }
 
 JSObject*
-WebGLRenderbuffer::WrapObject(JSContext *cx, JS::Handle<JSObject*> scope) {
+WebGLRenderbuffer::WrapObject(JSContext *cx) {
     return dom::WebGLRenderbufferBinding::Wrap(cx, this);
 }
 
 WebGLRenderbuffer::WebGLRenderbuffer(WebGLContext *context)
     : WebGLContextBoundObject(context)
     , mPrimaryRB(0)
     , mSecondaryRB(0)
     , mInternalFormat(0)
--- a/content/canvas/src/WebGLRenderbuffer.h
+++ b/content/canvas/src/WebGLRenderbuffer.h
@@ -56,18 +56,17 @@ public:
     }
 
     void BindRenderbuffer() const;
     void RenderbufferStorage(GLenum internalFormat, GLsizei width, GLsizei height) const;
     void FramebufferRenderbuffer(GLenum attachment) const;
     // Only handles a subset of `pname`s.
     GLint GetRenderbufferParameter(GLenum target, GLenum pname) const;
 
-    virtual JSObject* WrapObject(JSContext *cx,
-                                 JS::Handle<JSObject*> scope) MOZ_OVERRIDE;
+    virtual JSObject* WrapObject(JSContext *cx) MOZ_OVERRIDE;
 
     NS_INLINE_DECL_CYCLE_COLLECTING_NATIVE_REFCOUNTING(WebGLRenderbuffer)
     NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_NATIVE_CLASS(WebGLRenderbuffer)
 
 protected:
     GLuint mPrimaryRB;
     GLuint mSecondaryRB;
     GLenum mInternalFormat;
--- a/content/canvas/src/WebGLShader.cpp
+++ b/content/canvas/src/WebGLShader.cpp
@@ -8,17 +8,17 @@
 #include "WebGLContext.h"
 #include "mozilla/MemoryReporting.h"
 #include "mozilla/dom/WebGLRenderingContextBinding.h"
 #include "GLContext.h"
 
 using namespace mozilla;
 
 JSObject*
-WebGLShader::WrapObject(JSContext *cx, JS::Handle<JSObject*> scope) {
+WebGLShader::WrapObject(JSContext *cx) {
     return dom::WebGLShaderBinding::Wrap(cx, this);
 }
 
 WebGLShader::WebGLShader(WebGLContext *context, GLenum stype)
     : WebGLContextBoundObject(context)
     , mType(stype)
     , mNeedsTranslation(true)
     , mAttribMaxNameLength(0)
--- a/content/canvas/src/WebGLShader.h
+++ b/content/canvas/src/WebGLShader.h
@@ -73,18 +73,17 @@ public:
     const nsCString& TranslationLog() const { return mTranslationLog; }
 
     const nsString& TranslatedSource() const { return mTranslatedSource; }
 
     WebGLContext *GetParentObject() const {
         return Context();
     }
 
-    virtual JSObject* WrapObject(JSContext *cx,
-                                 JS::Handle<JSObject*> scope) MOZ_OVERRIDE;
+    virtual JSObject* WrapObject(JSContext *cx) MOZ_OVERRIDE;
 
     NS_INLINE_DECL_CYCLE_COLLECTING_NATIVE_REFCOUNTING(WebGLShader)
     NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_NATIVE_CLASS(WebGLShader)
 
 protected:
 
     GLuint mGLName;
     GLenum mType;
--- a/content/canvas/src/WebGLShaderPrecisionFormat.cpp
+++ b/content/canvas/src/WebGLShaderPrecisionFormat.cpp
@@ -5,12 +5,12 @@
 
 #include "WebGLContext.h"
 #include "WebGLShaderPrecisionFormat.h"
 #include "mozilla/dom/WebGLRenderingContextBinding.h"
 
 using namespace mozilla;
 
 JSObject*
-WebGLShaderPrecisionFormat::WrapObject(JSContext *cx, JS::Handle<JSObject*> scope)
+WebGLShaderPrecisionFormat::WrapObject(JSContext *cx)
 {
     return dom::WebGLShaderPrecisionFormatBinding::Wrap(cx, this);
 }
--- a/content/canvas/src/WebGLShaderPrecisionFormat.h
+++ b/content/canvas/src/WebGLShaderPrecisionFormat.h
@@ -19,17 +19,17 @@ public:
     WebGLShaderPrecisionFormat(WebGLContext *context, GLint rangeMin, GLint rangeMax, GLint precision) :
         WebGLContextBoundObject(context),
         mRangeMin(rangeMin),
         mRangeMax(rangeMax),
         mPrecision(precision)
     {
     }
 
-    JSObject* WrapObject(JSContext *cx, JS::Handle<JSObject*> scope);
+    JSObject* WrapObject(JSContext *cx);
 
     // WebIDL WebGLShaderPrecisionFormat API
     GLint RangeMin() const {
         return mRangeMin;
     }
     GLint RangeMax() const {
         return mRangeMax;
     }
--- a/content/canvas/src/WebGLTexture.cpp
+++ b/content/canvas/src/WebGLTexture.cpp
@@ -9,17 +9,17 @@
 #include "ScopedGLHelpers.h"
 #include "WebGLTexelConversions.h"
 #include "mozilla/dom/WebGLRenderingContextBinding.h"
 #include <algorithm>
 
 using namespace mozilla;
 
 JSObject*
-WebGLTexture::WrapObject(JSContext *cx, JS::Handle<JSObject*> scope) {
+WebGLTexture::WrapObject(JSContext *cx) {
     return dom::WebGLTextureBinding::Wrap(cx, this);
 }
 
 WebGLTexture::WebGLTexture(WebGLContext *context)
     : WebGLContextBoundObject(context)
     , mHasEverBeenBound(false)
     , mTarget(0)
     , mMinFilter(LOCAL_GL_NEAREST_MIPMAP_LINEAR)
--- a/content/canvas/src/WebGLTexture.h
+++ b/content/canvas/src/WebGLTexture.h
@@ -53,18 +53,17 @@ public:
     void SetHasEverBeenBound(bool x) { mHasEverBeenBound = x; }
     GLuint GLName() const { return mGLName; }
     GLenum Target() const { return mTarget; }
 
     WebGLContext *GetParentObject() const {
         return Context();
     }
 
-    virtual JSObject* WrapObject(JSContext *cx,
-                                 JS::Handle<JSObject*> scope) MOZ_OVERRIDE;
+    virtual JSObject* WrapObject(JSContext *cx) MOZ_OVERRIDE;
 
     NS_INLINE_DECL_CYCLE_COLLECTING_NATIVE_REFCOUNTING(WebGLTexture)
     NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_NATIVE_CLASS(WebGLTexture)
 
 protected:
 
     friend class WebGLContext;
     friend class WebGLFramebuffer;
--- a/content/canvas/src/WebGLUniformLocation.cpp
+++ b/content/canvas/src/WebGLUniformLocation.cpp
@@ -7,17 +7,17 @@
 #include "WebGLUniformLocation.h"
 #include "WebGLShader.h"
 #include "WebGLProgram.h"
 #include "mozilla/dom/WebGLRenderingContextBinding.h"
 
 using namespace mozilla;
 
 JSObject*
-WebGLUniformLocation::WrapObject(JSContext *cx, JS::Handle<JSObject*> scope)
+WebGLUniformLocation::WrapObject(JSContext *cx)
 {
     return dom::WebGLUniformLocationBinding::Wrap(cx, this);
 }
 
 WebGLUniformLocation::WebGLUniformLocation(WebGLContext *context, WebGLProgram *program, GLint location, const WebGLUniformInfo& info)
     : WebGLContextBoundObject(context)
     , mProgram(program)
     , mProgramGeneration(program->Generation())
--- a/content/canvas/src/WebGLUniformLocation.h
+++ b/content/canvas/src/WebGLUniformLocation.h
@@ -28,17 +28,17 @@ public:
 
     const WebGLUniformInfo &Info() const { return mInfo; }
 
     WebGLProgram *Program() const { return mProgram; }
     GLint Location() const { return mLocation; }
     uint32_t ProgramGeneration() const { return mProgramGeneration; }
     int ElementSize() const { return mElementSize; }
 
-    JSObject* WrapObject(JSContext *cx, JS::Handle<JSObject*> scope);
+    JSObject* WrapObject(JSContext *cx);
 
     NS_INLINE_DECL_CYCLE_COLLECTING_NATIVE_REFCOUNTING(WebGLUniformLocation)
     NS_DECL_CYCLE_COLLECTION_NATIVE_CLASS(WebGLUniformLocation)
 
 protected:
     // nsRefPtr, not WebGLRefPtr, so that we don't prevent the program from being explicitly deleted.
     // we just want to avoid having a dangling pointer.
     nsRefPtr<WebGLProgram> mProgram;
--- a/content/canvas/src/WebGLVertexArray.cpp
+++ b/content/canvas/src/WebGLVertexArray.cpp
@@ -7,17 +7,17 @@
 #include "WebGLBuffer.h"
 #include "WebGLVertexArray.h"
 #include "mozilla/dom/WebGLRenderingContextBinding.h"
 #include "GLContext.h"
 
 using namespace mozilla;
 
 JSObject*
-WebGLVertexArray::WrapObject(JSContext *cx, JS::Handle<JSObject*> scope) {
+WebGLVertexArray::WrapObject(JSContext *cx) {
     return dom::WebGLVertexArrayBinding::Wrap(cx, this);
 }
 
 WebGLVertexArray::WebGLVertexArray(WebGLContext* context)
     : WebGLContextBoundObject(context)
     , mGLName(0)
     , mHasEverBeenBound(false)
 {
--- a/content/canvas/src/WebGLVertexArray.h
+++ b/content/canvas/src/WebGLVertexArray.h
@@ -40,18 +40,17 @@ public:
     // IMPLMENET PARENT CLASSES
 
     void Delete();
 
     WebGLContext* GetParentObject() const {
         return Context();
     }
 
-    virtual JSObject* WrapObject(JSContext *cx,
-                                 JS::Handle<JSObject*> scope) MOZ_OVERRIDE;
+    virtual JSObject* WrapObject(JSContext *cx) MOZ_OVERRIDE;
 
     NS_INLINE_DECL_CYCLE_COLLECTING_NATIVE_REFCOUNTING(WebGLVertexArray)
     NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_NATIVE_CLASS(WebGLVertexArray)
 
 
     // -------------------------------------------------------------------------
     // MEMBER FUNCTIONS
 
--- a/content/html/content/public/HTMLCanvasElement.h
+++ b/content/html/content/public/HTMLCanvasElement.h
@@ -272,17 +272,17 @@ public:
 
   void NotifyDone();
 
   bool mIsDone;
 
   NS_INLINE_DECL_CYCLE_COLLECTING_NATIVE_REFCOUNTING(HTMLCanvasPrintState)
   NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_NATIVE_CLASS(HTMLCanvasPrintState)
 
-  virtual JSObject* WrapObject(JSContext *cx, JS::Handle<JSObject*> scope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext *cx) MOZ_OVERRIDE;
 
   HTMLCanvasElement* GetParentObject()
   {
     return mCanvas;
   }
 
 private:
   ~HTMLCanvasPrintState();
--- a/content/html/content/public/nsIHTMLCollection.h
+++ b/content/html/content/public/nsIHTMLCollection.h
@@ -73,16 +73,16 @@ public:
   GetFirstNamedElement(const nsAString& aName, bool& aFound) = 0;
 
   virtual void GetSupportedNames(nsTArray<nsString>& aNames) = 0;
 
   JSObject* GetWrapperPreserveColor()
   {
     return GetWrapperPreserveColorInternal();
   }
-  virtual JSObject* WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope) = 0;
+  virtual JSObject* WrapObject(JSContext* aCx) = 0;
 protected:
   virtual JSObject* GetWrapperPreserveColorInternal() = 0;
 };
 
 NS_DEFINE_STATIC_IID_ACCESSOR(nsIHTMLCollection, NS_IHTMLCOLLECTION_IID)
 
 #endif /* nsIHTMLCollection_h___ */
--- a/content/html/content/src/HTMLCanvasElement.cpp
+++ b/content/html/content/src/HTMLCanvasElement.cpp
@@ -67,17 +67,17 @@ HTMLCanvasPrintState::HTMLCanvasPrintSta
   SetIsDOMBinding();
 }
 
 HTMLCanvasPrintState::~HTMLCanvasPrintState()
 {
 }
 
 /* virtual */ JSObject*
-HTMLCanvasPrintState::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+HTMLCanvasPrintState::WrapObject(JSContext* aCx)
 {
   return MozCanvasPrintStateBinding::Wrap(aCx, this);
 }
 
 nsISupports*
 HTMLCanvasPrintState::Context() const
 {
   return mContext;
--- a/content/html/content/src/HTMLContentElement.cpp
+++ b/content/html/content/src/HTMLContentElement.cpp
@@ -310,13 +310,13 @@ DistributedContentList::GetLength(uint32
 
 int32_t
 DistributedContentList::IndexOf(nsIContent* aContent)
 {
   return mDistributedNodes.IndexOf(aContent);
 }
 
 JSObject*
-DistributedContentList::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+DistributedContentList::WrapObject(JSContext* aCx)
 {
   return NodeListBinding::Wrap(aCx, this);
 }
 
--- a/content/html/content/src/HTMLContentElement.h
+++ b/content/html/content/src/HTMLContentElement.h
@@ -92,17 +92,17 @@ public:
   // nsIDOMNodeList
   NS_DECL_NSIDOMNODELIST
 
   // nsINodeList
   virtual nsIContent* Item(uint32_t aIndex);
   virtual int32_t IndexOf(nsIContent* aContent);
   virtual nsINode* GetParentObject() { return mParent; }
   virtual uint32_t Length() const;
-  virtual JSObject* WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 protected:
   nsRefPtr<HTMLContentElement> mParent;
   nsCOMArray<nsIContent> mDistributedNodes;
 };
 
 } // namespace dom
 } // namespace mozilla
 
--- a/content/html/content/src/HTMLFormControlsCollection.cpp
+++ b/content/html/content/src/HTMLFormControlsCollection.cpp
@@ -400,16 +400,15 @@ HTMLFormControlsCollection::GetSupported
   FlushPendingNotifications();
   // Just enumerate mNameLookupTable.  This won't guarantee order, but
   // that's OK, because the HTML5 spec doesn't define an order for
   // this enumeration.
   mNameLookupTable.EnumerateRead(CollectNames, &aNames);
 }
 
 /* virtual */ JSObject*
-HTMLFormControlsCollection::WrapObject(JSContext* aCx,
-                                       JS::Handle<JSObject*> aScope)
+HTMLFormControlsCollection::WrapObject(JSContext* aCx)
 {
   return HTMLFormControlsCollectionBinding::Wrap(aCx, this);
 }
 
 } // namespace dom
 } // namespace mozilla
--- a/content/html/content/src/HTMLFormControlsCollection.h
+++ b/content/html/content/src/HTMLFormControlsCollection.h
@@ -75,18 +75,17 @@ public:
    *
    * @param aControls The list of sorted controls[out].
    * @return NS_OK or NS_ERROR_OUT_OF_MEMORY.
    */
   nsresult GetSortedControls(nsTArray<nsGenericHTMLFormElement*>& aControls) const;
 
   // nsWrapperCache
   using nsWrapperCache::GetWrapperPreserveColor;
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 protected:
   virtual JSObject* GetWrapperPreserveColorInternal() MOZ_OVERRIDE
   {
     return nsWrapperCache::GetWrapperPreserveColor();
   }
 public:
 
   static bool ShouldBeInElements(nsIFormControl* aFormControl);
--- a/content/html/content/src/HTMLOptionsCollection.cpp
+++ b/content/html/content/src/HTMLOptionsCollection.cpp
@@ -103,17 +103,17 @@ NS_INTERFACE_TABLE_HEAD(HTMLOptionsColle
 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)
+HTMLOptionsCollection::WrapObject(JSContext* aCx)
 {
   return HTMLOptionsCollectionBinding::Wrap(aCx, this);
 }
 
 NS_IMETHODIMP
 HTMLOptionsCollection::GetLength(uint32_t* aLength)
 {
   *aLength = mElements.Length();
--- a/content/html/content/src/HTMLOptionsCollection.h
+++ b/content/html/content/src/HTMLOptionsCollection.h
@@ -37,18 +37,17 @@ class HTMLOptionsCollection : public nsI
 public:
   HTMLOptionsCollection(HTMLSelectElement* aSelect);
   virtual ~HTMLOptionsCollection();
 
   NS_DECL_CYCLE_COLLECTING_ISUPPORTS
 
   // nsWrapperCache
   using nsWrapperCache::GetWrapperPreserveColor;
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 protected:
   virtual JSObject* GetWrapperPreserveColorInternal() MOZ_OVERRIDE
   {
     return nsWrapperCache::GetWrapperPreserveColor();
   }
 public:
 
   // nsIDOMHTMLOptionsCollection interface
--- a/content/html/content/src/HTMLPropertiesCollection.cpp
+++ b/content/html/content/src/HTMLPropertiesCollection.cpp
@@ -89,17 +89,17 @@ HTMLPropertiesCollection::SetDocument(ns
   if (mDoc) {
     mDoc->AddMutationObserver(this);
   }
   mNamedItemEntries.EnumerateRead(SetPropertyListDocument, aDocument);
   mIsDirty = true;
 }
 
 JSObject*
-HTMLPropertiesCollection::WrapObject(JSContext* cx, JS::Handle<JSObject*> scope)
+HTMLPropertiesCollection::WrapObject(JSContext* cx)
 {
   return HTMLPropertiesCollectionBinding::Wrap(cx, this);
 }
 
 NS_IMETHODIMP
 HTMLPropertiesCollection::GetLength(uint32_t* aLength)
 {
   EnsureFresh();
@@ -373,17 +373,17 @@ PropertyNodeList::IndexOf(nsIContent* aC
 
 nsINode*
 PropertyNodeList::GetParentObject()
 {
   return mParent;
 }
 
 JSObject*
-PropertyNodeList::WrapObject(JSContext *cx, JS::Handle<JSObject*> scope)
+PropertyNodeList::WrapObject(JSContext *cx)
 {
   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
--- a/content/html/content/src/HTMLPropertiesCollection.h
+++ b/content/html/content/src/HTMLPropertiesCollection.h
@@ -53,18 +53,17 @@ class HTMLPropertiesCollection : public 
   friend class PropertyNodeList;
   friend class PropertyStringList;
 public:
   HTMLPropertiesCollection(nsGenericHTMLElement* aRoot);
   virtual ~HTMLPropertiesCollection();
 
   // nsWrapperCache
   using nsWrapperCache::GetWrapperPreserveColor;
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 protected:
   virtual JSObject* GetWrapperPreserveColorInternal() MOZ_OVERRIDE
   {
     return nsWrapperCache::GetWrapperPreserveColor();
   }
 public:
 
   virtual Element* GetElementAt(uint32_t aIndex);
@@ -144,18 +143,17 @@ protected:
 class PropertyNodeList : public nsINodeList,
                          public nsStubMutationObserver
 {
 public:
   PropertyNodeList(HTMLPropertiesCollection* aCollection,
                    nsIContent* aRoot, const nsAString& aName);
   virtual ~PropertyNodeList();
 
-  virtual JSObject* WrapObject(JSContext *cx,
-                               JS::Handle<JSObject*> scope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext *cx) MOZ_OVERRIDE;
 
   void SetDocument(nsIDocument* aDocument);
 
   void GetValues(JSContext* aCx, nsTArray<JS::Value >& aResult,
                  ErrorResult& aError);
 
   virtual nsIContent* Item(uint32_t aIndex) MOZ_OVERRIDE;
 
--- a/content/html/content/src/HTMLTableElement.cpp
+++ b/content/html/content/src/HTMLTableElement.cpp
@@ -44,18 +44,17 @@ public:
   virtual void GetSupportedNames(nsTArray<nsString>& aNames);
 
   NS_IMETHOD    ParentDestroyed();
 
   NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(TableRowsCollection)
 
   // nsWrapperCache
   using nsWrapperCache::GetWrapperPreserveColor;
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 protected:
   virtual JSObject* GetWrapperPreserveColorInternal() MOZ_OVERRIDE
   {
     return nsWrapperCache::GetWrapperPreserveColor();
   }
 
   // Those rows that are not in table sections
   HTMLTableElement* mParent;
@@ -78,18 +77,17 @@ TableRowsCollection::~TableRowsCollectio
 {
   // we do NOT have a ref-counted reference to mParent, so do NOT
   // release it!  this is to avoid circular references.  The
   // instantiator who provided mParent is responsible for managing our
   // reference for us.
 }
 
 JSObject*
-TableRowsCollection::WrapObject(JSContext* aCx,
-                                JS::Handle<JSObject*> aScope)
+TableRowsCollection::WrapObject(JSContext* aCx)
 {
   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)
 
--- a/content/html/content/src/MediaError.cpp
+++ b/content/html/content/src/MediaError.cpp
@@ -32,15 +32,15 @@ NS_IMETHODIMP MediaError::GetCode(uint16
 {
   if (aCode)
     *aCode = Code();
 
   return NS_OK;
 }
 
 JSObject*
-MediaError::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+MediaError::WrapObject(JSContext* aCx)
 {
   return MediaErrorBinding::Wrap(aCx, this);
 }
 
 } // namespace dom
 } // namespace mozilla
--- a/content/html/content/src/MediaError.h
+++ b/content/html/content/src/MediaError.h
@@ -29,18 +29,17 @@ public:
   // nsIDOMMediaError
   NS_DECL_NSIDOMMEDIAERROR
 
   HTMLMediaElement* GetParentObject() const
   {
     return mParent;
   }
 
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   uint16_t Code() const
   {
     return mCode;
   }
 
 private:
   nsRefPtr<HTMLMediaElement> mParent;
--- a/content/html/content/src/TimeRanges.cpp
+++ b/content/html/content/src/TimeRanges.cpp
@@ -114,15 +114,15 @@ TimeRanges::Normalize()
 
     normalized.AppendElement(current);
 
     mRanges = normalized;
   }
 }
 
 JSObject*
-TimeRanges::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+TimeRanges::WrapObject(JSContext* aCx)
 {
   return TimeRangesBinding::Wrap(aCx, this);
 }
 
 } // namespace dom
 } // namespace mozilla
--- a/content/html/content/src/TimeRanges.h
+++ b/content/html/content/src/TimeRanges.h
@@ -31,17 +31,17 @@ public:
   void Add(double aStart, double aEnd);
 
   // Returns the end time of the last range, or -1 if no ranges added.
   double GetFinalEndTime();
 
   // See http://www.whatwg.org/html/#normalized-timeranges-object
   void Normalize();
 
-  JSObject* WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope);
+  JSObject* WrapObject(JSContext* aCx);
 
   uint32_t Length() const
   {
     return mRanges.Length();
   }
 
   virtual double Start(uint32_t aIndex, ErrorResult& aRv);
 
--- a/content/html/content/src/UndoManager.h
+++ b/content/html/content/src/UndoManager.h
@@ -48,18 +48,17 @@ public:
   void ClearRedo(ErrorResult& aRv);
   void Disconnect();
 
   nsISupports* GetParentObject() const
   {
     return mHostNode;
   }
 
-  virtual JSObject* WrapObject(JSContext* aCx,
-			       JS::Handle<JSObject*> aScope) MOZ_OVERRIDE
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE
   {
     return mozilla::dom::UndoManagerBinding::Wrap(aCx, this);
   }
 
   nsITransactionManager* GetTransactionManager();
 
 protected:
   virtual ~UndoManager();
--- a/content/html/content/src/ValidityState.cpp
+++ b/content/html/content/src/ValidityState.cpp
@@ -93,16 +93,16 @@ ValidityState::GetCustomError(bool* aCus
 NS_IMETHODIMP
 ValidityState::GetValid(bool* aValid)
 {
   *aValid = Valid();
   return NS_OK;
 }
 
 JSObject*
-ValidityState::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+ValidityState::WrapObject(JSContext* aCx)
 {
   return ValidityStateBinding::Wrap(aCx, this);
 }
 
 } // namespace dom
 } // namespace mozilla
 
--- a/content/html/content/src/ValidityState.h
+++ b/content/html/content/src/ValidityState.h
@@ -23,18 +23,17 @@ public:
   NS_DECL_NSIDOMVALIDITYSTATE
 
   friend class ::nsIConstraintValidation;
 
   nsIConstraintValidation* GetParentObject() const {
     return mConstraintValidation;
   }
 
-  virtual JSObject* WrapObject(JSContext *aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext *aCx) MOZ_OVERRIDE;
 
   // Web IDL methods
   bool ValueMissing() const
   {
     return GetValidityState(nsIConstraintValidation::VALIDITY_STATE_VALUE_MISSING);
   }
   bool TypeMismatch() const
   {
--- a/content/html/content/src/nsDOMStringMap.cpp
+++ b/content/html/content/src/nsDOMStringMap.cpp
@@ -67,17 +67,17 @@ nsDOMStringMap::~nsDOMStringMap()
     // Call back to element to null out weak reference to this object.
     mElement->ClearDataset();
     mElement->RemoveMutationObserver(this);
   }
 }
 
 /* virtual */
 JSObject*
-nsDOMStringMap::WrapObject(JSContext *cx, JS::Handle<JSObject*> scope)
+nsDOMStringMap::WrapObject(JSContext *cx)
 {
   return DOMStringMapBinding::Wrap(cx, this);
 }
 
 void
 nsDOMStringMap::NamedGetter(const nsAString& aProp, bool& found,
                             DOMString& aResult) const
 {
--- a/content/html/content/src/nsDOMStringMap.h
+++ b/content/html/content/src/nsDOMStringMap.h
@@ -31,18 +31,17 @@ public:
   nsINode* GetParentObject()
   {
     return mElement;
   }
 
   nsDOMStringMap(nsGenericHTMLElement* aElement);
 
   // WebIDL API
-  virtual JSObject* WrapObject(JSContext *cx,
-                               JS::Handle<JSObject*> scope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext *cx) MOZ_OVERRIDE;
   void NamedGetter(const nsAString& aProp, bool& found,
                    mozilla::dom::DOMString& aResult) const;
   void NamedSetter(const nsAString& aProp, const nsAString& aValue,
                    mozilla::ErrorResult& rv);
   void NamedDeleter(const nsAString& aProp, bool &found);
   void GetSupportedNames(nsTArray<nsString>& aNames);
 
   js::ExpandoAndGeneration mExpandoAndGeneration;
--- a/content/media/AudioStreamTrack.cpp
+++ b/content/media/AudioStreamTrack.cpp
@@ -6,15 +6,15 @@
 #include "AudioStreamTrack.h"
 
 #include "mozilla/dom/AudioStreamTrackBinding.h"
 
 namespace mozilla {
 namespace dom {
 
 JSObject*
-AudioStreamTrack::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+AudioStreamTrack::WrapObject(JSContext* aCx)
 {
   return AudioStreamTrackBinding::Wrap(aCx, this);
 }
 
 }
 }
--- a/content/media/AudioStreamTrack.h
+++ b/content/media/AudioStreamTrack.h
@@ -12,18 +12,17 @@
 namespace mozilla {
 namespace dom {
 
 class AudioStreamTrack : public MediaStreamTrack {
 public:
   AudioStreamTrack(DOMMediaStream* aStream, TrackID aTrackID)
     : MediaStreamTrack(aStream, aTrackID) {}
 
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   virtual AudioStreamTrack* AsAudioStreamTrack() { return this; }
 
   // WebIDL
   virtual void GetKind(nsAString& aKind) { aKind.AssignLiteral("audio"); }
 };
 
 }
--- a/content/media/DOMMediaStream.cpp
+++ b/content/media/DOMMediaStream.cpp
@@ -148,17 +148,17 @@ DOMMediaStream::Destroy()
   }
   if (mStream) {
     mStream->Destroy();
     mStream = nullptr;
   }
 }
 
 JSObject*
-DOMMediaStream::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+DOMMediaStream::WrapObject(JSContext* aCx)
 {
   return dom::MediaStreamBinding::Wrap(aCx, this);
 }
 
 double
 DOMMediaStream::CurrentTime()
 {
   if (!mStream) {
@@ -345,17 +345,17 @@ DOMLocalMediaStream::~DOMLocalMediaStrea
 {
   if (mStream) {
     // Make sure Listeners of this stream know it's going away
     Stop();
   }
 }
 
 JSObject*
-DOMLocalMediaStream::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+DOMLocalMediaStream::WrapObject(JSContext* aCx)
 {
   return dom::LocalMediaStreamBinding::Wrap(aCx, this);
 }
 
 void
 DOMLocalMediaStream::Stop()
 {
   if (mStream && mStream->AsSourceStream()) {
--- a/content/media/DOMMediaStream.h
+++ b/content/media/DOMMediaStream.h
@@ -59,18 +59,17 @@ public:
 
   NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(DOMMediaStream)
   NS_DECL_CYCLE_COLLECTING_ISUPPORTS
 
   nsIDOMWindow* GetParentObject() const
   {
     return mWindow;
   }
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   // WebIDL
   double CurrentTime();
 
   void GetAudioTracks(nsTArray<nsRefPtr<AudioStreamTrack> >& aTracks);
   void GetVideoTracks(nsTArray<nsRefPtr<VideoStreamTrack> >& aTracks);
 
   MediaStream* GetStream() const { return mStream; }
@@ -221,18 +220,17 @@ class DOMLocalMediaStream : public DOMMe
                             public nsIDOMLocalMediaStream
 {
 public:
   DOMLocalMediaStream() {}
   virtual ~DOMLocalMediaStream();
 
   NS_DECL_ISUPPORTS_INHERITED
 
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   virtual void Stop();
 
   /**
    * Create an nsDOMLocalMediaStream whose underlying stream is a SourceMediaStream.
    */
   static already_AddRefed<DOMLocalMediaStream>
   CreateSourceStream(nsIDOMWindow* aWindow, TrackTypeHints aHintContents);
--- a/content/media/MediaRecorder.cpp
+++ b/content/media/MediaRecorder.cpp
@@ -631,17 +631,17 @@ MediaRecorder::RequestData(ErrorResult& 
 
   NS_DispatchToMainThread(
     new CreateAndDispatchBlobEventRunnable(mSessions.LastElement()->GetEncodedData(),
                                            this),
                                            NS_DISPATCH_NORMAL);
 }
 
 JSObject*
-MediaRecorder::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+MediaRecorder::WrapObject(JSContext* aCx)
 {
   return MediaRecorderBinding::Wrap(aCx, this);
 }
 
 /* static */ already_AddRefed<MediaRecorder>
 MediaRecorder::Constructor(const GlobalObject& aGlobal,
                            DOMMediaStream& aStream,
                            const MediaRecorderOptions& aInitDict,
--- a/content/media/MediaRecorder.h
+++ b/content/media/MediaRecorder.h
@@ -40,18 +40,17 @@ class MediaRecorder : public DOMEventTar
   class Session;
   friend class CreateAndDispatchBlobEventRunnable;
 
 public:
   MediaRecorder(DOMMediaStream&, nsPIDOMWindow* aOwnerWindow);
   virtual ~MediaRecorder();
 
   // nsWrapperCache
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   nsPIDOMWindow* GetParentObject() { return GetOwner(); }
 
   NS_DECL_ISUPPORTS_INHERITED
   NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(MediaRecorder,
                                            DOMEventTargetHelper)
 
   // WebIDL
--- a/content/media/MediaStreamTrack.h
+++ b/content/media/MediaStreamTrack.h
@@ -31,18 +31,17 @@ public:
   MediaStreamTrack(DOMMediaStream* aStream, TrackID aTrackID);
   virtual ~MediaStreamTrack();
 
   NS_DECL_ISUPPORTS_INHERITED
   NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(MediaStreamTrack,
                                            DOMEventTargetHelper)
 
   DOMMediaStream* GetParentObject() const { return mStream; }
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE = 0;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE = 0;
 
   DOMMediaStream* GetStream() const { return mStream; }
   TrackID GetTrackID() const { return mTrackID; }
   virtual AudioStreamTrack* AsAudioStreamTrack() { return nullptr; }
   virtual VideoStreamTrack* AsVideoStreamTrack() { return nullptr; }
 
   // WebIDL
   virtual void GetKind(nsAString& aKind) = 0;
--- a/content/media/TextTrack.cpp
+++ b/content/media/TextTrack.cpp
@@ -74,17 +74,17 @@ TextTrack::SetDefaultSettings()
 {
   mCueList = new TextTrackCueList(mParent);
   mActiveCueList = new TextTrackCueList(mParent);
   mCuePos = 0;
   mDirty = false;
 }
 
 JSObject*
-TextTrack::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+TextTrack::WrapObject(JSContext* aCx)
 {
   return TextTrackBinding::Wrap(aCx, this);
 }
 
 void
 TextTrack::SetMode(TextTrackMode aValue)
 {
   if (mMode != aValue) {
--- a/content/media/TextTrack.h
+++ b/content/media/TextTrack.h
@@ -55,18 +55,17 @@ public:
             const nsAString& aLabel,
             const nsAString& aLanguage,
             TextTrackMode aMode,
             TextTrackReadyState aReadyState,
             TextTrackSource aTextTrackSource);
 
   void SetDefaultSettings();
 
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   nsISupports* GetParentObject() const
   {
     return mParent;
   }
 
   TextTrackKind Kind() const
   {
--- a/content/media/TextTrackCue.cpp
+++ b/content/media/TextTrackCue.cpp
@@ -138,17 +138,17 @@ TextTrackCue::GetCueAsHTML()
 
 void
 TextTrackCue::SetTrackElement(HTMLTrackElement* aTrackElement)
 {
   mTrackElement = aTrackElement;
 }
 
 JSObject*
-TextTrackCue::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+TextTrackCue::WrapObject(JSContext* aCx)
 {
   return VTTCueBinding::Wrap(aCx, this);
 }
 
 TextTrackRegion*
 TextTrackCue::GetRegion()
 {
   return mRegion;
--- a/content/media/TextTrackCue.h
+++ b/content/media/TextTrackCue.h
@@ -45,18 +45,17 @@ public:
   }
   TextTrackCue(nsISupports* aGlobal, double aStartTime, double aEndTime,
                const nsAString& aText, ErrorResult& aRv);
 
   TextTrackCue(nsISupports* aGlobal, double aStartTime, double aEndTime,
                const nsAString& aText, HTMLTrackElement* aTrackElement,
                ErrorResult& aRv);
 
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   nsINode* GetParentObject()
   {
     return mDocument;
   }
 
   TextTrack* GetTrack() const
   {
--- a/content/media/TextTrackCueList.cpp
+++ b/content/media/TextTrackCueList.cpp
@@ -34,17 +34,17 @@ NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(
 NS_INTERFACE_MAP_END
 
 TextTrackCueList::TextTrackCueList(nsISupports* aParent) : mParent(aParent)
 {
   SetIsDOMBinding();
 }
 
 JSObject*
-TextTrackCueList::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+TextTrackCueList::WrapObject(JSContext* aCx)
 {
   return TextTrackCueListBinding::Wrap(aCx, this);
 }
 
 TextTrackCue*
 TextTrackCueList::IndexedGetter(uint32_t aIndex, bool& aFound)
 {
   aFound = aIndex < mList.Length();
--- a/content/media/TextTrackCueList.h
+++ b/content/media/TextTrackCueList.h
@@ -23,18 +23,17 @@ class TextTrackCueList MOZ_FINAL : publi
 {
 public:
   NS_DECL_CYCLE_COLLECTING_ISUPPORTS
   NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(TextTrackCueList)
 
   // TextTrackCueList WebIDL
   TextTrackCueList(nsISupports* aParent);
 
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   nsISupports* GetParentObject() const
   {
     return mParent;
   }
 
   uint32_t Length() const
   {
--- a/content/media/TextTrackList.cpp
+++ b/content/media/TextTrackList.cpp
@@ -52,17 +52,17 @@ TextTrackList::UpdateAndGetShowingCues(n
       // don't need to call it explicitly.
       mTextTracks[i]->GetActiveCueArray(cues);
       aCues.AppendElements(cues);
     }
   }
 }
 
 JSObject*
-TextTrackList::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+TextTrackList::WrapObject(JSContext* aCx)
 {
   return TextTrackListBinding::Wrap(aCx, this);
 }
 
 TextTrack*
 TextTrackList::IndexedGetter(uint32_t aIndex, bool& aFound)
 {
   aFound = aIndex < mTextTracks.Length();
--- a/content/media/TextTrackList.h
+++ b/content/media/TextTrackList.h
@@ -24,18 +24,17 @@ class TextTrackList MOZ_FINAL : public D
 {
 public:
   NS_DECL_ISUPPORTS_INHERITED
   NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(TextTrackList, DOMEventTargetHelper)
 
   TextTrackList(nsISupports* aGlobal);
   TextTrackList(nsISupports* aGlobal, TextTrackManager* aTextTrackManager);
 
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   nsISupports* GetParentObject() const
   {
     return mGlobal;
   }
 
   uint32_t Length() const
   {
--- a/content/media/TextTrackRegion.cpp
+++ b/content/media/TextTrackRegion.cpp
@@ -14,17 +14,17 @@ NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE_1(
 NS_IMPL_CYCLE_COLLECTING_ADDREF(TextTrackRegion)
 NS_IMPL_CYCLE_COLLECTING_RELEASE(TextTrackRegion)
 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)
+TextTrackRegion::WrapObject(JSContext* aCx)
 {
   return VTTRegionBinding::Wrap(aCx, this);
 }
 
 already_AddRefed<TextTrackRegion>
 TextTrackRegion::Constructor(const GlobalObject& aGlobal, ErrorResult& aRv)
 {
   nsCOMPtr<nsPIDOMWindow> window = do_QueryInterface(aGlobal.GetAsSupports());
--- a/content/media/TextTrackRegion.h
+++ b/content/media/TextTrackRegion.h
@@ -30,18 +30,17 @@ public:
   NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(TextTrackRegion)
 
   static bool RegionsEnabled(JSContext* cx, JSObject* obj)
   {
     return Preferences::GetBool("media.webvtt.enabled") &&
            Preferences::GetBool("media.webvtt.regions.enabled");
   }
 
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   nsISupports* GetParentObject() const
   {
     return mParent;
   }
 
   TextTrackRegion(nsISupports* aGlobal);
 
--- a/content/media/VideoPlaybackQuality.cpp
+++ b/content/media/VideoPlaybackQuality.cpp
@@ -30,17 +30,17 @@ VideoPlaybackQuality::VideoPlaybackQuali
 
 HTMLMediaElement*
 VideoPlaybackQuality::GetParentObject() const
 {
   return mElement;
 }
 
 JSObject*
-VideoPlaybackQuality::WrapObject(JSContext *aCx, JS::Handle<JSObject*> aScope)
+VideoPlaybackQuality::WrapObject(JSContext *aCx)
 {
   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)
--- a/content/media/VideoPlaybackQuality.h
+++ b/content/media/VideoPlaybackQuality.h
@@ -22,17 +22,17 @@ public:
   NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_NATIVE_CLASS(VideoPlaybackQuality)
 
   VideoPlaybackQuality(HTMLMediaElement* aElement, DOMHighResTimeStamp aCreationTime,
                        uint64_t aTotalFrames, uint64_t aDroppedFrames,
                        uint64_t aCorruptedFrames);
 
   HTMLMediaElement* GetParentObject() const;
 
-  JSObject* WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   DOMHighResTimeStamp CreationTime() const
   {
     return mCreationTime;
   }
 
   uint64_t TotalVideoFrames()
   {
--- a/content/media/VideoStreamTrack.cpp
+++ b/content/media/VideoStreamTrack.cpp
@@ -6,15 +6,15 @@
 #include "VideoStreamTrack.h"
 
 #include "mozilla/dom/VideoStreamTrackBinding.h"
 
 namespace mozilla {
 namespace dom {
 
 JSObject*
-VideoStreamTrack::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+VideoStreamTrack::WrapObject(JSContext* aCx)
 {
   return VideoStreamTrackBinding::Wrap(aCx, this);
 }
 
 }
 }
--- a/content/media/VideoStreamTrack.h
+++ b/content/media/VideoStreamTrack.h
@@ -12,18 +12,17 @@
 namespace mozilla {
 namespace dom {
 
 class VideoStreamTrack : public MediaStreamTrack {
 public:
   VideoStreamTrack(DOMMediaStream* aStream, TrackID aTrackID)
     : MediaStreamTrack(aStream, aTrackID) {}
 
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   virtual VideoStreamTrack* AsVideoStreamTrack() { return this; }
 
   // WebIDL
   virtual void GetKind(nsAString& aKind) { aKind.AssignLiteral("video"); }
 };
 
 }
--- a/content/media/mediasource/MediaSource.cpp
+++ b/content/media/mediasource/MediaSource.cpp
@@ -352,17 +352,17 @@ MediaSource::DurationChange(double aNewD
 
 nsPIDOMWindow*
 MediaSource::GetParentObject() const
 {
   return GetOwner();
 }
 
 JSObject*
-MediaSource::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+MediaSource::WrapObject(JSContext* aCx)
 {
   return MediaSourceBinding::Wrap(aCx, this);
 }
 
 void
 MediaSource::NotifyEvicted(double aStart, double aEnd)
 {
   // Cycle through all SourceBuffers and tell them to evict data in
--- a/content/media/mediasource/MediaSource.h
+++ b/content/media/mediasource/MediaSource.h
@@ -64,17 +64,17 @@ public:
   /** End WebIDL Methods. */
 
   NS_DECL_ISUPPORTS_INHERITED
   NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(MediaSource, DOMEventTargetHelper)
   NS_DECLARE_STATIC_IID_ACCESSOR(MOZILLA_DOM_MEDIASOURCE_IMPLEMENTATION_IID)
 
   nsPIDOMWindow* GetParentObject() const;
 
-  JSObject* WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   // Attach this MediaSource to Decoder aDecoder.  Returns false if already attached.
   bool Attach(MediaSourceDecoder* aDecoder);
   void Detach();
 
   // Set mReadyState to aState and fire the required events at the MediaSource.
   void SetReadyState(MediaSourceReadyState aState);
 
--- a/content/media/mediasource/SourceBuffer.cpp
+++ b/content/media/mediasource/SourceBuffer.cpp
@@ -276,17 +276,17 @@ SourceBuffer::~SourceBuffer()
 
 MediaSource*
 SourceBuffer::GetParentObject() const
 {
   return mMediaSource;
 }
 
 JSObject*
-SourceBuffer::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+SourceBuffer::WrapObject(JSContext* aCx)
 {
   return SourceBufferBinding::Wrap(aCx, this);
 }
 
 void
 SourceBuffer::DispatchSimpleEvent(const char* aName)
 {
   MSE_DEBUG("%p Dispatching event %s to SourceBuffer", this, aName);
--- a/content/media/mediasource/SourceBuffer.h
+++ b/content/media/mediasource/SourceBuffer.h
@@ -88,17 +88,17 @@ public:
   NS_DECL_ISUPPORTS_INHERITED
   NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(SourceBuffer, DOMEventTargetHelper)
 
   explicit SourceBuffer(MediaSource* aMediaSource, const nsACString& aType);
   ~SourceBuffer();
 
   MediaSource* GetParentObject() const;
 
-  JSObject* WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   // Notify the SourceBuffer that it has been detached from the
   // MediaSource's sourceBuffer list.
   void Detach();
   bool IsAttached() const
   {
     return mMediaSource != nullptr;
   }
--- a/content/media/mediasource/SourceBufferList.cpp
+++ b/content/media/mediasource/SourceBufferList.cpp
@@ -143,17 +143,17 @@ SourceBufferList::SourceBufferList(Media
 
 MediaSource*
 SourceBufferList::GetParentObject() const
 {
   return mMediaSource;
 }
 
 JSObject*
-SourceBufferList::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+SourceBufferList::WrapObject(JSContext* aCx)
 {
   return SourceBufferListBinding::Wrap(aCx, this);
 }
 
 NS_IMPL_CYCLE_COLLECTION_INHERITED_2(SourceBufferList, DOMEventTargetHelper,
                                      mMediaSource, mSourceBuffers)
 
 NS_IMPL_ADDREF_INHERITED(SourceBufferList, DOMEventTargetHelper)
--- a/content/media/mediasource/SourceBufferList.h
+++ b/content/media/mediasource/SourceBufferList.h
@@ -42,17 +42,17 @@ public:
   NS_DECL_ISUPPORTS_INHERITED
   NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(SourceBufferList,
                                            DOMEventTargetHelper)
 
   explicit SourceBufferList(MediaSource* aMediaSource);
 
   MediaSource* GetParentObject() const;
 
-  JSObject* WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   // Append a SourceBuffer and fire "addsourcebuffer" at the list.
   void Append(SourceBuffer* aSourceBuffer);
 
   // Remove a SourceBuffer and fire "removesourcebuffer" at the list.
   void Remove(SourceBuffer* aSourceBuffer);
 
   // Returns true if aSourceBuffer is present in the list.
--- a/content/media/webaudio/AnalyserNode.cpp
+++ b/content/media/webaudio/AnalyserNode.cpp
@@ -86,17 +86,17 @@ AnalyserNode::AnalyserNode(AudioContext*
   , mWriteIndex(0)
 {
   mStream = aContext->Graph()->CreateAudioNodeStream(new AnalyserNodeEngine(this),
                                                      MediaStreamGraph::INTERNAL_STREAM);
   AllocateBuffer();
 }
 
 JSObject*
-AnalyserNode::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+AnalyserNode::WrapObject(JSContext* aCx)
 {
   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
--- a/content/media/webaudio/AnalyserNode.h
+++ b/content/media/webaudio/AnalyserNode.h
@@ -17,18 +17,17 @@ class AudioContext;
 
 class AnalyserNode : public AudioNode
 {
 public:
   explicit AnalyserNode(AudioContext* aContext);
 
   NS_DECL_ISUPPORTS_INHERITED
 
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   void GetFloatFrequencyData(const Float32Array& aArray);
   void GetByteFrequencyData(const Uint8Array& aArray);
   void GetFloatTimeDomainData(const Float32Array& aArray);
   void GetByteTimeDomainData(const Uint8Array& aArray);
   uint32_t FftSize() const
   {
     return mAnalysisBlock.FFTSize();
--- a/content/media/webaudio/AudioBuffer.cpp
+++ b/content/media/webaudio/AudioBuffer.cpp
@@ -77,17 +77,17 @@ AudioBuffer::InitializeBuffers(uint32_t 
     }
     mJSChannels.AppendElement(array.get());
   }
 
   return true;
 }
 
 JSObject*
-AudioBuffer::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+AudioBuffer::WrapObject(JSContext* aCx)
 {
   return AudioBufferBinding::Wrap(aCx, this);
 }
 
 bool
 AudioBuffer::RestoreJSChannelData(JSContext* aJSContext)
 {
   if (mSharedChannels) {
--- a/content/media/webaudio/AudioBuffer.h
+++ b/content/media/webaudio/AudioBuffer.h
@@ -47,18 +47,17 @@ public:
   NS_INLINE_DECL_CYCLE_COLLECTING_NATIVE_REFCOUNTING(AudioBuffer)
   NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_NATIVE_CLASS(AudioBuffer)
 
   AudioContext* GetParentObject() const
   {
     return mContext;
   }
 
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   float SampleRate() const
   {
     return mSampleRate;
   }
 
   int32_t Length() const
   {
--- a/content/media/webaudio/AudioBufferSourceNode.cpp
+++ b/content/media/webaudio/AudioBufferSourceNode.cpp
@@ -530,17 +530,17 @@ AudioBufferSourceNode::AudioBufferSource
 AudioBufferSourceNode::~AudioBufferSourceNode()
 {
   if (Context()) {
     Context()->UnregisterAudioBufferSourceNode(this);
   }
 }
 
 JSObject*
-AudioBufferSourceNode::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+AudioBufferSourceNode::WrapObject(JSContext* aCx)
 {
   return AudioBufferSourceNodeBinding::Wrap(aCx, this);
 }
 
 void
 AudioBufferSourceNode::Start(double aWhen, double aOffset,
                              const Optional<double>& aDuration, ErrorResult& aRv)
 {
--- a/content/media/webaudio/AudioBufferSourceNode.h
+++ b/content/media/webaudio/AudioBufferSourceNode.h
@@ -35,18 +35,17 @@ public:
   }
   virtual AudioBufferSourceNode* AsAudioBufferSourceNode() MOZ_OVERRIDE
   {
     return this;
   }
   NS_DECL_ISUPPORTS_INHERITED
   NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(AudioBufferSourceNode, AudioNode)
 
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   void Start(double aWhen, double aOffset,
              const Optional<double>& aDuration, ErrorResult& aRv);
   void NoteOn(double aWhen, ErrorResult& aRv)
   {
     Start(aWhen, 0.0, Optional<double>(), aRv);
   }
   void NoteGrainOn(double aWhen, double aOffset,
--- a/content/media/webaudio/AudioContext.cpp
+++ b/content/media/webaudio/AudioContext.cpp
@@ -106,17 +106,17 @@ AudioContext::~AudioContext()
   if (window) {
     window->RemoveAudioContext(this);
   }
 
   UnregisterWeakMemoryReporter(this);
 }
 
 JSObject*
-AudioContext::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+AudioContext::WrapObject(JSContext* aCx)
 {
   if (mIsOffline) {
     return OfflineAudioContextBinding::Wrap(aCx, this);
   } else {
     return AudioContextBinding::Wrap(aCx, this);
   }
 }
 
--- a/content/media/webaudio/AudioContext.h
+++ b/content/media/webaudio/AudioContext.h
@@ -82,18 +82,17 @@ public:
   {
     return GetOwner();
   }
 
   void Shutdown(); // idempotent
   void Suspend();
   void Resume();
 
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   using DOMEventTargetHelper::DispatchTrustedEvent;
 
   // Constructor for regular AudioContext
   static already_AddRefed<AudioContext>
   Constructor(const GlobalObject& aGlobal, ErrorResult& aRv);
 
   // Constructor for offline AudioContext
--- a/content/media/webaudio/AudioDestinationNode.cpp
+++ b/content/media/webaudio/AudioDestinationNode.cpp
@@ -340,17 +340,17 @@ AudioDestinationNode::OfflineShutdown()
   MOZ_ASSERT(Context() && Context()->IsOffline(),
              "Should only be called on a valid OfflineAudioContext");
 
   MediaStreamGraph::DestroyNonRealtimeInstance(mStream->Graph());
   mOfflineRenderingRef.Drop(this);
 }
 
 JSObject*
-AudioDestinationNode::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+AudioDestinationNode::WrapObject(JSContext* aCx)
 {
   return AudioDestinationNodeBinding::Wrap(aCx, this);
 }
 
 void
 AudioDestinationNode::StartRendering()
 {
   mOfflineRenderingRef.Take(this);
--- a/content/media/webaudio/AudioDestinationNode.h
+++ b/content/media/webaudio/AudioDestinationNode.h
@@ -35,18 +35,17 @@ public:
                        float aSampleRate = 0.0f);
 
   virtual void DestroyMediaStream() MOZ_OVERRIDE;
 
   NS_DECL_ISUPPORTS_INHERITED
   NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(AudioDestinationNode, AudioNode)
   NS_DECL_NSIAUDIOCHANNELAGENTCALLBACK
 
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   virtual uint16_t NumberOfOutputs() const MOZ_FINAL MOZ_OVERRIDE
   {
     return 0;
   }
 
   uint32_t MaxChannelCount() const;
   virtual void SetChannelCount(uint32_t aChannelCount,
--- a/content/media/webaudio/AudioListener.cpp
+++ b/content/media/webaudio/AudioListener.cpp
@@ -25,17 +25,17 @@ AudioListener::AudioListener(AudioContex
   , mDopplerFactor(1.)
   , mSpeedOfSound(343.3) // meters/second
 {
   MOZ_ASSERT(aContext);
   SetIsDOMBinding();
 }
 
 JSObject*
-AudioListener::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+AudioListener::WrapObject(JSContext* aCx)
 {
   return AudioListenerBinding::Wrap(aCx, this);
 }
 
 void
 AudioListener::SetOrientation(double aX, double aY, double aZ,
                               double aXUp, double aYUp, double aZUp)
 {
--- a/content/media/webaudio/AudioListener.h
+++ b/content/media/webaudio/AudioListener.h
@@ -32,18 +32,17 @@ public:
 
   size_t SizeOfIncludingThis(mozilla::MallocSizeOf aMallocSizeOf) const;
 
   AudioContext* GetParentObject() const
   {
     return mContext;
   }
 
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   double DopplerFactor() const
   {
     return mDopplerFactor;
   }
   void SetDopplerFactor(double aDopplerFactor)
   {
     if (WebAudioUtils::FuzzyEqual(mDopplerFactor, aDopplerFactor)) {
--- a/content/media/webaudio/AudioParam.cpp
+++ b/content/media/webaudio/AudioParam.cpp
@@ -55,17 +55,17 @@ AudioParam::AudioParam(AudioNode* aNode,
 }
 
 AudioParam::~AudioParam()
 {
   MOZ_ASSERT(mInputNodes.IsEmpty());
 }
 
 JSObject*
-AudioParam::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+AudioParam::WrapObject(JSContext* aCx)
 {
   return AudioParamBinding::Wrap(aCx, this);
 }
 
 void
 AudioParam::DisconnectFromGraphAndDestroyStream()
 {
   // Addref this temporarily so the refcount bumping below doesn't destroy us
--- a/content/media/webaudio/AudioParam.h
+++ b/content/media/webaudio/AudioParam.h
@@ -40,18 +40,17 @@ public:
     return mNode->Context();
   }
 
   double DOMTimeToStreamTime(double aTime) const
   {
     return mNode->Context()->DOMTimeToStreamTime(aTime);
   }
 
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   // We override SetValueCurveAtTime to convert the Float32Array to the wrapper
   // object.
   void SetValueCurveAtTime(const Float32Array& aValues, double aStartTime, double aDuration, ErrorResult& aRv)
   {
     if (!WebAudioUtils::IsTimeValid(aStartTime)) {
       aRv.Throw(NS_ERROR_DOM_NOT_SUPPORTED_ERR);
       return;
--- a/content/media/webaudio/AudioProcessingEvent.cpp
+++ b/content/media/webaudio/AudioProcessingEvent.cpp
@@ -26,17 +26,17 @@ AudioProcessingEvent::AudioProcessingEve
   : Event(aOwner, aPresContext, aEvent)
   , mPlaybackTime(0.0)
   , mNode(aOwner)
 {
   SetIsDOMBinding();
 }
 
 JSObject*
-AudioProcessingEvent::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+AudioProcessingEvent::WrapObject(JSContext* aCx)
 {
   return AudioProcessingEventBinding::Wrap(aCx, this);
 }
 
 void
 AudioProcessingEvent::LazilyCreateBuffer(nsRefPtr<AudioBuffer>& aBuffer,
                                          uint32_t aNumberOfChannels)
 {
--- a/content/media/webaudio/AudioProcessingEvent.h
+++ b/content/media/webaudio/AudioProcessingEvent.h
@@ -20,18 +20,17 @@ public:
   AudioProcessingEvent(ScriptProcessorNode* aOwner,
                        nsPresContext* aPresContext,
                        WidgetEvent* aEvent);
 
   NS_DECL_ISUPPORTS_INHERITED
   NS_FORWARD_TO_EVENT
   NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(AudioProcessingEvent, Event)
 
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   void InitEvent(AudioBuffer* aInputBuffer,
                  uint32_t aNumberOfInputChannels,
                  double aPlaybackTime)
   {
     InitEvent(NS_LITERAL_STRING("audioprocess"), false, false);
     mInputBuffer = aInputBuffer;
     mNumberOfInputChannels = aNumberOfInputChannels;
--- a/content/media/webaudio/BiquadFilterNode.cpp
+++ b/content/media/webaudio/BiquadFilterNode.cpp
@@ -238,17 +238,17 @@ BiquadFilterNode::BiquadFilterNode(Audio
                          SendGainToStream, 0.f))
 {
   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)
+BiquadFilterNode::WrapObject(JSContext* aCx)
 {
   return BiquadFilterNodeBinding::Wrap(aCx, this);
 }
 
 void
 BiquadFilterNode::SetType(BiquadFilterType aType)
 {
   if (!Preferences::GetBool("media.webaudio.legacy.BiquadFilterNode")) {
--- a/content/media/webaudio/BiquadFilterNode.h
+++ b/content/media/webaudio/BiquadFilterNode.h
@@ -19,18 +19,17 @@ class AudioContext;
 class BiquadFilterNode : public AudioNode
 {
 public:
   explicit BiquadFilterNode(AudioContext* aContext);
 
   NS_DECL_ISUPPORTS_INHERITED
   NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(BiquadFilterNode, AudioNode)
 
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   BiquadFilterType Type() const
   {
     return mType;
   }
   void SetType(BiquadFilterType aType);
 
   AudioParam* Frequency() const
--- a/content/media/webaudio/ChannelMergerNode.cpp
+++ b/content/media/webaudio/ChannelMergerNode.cpp
@@ -63,16 +63,16 @@ ChannelMergerNode::ChannelMergerNode(Aud
               ChannelInterpretation::Speakers)
   , mInputCount(aInputCount)
 {
   mStream = aContext->Graph()->CreateAudioNodeStream(new ChannelMergerNodeEngine(this),
                                                      MediaStreamGraph::INTERNAL_STREAM);
 }
 
 JSObject*
-ChannelMergerNode::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+ChannelMergerNode::WrapObject(JSContext* aCx)
 {
   return ChannelMergerNodeBinding::Wrap(aCx, this);
 }
 
 }
 }
 
--- a/content/media/webaudio/ChannelMergerNode.h
+++ b/content/media/webaudio/ChannelMergerNode.h
@@ -17,18 +17,17 @@ class AudioContext;
 class ChannelMergerNode : public AudioNode
 {
 public:
   ChannelMergerNode(AudioContext* aContext,
                     uint16_t aInputCount);
 
   NS_DECL_ISUPPORTS_INHERITED
 
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   virtual uint16_t NumberOfInputs() const MOZ_OVERRIDE { return mInputCount; }
 
 private:
   const uint16_t mInputCount;
 };
 
 }
--- a/content/media/webaudio/ChannelSplitterNode.cpp
+++ b/content/media/webaudio/ChannelSplitterNode.cpp
@@ -55,16 +55,16 @@ ChannelSplitterNode::ChannelSplitterNode
               ChannelInterpretation::Speakers)
   , mOutputCount(aOutputCount)
 {
   mStream = aContext->Graph()->CreateAudioNodeStream(new ChannelSplitterNodeEngine(this),
                                                      MediaStreamGraph::INTERNAL_STREAM);
 }
 
 JSObject*
-ChannelSplitterNode::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+ChannelSplitterNode::WrapObject(JSContext* aCx)
 {
   return ChannelSplitterNodeBinding::Wrap(aCx, this);
 }
 
 }
 }
 
--- a/content/media/webaudio/ChannelSplitterNode.h
+++ b/content/media/webaudio/ChannelSplitterNode.h
@@ -17,18 +17,17 @@ class AudioContext;
 class ChannelSplitterNode : public AudioNode
 {
 public:
   ChannelSplitterNode(AudioContext* aContext,
                       uint16_t aOutputCount);
 
   NS_DECL_ISUPPORTS_INHERITED
 
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   virtual uint16_t NumberOfOutputs() const MOZ_OVERRIDE { return mOutputCount; }
 
 private:
   const uint16_t mOutputCount;
 };
 
 }
--- a/content/media/webaudio/ConvolverNode.cpp
+++ b/content/media/webaudio/ConvolverNode.cpp
@@ -171,17 +171,17 @@ ConvolverNode::ConvolverNode(AudioContex
               ChannelInterpretation::Speakers)
   , mNormalize(true)
 {
   ConvolverNodeEngine* engine = new ConvolverNodeEngine(this, mNormalize);
   mStream = aContext->Graph()->CreateAudioNodeStream(engine, MediaStreamGraph::INTERNAL_STREAM);
 }
 
 JSObject*
-ConvolverNode::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+ConvolverNode::WrapObject(JSContext* aCx)
 {
   return ConvolverNodeBinding::Wrap(aCx, this);
 }
 
 void
 ConvolverNode::SetBuffer(JSContext* aCx, AudioBuffer* aBuffer, ErrorResult& aRv)
 {
   if (aBuffer) {
--- a/content/media/webaudio/ConvolverNode.h
+++ b/content/media/webaudio/ConvolverNode.h
@@ -16,18 +16,17 @@ namespace dom {
 class ConvolverNode : public AudioNode
 {
 public:
   explicit ConvolverNode(AudioContext* aContext);
 
   NS_DECL_ISUPPORTS_INHERITED
   NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(ConvolverNode, AudioNode);
 
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   AudioBuffer* GetBuffer(JSContext* aCx) const
   {
     return mBuffer;
   }
 
   void SetBuffer(JSContext* aCx, AudioBuffer* aBufferi, ErrorResult& aRv);
 
--- a/content/media/webaudio/DelayNode.cpp
+++ b/content/media/webaudio/DelayNode.cpp
@@ -181,17 +181,17 @@ DelayNode::DelayNode(AudioContext* aCont
   DelayNodeEngine* engine =
     new DelayNodeEngine(this, aContext->Destination(),
                         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)
+DelayNode::WrapObject(JSContext* aCx)
 {
   return DelayNodeBinding::Wrap(aCx, this);
 }
 
 void
 DelayNode::SendDelayToStream(AudioNode* aNode)
 {
   DelayNode* This = static_cast<DelayNode*>(aNode);
--- a/content/media/webaudio/DelayNode.h
+++ b/content/media/webaudio/DelayNode.h
@@ -18,18 +18,17 @@ class AudioContext;
 class DelayNode : public AudioNode
 {
 public:
   DelayNode(AudioContext* aContext, double aMaxDelay);
 
   NS_DECL_ISUPPORTS_INHERITED
   NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(DelayNode, AudioNode)
 
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   AudioParam* DelayTime() const
   {
     return mDelay;
   }
 
   virtual const DelayNode* AsDelayNode() const MOZ_OVERRIDE
   {
--- a/content/media/webaudio/DynamicsCompressorNode.cpp
+++ b/content/media/webaudio/DynamicsCompressorNode.cpp
@@ -201,17 +201,17 @@ DynamicsCompressorNode::DynamicsCompress
                             SendReleaseToStream, 0.25f))
 {
   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)
+DynamicsCompressorNode::WrapObject(JSContext* aCx)
 {
   return DynamicsCompressorNodeBinding::Wrap(aCx, this);
 }
 
 void
 DynamicsCompressorNode::SendThresholdToStream(AudioNode* aNode)
 {
   DynamicsCompressorNode* This = static_cast<DynamicsCompressorNode*>(aNode);
--- a/content/media/webaudio/DynamicsCompressorNode.h
+++ b/content/media/webaudio/DynamicsCompressorNode.h
@@ -18,18 +18,17 @@ class AudioContext;
 class DynamicsCompressorNode : public AudioNode
 {
 public:
   explicit DynamicsCompressorNode(AudioContext* aContext);
 
   NS_DECL_ISUPPORTS_INHERITED
   NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(DynamicsCompressorNode, AudioNode)
 
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   AudioParam* Threshold() const
   {
     return mThreshold;
   }
 
   AudioParam* Knee() const
   {
--- a/content/media/webaudio/GainNode.cpp
+++ b/content/media/webaudio/GainNode.cpp
@@ -115,17 +115,17 @@ GainNode::GainNode(AudioContext* aContex
                          SendGainToStream, 1.0f))
 {
   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)
+GainNode::WrapObject(JSContext* aCx)
 {
   return GainNodeBinding::Wrap(aCx, this);
 }
 
 void
 GainNode::SendGainToStream(AudioNode* aNode)
 {
   GainNode* This = static_cast<GainNode*>(aNode);
--- a/content/media/webaudio/GainNode.h
+++ b/content/media/webaudio/GainNode.h
@@ -18,18 +18,17 @@ class AudioContext;
 class GainNode : public AudioNode
 {
 public:
   explicit GainNode(AudioContext* aContext);
 
   NS_DECL_ISUPPORTS_INHERITED
   NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(GainNode, AudioNode)
 
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   AudioParam* Gain() const
   {
     return mGain;
   }
 
 private:
   static void SendGainToStream(AudioNode* aNode);
--- a/content/media/webaudio/MediaElementAudioSourceNode.cpp
+++ b/content/media/webaudio/MediaElementAudioSourceNode.cpp
@@ -12,15 +12,15 @@ namespace dom {
 
 MediaElementAudioSourceNode::MediaElementAudioSourceNode(AudioContext* aContext,
                                                          DOMMediaStream* aStream)
   : MediaStreamAudioSourceNode(aContext, aStream)
 {
 }
 
 JSObject*
-MediaElementAudioSourceNode::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+MediaElementAudioSourceNode::WrapObject(JSContext* aCx)
 {
   return MediaElementAudioSourceNodeBinding::Wrap(aCx, this);
 }
 
 }
 }
--- a/content/media/webaudio/MediaElementAudioSourceNode.h
+++ b/content/media/webaudio/MediaElementAudioSourceNode.h
@@ -13,15 +13,15 @@ namespace mozilla {
 namespace dom {
 
 class MediaElementAudioSourceNode : public MediaStreamAudioSourceNode
 {
 public:
   MediaElementAudioSourceNode(AudioContext* aContext,
                               DOMMediaStream* aStream);
 
-  virtual JSObject* WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 };
 
 }
 }
 
 #endif
--- a/content/media/webaudio/MediaStreamAudioDestinationNode.cpp
+++ b/content/media/webaudio/MediaStreamAudioDestinationNode.cpp
@@ -87,15 +87,15 @@ MediaStreamAudioDestinationNode::Destroy
   AudioNode::DestroyMediaStream();
   if (mPort) {
     mPort->Destroy();
     mPort = nullptr;
   }
 }
 
 JSObject*
-MediaStreamAudioDestinationNode::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+MediaStreamAudioDestinationNode::WrapObject(JSContext* aCx)
 {
   return MediaStreamAudioDestinationNodeBinding::Wrap(aCx, this);
 }
 
 }
 }
--- a/content/media/webaudio/MediaStreamAudioDestinationNode.h
+++ b/content/media/webaudio/MediaStreamAudioDestinationNode.h
@@ -15,18 +15,17 @@ namespace dom {
 class MediaStreamAudioDestinationNode : public AudioNode
 {
 public:
   explicit MediaStreamAudioDestinationNode(AudioContext* aContext);
 
   NS_DECL_ISUPPORTS_INHERITED
   NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(MediaStreamAudioDestinationNode, AudioNode)
 
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   virtual uint16_t NumberOfOutputs() const MOZ_FINAL MOZ_OVERRIDE
   {
     return 0;
   }
 
   virtual void DestroyMediaStream() MOZ_OVERRIDE;
 
--- a/content/media/webaudio/MediaStreamAudioSourceNode.cpp
+++ b/content/media/webaudio/MediaStreamAudioSourceNode.cpp
@@ -55,16 +55,16 @@ MediaStreamAudioSourceNode::DestroyMedia
   if (mInputPort) {
     mInputPort->Destroy();
     mInputPort = nullptr;
   }
   AudioNode::DestroyMediaStream();
 }
 
 JSObject*
-MediaStreamAudioSourceNode::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+MediaStreamAudioSourceNode::WrapObject(JSContext* aCx)
 {
   return MediaStreamAudioSourceNodeBinding::Wrap(aCx, this);
 }
 
 }
 }
 
--- a/content/media/webaudio/MediaStreamAudioSourceNode.h
+++ b/content/media/webaudio/MediaStreamAudioSourceNode.h
@@ -20,17 +20,17 @@ class MediaStreamAudioSourceNode : publi
 public:
   MediaStreamAudioSourceNode(AudioContext* aContext, DOMMediaStream* aMediaStream);
   // Define constructor out-of-line so we can forward-declare DOMMediaStream
   virtual ~MediaStreamAudioSourceNode();
 
   NS_DECL_ISUPPORTS_INHERITED
   NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(MediaStreamAudioSourceNode, AudioNode)
 
-  virtual JSObject* WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   virtual void DestroyMediaStream() MOZ_OVERRIDE;
 
   virtual uint16_t NumberOfInputs() const MOZ_OVERRIDE { return 0; }
 
 private:
   nsRefPtr<MediaInputPort> mInputPort;
   nsRefPtr<DOMMediaStream> mInputStream;
--- a/content/media/webaudio/OfflineAudioCompletionEvent.cpp
+++ b/content/media/webaudio/OfflineAudioCompletionEvent.cpp
@@ -24,16 +24,16 @@ OfflineAudioCompletionEvent::OfflineAudi
                                                          nsPresContext* aPresContext,
                                                          WidgetEvent* aEvent)
   : Event(aOwner, aPresContext, aEvent)
 {
   SetIsDOMBinding();
 }
 
 JSObject*
-OfflineAudioCompletionEvent::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+OfflineAudioCompletionEvent::WrapObject(JSContext* aCx)
 {
   return OfflineAudioCompletionEventBinding::Wrap(aCx, this);
 }
 
 }
 }
 
--- a/content/media/webaudio/OfflineAudioCompletionEvent.h
+++ b/content/media/webaudio/OfflineAudioCompletionEvent.h
@@ -21,18 +21,17 @@ public:
   OfflineAudioCompletionEvent(AudioContext* aOwner,
                               nsPresContext* aPresContext,
                               WidgetEvent* aEvent);
 
   NS_DECL_ISUPPORTS_INHERITED
   NS_FORWARD_TO_EVENT
   NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(OfflineAudioCompletionEvent, Event)
 
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   void InitEvent(AudioBuffer* aRenderedBuffer)
   {
     InitEvent(NS_LITERAL_STRING("complete"), false, false);
     mRenderedBuffer = aRenderedBuffer;
   }
 
   AudioBuffer* RenderedBuffer() const
--- a/content/media/webaudio/OscillatorNode.cpp
+++ b/content/media/webaudio/OscillatorNode.cpp
@@ -508,17 +508,17 @@ OscillatorNode::OscillatorNode(AudioCont
   mStream->AddMainThreadListener(this);
 }
 
 OscillatorNode::~OscillatorNode()
 {
 }
 
 JSObject*
-OscillatorNode::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+OscillatorNode::WrapObject(JSContext* aCx)
 {
   return OscillatorNodeBinding::Wrap(aCx, this);
 }
 
 void
 OscillatorNode::SendFrequencyToStream(AudioNode* aNode)
 {
   OscillatorNode* This = static_cast<OscillatorNode*>(aNode);
--- a/content/media/webaudio/OscillatorNode.h
+++ b/content/media/webaudio/OscillatorNode.h
@@ -23,18 +23,17 @@ class OscillatorNode : public AudioNode,
 {
 public:
   explicit OscillatorNode(AudioContext* aContext);
   virtual ~OscillatorNode();
 
   NS_DECL_ISUPPORTS_INHERITED
   NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(OscillatorNode, AudioNode)
 
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   virtual void DestroyMediaStream() MOZ_OVERRIDE
   {
     if (mStream) {
       mStream->RemoveMainThreadListener(this);
     }
     AudioNode::DestroyMediaStream();
   }
--- a/content/media/webaudio/PannerNode.cpp
+++ b/content/media/webaudio/PannerNode.cpp
@@ -238,17 +238,17 @@ PannerNode::PannerNode(AudioContext* aCo
 PannerNode::~PannerNode()
 {
   if (Context()) {
     Context()->UnregisterPannerNode(this);
   }
 }
 
 JSObject*
-PannerNode::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+PannerNode::WrapObject(JSContext* aCx)
 {
   return PannerNodeBinding::Wrap(aCx, this);
 }
 
 void PannerNode::DestroyMediaStream()
 {
   if (Context()) {
     Context()->UnregisterPannerNode(this);
--- a/content/media/webaudio/PannerNode.h
+++ b/content/media/webaudio/PannerNode.h
@@ -25,18 +25,17 @@ class PannerNode : public AudioNode,
                    public SupportsWeakPtr<PannerNode>
 {
 public:
   MOZ_DECLARE_REFCOUNTED_TYPENAME(PannerNode)
   explicit PannerNode(AudioContext* aContext);
   virtual ~PannerNode();
 
 
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   virtual void DestroyMediaStream() MOZ_OVERRIDE;
 
   virtual void SetChannelCount(uint32_t aChannelCount, ErrorResult& aRv) MOZ_OVERRIDE
   {
     if (aChannelCount > 2) {
       aRv.Throw(NS_ERROR_DOM_NOT_SUPPORTED_ERR);
       return;
--- a/content/media/webaudio/PeriodicWave.cpp
+++ b/content/media/webaudio/PeriodicWave.cpp
@@ -40,16 +40,16 @@ PeriodicWave::PeriodicWave(AudioContext*
   }
   PodCopy(buffer, aRealData, aLength);
   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)
+PeriodicWave::WrapObject(JSContext* aCx)
 {
   return PeriodicWaveBinding::Wrap(aCx, this);
 }
 
 } // namespace dom
 } // namespace mozilla
 
--- a/content/media/webaudio/PeriodicWave.h
+++ b/content/media/webaudio/PeriodicWave.h
@@ -30,18 +30,17 @@ public:
   NS_INLINE_DECL_CYCLE_COLLECTING_NATIVE_REFCOUNTING(PeriodicWave)
   NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_NATIVE_CLASS(PeriodicWave)
 
   AudioContext* GetParentObject() const
   {
     return mContext;
   }
 
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   uint32_t DataLength() const
   {
     return mLength;
   }
 
   ThreadSharedFloatArrayBufferList* GetThreadSharedBuffer() const
   {
--- a/content/media/webaudio/ScriptProcessorNode.cpp
+++ b/content/media/webaudio/ScriptProcessorNode.cpp
@@ -446,16 +446,16 @@ ScriptProcessorNode::ScriptProcessorNode
   engine->SetSourceStream(static_cast<AudioNodeStream*> (mStream.get()));
 }
 
 ScriptProcessorNode::~ScriptProcessorNode()
 {
 }
 
 JSObject*
-ScriptProcessorNode::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+ScriptProcessorNode::WrapObject(JSContext* aCx)
 {
   return ScriptProcessorNodeBinding::Wrap(aCx, this);
 }
 
 }
 }
 
--- a/content/media/webaudio/ScriptProcessorNode.h
+++ b/content/media/webaudio/ScriptProcessorNode.h
@@ -24,18 +24,17 @@ public:
                       uint32_t aNumberOfInputChannels,
                       uint32_t aNumberOfOutputChannels);
   virtual ~ScriptProcessorNode();
 
   NS_DECL_ISUPPORTS_INHERITED
 
   IMPL_EVENT_HANDLER(audioprocess)
 
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   virtual void Connect(AudioNode& aDestination, uint32_t aOutput,
                        uint32_t aInput, ErrorResult& aRv) MOZ_OVERRIDE
   {
     AudioNode::Connect(aDestination, aOutput, aInput, aRv);
     if (!aRv.Failed()) {
       MarkActive();
     }
--- a/content/media/webaudio/WaveShaperNode.cpp
+++ b/content/media/webaudio/WaveShaperNode.cpp
@@ -272,17 +272,17 @@ WaveShaperNode::~WaveShaperNode()
 void
 WaveShaperNode::ClearCurve()
 {
   mCurve = nullptr;
   mozilla::DropJSObjects(this);
 }
 
 JSObject*
-WaveShaperNode::WrapObject(JSContext *aCx, JS::Handle<JSObject*> aScope)
+WaveShaperNode::WrapObject(JSContext *aCx)
 {
   return WaveShaperNodeBinding::Wrap(aCx, this);
 }
 
 void
 WaveShaperNode::SetCurve(const Nullable<Float32Array>& aCurve)
 {
   nsTArray<float> curve;
--- a/content/media/webaudio/WaveShaperNode.h
+++ b/content/media/webaudio/WaveShaperNode.h
@@ -20,18 +20,17 @@ class WaveShaperNode : public AudioNode
 {
 public:
   explicit WaveShaperNode(AudioContext *aContext);
   virtual ~WaveShaperNode();
 
   NS_DECL_ISUPPORTS_INHERITED
   NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS_INHERITED(WaveShaperNode, AudioNode)
 
-  virtual JSObject* WrapObject(JSContext *aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext *aCx) MOZ_OVERRIDE;
 
   JSObject* GetCurve(JSContext* aCx) const
   {
     return mCurve;
   }
   void SetCurve(const Nullable<Float32Array>& aData);
 
   OverSampleType Oversample() const
--- a/content/media/webspeech/recognition/SpeechGrammar.cpp
+++ b/content/media/webspeech/recognition/SpeechGrammar.cpp
@@ -39,17 +39,17 @@ SpeechGrammar::Constructor(const GlobalO
 
 nsISupports*
 SpeechGrammar::GetParentObject() const
 {
   return mParent;
 }
 
 JSObject*
-SpeechGrammar::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+SpeechGrammar::WrapObject(JSContext* aCx)
 {
   return SpeechGrammarBinding::Wrap(aCx, this);
 }
 
 void
 SpeechGrammar::GetSrc(nsString& aRetVal, ErrorResult& aRv) const
 {
   aRv.Throw(NS_ERROR_NOT_IMPLEMENTED);
--- a/content/media/webspeech/recognition/SpeechGrammar.h
+++ b/content/media/webspeech/recognition/SpeechGrammar.h
@@ -28,18 +28,17 @@ public:
   SpeechGrammar(nsISupports* aParent);
   ~SpeechGrammar();
 
   NS_DECL_CYCLE_COLLECTING_ISUPPORTS
   NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(SpeechGrammar)
 
   nsISupports* GetParentObject() const;
 
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   static SpeechGrammar* Constructor(const GlobalObject& aGlobal,
                                     ErrorResult& aRv);
 
   void GetSrc(nsString& aRetVal, ErrorResult& aRv) const;
 
   void SetSrc(const nsAString& aArg, ErrorResult& aRv);
 
--- a/content/media/webspeech/recognition/SpeechGrammarList.cpp
+++ b/content/media/webspeech/recognition/SpeechGrammarList.cpp
@@ -33,17 +33,17 @@ SpeechGrammarList::~SpeechGrammarList()
 SpeechGrammarList*
 SpeechGrammarList::Constructor(const GlobalObject& aGlobal,
                                ErrorResult& aRv)
 {
   return new SpeechGrammarList(aGlobal.GetAsSupports());
 }
 
 JSObject*
-SpeechGrammarList::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+SpeechGrammarList::WrapObject(JSContext* aCx)
 {
   return SpeechGrammarListBinding::Wrap(aCx, this);
 }
 
 nsISupports*
 SpeechGrammarList::GetParentObject() const
 {
   return mParent;
--- a/content/media/webspeech/recognition/SpeechGrammarList.h
+++ b/content/media/webspeech/recognition/SpeechGrammarList.h
@@ -34,18 +34,17 @@ public:
   NS_DECL_CYCLE_COLLECTING_ISUPPORTS
   NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(SpeechGrammarList)
 
   SpeechGrammarList* Constructor(const GlobalObject& aGlobal,
                                  ErrorResult& aRv);
 
   nsISupports* GetParentObject() const;
 
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   uint32_t Length() const;
 
   already_AddRefed<SpeechGrammar> Item(uint32_t aIndex, ErrorResult& aRv);
 
   void AddFromURI(const nsAString& aSrc, const Optional<float>& aWeight, ErrorResult& aRv);
 
   void AddFromString(const nsAString& aString, const Optional<float>& aWeight, ErrorResult& aRv);
--- a/content/media/webspeech/recognition/SpeechRecognition.cpp
+++ b/content/media/webspeech/recognition/SpeechRecognition.cpp
@@ -101,17 +101,17 @@ void
 SpeechRecognition::SetState(FSMState state)
 {
   mCurrentState = state;
   SR_LOG("Transitioned to state %s", GetName(mCurrentState));
   return;
 }
 
 JSObject*
-SpeechRecognition::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+SpeechRecognition::WrapObject(JSContext* aCx)
 {
   return SpeechRecognitionBinding::Wrap(aCx, this);
 }
 
 already_AddRefed<SpeechRecognition>
 SpeechRecognition::Constructor(const GlobalObject& aGlobal,
                                ErrorResult& aRv)
 {
--- a/content/media/webspeech/recognition/SpeechRecognition.h
+++ b/content/media/webspeech/recognition/SpeechRecognition.h
@@ -63,18 +63,17 @@ public:
   virtual ~SpeechRecognition() {};
 
   NS_DECL_ISUPPORTS_INHERITED
 
   NS_DECL_NSIOBSERVER
 
   nsISupports* GetParentObject() const;
 
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   static already_AddRefed<SpeechRecognition>
   Constructor(const GlobalObject& aGlobal, ErrorResult& aRv);
 
   already_AddRefed<SpeechGrammarList> GetGrammars(ErrorResult& aRv) const;
 
   void SetGrammars(mozilla::dom::SpeechGrammarList& aArg, ErrorResult& aRv);
 
--- a/content/media/webspeech/recognition/SpeechRecognitionAlternative.cpp
+++ b/content/media/webspeech/recognition/SpeechRecognitionAlternative.cpp
@@ -29,18 +29,17 @@ SpeechRecognitionAlternative::SpeechReco
   SetIsDOMBinding();
 }
 
 SpeechRecognitionAlternative::~SpeechRecognitionAlternative()
 {
 }
 
 JSObject*
-SpeechRecognitionAlternative::WrapObject(JSContext* aCx,
-                                         JS::Handle<JSObject*> aScope)
+SpeechRecognitionAlternative::WrapObject(JSContext* aCx)
 {
   return SpeechRecognitionAlternativeBinding::Wrap(aCx, this);
 }
 
 nsISupports*
 SpeechRecognitionAlternative::GetParentObject() const
 {
   return static_cast<DOMEventTargetHelper*>(mParent.get());
--- a/content/media/webspeech/recognition/SpeechRecognitionAlternative.h
+++ b/content/media/webspeech/recognition/SpeechRecognitionAlternative.h
@@ -27,18 +27,17 @@ public:
   SpeechRecognitionAlternative(SpeechRecognition* aParent);
   ~SpeechRecognitionAlternative();
 
   NS_DECL_CYCLE_COLLECTING_ISUPPORTS
   NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(SpeechRecognitionAlternative)
 
   nsISupports* GetParentObject() const;
 
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   void GetTranscript(nsString& aRetVal) const;
 
   float Confidence() const;
 
   nsString mTranscript;
   float mConfidence;
 private:
--- a/content/media/webspeech/recognition/SpeechRecognitionResult.cpp
+++ b/content/media/webspeech/recognition/SpeechRecognitionResult.cpp
@@ -26,18 +26,17 @@ SpeechRecognitionResult::SpeechRecogniti
   SetIsDOMBinding();
 }
 
 SpeechRecognitionResult::~SpeechRecognitionResult()
 {
 }
 
 JSObject*
-SpeechRecognitionResult::WrapObject(JSContext* aCx,
-                                    JS::Handle<JSObject*> aScope)
+SpeechRecognitionResult::WrapObject(JSContext* aCx)
 {
   return SpeechRecognitionResultBinding::Wrap(aCx, this);
 }
 
 nsISupports*
 SpeechRecognitionResult::GetParentObject() const
 {
   return static_cast<DOMEventTargetHelper*>(mParent.get());
--- a/content/media/webspeech/recognition/SpeechRecognitionResult.h
+++ b/content/media/webspeech/recognition/SpeechRecognitionResult.h
@@ -28,18 +28,17 @@ public:
   SpeechRecognitionResult(SpeechRecognition* aParent);
   ~SpeechRecognitionResult();
 
   NS_DECL_CYCLE_COLLECTING_ISUPPORTS
   NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(SpeechRecognitionResult)
 
   nsISupports* GetParentObject() const;
 
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   uint32_t Length() const;
 
   already_AddRefed<SpeechRecognitionAlternative> Item(uint32_t aIndex);
 
   bool Final() const;
 
   already_AddRefed<SpeechRecognitionAlternative> IndexedGetter(uint32_t aIndex, bool& aPresent);
--- a/content/media/webspeech/recognition/SpeechRecognitionResultList.cpp
+++ b/content/media/webspeech/recognition/SpeechRecognitionResultList.cpp
@@ -33,18 +33,17 @@ SpeechRecognitionResultList::~SpeechReco
 
 nsISupports*
 SpeechRecognitionResultList::GetParentObject() const
 {
   return static_cast<DOMEventTargetHelper*>(mParent.get());
 }
 
 JSObject*
-SpeechRecognitionResultList::WrapObject(JSContext* aCx,
-                                        JS::Handle<JSObject*> aScope)
+SpeechRecognitionResultList::WrapObject(JSContext* aCx)
 {
   return SpeechRecognitionResultListBinding::Wrap(aCx, this);
 }
 
 already_AddRefed<SpeechRecognitionResult>
 SpeechRecognitionResultList::IndexedGetter(uint32_t aIndex, bool& aPresent)
 {
   if (aIndex >= Length()) {
--- a/content/media/webspeech/recognition/SpeechRecognitionResultList.h
+++ b/content/media/webspeech/recognition/SpeechRecognitionResultList.h
@@ -29,18 +29,17 @@ public:
   SpeechRecognitionResultList(SpeechRecognition* aParent);
   ~SpeechRecognitionResultList();
 
   NS_DECL_CYCLE_COLLECTING_ISUPPORTS
   NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(SpeechRecognitionResultList)
 
   nsISupports* GetParentObject() const;
 
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   uint32_t Length() const;
 
   already_AddRefed<SpeechRecognitionResult> Item(uint32_t aIndex);
 
   already_AddRefed<SpeechRecognitionResult> IndexedGetter(uint32_t aIndex, bool& aPresent);
 
   nsTArray<nsRefPtr<SpeechRecognitionResult> > mItems;
--- a/content/media/webspeech/synth/SpeechSynthesis.cpp
+++ b/content/media/webspeech/synth/SpeechSynthesis.cpp
@@ -80,17 +80,17 @@ SpeechSynthesis::SpeechSynthesis(nsPIDOM
   SetIsDOMBinding();
 }
 
 SpeechSynthesis::~SpeechSynthesis()
 {
 }
 
 JSObject*
-SpeechSynthesis::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+SpeechSynthesis::WrapObject(JSContext* aCx)
 {
   return SpeechSynthesisBinding::Wrap(aCx, this);
 }
 
 nsIDOMWindow*
 SpeechSynthesis::GetParentObject() const
 {
   return mParent;
--- a/content/media/webspeech/synth/SpeechSynthesis.h
+++ b/content/media/webspeech/synth/SpeechSynthesis.h
@@ -30,18 +30,17 @@ public:
   SpeechSynthesis(nsPIDOMWindow* aParent);
   virtual ~SpeechSynthesis();
 
   NS_DECL_CYCLE_COLLECTING_ISUPPORTS
   NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(SpeechSynthesis)
 
   nsIDOMWindow* GetParentObject() const;
 
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   bool Pending() const;
 
   bool Speaking() const;
 
   bool Paused() const;
 
   void Speak(SpeechSynthesisUtterance& aUtterance);
--- a/content/media/webspeech/synth/SpeechSynthesisUtterance.cpp
+++ b/content/media/webspeech/synth/SpeechSynthesisUtterance.cpp
@@ -39,18 +39,17 @@ SpeechSynthesisUtterance::SpeechSynthesi
   , mPaused(false)
 {
   SetIsDOMBinding();
 }
 
 SpeechSynthesisUtterance::~SpeechSynthesisUtterance() {}
 
 JSObject*
-SpeechSynthesisUtterance::WrapObject(JSContext* aCx,
-                                     JS::Handle<JSObject*> aScope)
+SpeechSynthesisUtterance::WrapObject(JSContext* aCx)
 {
   return SpeechSynthesisUtteranceBinding::Wrap(aCx, this);
 }
 
 nsISupports*
 SpeechSynthesisUtterance::GetParentObject() const
 {
   return GetOwner();
--- a/content/media/webspeech/synth/SpeechSynthesisUtterance.h
+++ b/content/media/webspeech/synth/SpeechSynthesisUtterance.h
@@ -33,18 +33,17 @@ public:
 
   NS_DECL_ISUPPORTS_INHERITED
   NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(SpeechSynthesisUtterance,
                                            DOMEventTargetHelper)
   NS_REALLY_FORWARD_NSIDOMEVENTTARGET(DOMEventTargetHelper)
 
   nsISupports* GetParentObject() const;
 
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   static
   already_AddRefed<SpeechSynthesisUtterance> Constructor(GlobalObject& aGlobal,
                                                          ErrorResult& aRv);
   static
   already_AddRefed<SpeechSynthesisUtterance> Constructor(GlobalObject& aGlobal,
                                                          const nsAString& aText,
                                                          ErrorResult& aRv);
--- a/content/media/webspeech/synth/SpeechSynthesisVoice.cpp
+++ b/content/media/webspeech/synth/SpeechSynthesisVoice.cpp
@@ -27,17 +27,17 @@ SpeechSynthesisVoice::SpeechSynthesisVoi
   SetIsDOMBinding();
 }
 
 SpeechSynthesisVoice::~SpeechSynthesisVoice()
 {
 }
 
 JSObject*
-SpeechSynthesisVoice::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+SpeechSynthesisVoice::WrapObject(JSContext* aCx)
 {
   return SpeechSynthesisVoiceBinding::Wrap(aCx, this);
 }
 
 nsISupports*
 SpeechSynthesisVoice::GetParentObject() const
 {
   return mParent;
--- a/content/media/webspeech/synth/SpeechSynthesisVoice.h
+++ b/content/media/webspeech/synth/SpeechSynthesisVoice.h
@@ -31,18 +31,17 @@ public:
 
   virtual ~SpeechSynthesisVoice();
 
   NS_DECL_CYCLE_COLLECTING_ISUPPORTS
   NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(SpeechSynthesisVoice)
 
   nsISupports* GetParentObject() const;
 
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   void GetVoiceURI(nsString& aRetval) const;
 
   void GetName(nsString& aRetval) const;
 
   void GetLang(nsString& aRetval) const;
 
   bool LocalService() const;
--- a/content/svg/content/src/DOMSVGAnimatedLengthList.cpp
+++ b/content/svg/content/src/DOMSVGAnimatedLengthList.cpp
@@ -25,17 +25,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)
+DOMSVGAnimatedLengthList::WrapObject(JSContext* aCx)
 {
   return dom::SVGAnimatedLengthListBinding::Wrap(aCx, this);
 }
 
 already_AddRefed<DOMSVGLengthList>
 DOMSVGAnimatedLengthList::BaseVal()
 {
   if (!mBaseVal) {
--- a/content/svg/content/src/DOMSVGAnimatedLengthList.h
+++ b/content/svg/content/src/DOMSVGAnimatedLengthList.h
@@ -154,18 +154,17 @@ public:
   /**
    * Returns true if our attribute is animating (in which case our animVal is
    * not simply a mirror of our baseVal).
    */
   bool IsAnimating() const;
 
   // WebIDL
   nsSVGElement* GetParentObject() const { return mElement; }
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
   // These aren't weak refs because mBaseVal and mAnimVal are weak
   already_AddRefed<DOMSVGLengthList> BaseVal();
   already_AddRefed<DOMSVGLengthList> AnimVal();
 
 private:
 
   /**
    * Only our static GetDOMWrapper() factory method may create objects of our
--- a/content/svg/content/src/DOMSVGAnimatedNumberList.cpp
+++ b/content/svg/content/src/DOMSVGAnimatedNumberList.cpp
@@ -30,17 +30,17 @@ NS_IMPL_CYCLE_COLLECTING_ADDREF(DOMSVGAn
 NS_IMPL_CYCLE_COLLECTING_RELEASE(DOMSVGAnimatedNumberList)
 
 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)
+DOMSVGAnimatedNumberList::WrapObject(JSContext* aCx)
 {
   return mozilla::dom::SVGAnimatedNumberListBinding::Wrap(aCx, this);
 }
 
 already_AddRefed<DOMSVGNumberList>
 DOMSVGAnimatedNumberList::BaseVal()
 {
   if (!mBaseVal) {
--- a/content/svg/content/src/DOMSVGAnimatedNumberList.h
+++ b/content/svg/content/src/DOMSVGAnimatedNumberList.h
@@ -85,18 +85,17 @@ public:
   /**
    * Returns true if our attribute is animating (in which case our animVal is
    * not simply a mirror of our baseVal).
    */
   bool IsAnimating() const;
 
   // WebIDL
   nsSVGElement* GetParentObject() const { return mElement; }
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
   // These aren't weak refs because mBaseVal and mAnimVal are weak
   already_AddRefed<DOMSVGNumberList> BaseVal();
   already_AddRefed<DOMSVGNumberList> AnimVal();
 
 private:
 
   /**
    * Only our static GetDOMWrapper() factory method may create objects of our
--- a/content/svg/content/src/DOMSVGLengthList.cpp
+++ b/content/svg/content/src/DOMSVGLengthList.cpp
@@ -64,17 +64,17 @@ NS_IMPL_CYCLE_COLLECTING_ADDREF(DOMSVGLe
 NS_IMPL_CYCLE_COLLECTING_RELEASE(DOMSVGLengthList)
 
 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)
+DOMSVGLengthList::WrapObject(JSContext *cx)
 {
   return mozilla::dom::SVGLengthListBinding::Wrap(cx, this);
 }
 
 //----------------------------------------------------------------------
 // Helper class: AutoChangeLengthListNotifier
 // Stack-based helper class to pair calls to WillChangeLengthList and
 // DidChangeLengthList.
--- a/content/svg/content/src/DOMSVGLengthList.h
+++ b/content/svg/content/src/DOMSVGLengthList.h
@@ -67,18 +67,17 @@ public:
     // Our mAList's weak ref to us must be nulled out when we die. If GC has
     // unlinked us using the cycle collector code, then that has already
     // happened, and mAList is null.
     if (mAList) {
       ( IsAnimValList() ? mAList->mAnimVal : mAList->mBaseVal ) = nullptr;
     }
   }
 
-  virtual JSObject* WrapObject(JSContext *cx,
-                               JS::Handle<JSObject*> scope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext *cx) MOZ_OVERRIDE;
 
   nsISupports* GetParentObject()
   {
     return static_cast<nsIContent*>(Element());
   }
 
   /**
    * This will normally be the same as InternalList().Length(), except if we've
--- a/content/svg/content/src/DOMSVGNumberList.cpp
+++ b/content/svg/content/src/DOMSVGNumberList.cpp
@@ -65,17 +65,17 @@ NS_IMPL_CYCLE_COLLECTING_RELEASE(DOMSVGN
 
 NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(DOMSVGNumberList)
   NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY
   NS_INTERFACE_MAP_ENTRY(nsISupports)
 NS_INTERFACE_MAP_END
 
 
 JSObject*
-DOMSVGNumberList::WrapObject(JSContext *cx, JS::Handle<JSObject*> scope)
+DOMSVGNumberList::WrapObject(JSContext *cx)
 {
   return mozilla::dom::SVGNumberListBinding::Wrap(cx, this);
 }
 
 //----------------------------------------------------------------------
 // Helper class: AutoChangeNumberListNotifier
 // Stack-based helper class to pair calls to WillChangeNumberList and
 // DidChangeNumberList.
--- a/content/svg/content/src/DOMSVGNumberList.h
+++ b/content/svg/content/src/DOMSVGNumberList.h
@@ -67,18 +67,17 @@ public:
     // Our mAList's weak ref to us must be nulled out when we die. If GC has
     // unlinked us using the cycle collector code, then that has already
     // happened, and mAList is null.
     if (mAList) {
       ( IsAnimValList() ? mAList->mAnimVal : mAList->mBaseVal ) = nullptr;
     }
   }
 
-  virtual JSObject* WrapObject(JSContext *cx,
-                               JS::Handle<JSObject*> scope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext *cx) MOZ_OVERRIDE;
 
   nsISupports* GetParentObject()
   {
     return static_cast<nsIContent*>(Element());
   }
 
   /**
    * This will normally be the same as InternalList().Length(), except if we've
--- a/content/svg/content/src/DOMSVGPathSeg.h
+++ b/content/svg/content/src/DOMSVGPathSeg.h
@@ -55,17 +55,17 @@ namespace mozilla {
   }                                                                           \
   virtual float*                                                              \
   PtrToMemberArgs()                                                           \
   {                                                                           \
     return mArgs;                                                             \
   }                                                                           \
                                                                               \
   virtual JSObject*                                                           \
-  WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope) MOZ_OVERRIDE       \
+  WrapObject(JSContext* aCx) MOZ_OVERRIDE       \
   {                                                                           \
     return dom::SVGPathSeg##segName##Binding::Wrap(aCx, this);        \
   }
 
 
 /**
  * Class DOMSVGPathSeg
  *
@@ -162,18 +162,17 @@ public:
    */
   virtual uint32_t Type() const = 0;
 
   // WebIDL
   DOMSVGPathSegList* GetParentObject() { return mList; }
   uint16_t PathSegType() const { return Type(); }
   void GetPathSegTypeAsLetter(nsAString &aPathSegTypeAsLetter)
     { aPathSegTypeAsLetter = SVGPathSegUtils::GetPathSegTypeAsLetter(Type()); }
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE = 0;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE = 0;
 
 protected:
 
   /**
    * Generic ctor for DOMSVGPathSeg objects that are created for an attribute.
    */
   DOMSVGPathSeg(DOMSVGPathSegList *aList,
                 uint32_t aListIndex,
--- a/content/svg/content/src/DOMSVGPathSegList.cpp
+++ b/content/svg/content/src/DOMSVGPathSegList.cpp
@@ -106,17 +106,17 @@ DOMSVGPathSegList::~DOMSVGPathSegList()
   // Note we must use GetAnimValKey/GetBaseValKey here, NOT InternalList()!
   void *key = mIsAnimValList ?
     InternalAList().GetAnimValKey() :
     InternalAList().GetBaseValKey();
   SVGPathSegListTearoffTable().RemoveTearoff(key);
 }
 
 JSObject*
-DOMSVGPathSegList::WrapObject(JSContext *cx, JS::Handle<JSObject*> scope)
+DOMSVGPathSegList::WrapObject(JSContext *cx)
 {
   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
--- a/content/svg/content/src/DOMSVGPathSegList.h
+++ b/content/svg/content/src/DOMSVGPathSegList.h
@@ -51,18 +51,17 @@ class DOMSVGPathSegList MOZ_FINAL : publ
 {
   friend class AutoChangePathSegListNotifier;
   friend class DOMSVGPathSeg;
 
 public:
   NS_DECL_CYCLE_COLLECTING_ISUPPORTS
   NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(DOMSVGPathSegList)
 
-  virtual JSObject* WrapObject(JSContext *cx,
-                               JS::Handle<JSObject*> scope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext *cx) MOZ_OVERRIDE;
 
   nsISupports* GetParentObject()
   {
     return static_cast<nsIContent*>(mElement);
   }
 
   /**
    * Factory method to create and return a DOMSVGPathSegList wrapper
--- a/content/svg/content/src/DOMSVGPointList.cpp
+++ b/content/svg/content/src/DOMSVGPointList.cpp
@@ -125,17 +125,17 @@ DOMSVGPointList::~DOMSVGPointList()
   // Note we must use GetAnimValKey/GetBaseValKey here, NOT InternalList()!
   void *key = mIsAnimValList ?
     InternalAList().GetAnimValKey() :
     InternalAList().GetBaseValKey();
   SVGPointListTearoffTable().RemoveTearoff(key);
 }
 
 JSObject*
-DOMSVGPointList::WrapObject(JSContext *cx, JS::Handle<JSObject*> scope)
+DOMSVGPointList::WrapObject(JSContext *cx)
 {
   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
--- a/content/svg/content/src/DOMSVGPointList.h
+++ b/content/svg/content/src/DOMSVGPointList.h
@@ -53,18 +53,17 @@ class DOMSVGPointList MOZ_FINAL : public
   friend class AutoChangePointListNotifier;
   friend class nsISVGPoint;
   friend class mozilla::DOMSVGPoint;
 
 public:
   NS_DECL_CYCLE_COLLECTING_ISUPPORTS
   NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(DOMSVGPointList)
 
-  virtual JSObject* WrapObject(JSContext *cx,
-                               JS::Handle<JSObject*> scope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext *cx) MOZ_OVERRIDE;
 
   nsISupports* GetParentObject()
   {
     return static_cast<nsIContent*>(mElement);
   }
 
   /**
    * Factory method to create and return a DOMSVGPointList wrapper
--- a/content/svg/content/src/DOMSVGStringList.cpp
+++ b/content/svg/content/src/DOMSVGStringList.cpp
@@ -85,17 +85,17 @@ DOMSVGStringList::GetDOMWrapper(SVGStrin
 
 DOMSVGStringList::~DOMSVGStringList()
 {
   // Script no longer has any references to us.
   SVGStringListTearoffTable().RemoveTearoff(&InternalList());
 }
 
 /* virtual */ JSObject*
-DOMSVGStringList::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+DOMSVGStringList::WrapObject(JSContext* aCx)
 {
   return SVGStringListBinding::Wrap(aCx, this);
 }
 
 // ----------------------------------------------------------------------------
 // SVGStringList implementation:
 
 uint32_t
--- a/content/svg/content/src/DOMSVGStringList.h
+++ b/content/svg/content/src/DOMSVGStringList.h
@@ -51,18 +51,17 @@ class DOMSVGStringList MOZ_FINAL : publi
 public:
   NS_DECL_CYCLE_COLLECTING_ISUPPORTS
   NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(DOMSVGStringList)
 
   nsSVGElement* GetParentObject() const
   {
     return mElement;
   }
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   uint32_t NumberOfItems() const;
   uint32_t Length() const;
   void Clear();
   void Initialize(const nsAString& aNewItem, nsAString& aRetval,
                   ErrorResult& aRv);
   void GetItem(uint32_t aIndex, nsAString& aRetval, ErrorResult& aRv);
   void IndexedGetter(uint32_t aIndex, bool& aFound, nsAString& aRetval);
--- a/content/svg/content/src/DOMSVGTransformList.cpp
+++ b/content/svg/content/src/DOMSVGTransformList.cpp
@@ -66,17 +66,17 @@ NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(
   NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY
   NS_INTERFACE_MAP_ENTRY(nsISupports)
 NS_INTERFACE_MAP_END
 
 //----------------------------------------------------------------------
 // DOMSVGTransformList methods:
 
 JSObject*
-DOMSVGTransformList::WrapObject(JSContext *cx, JS::Handle<JSObject*> scope)
+DOMSVGTransformList::WrapObject(JSContext *cx)
 {
   return mozilla::dom::SVGTransformListBinding::Wrap(cx, this);
 }
 
 //----------------------------------------------------------------------
 // Helper class: AutoChangeTransformListNotifier
 // Stack-based helper class to pair calls to WillChangeTransformList and
 // DidChangeTransformList.
--- a/content/svg/content/src/DOMSVGTransformList.h
+++ b/content/svg/content/src/DOMSVGTransformList.h
@@ -61,18 +61,17 @@ public:
     // Our mAList's weak ref to us must be nulled out when we die. If GC has
     // unlinked us using the cycle collector code, then that has already
     // happened, and mAList is null.
     if (mAList) {
       ( IsAnimValList() ? mAList->mAnimVal : mAList->mBaseVal ) = nullptr;
     }
   }
 
-  virtual JSObject* WrapObject(JSContext *cx,
-                               JS::Handle<JSObject*> scope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext *cx) MOZ_OVERRIDE;
 
   nsISupports* GetParentObject()
   {
     return static_cast<nsIContent*>(Element());
   }
 
   /**
    * This will normally be the same as InternalList().Length(), except if we've
--- a/content/svg/content/src/SVGAngle.cpp
+++ b/content/svg/content/src/SVGAngle.cpp
@@ -11,17 +11,17 @@ using namespace mozilla;
 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)
+SVGAngle::WrapObject(JSContext* aCx)
 {
   return SVGAngleBinding::Wrap(aCx, this);
 }
 
 uint16_t
 SVGAngle::UnitType() const
 {
   if (mType == AnimValue) {
--- a/content/svg/content/src/SVGAngle.h
+++ b/content/svg/content/src/SVGAngle.h
@@ -32,18 +32,17 @@ public:
   {
     SetIsDOMBinding();
   }
 
   ~SVGAngle();
 
   // WebIDL
   nsSVGElement* GetParentObject() { return mSVGElement; }
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
   uint16_t UnitType() const;
   float Value() const;
   void GetValueAsString(nsAString& aValue);
   void SetValue(float aValue, ErrorResult& rv);
   float ValueInSpecifiedUnits() const;
   void SetValueInSpecifiedUnits(float aValue, ErrorResult& rv);
   void SetValueAsString(const nsAString& aValue, ErrorResult& rv);
   void NewValueSpecifiedUnits(uint16_t unitType, float value, ErrorResult& rv);
--- a/content/svg/content/src/SVGAnimatedAngle.cpp
+++ b/content/svg/content/src/SVGAnimatedAngle.cpp
@@ -11,17 +11,17 @@ using namespace mozilla;
 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)
+SVGAnimatedAngle::WrapObject(JSContext* aCx)
 {
   return SVGAnimatedAngleBinding::Wrap(aCx, this);
 }
 
 already_AddRefed<SVGAngle>
 SVGAnimatedAngle::BaseVal()
 {
   return mVal->ToDOMBaseVal(mSVGElement);
--- a/content/svg/content/src/SVGAnimatedAngle.h
+++ b/content/svg/content/src/SVGAnimatedAngle.h
@@ -27,18 +27,17 @@ public:
     : mVal(aVal), mSVGElement(aSVGElement)
   {
     SetIsDOMBinding();
   }
   ~SVGAnimatedAngle();
 
   // WebIDL
   nsSVGElement* GetParentObject() { return mSVGElement; }
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
   already_AddRefed<SVGAngle> BaseVal();
   already_AddRefed<SVGAngle> AnimVal();
 
 protected:
   nsSVGAngle* mVal; // kept alive because it belongs to content
   nsRefPtr<nsSVGElement> mSVGElement;
 };
 
--- a/content/svg/content/src/SVGAnimatedBoolean.cpp
+++ b/content/svg/content/src/SVGAnimatedBoolean.cpp
@@ -10,13 +10,13 @@ using namespace mozilla;
 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)
+SVGAnimatedBoolean::WrapObject(JSContext* aCx)
 {
   return SVGAnimatedBooleanBinding::Wrap(aCx, this);
 }
 
--- a/content/svg/content/src/SVGAnimatedBoolean.h
+++ b/content/svg/content/src/SVGAnimatedBoolean.h
@@ -23,18 +23,17 @@ class SVGAnimatedBoolean MOZ_FINAL : pub
     : mVal(aVal), mSVGElement(aSVGElement)
   {
     SetIsDOMBinding();
   }
   ~SVGAnimatedBoolean();
 
   // WebIDL
   nsSVGElement* GetParentObject() const { return mSVGElement; }
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
   bool BaseVal() const { return mVal->GetBaseValue(); }
   void SetBaseVal(bool aValue) { mVal->SetBaseValue(aValue, mSVGElement); }
   bool AnimVal() const { mSVGElement->FlushAnimations(); return mVal->GetAnimValue(); }
 
 protected:
   nsSVGBoolean* mVal; // kept alive because it belongs to content
   nsRefPtr<nsSVGElement> mSVGElement;
 };
--- a/content/svg/content/src/SVGAnimatedEnumeration.cpp
+++ b/content/svg/content/src/SVGAnimatedEnumeration.cpp
@@ -18,15 +18,15 @@ NS_IMPL_CYCLE_COLLECTING_ADDREF(SVGAnima
 NS_IMPL_CYCLE_COLLECTING_RELEASE(SVGAnimatedEnumeration)
 
 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)
+SVGAnimatedEnumeration::WrapObject(JSContext* aCx)
 {
   return SVGAnimatedEnumerationBinding::Wrap(aCx, this);
 }
 
 } // namespace dom
 } // namespace mozilla
--- a/content/svg/content/src/SVGAnimatedEnumeration.h
+++ b/content/svg/content/src/SVGAnimatedEnumeration.h
@@ -21,17 +21,17 @@ public:
   NS_DECL_CYCLE_COLLECTING_ISUPPORTS
   NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(SVGAnimatedEnumeration)
 
   nsSVGElement* GetParentObject() const
   {
     return mSVGElement;
   }
 
-  virtual JSObject* WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+  virtual JSObject* WrapObject(JSContext* aCx)
     MOZ_OVERRIDE MOZ_FINAL;
 
   virtual uint16_t BaseVal() = 0;
   virtual void SetBaseVal(uint16_t aBaseVal, ErrorResult& aRv) = 0;
   virtual uint16_t AnimVal() = 0;
 
 protected:
   explicit SVGAnimatedEnumeration(nsSVGElement* aSVGElement)
--- a/content/svg/content/src/SVGAnimatedInteger.cpp
+++ b/content/svg/content/src/SVGAnimatedInteger.cpp
@@ -18,15 +18,15 @@ NS_IMPL_CYCLE_COLLECTING_ADDREF(SVGAnima
 NS_IMPL_CYCLE_COLLECTING_RELEASE(SVGAnimatedInteger)
 
 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)
+SVGAnimatedInteger::WrapObject(JSContext* aCx)
 {
   return SVGAnimatedIntegerBinding::Wrap(aCx, this);
 }
 
 } // namespace dom
 } // namespace mozilla
--- a/content/svg/content/src/SVGAnimatedInteger.h
+++ b/content/svg/content/src/SVGAnimatedInteger.h
@@ -21,17 +21,17 @@ public:
   NS_DECL_CYCLE_COLLECTING_ISUPPORTS
   NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(SVGAnimatedInteger)
 
   nsSVGElement* GetParentObject() const
   {
     return mSVGElement;
   }
 
-  virtual JSObject* WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+  virtual JSObject* WrapObject(JSContext* aCx)
     MOZ_OVERRIDE MOZ_FINAL;
 
   virtual int32_t BaseVal() = 0;
   virtual void SetBaseVal(int32_t aBaseVal) = 0;
   virtual int32_t AnimVal() = 0;
 
 protected:
   explicit SVGAnimatedInteger(nsSVGElement* aSVGElement)
--- a/content/svg/content/src/SVGAnimatedLength.cpp
+++ b/content/svg/content/src/SVGAnimatedLength.cpp
@@ -11,17 +11,17 @@ namespace mozilla {
 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)
+SVGAnimatedLength::WrapObject(JSContext* aCx)
 {
   return SVGAnimatedLengthBinding::Wrap(aCx, this);
 }
 
 already_AddRefed<nsIDOMSVGLength>
 SVGAnimatedLength::BaseVal()
 {
   nsRefPtr<nsIDOMSVGLength> angle;
--- a/content/svg/content/src/SVGAnimatedLength.h
+++ b/content/svg/content/src/SVGAnimatedLength.h
@@ -24,18 +24,17 @@ public:
   SVGAnimatedLength(nsSVGLength2* aVal, nsSVGElement *aSVGElement)
     : mVal(aVal), mSVGElement(aSVGElement)
   { SetIsDOMBinding(); }
 
   ~SVGAnimatedLength();
 
   // WebIDL
   nsSVGElement* GetParentObject() { return mSVGElement; }
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
   already_AddRefed<nsIDOMSVGLength> BaseVal();
   already_AddRefed<nsIDOMSVGLength> AnimVal();
 
 protected:
   nsSVGLength2* mVal; // kept alive because it belongs to content
   nsRefPtr<nsSVGElement> mSVGElement;
 };
 
--- a/content/svg/content/src/SVGAnimatedNumber.cpp
+++ b/content/svg/content/src/SVGAnimatedNumber.cpp
@@ -18,15 +18,15 @@ NS_IMPL_CYCLE_COLLECTING_ADDREF(SVGAnima
 NS_IMPL_CYCLE_COLLECTING_RELEASE(SVGAnimatedNumber)
 
 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)
+SVGAnimatedNumber::WrapObject(JSContext* aCx)
 {
   return SVGAnimatedNumberBinding::Wrap(aCx, this);
 }
 
 } // namespace dom
 } // namespace mozilla
--- a/content/svg/content/src/SVGAnimatedNumber.h
+++ b/content/svg/content/src/SVGAnimatedNumber.h
@@ -22,17 +22,17 @@ public:
   NS_DECL_CYCLE_COLLECTING_ISUPPORTS
   NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(SVGAnimatedNumber)
 
   nsSVGElement* GetParentObject() const
   {
     return mSVGElement;
   }
 
-  virtual JSObject* WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+  virtual JSObject* WrapObject(JSContext* aCx)
     MOZ_OVERRIDE MOZ_FINAL;
 
   virtual float BaseVal() = 0;
   virtual void SetBaseVal(float aBaseVal) = 0;
   virtual float AnimVal() = 0;
 
 protected:
   explicit SVGAnimatedNumber(nsSVGElement* aSVGElement)
--- a/content/svg/content/src/SVGAnimatedPreserveAspectRatio.cpp
+++ b/content/svg/content/src/SVGAnimatedPreserveAspectRatio.cpp
@@ -24,17 +24,17 @@ NS_IMPL_CYCLE_COLLECTING_ADDREF(DOMSVGAn
 NS_IMPL_CYCLE_COLLECTING_RELEASE(DOMSVGAnimatedPreserveAspectRatio)
 
 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)
+DOMSVGAnimatedPreserveAspectRatio::WrapObject(JSContext* aCx)
 {
   return SVGAnimatedPreserveAspectRatioBinding::Wrap(aCx, this);
 }
 
 /* Implementation */
 
 static const char *sAlignStrings[] =
   { "none", "xMinYMin", "xMidYMin", "xMaxYMin", "xMinYMid", "xMidYMid",
--- a/content/svg/content/src/SVGAnimatedPreserveAspectRatio.h
+++ b/content/svg/content/src/SVGAnimatedPreserveAspectRatio.h
@@ -123,18 +123,17 @@ class DOMSVGAnimatedPreserveAspectRatio 
     : mVal(aVal), mSVGElement(aSVGElement)
   {
     SetIsDOMBinding();
   }
   ~DOMSVGAnimatedPreserveAspectRatio();
 
   // WebIDL
   nsSVGElement* GetParentObject() const { return mSVGElement; }
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   // These aren't weak refs because new objects are returned each time
   already_AddRefed<DOMSVGPreserveAspectRatio> BaseVal();
   already_AddRefed<DOMSVGPreserveAspectRatio> AnimVal();
 
 protected:
   // kept alive because it belongs to content:
   SVGAnimatedPreserveAspectRatio* mVal;
--- a/content/svg/content/src/SVGAnimatedRect.cpp
+++ b/content/svg/content/src/SVGAnimatedRect.cpp
@@ -37,16 +37,15 @@ SVGAnimatedRect::GetBaseVal()
 
 already_AddRefed<SVGIRect>
 SVGAnimatedRect::GetAnimVal()
 {
   return mVal->ToDOMAnimVal(mSVGElement);
 }
 
 JSObject*
-SVGAnimatedRect::WrapObject(JSContext* aCx,
-                            JS::Handle<JSObject*> aScope)
+SVGAnimatedRect::WrapObject(JSContext* aCx)
 {
   return SVGAnimatedRectBinding::Wrap(aCx, this);
 }
 
 } // namespace dom
 } // namespace mozilla
--- a/content/svg/content/src/SVGAnimatedRect.h
+++ b/content/svg/content/src/SVGAnimatedRect.h
@@ -28,18 +28,17 @@ public:
 
   virtual ~SVGAnimatedRect();
 
   nsSVGElement* GetParentObject() const
   {
     return mSVGElement;
   }
 
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   already_AddRefed<SVGIRect> GetBaseVal();
 
   already_AddRefed<SVGIRect> GetAnimVal();
 
 private:
   nsSVGViewBox* mVal; // kept alive because it belongs to content
   nsRefPtr<nsSVGElement> mSVGElement;
--- a/content/svg/content/src/SVGAnimatedString.cpp
+++ b/content/svg/content/src/SVGAnimatedString.cpp
@@ -5,16 +5,15 @@
 
 #include "mozilla/dom/SVGAnimatedString.h"
 #include "mozilla/dom/SVGAnimatedStringBinding.h"
 
 namespace mozilla {
 namespace dom {
 
 JSObject*
-SVGAnimatedString::WrapObject(JSContext* aCx,
-                              JS::Handle<JSObject*> aScope)
+SVGAnimatedString::WrapObject(JSContext* aCx)
 {
   return SVGAnimatedStringBinding::Wrap(aCx, this);
 }
 
 } // namespace dom
 } // namespace mozilla
--- a/content/svg/content/src/SVGAnimatedString.h
+++ b/content/svg/content/src/SVGAnimatedString.h
@@ -16,18 +16,17 @@ class SVGAnimatedString : public nsISupp
 {
 public:
   SVGAnimatedString(nsSVGElement* aSVGElement)
     : mSVGElement(aSVGElement)
   {
     SetIsDOMBinding();
   }
 
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   // WebIDL
   nsSVGElement* GetParentObject() const
   {
     return mSVGElement;
   }
 
   virtual void GetBaseVal(nsAString& aResult) = 0;
--- a/content/svg/content/src/SVGAnimatedTransformList.cpp
+++ b/content/svg/content/src/SVGAnimatedTransformList.cpp
@@ -17,17 +17,17 @@ static
   sSVGAnimatedTransformListTearoffTable;
 
 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)
+SVGAnimatedTransformList::WrapObject(JSContext* aCx)
 {
   return SVGAnimatedTransformListBinding::Wrap(aCx, this);
 }
 
 //----------------------------------------------------------------------
 already_AddRefed<DOMSVGTransformList>
 SVGAnimatedTransformList::BaseVal()
 {
--- a/content/svg/content/src/SVGAnimatedTransformList.h
+++ b/content/svg/content/src/SVGAnimatedTransformList.h
@@ -85,18 +85,17 @@ public:
   /**
    * Returns true if our attribute is animating (in which case our animVal is
    * not simply a mirror of our baseVal).
    */
   bool IsAnimating() const;
 
   // WebIDL
   nsSVGElement* GetParentObject() const { return mElement; }
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
   // These aren't weak refs because mBaseVal and mAnimVal are weak
   already_AddRefed<DOMSVGTransformList> BaseVal();
   already_AddRefed<DOMSVGTransformList> AnimVal();
 
 private:
 
   /**
    * Only our static GetDOMWrapper() factory method may create objects of our
--- a/content/svg/content/src/SVGIRect.h
+++ b/content/svg/content/src/SVGIRect.h
@@ -26,17 +26,17 @@ public:
   {
     SetIsDOMBinding();
   }
 
   virtual ~SVGIRect()
   {
   }
 
-  JSObject* WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope) MOZ_OVERRIDE
+  JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE
   {
     return SVGRectBinding::Wrap(aCx, this);
   }
 
   virtual nsIContent* GetParentObject() const = 0;
 
   virtual float X() const = 0;
 
--- a/content/svg/content/src/SVGMatrix.cpp
+++ b/content/svg/content/src/SVGMatrix.cpp
@@ -21,17 +21,17 @@ NS_IMPL_CYCLE_COLLECTION_UNROOT_NATIVE(S
 
 SVGTransform*
 SVGMatrix::GetParentObject() const
 {
   return mTransform;
 }
 
 JSObject*
-SVGMatrix::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+SVGMatrix::WrapObject(JSContext* aCx)
 {
   return SVGMatrixBinding::Wrap(aCx, this);
 }
 
 void
 SVGMatrix::SetA(float aA, ErrorResult& rv)
 {
   if (IsAnimVal()) {
--- a/content/svg/content/src/SVGMatrix.h
+++ b/content/svg/content/src/SVGMatrix.h
@@ -76,18 +76,17 @@ public:
   }
 
   const gfxMatrix& GetMatrix() const {
     return mTransform ? mTransform->Matrixgfx() : mMatrix;
   }
 
   // WebIDL
   SVGTransform* GetParentObject() const;
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   float A() const { return static_cast<float>(GetMatrix().xx); }
   void SetA(float aA, ErrorResult& rv);
   float B() const { return static_cast<float>(GetMatrix().yx); }
   void SetB(float aB, ErrorResult& rv);
   float C() const { return static_cast<float>(GetMatrix().xy); }
   void SetC(float aC, ErrorResult& rv);
   float D() const { return static_cast<float>(GetMatrix().yy); }
--- a/content/svg/content/src/SVGPreserveAspectRatio.cpp
+++ b/content/svg/content/src/SVGPreserveAspectRatio.cpp
@@ -24,17 +24,17 @@ bool
 SVGPreserveAspectRatio::operator==(const SVGPreserveAspectRatio& aOther) const
 {
   return mAlign == aOther.mAlign &&
     mMeetOrSlice == aOther.mMeetOrSlice &&
     mDefer == aOther.mDefer;
 }
 
 JSObject*
-DOMSVGPreserveAspectRatio::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+DOMSVGPreserveAspectRatio::WrapObject(JSContext* aCx)
 {
   return mozilla::dom::SVGPreserveAspectRatioBinding::Wrap(aCx, this);
 }
 
 uint16_t
 DOMSVGPreserveAspectRatio::Align()
 {
   if (mIsBaseValue) {
--- a/content/svg/content/src/SVGPreserveAspectRatio.h
+++ b/content/svg/content/src/SVGPreserveAspectRatio.h
@@ -126,18 +126,17 @@ public:
     : mVal(aVal), mSVGElement(aSVGElement), mIsBaseValue(aIsBaseValue)
   {
     SetIsDOMBinding();
   }
   ~DOMSVGPreserveAspectRatio();
 
   // WebIDL
   nsSVGElement* GetParentObject() const { return mSVGElement; }
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   uint16_t Align();
   void SetAlign(uint16_t aAlign, ErrorResult& rv);
   uint16_t MeetOrSlice();
   void SetMeetOrSlice(uint16_t aMeetOrSlice, ErrorResult& rv);
 
 protected:
   SVGAnimatedPreserveAspectRatio* mVal; // kept alive because it belongs to mSVGElement
--- a/content/svg/content/src/SVGTransform.cpp
+++ b/content/svg/content/src/SVGTransform.cpp
@@ -56,17 +56,17 @@ NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
 NS_IMPL_CYCLE_COLLECTION_TRACE_BEGIN(SVGTransform)
 NS_IMPL_CYCLE_COLLECTION_TRACE_PRESERVED_WRAPPER
 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)
+SVGTransform::WrapObject(JSContext* aCx)
 {
   return SVGTransformBinding::Wrap(aCx, this);
 }
 
 //----------------------------------------------------------------------
 // Helper class: AutoChangeTransformNotifier
 // Stack-based helper class to pair calls to WillChangeTransformList
 // and DidChangeTransformList.
--- a/content/svg/content/src/SVGTransform.h
+++ b/content/svg/content/src/SVGTransform.h
@@ -115,18 +115,17 @@ public:
   void RemovingFromList();
 
   nsSVGTransform ToSVGTransform() const {
     return Transform();
   }
 
   // WebIDL
   DOMSVGTransformList* GetParentObject() const { return mList; }
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
   uint16_t Type() const;
   dom::SVGMatrix* GetMatrix();
   float Angle() const;
   void SetMatrix(dom::SVGMatrix& matrix, ErrorResult& rv);
   void SetTranslate(float tx, float ty, ErrorResult& rv);
   void SetScale(float sx, float sy, ErrorResult& rv);
   void SetRotate(float angle, float cx, float cy, ErrorResult& rv);
   void SetSkewX(float angle, ErrorResult& rv);
--- a/content/svg/content/src/SVGZoomEvent.h
+++ b/content/svg/content/src/SVGZoomEvent.h
@@ -28,18 +28,17 @@ public:
   NS_DECL_ISUPPORTS_INHERITED
 
   SVGZoomEvent(EventTarget* aOwner, nsPresContext* aPresContext,
                WidgetGUIEvent* aEvent);
 
   // Forward to base class
   NS_FORWARD_TO_UIEVENT
 
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE
   {
     return SVGZoomEventBinding::Wrap(aCx, this);
   }
 
   float PreviousScale() const
   {
     return mPreviousScale;
   }
--- a/content/svg/content/src/nsISVGPoint.h
+++ b/content/svg/content/src/nsISVGPoint.h
@@ -135,18 +135,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
+  virtual JSObject* WrapObject(JSContext *cx) MOZ_OVERRIDE
     { return dom::SVGPointBinding::Wrap(cx, this); }
 
   virtual nsISupports* GetParentObject() = 0;
 
 protected:
 #ifdef DEBUG
   bool IndexIsValid();
 #endif
--- a/dom/activities/src/Activity.cpp
+++ b/dom/activities/src/Activity.cpp
@@ -20,17 +20,17 @@ NS_IMPL_RELEASE_INHERITED(Activity, DOMR
 
 NS_IMPL_CYCLE_COLLECTION_INHERITED_1(Activity, DOMRequest,
                                      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)
+Activity::WrapObject(JSContext* aCx)
 {
   return MozActivityBinding::Wrap(aCx, this);
 }
 
 nsresult
 Activity::Initialize(nsPIDOMWindow* aWindow,
                      JSContext* aCx,
                      const ActivityOptions& aOptions)
--- a/dom/activities/src/Activity.h
+++ b/dom/activities/src/Activity.h
@@ -16,18 +16,17 @@ namespace mozilla {
 namespace dom {
 
 class Activity : public DOMRequest
 {
 public:
   NS_DECL_ISUPPORTS_INHERITED
   NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS_INHERITED(Activity, DOMRequest)
 
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   static already_AddRefed<Activity>
   Constructor(const GlobalObject& aOwner,
               JSContext* aCx,
               const ActivityOptions& aOptions,
               ErrorResult& aRv)
   {
     nsCOMPtr<nsPIDOMWindow> window = do_QueryInterface(aOwner.GetAsSupports());
--- a/dom/base/BarProps.cpp
+++ b/dom/base/BarProps.cpp
@@ -30,17 +30,17 @@ BarProp::~BarProp()
 
 nsPIDOMWindow*
 BarProp::GetParentObject() const
 {
   return mDOMWindow;
 }
 
 JSObject*
-BarProp::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+BarProp::WrapObject(JSContext* aCx)
 {
   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)
--- a/dom/base/BarProps.h
+++ b/dom/base/BarProps.h
@@ -36,17 +36,17 @@ public:
   virtual ~BarProp();
 
   NS_DECL_CYCLE_COLLECTING_ISUPPORTS
   NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(BarProp)
 
   nsPIDOMWindow* GetParentObject() const;
 
   virtual JSObject*
-  WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   virtual bool GetVisible(ErrorResult& aRv) = 0;
   virtual void SetVisible(bool aVisible, ErrorResult& aRv) = 0;
 
 protected:
   bool GetVisibleByFlag(uint32_t aChromeFlag, ErrorResult& aRv);
   void SetVisibleByFlag(bool aVisible, uint32_t aChromeFlag, ErrorResult &aRv);
 
--- a/dom/base/Console.cpp
+++ b/dom/base/Console.cpp
@@ -587,17 +587,17 @@ Console::Observe(nsISupports* aSubject, 
       mTimer = nullptr;
     }
   }
 
   return NS_OK;
 }
 
 JSObject*
-Console::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+Console::WrapObject(JSContext* aCx)
 {
   return ConsoleBinding::Wrap(aCx, this);
 }
 
 #define METHOD(name, string)                                          \
   void                                                                \
   Console::name(JSContext* aCx, const Sequence<JS::Value>& aData)     \
   {                                                                   \
--- a/dom/base/Console.h
+++ b/dom/base/Console.h
@@ -40,17 +40,17 @@ public:
 
   // WebIDL methods
   nsISupports* GetParentObject() const
   {
     return mWindow;
   }
 
   virtual JSObject*
-  WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   void
   Log(JSContext* aCx, const Sequence<JS::Value>& aData);
 
   void
   Info(JSContext* aCx, const Sequence<JS::Value>& aData);
 
   void
--- a/dom/base/Crypto.cpp
+++ b/dom/base/Crypto.cpp
@@ -45,17 +45,17 @@ Crypto::~Crypto()
 void
 Crypto::Init(nsIDOMWindow* aWindow)
 {
   mWindow = do_QueryInterface(aWindow);
   MOZ_ASSERT(mWindow);
 }
 
 /* virtual */ JSObject*
-Crypto::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+Crypto::WrapObject(JSContext* aCx)
 {
   return CryptoBinding::Wrap(aCx, this);
 }
 
 JSObject *
 Crypto::GetRandomValues(JSContext* aCx, const ArrayBufferView& aArray,
 			ErrorResult& aRv)
 {
--- a/dom/base/Crypto.h
+++ b/dom/base/Crypto.h
@@ -87,17 +87,17 @@ public:
 
   nsPIDOMWindow*
   GetParentObject() const
   {
     return mWindow;
   }
 
   virtual JSObject*
-  WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   static uint8_t*
   GetRandomValues(uint32_t aLength);
 
 private:
   nsCOMPtr<nsPIDOMWindow> mWindow;
 };
 
--- a/dom/base/DOMCursor.cpp
+++ b/dom/base/DOMCursor.cpp
@@ -71,15 +71,15 @@ DOMCursor::Continue(ErrorResult& aRv)
     return;
   }
 
   Reset();
   mCallback->HandleContinue();
 }
 
 /* virtual */ JSObject*
-DOMCursor::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+DOMCursor::WrapObject(JSContext* aCx)
 {
   return DOMCursorBinding::Wrap(aCx, this);
 }
 
 } // namespace dom
 } // namespace mozilla
--- a/dom/base/DOMCursor.h
+++ b/dom/base/DOMCursor.h
@@ -22,18 +22,17 @@ class DOMCursor : public DOMRequest
 public:
   NS_DECL_ISUPPORTS_INHERITED
   NS_DECL_NSIDOMDOMCURSOR
   NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(DOMCursor,
                                            DOMRequest)
 
   DOMCursor(nsPIDOMWindow* aWindow, nsICursorContinueCallback *aCallback);
 
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   bool Done() const
   {
     return mFinished;
   }
   virtual void Continue(ErrorResult& aRv);
 
   void Reset();
--- a/dom/base/DOMError.cpp
+++ b/dom/base/DOMError.cpp
@@ -54,17 +54,17 @@ DOMError::DOMError(nsPIDOMWindow* aWindo
   SetIsDOMBinding();
 }
 
 DOMError::~DOMError()
 {
 }
 
 JSObject*
-DOMError::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+DOMError::WrapObject(JSContext* aCx)
 {
   return DOMErrorBinding::Wrap(aCx, this);
 }
 
 /* static */ already_AddRefed<DOMError>
 DOMError::Constructor(const GlobalObject& aGlobal,
                       const nsAString& aName, const nsAString& aMessage,
                       ErrorResult& aRv)
--- a/dom/base/DOMError.h
+++ b/dom/base/DOMError.h
@@ -47,17 +47,17 @@ public:
   virtual ~DOMError();
 
   nsPIDOMWindow* GetParentObject() const
   {
     return mWindow;
   }
 
   virtual JSObject*
-  WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   static already_AddRefed<DOMError>
   Constructor(const GlobalObject& global, const nsAString& name,
               const nsAString& message, ErrorResult& aRv);
 
   void GetName(nsString& aRetval) const
   {
     aRetval = mName;
--- a/dom/base/DOMException.cpp
+++ b/dom/base/DOMException.cpp
@@ -469,17 +469,17 @@ Exception::Initialize(const nsACString& 
   mData = aData;
   mInner = aInner;
 
   mInitialized = true;
   return NS_OK;
 }
 
 JSObject*
-Exception::WrapObject(JSContext* cx, JS::Handle<JSObject*> scope)
+Exception::WrapObject(JSContext* cx)
 {
   return ExceptionBinding::Wrap(cx, this);
 }
 
 void
 Exception::GetMessageMoz(nsString& retval)
 {
   nsCString str;
@@ -659,17 +659,17 @@ DOMException::GetName(nsString& retval)
 
 void
 DOMException::GetMessageMoz(nsString& retval)
 {
   CopyUTF8toUTF16(mMessage, retval);
 }
 
 JSObject*
-DOMException::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+DOMException::WrapObject(JSContext* aCx)
 {
   return DOMExceptionBinding::Wrap(aCx, this);
 }
 
 /* static */already_AddRefed<DOMException>
 DOMException::Create(nsresult aRv)
 {
   nsCString name;
--- a/dom/base/DOMException.h
+++ b/dom/base/DOMException.h
@@ -53,17 +53,17 @@ public:
   NS_DECL_NSIXPCEXCEPTION
 
   // Cruft used by XPConnect for exceptions originating in JS implemented
   // components.
   bool StealJSVal(JS::Value* aVp);
   void StowJSVal(JS::Value& aVp);
 
   // WebIDL API
-  virtual JSObject* WrapObject(JSContext* cx, JS::Handle<JSObject*> scope)
+  virtual JSObject* WrapObject(JSContext* cx)
     MOZ_OVERRIDE;
 
   nsISupports* GetParentObject() const { return nullptr; }
 
   void GetMessageMoz(nsString& retval);
 
   uint32_t Result() const;
 
@@ -123,17 +123,17 @@ public:
 
   NS_DECL_ISUPPORTS_INHERITED
   NS_DECL_NSIDOMDOMEXCEPTION
 
   // nsIException overrides
   NS_IMETHOD ToString(nsACString& aReturn) MOZ_OVERRIDE;
 
   // nsWrapperCache overrides
-  virtual JSObject* WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+  virtual JSObject* WrapObject(JSContext* aCx)
     MOZ_OVERRIDE;
 
   uint16_t Code() const {
     return mCode;
   }
 
   // Intentionally shadow the nsXPCException version.
   void GetMessageMoz(nsString& retval);
--- a/dom/base/DOMRequest.cpp
+++ b/dom/base/DOMRequest.cpp
@@ -48,17 +48,17 @@ NS_IMPL_CYCLE_COLLECTION_TRACE_END
 NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION_INHERITED(DOMRequest)
   NS_INTERFACE_MAP_ENTRY(nsIDOMDOMRequest)
 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)
+DOMRequest::WrapObject(JSContext* aCx)
 {
   return DOMRequestBinding::Wrap(aCx, this);
 }
 
 NS_IMPL_EVENT_HANDLER(DOMRequest, success)
 NS_IMPL_EVENT_HANDLER(DOMRequest, error)
 
 NS_IMETHODIMP
--- a/dom/base/DOMRequest.h
+++ b/dom/base/DOMRequest.h
@@ -34,18 +34,17 @@ public:
                                                          DOMEventTargetHelper)
 
   // WrapperCache
   nsPIDOMWindow* GetParentObject() const
   {
     return GetOwner();
   }
 
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   // WebIDL Interface
   DOMRequestReadyState ReadyState() const
   {
     return mDone ? DOMRequestReadyState::Done
                  : DOMRequestReadyState::Pending;
   }
 
--- a/dom/base/MessageChannel.cpp
+++ b/dom/base/MessageChannel.cpp
@@ -54,17 +54,17 @@ MessageChannel::MessageChannel(nsPIDOMWi
 }
 
 MessageChannel::~MessageChannel()
 {
   MOZ_COUNT_DTOR(MessageChannel);
 }
 
 JSObject*
-MessageChannel::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+MessageChannel::WrapObject(JSContext* aCx)
 {
   return MessageChannelBinding::Wrap(aCx, this);
 }
 
 /* static */ already_AddRefed<MessageChannel>
 MessageChannel::Constructor(const GlobalObject& aGlobal, ErrorResult& aRv)
 {
   nsCOMPtr<nsPIDOMWindow> window = do_QueryInterface(aGlobal.GetAsSupports());
--- a/dom/base/MessageChannel.h
+++ b/dom/base/MessageChannel.h
@@ -37,17 +37,17 @@ public:
 
   nsPIDOMWindow*
   GetParentObject() const
   {
     return mWindow;
   }
 
   virtual JSObject*
-  WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   static already_AddRefed<MessageChannel>
   Constructor(const GlobalObject& aGlobal, ErrorResult& aRv);
 
   MessagePort*
   Port1() const
   {
     return mPort1;
--- a/dom/base/MessagePort.cpp
+++ b/dom/base/MessagePort.cpp
@@ -182,23 +182,20 @@ PostMessageReadTransferStructuredClone(J
   StructuredCloneInfo* scInfo = static_cast<StructuredCloneInfo*>(aClosure);
   NS_ASSERTION(scInfo, "Must have scInfo!");
 
   if (tag == SCTAG_DOM_MAP_MESSAGEPORT) {
     MessagePort* port = static_cast<MessagePort*>(data);
     port->BindToOwner(scInfo->mPort->GetOwner());
     scInfo->mPorts.Put(port, nullptr);
 
-    JS::Rooted<JSObject*> global(aCx, JS::CurrentGlobalOrNull(aCx));
-    if (global) {
-      JS::Rooted<JSObject*> obj(aCx, port->WrapObject(aCx, global));
-      if (JS_WrapObject(aCx, &obj)) {
-        MOZ_ASSERT(port->GetOwner() == scInfo->mPort->GetOwner());
-        returnObject.set(obj);
-      }
+    JS::Rooted<JSObject*> obj(aCx, port->WrapObject(aCx));
+    if (JS_WrapObject(aCx, &obj)) {
+      MOZ_ASSERT(port->GetOwner() == scInfo->mPort->GetOwner());
+      returnObject.set(obj);
     }
     return true;
   }
 
   return false;
 }
 
 static bool
@@ -379,17 +376,17 @@ MessagePort::MessagePort(nsPIDOMWindow* 
 }
 
 MessagePort::~MessagePort()
 {
   Close();
 }
 
 JSObject*
-MessagePort::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+MessagePort::WrapObject(JSContext* aCx)
 {
   return MessagePortBinding::Wrap(aCx, this);
 }
 
 void
 MessagePort::PostMessageMoz(JSContext* aCx, JS::Handle<JS::Value> aMessage,
                             const Optional<Sequence<JS::Value>>& aTransferable,
                             ErrorResult& aRv)
--- a/dom/base/MessagePort.h
+++ b/dom/base/MessagePort.h
@@ -60,17 +60,17 @@ public:
   NS_DECL_ISUPPORTS_INHERITED
   NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(MessagePort,
                                            DOMEventTargetHelper)
 
   MessagePort(nsPIDOMWindow* aWindow);
   ~MessagePort();
 
   virtual JSObject*
-  WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   virtual void
   PostMessageMoz(JSContext* aCx, JS::Handle<JS::Value> aMessage,
                  const Optional<Sequence<JS::Value>>& aTransferable,
                  ErrorResult& aRv) MOZ_OVERRIDE;
 
   virtual void
   Start() MOZ_OVERRIDE;
--- a/dom/base/MessagePortList.cpp
+++ b/dom/base/MessagePortList.cpp
@@ -15,15 +15,15 @@ NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE_2(
 NS_IMPL_CYCLE_COLLECTING_ADDREF(MessagePortList)
 NS_IMPL_CYCLE_COLLECTING_RELEASE(MessagePortList)
 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)
+MessagePortList::WrapObject(JSContext* aCx)
 {
   return MessagePortListBinding::Wrap(aCx, this);
 }
 
 } // namespace dom
 } // namespace mozilla
--- a/dom/base/MessagePortList.h
+++ b/dom/base/MessagePortList.h
@@ -35,17 +35,17 @@ public:
 
   nsISupports*
   GetParentObject() const
   {
     return mOwner;
   }
 
   virtual JSObject*
-  WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   uint32_t
   Length() const
   {
     return mPorts.Length();
   }
 
   MessagePortBase*
--- a/dom/base/Navigator.cpp
+++ b/dom/base/Navigator.cpp
@@ -1981,17 +1981,17 @@ Navigator::GetOwnPropertyNames(JSContext
     aRv.Throw(NS_ERROR_UNEXPECTED);
     return;
   }
 
   nameSpaceManager->EnumerateNavigatorNames(SaveNavigatorName, &aNames);
 }
 
 JSObject*
-Navigator::WrapObject(JSContext* cx, JS::Handle<JSObject*> scope)
+Navigator::WrapObject(JSContext* cx)
 {
   return NavigatorBinding::Wrap(cx, this);
 }
 
 /* static */
 bool
 Navigator::HasBatterySupport(JSContext* /* unused*/, JSObject* /*unused */)
 {
--- a/dom/base/Navigator.h
+++ b/dom/base/Navigator.h
@@ -307,18 +307,17 @@ public:
 
   static bool HasPermissionSettingsSupport(JSContext* aCx, JSObject* aGlobal);
 
   nsPIDOMWindow* GetParentObject() const
   {
     return GetWindow();
   }
 
-  virtual JSObject* WrapObject(JSContext* cx,
-                               JS::Handle<JSObject*> scope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* cx) MOZ_OVERRIDE;
 
 private:
   bool CheckPermission(const char* type);
   static bool CheckPermission(nsPIDOMWindow* aWindow, const char* aType);
   // GetWindowFromGlobal returns the inner window for this global, if
   // any, else null.
   static already_AddRefed<nsPIDOMWindow> GetWindowFromGlobal(JSObject* aGlobal);
 
--- a/dom/base/URL.cpp
+++ b/dom/base/URL.cpp
@@ -41,17 +41,17 @@ NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(
 NS_INTERFACE_MAP_END
 
 URL::URL(nsIURI* aURI)
   : mURI(aURI)
 {
 }
 
 JSObject*
-URL::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+URL::WrapObject(JSContext* aCx)
 {
   return URLBinding::Wrap(aCx, this);
 }
 
 /* static */ already_AddRefed<URL>
 URL::Constructor(const GlobalObject& aGlobal, const nsAString& aUrl,
                  URL& aBase, ErrorResult& aRv)
 {
--- a/dom/base/URL.h
+++ b/dom/base/URL.h
@@ -40,17 +40,17 @@ public:
 
   // WebIDL methods
   nsISupports* GetParentObject() const
   {
     return nullptr;
   }
 
   JSObject*
-  WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope);
+  WrapObject(JSContext* aCx);
 
   static already_AddRefed<URL>
   Constructor(const GlobalObject& aGlobal, const nsAString& aUrl,
               URL& aBase, ErrorResult& aRv);
   static already_AddRefed<URL>
   Constructor(const GlobalObject& aGlobal, const nsAString& aUrl,
               const nsAString& aBase, ErrorResult& aRv);
 
--- a/dom/base/URLSearchParams.cpp
+++ b/dom/base/URLSearchParams.cpp
@@ -24,17 +24,17 @@ URLSearchParams::URLSearchParams()
 }
 
 URLSearchParams::~URLSearchParams()
 {
   DeleteAll();
 }
 
 JSObject*
-URLSearchParams::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+URLSearchParams::WrapObject(JSContext* aCx)
 {
   return URLSearchParamsBinding::Wrap(aCx, this);
 }
 
 /* static */ already_AddRefed<URLSearchParams>
 URLSearchParams::Constructor(const GlobalObject& aGlobal,
                              const nsAString& aInit,
                              ErrorResult& aRv)
--- a/dom/base/URLSearchParams.h
+++ b/dom/base/URLSearchParams.h
@@ -37,17 +37,17 @@ public:
 
   // WebIDL methods
   nsISupports* GetParentObject() const
   {
     return nullptr;
   }
 
   virtual JSObject*
-  WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   static already_AddRefed<URLSearchParams>
   Constructor(const GlobalObject& aGlobal, const nsAString& aInit,
               ErrorResult& aRv);
 
   static already_AddRefed<URLSearchParams>
   Constructor(const GlobalObject& aGlobal, URLSearchParams& aInit,
               ErrorResult& aRv);
--- a/dom/base/nsGlobalWindow.cpp
+++ b/dom/base/nsGlobalWindow.cpp
@@ -7736,23 +7736,20 @@ PostMessageReadTransferStructuredClone(J
   StructuredCloneInfo* scInfo = static_cast<StructuredCloneInfo*>(aClosure);
   NS_ASSERTION(scInfo, "Must have scInfo!");
 
   if (MessageChannel::PrefEnabled() && tag == SCTAG_DOM_MAP_MESSAGEPORT) {
     MessagePort* port = static_cast<MessagePort*>(aData);
     port->BindToOwner(scInfo->window);
     scInfo->ports.Put(port, nullptr);
 
-    JS::Rooted<JSObject*> global(aCx, JS::CurrentGlobalOrNull(aCx));
-    if (global) {
-      JS::Rooted<JSObject*> obj(aCx, port->WrapObject(aCx, global));
-      if (JS_WrapObject(aCx, &obj)) {
-        MOZ_ASSERT(port->GetOwner() == scInfo->window);
-        returnObject.set(obj);
-      }
+    JS::Rooted<JSObject*> obj(aCx, port->WrapObject(aCx));
+    if (JS_WrapObject(aCx, &obj)) {
+      MOZ_ASSERT(port->GetOwner() == scInfo->window);
+      returnObject.set(obj);
     }
 
     return true;
   }
 
   return false;
 }
 
--- a/dom/base/nsGlobalWindow.h
+++ b/dom/base/nsGlobalWindow.h
@@ -340,18 +340,17 @@ public:
   nsPIDOMWindow* GetPrivateParent();
   // callback for close event
   void ReallyCloseWindow();
 
   // nsISupports
   NS_DECL_CYCLE_COLLECTING_ISUPPORTS
 
   // nsWrapperCache
-  virtual JSObject *WrapObject(JSContext *cx,
-                               JS::Handle<JSObject*> scope) MOZ_OVERRIDE
+  virtual JSObject *WrapObject(JSContext *cx) MOZ_OVERRIDE
   {
     NS_ASSERTION(IsOuterWindow(),
                  "Inner window supports nsWrapperCache, fix WrapObject!");
     return EnsureInnerWindow() ? GetWrapper() : nullptr;
   }
 
   // nsIGlobalJSObjectHolder
   virtual JSObject *GetGlobalJSObject();
--- a/dom/base/nsHistory.cpp
+++ b/dom/base/nsHistory.cpp
@@ -56,17 +56,17 @@ nsHistory::~nsHistory()
 nsPIDOMWindow*
 nsHistory::GetParentObject() const
 {
   nsCOMPtr<nsPIDOMWindow> win(do_QueryReferent(mInnerWindow));
   return win;
 }
 
 JSObject*
-nsHistory::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+nsHistory::WrapObject(JSContext* aCx)
 {
   return HistoryBinding::Wrap(aCx, this);
 }
 
 uint32_t
 nsHistory::GetLength(ErrorResult& aRv) const
 {
   nsCOMPtr<nsPIDOMWindow> win(do_QueryReferent(mInnerWindow));
--- a/dom/base/nsHistory.h
+++ b/dom/base/nsHistory.h
@@ -29,18 +29,17 @@ public:
   NS_DECL_CYCLE_COLLECTING_ISUPPORTS
   NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(nsHistory)
 
 public:
   nsHistory(nsPIDOMWindow* aInnerWindow);
   virtual ~nsHistory();
 
   nsPIDOMWindow* GetParentObject() const;
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   uint32_t GetLength(mozilla::ErrorResult& aRv) const;
   JS::Value GetState(JSContext* aCx, mozilla::ErrorResult& aRv) const;
   void Go(int32_t aDelta, mozilla::ErrorResult& aRv);
   void Back(mozilla::ErrorResult& aRv);
   void Forward(mozilla::ErrorResult& aRv);
   void PushState(JSContext* aCx, JS::Handle<JS::Value> aData,
                  const nsAString& aTitle, const nsAString& aUrl,
--- a/dom/base/nsJSEnvironment.cpp
+++ b/dom/base/nsJSEnvironment.cpp
@@ -2755,21 +2755,17 @@ NS_DOMReadStructuredClone(JSContext* cx,
       return nullptr;
     }
     MOZ_ASSERT(dataArray.isObject());
 
     // Construct the ImageData.
     nsRefPtr<ImageData> imageData = new ImageData(width, height,
                                                   dataArray.toObject());
     // Wrap it in a JS::Value.
-    JS::Rooted<JSObject*> global(cx, JS::CurrentGlobalOrNull(cx));
-    if (!global) {
-      return nullptr;
-    }
-    return imageData->WrapObject(cx, global);
+    return imageData->WrapObject(cx);
   }
 
   // Don't know what this is. Bail.
   xpc::Throw(cx, NS_ERROR_DOM_DATA_CLONE_ERR);
   return nullptr;
 }
 
 bool
--- a/dom/base/nsMimeTypeArray.cpp
+++ b/dom/base/nsMimeTypeArray.cpp
@@ -36,17 +36,17 @@ nsMimeTypeArray::nsMimeTypeArray(nsPIDOM
   SetIsDOMBinding();
 }
 
 nsMimeTypeArray::~nsMimeTypeArray()
 {
 }
 
 JSObject*
-nsMimeTypeArray::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+nsMimeTypeArray::WrapObject(JSContext* aCx)
 {
   return MimeTypeArrayBinding::Wrap(aCx, this);
 }
 
 void
 nsMimeTypeArray::Refresh()
 {
   mMimeTypes.Clear();
@@ -246,17 +246,17 @@ nsMimeType::~nsMimeType()
 nsPIDOMWindow*
 nsMimeType::GetParentObject() const
 {
   MOZ_ASSERT(mWindow);
   return mWindow;
 }
 
 JSObject*
-nsMimeType::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+nsMimeType::WrapObject(JSContext* aCx)
 {
   return MimeTypeBinding::Wrap(aCx, this);
 }
 
 void
 nsMimeType::GetDescription(nsString& retval) const
 {
   retval.Truncate();
--- a/dom/base/nsMimeTypeArray.h
+++ b/dom/base/nsMimeTypeArray.h
@@ -22,18 +22,17 @@ class nsMimeTypeArray MOZ_FINAL : public
 public:
   nsMimeTypeArray(nsPIDOMWindow* aWindow);
   virtual ~nsMimeTypeArray();
 
   NS_DECL_CYCLE_COLLECTING_ISUPPORTS
   NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(nsMimeTypeArray)
 
   nsPIDOMWindow* GetParentObject() const;
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   void Refresh();
 
   // MimeTypeArray WebIDL methods
   nsMimeType* Item(uint32_t index);
   nsMimeType* NamedItem(const nsAString& name);
   nsMimeType* IndexedGetter(uint32_t index, bool &found);
   nsMimeType* NamedGetter(const nsAString& name, bool &found);
@@ -65,18 +64,17 @@ public:
   NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_NATIVE_CLASS(nsMimeType)
 
   nsMimeType(nsPIDOMWindow* aWindow, nsPluginElement* aPluginElement,
              uint32_t aPluginTagMimeIndex, const nsAString& aMimeType);
   nsMimeType(nsPIDOMWindow* aWindow, const nsAString& aMimeType);
   virtual ~nsMimeType();
 
   nsPIDOMWindow* GetParentObject() const;
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   const nsString& Type() const
   {
     return mType;
   }
 
   // MimeType WebIDL methods
   void GetDescription(nsString& retval) const;
--- a/dom/base/nsPerformance.cpp
+++ b/dom/base/nsPerformance.cpp
@@ -138,17 +138,17 @@ nsPerformanceTiming::ResponseEnd() const
   mChannel->GetCacheReadEnd(&cacheStamp);
   if (stamp.IsNull() || (!cacheStamp.IsNull() && cacheStamp < stamp)) {
     stamp = cacheStamp;
   }
   return GetDOMTiming()->TimeStampToDOMOrFetchStart(stamp);
 }
 
 JSObject*
-nsPerformanceTiming::WrapObject(JSContext *cx, JS::Handle<JSObject*> scope)
+nsPerformanceTiming::WrapObject(JSContext *cx)
 {
   return dom::PerformanceTimingBinding::Wrap(cx, this);
 }
 
 
 NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE_1(nsPerformanceNavigation, mPerformance)
 
 NS_IMPL_CYCLE_COLLECTION_ROOT_NATIVE(nsPerformanceNavigation, AddRef)
@@ -161,17 +161,17 @@ nsPerformanceNavigation::nsPerformanceNa
   SetIsDOMBinding();
 }
 
 nsPerformanceNavigation::~nsPerformanceNavigation()
 {
 }
 
 JSObject*
-nsPerformanceNavigation::WrapObject(JSContext *cx, JS::Handle<JSObject*> scope)
+nsPerformanceNavigation::WrapObject(JSContext *cx)
 {
   return dom::PerformanceNavigationBinding::Wrap(cx, this);
 }
 
 
 NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE_3(nsPerformance,
                                         mWindow, mTiming,
                                         mNavigation)
@@ -220,13 +220,13 @@ nsPerformance::Navigation()
 
 DOMHighResTimeStamp
 nsPerformance::Now()
 {
   return GetDOMTiming()->TimeStampToDOMHighRes(mozilla::TimeStamp::Now());
 }
 
 JSObject*
-nsPerformance::WrapObject(JSContext *cx, JS::Handle<JSObject*> scope)
+nsPerformance::WrapObject(JSContext *cx)
 {
   return dom::PerformanceBinding::Wrap(cx, this);
 }
 
--- a/dom/base/nsPerformance.h
+++ b/dom/base/nsPerformance.h
@@ -28,18 +28,17 @@ public:
 
   nsDOMNavigationTiming* GetDOMTiming() const;
 
   nsPerformance* GetParentObject() const
   {
     return mPerformance;
   }
 
-  virtual JSObject* WrapObject(JSContext *cx,
-                               JS::Handle<JSObject*> scope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext *cx) MOZ_OVERRIDE;
 
   // PerformanceNavigation WebIDL methods
   DOMTimeMilliSec NavigationStart() const {
     if (!nsContentUtils::IsPerformanceTimingEnabled()) {
       return 0;
     }
     return GetDOMTiming()->GetNavigationStart();
   }
@@ -139,18 +138,17 @@ public:
 
   nsDOMNavigationTiming* GetDOMTiming() const;
 
   nsPerformance* GetParentObject() const
   {
     return mPerformance;
   }
 
-  virtual JSObject* WrapObject(JSContext *cx,
-                               JS::Handle<JSObject*> scope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext *cx) MOZ_OVERRIDE;
 
   // PerformanceNavigation WebIDL methods
   uint16_t Type() const {
     return GetDOMTiming()->GetType();
   }
   uint16_t RedirectCount() const {
     return GetDOMTiming()->GetRedirectCount();
   }
@@ -182,18 +180,17 @@ public:
     return mChannel;
   }
 
   nsIDOMWindow* GetParentObject() const
   {
     return mWindow.get();
   }
 
-  virtual JSObject* WrapObject(JSContext *cx,
-                               JS::Handle<JSObject*> scope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext *cx) MOZ_OVERRIDE;
 
   // Performance WebIDL methods
   DOMHighResTimeStamp Now();
   nsPerformanceTiming* Timing();
   nsPerformanceNavigation* Navigation();
 
 private:
   ~nsPerformance();
--- a/dom/base/nsPluginArray.cpp
+++ b/dom/base/nsPluginArray.cpp
@@ -47,17 +47,17 @@ nsPluginArray::~nsPluginArray()
 nsPIDOMWindow*
 nsPluginArray::GetParentObject() const
 {
   MOZ_ASSERT(mWindow);
   return mWindow;
 }
 
 JSObject*
-nsPluginArray::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+nsPluginArray::WrapObject(JSContext* aCx)
 {
   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
@@ -363,17 +363,17 @@ nsPluginElement::nsPluginElement(nsPIDOM
 nsPIDOMWindow*
 nsPluginElement::GetParentObject() const
 {
   MOZ_ASSERT(mWindow);
   return mWindow;
 }
 
 JSObject*
-nsPluginElement::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+nsPluginElement::WrapObject(JSContext* aCx)
 {
   return PluginBinding::Wrap(aCx, this);
 }
 
 void
 nsPluginElement::GetDescription(nsString& retval) const
 {
   CopyUTF8toUTF16(mPluginTag->mDescription, retval);
--- a/dom/base/nsPluginArray.h
+++ b/dom/base/nsPluginArray.h
@@ -28,18 +28,17 @@ public:
 
   // nsIObserver
   NS_DECL_NSIOBSERVER
 
   nsPluginArray(nsPIDOMWindow* aWindow);
   virtual ~nsPluginArray();
 
   nsPIDOMWindow* GetParentObject() const;
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   // nsPluginArray registers itself as an observer with a weak reference.
   // This can't be done in the constructor, because at that point its
   // refcount is 0 (and it gets destroyed upon registration). So, Init()
   // must be called after construction.
   void Init();
   void Invalidate();
 
@@ -80,18 +79,17 @@ class nsPluginElement MOZ_FINAL : public
 {
 public:
   NS_DECL_CYCLE_COLLECTING_ISUPPORTS
   NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(nsPluginElement)
 
   nsPluginElement(nsPIDOMWindow* aWindow, nsPluginTag* aPluginTag);
 
   nsPIDOMWindow* GetParentObject() const;
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   nsPluginTag* PluginTag() const
   {
     return mPluginTag;
   }
 
   // Plugin WebIDL methods
 
--- a/dom/base/nsScreen.cpp
+++ b/dom/base/nsScreen.cpp
@@ -317,17 +317,17 @@ nsScreen::IsDeviceSizePageSize()
       return docShell->GetDeviceSizeIsPageSize();
     }
   }
   return false;
 }
 
 /* virtual */
 JSObject*
-nsScreen::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+nsScreen::WrapObject(JSContext* aCx)
 {
   return ScreenBinding::Wrap(aCx, this);
 }
 
 NS_IMPL_ISUPPORTS1(nsScreen::FullScreenEventListener, nsIDOMEventListener)
 
 NS_IMETHODIMP
 nsScreen::FullScreenEventListener::HandleEvent(nsIDOMEvent* aEvent)
--- a/dom/base/nsScreen.h
+++ b/dom/base/nsScreen.h
@@ -117,18 +117,17 @@ public:
   void GetMozOrientation(nsString& aOrientation);
 
   IMPL_EVENT_HANDLER(mozorientationchange)
 
   bool MozLockOrientation(const nsAString& aOrientation, ErrorResult& aRv);
   bool MozLockOrientation(const mozilla::dom::Sequence<nsString>& aOrientations, ErrorResult& aRv);
   void MozUnlockOrientation();
 
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   void Notify(const mozilla::hal::ScreenConfiguration& aConfiguration);
 
 protected:
   nsDeviceContext* GetDeviceContext();
   nsresult GetRect(nsRect& aRect);
   nsresult GetAvailRect(nsRect& aRect);
 
--- a/dom/base/nsWrapperCache.h
+++ b/dom/base/nsWrapperCache.h
@@ -120,17 +120,17 @@ public:
   {
     return HasWrapperFlag(WRAPPER_IS_DOM_BINDING);
   }
 
   /**
    * Wrap the object corresponding to this wrapper cache. If non-null is
    * returned, the object has already been stored in the wrapper cache.
    */
-  virtual JSObject* WrapObject(JSContext* cx, JS::Handle<JSObject*> scope)
+  virtual JSObject* WrapObject(JSContext* cx)
   {
     MOZ_ASSERT(!IsDOMBinding(), "Someone forgot to override WrapObject");
     return nullptr;
   }
 
   /**
    * Returns true if the object has a non-gray wrapper.
    */
--- a/dom/battery/BatteryManager.cpp
+++ b/dom/battery/BatteryManager.cpp
@@ -46,17 +46,17 @@ BatteryManager::Init()
 
 void
 BatteryManager::Shutdown()
 {
   hal::UnregisterBatteryObserver(this);
 }
 
 JSObject*
-BatteryManager::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+BatteryManager::WrapObject(JSContext* aCx)
 {
   return BatteryManagerBinding::Wrap(aCx, this);
 }
 
 double
 BatteryManager::DischargingTime() const
 {
   if (mCharging || mRemainingTime == kUnknownRemainingTime) {
--- a/dom/battery/BatteryManager.h
+++ b/dom/battery/BatteryManager.h
@@ -45,18 +45,17 @@ public:
    * WebIDL Interface
    */
 
   nsPIDOMWindow* GetParentObject() const
   {
      return GetOwner();
   }
 
-  virtual JSObject* WrapObject(JSContext* aCx,
-                               JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+  virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   bool Charging() const
   {
     return mCharging;
   }
 
   double ChargingTime() const;
 
--- a/dom/bindings/BindingUtils.cpp
+++ b/dom/bindings/BindingUtils.cpp
@@ -693,25 +693,26 @@ CreateInterfaceObjects(JSContext* cx, JS
 bool
 NativeInterface2JSObjectAndThrowIfFailed(JSContext* aCx,
                                          JS::Handle<JSObject*> aScope,
                                          JS::MutableHandle<JS::Value> aRetval,
                                          xpcObjectHelper& aHelper,
                                          const nsIID* aIID,
                                          bool aAllowNativeWrapper)
 {
+  js::AssertSameCompartment(aCx, aScope);
   nsresult rv;
   // Inline some logic from XPCConvert::NativeInterfaceToJSObject that we need
   // on all threads.
   nsWrapperCache *cache = aHelper.GetWrapperCache();
 
   if (cache && cache->IsDOMBinding()) {
       JS::Rooted<JSObject*> obj(aCx, cache->GetWrapper());
       if (!obj) {
-          obj = cache->WrapObject(aCx, aScope);
+          obj = cache->WrapObject(aCx);
       }
 
       if (obj && aAllowNativeWrapper && !JS_WrapObject(aCx, &obj)) {
         return false;
       }
 
       if (obj) {
         aRetval.setObject(*obj);
--- a/dom/bindings/BindingUtils.h
+++ b/dom/bindings/BindingUtils.h
@@ -800,17 +800,18 @@ WrapNewBindingObject(JSContext* cx, JS::
   if (obj) {
     JS::ExposeObjectToActiveJS(obj);
   } else {
     // Inline this here while we have non-dom objects in wrapper caches.
     if (!couldBeDOMBinding) {
       return false;
     }
 
-    obj = value->WrapObject(cx, scope);
+    MOZ_ASSERT(js::IsObjectInContextCompartment(scope, cx));
+    obj = value->WrapObject(cx);
     if (!obj) {
       // At this point, obj is null, so just return false.
       // Callers seem to be testing JS_IsExceptionPending(cx) to
       // figure out whether WrapObject() threw.
       return false;
     }
   }
 
@@ -875,17 +876,18 @@ WrapNewBindingNonWrapperCachedObject(JSC
     JS::Rooted<JSObject*> scope(cx, scopeArg);
     if (js::IsWrapper(scope)) {
       scope = js::CheckedUnwrap(scope, /* stopAtOuter = */ false);
       if (!scope)
         return false;
       ac.construct(cx, scope);
     }
 
-    obj = value->WrapObject(cx, scope);
+    MOZ_ASSERT(js::IsObjectInContextCompartment(scope, cx));
+    obj = value->WrapObject(cx);
   }
 
   if (!obj) {
     return false;
   }
 
   // We can end up here in all sorts of compartments, per above.  Make
   // sure to JS_WrapValue!
@@ -922,17 +924,18 @@ WrapNewBindingNonWrapperCachedOwnedObjec
     if (js::IsWrapper(scope)) {
       scope = js::CheckedUnwrap(scope, /* stopAtOuter = */ false);
       if (!scope)
         return false;
       ac.construct(cx, scope);
     }
 
     bool tookOwnership = false;
-    obj = value->WrapObject(cx, scope, &tookOwnership);
+    MOZ_ASSERT(js::IsObjectInContextCompartment(scope, cx));
+    obj = value->WrapObject(cx, &tookOwnership);
     MOZ_ASSERT_IF(obj, tookOwnership);
     if (tookOwnership) {
       value.forget();
     }
   }
 
   if (!obj) {
     return false;
@@ -1320,18 +1323,17 @@ struct WrapNativeParentHelper
     if ((obj = cache->GetWrapper())) {
       return obj;
     }
 
     // Inline this here while we have non-dom objects in wrapper caches.
     if (!CouldBeDOMBinding(parent)) {
       obj = WrapNativeParentFallback<T>::Wrap(cx, parent, cache);
     } else {
-      JS::Rooted<JSObject*> scope(cx, JS::CurrentGlobalOrNull(cx));
-      obj = parent->WrapObject(cx, scope);
+      obj = parent->WrapObject(cx);
     }
 
     return obj;
   }
 };
 
 // Wrapping of our native parent, for cases when it's not a WebIDL object.  In
 // this case it must be nsISupports.
--- a/dom/bindings/Codegen.py
+++ b/dom/bindings/Codegen.py
@@ -11123,18 +11123,17 @@ class CGBindingImplClass(CGClass):
                 CGNativeMember(
                     descriptor, FakeMember(),
                     "GetSupportedNames",
                     (IDLSequenceType(None,
                                      BuiltinTypes[IDLBuiltinType.Types.domstring]),
                      []),
                     {"infallible": True}))
 
-        wrapArgs = [Argument('JSContext*', 'aCx'),
-                    Argument('JS::Handle<JSObject*>', 'aScope')]
+        wrapArgs = [Argument('JSContext*', 'aCx')]
         self.methodDecls.insert(0,
                                 ClassMethod("WrapObject", "JSObject*",
                                             wrapArgs, virtual=descriptor.wrapperCache,
                                             breakAfterReturnDecl=" ",
                                             override=descriptor.wrapperCache,
                                             body=self.getWrapObjectBody()))
         if wantGetParent:
             self.methodDecls.insert(0,
@@ -11262,17 +11261,17 @@ NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(
 NS_INTERFACE_MAP_END
 
 """
         else:
             classImpl = ""
 
         classImpl += """%s
 JSObject*
-${nativeType}::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+${nativeType}::WrapObject(JSContext* aCx)
 {
   return ${ifaceName}Binding::Wrap(aCx, this);
 }
 
 """ % ctordtor
         return string.Template(classImpl).substitute({
             "ifaceName": self.descriptor.name,
             "nativeType": self.nativeLeafName(self.descriptor),
--- a/dom/bindings/test/TestBindingHeader.h
+++ b/dom/bindings/test/TestBindingHeader.h
@@ -85,17 +85,17 @@ public:
 
 NS_DEFINE_STATIC_IID_ACCESSOR(TestExternalInterface, NS_TEST_EXTERNAL_INTERFACE_IID)
 
 class TestNonWrapperCacheInterface : public nsISupports
 {
 public:
   NS_DECL_ISUPPORTS
 
-  virtual JSObject* WrapObject(JSContext* cx, JS::Handle<JSObject*> scope);
+  virtual JSObject* WrapObject(JSContext* cx);
 };
 
 class OnlyForUseInConstructor : public nsISupports,
                                 public nsWrapperCache
 {
 public:
   NS_DECL_ISUPPORTS
   // We need a GetParentObject to make binding codegen happy
--- a/dom/bluetooth/BluetoothAdapter.cpp
+++ b/dom/bluetooth/BluetoothAdapter.cpp
@@ -1027,12 +1027,12 @@ BluetoothAdapter::SendMediaPlayStatus(co
                      aMediaPlayStatus.mPosition,
                      aMediaPlayStatus.mPlayStatus,
                      results);
 
   return request.forget();
 }
 
 JSObject*
-BluetoothAdapter::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+BluetoothAdapter::WrapObject(JSContext* aCx)
 {
   return BluetoothAdapterBinding::Wrap(aCx, this);
 }
--- a/dom/bluetooth/BluetoothAdapter.h
+++ b/dom/bluetooth/BluetoothAdapter.h
@@ -155,17 +155,17 @@ public:
   IMPL_EVENT_HANDLER(scostatuschanged);
 
   nsPIDOMWindow* GetParentObject() const
   {
      return GetOwner();
   }
 
   virtual JSObject*
-    WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+    WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
 private:
   BluetoothAdapter(nsPIDOMWindow* aOwner, const BluetoothValue& aValue);
   ~BluetoothAdapter();
 
   void Root();
 
   already_AddRefed<mozilla::dom::DOMRequest>
--- a/dom/bluetooth/BluetoothDevice.cpp
+++ b/dom/bluetooth/BluetoothDevice.cpp
@@ -228,12 +228,12 @@ BluetoothDevice::GetServices(JSContext* 
     return JS::Value(JSVAL_NULL);
   }
 
   JS::ExposeObjectToActiveJS(mJsServices);
   return JS::ObjectValue(*mJsServices);
 }
 
 JSObject*
-BluetoothDevice::WrapObject(JSContext* aContext, JS::Handle<JSObject*> aScope)
+BluetoothDevice::WrapObject(JSContext* aContext)
 {
   return BluetoothDeviceBinding::Wrap(aContext, this);
 }
--- a/dom/bluetooth/BluetoothDevice.h
+++ b/dom/bluetooth/BluetoothDevice.h
@@ -80,17 +80,17 @@ public:
   void Unroot();
 
   nsPIDOMWindow* GetParentObject() const
   {
      return GetOwner();
   }
 
   virtual JSObject*
-    WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
+    WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   virtual void DisconnectFromOwner() MOZ_OVERRIDE;
 
 private:
   BluetoothDevice(nsPIDOMWindow* aOwner, const nsAString& aAdapterPath,
                   const BluetoothValue& aValue);
   ~BluetoothDevice();
   void Root();
--- a/dom/bluetooth/BluetoothManager.cpp
+++ b/dom/bluetooth/BluetoothManager.cpp
@@ -240,12 +240,12 @@ BluetoothManager::IsConnected(uint16_t a
     aRv.Throw(NS_ERROR_FAILURE);
     return false;
   }
 
   return bs->IsConnected(aProfileId);
 }
 
 JSObject*
-BluetoothManager::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
+BluetoothManager::WrapObject(JSContext* aCx)
 {
   return BluetoothManagerBinding::Wrap(aCx, this);
 }
--- a/dom/bluetooth/BluetoothManager.h
+++ b/dom/bluetooth/BluetoothManager.h