diff --git a/dom/browser-element/BrowserElementParent.js b/dom/browser-element/BrowserElementParent.js index 751b5782fb46..2d08526ae304 100644 --- a/dom/browser-element/BrowserElementParent.js +++ b/dom/browser-element/BrowserElementParent.js @@ -796,7 +796,7 @@ BrowserElementParent.prototype = { this._nextPaintListeners = []; for (let listener of listeners) { try { - listener.recvNextPaint(); + listener(); } catch (e) { // If a listener throws we'll continue. } diff --git a/dom/browser-element/nsIBrowserElementAPI.idl b/dom/browser-element/nsIBrowserElementAPI.idl index 7b804a733277..0070e62938c3 100644 --- a/dom/browser-element/nsIBrowserElementAPI.idl +++ b/dom/browser-element/nsIBrowserElementAPI.idl @@ -9,12 +9,6 @@ webidl DOMRequest; webidl FrameLoader; -[scriptable, function, uuid(00d0e19d-bd67-491f-8e85-b9905224d3bb)] -interface nsIBrowserElementNextPaintListener : nsISupports -{ - void recvNextPaint(); -}; - %{C++ #define BROWSER_ELEMENT_API_CONTRACTID "@mozilla.org/dom/browser-element-api;1" #define BROWSER_ELEMENT_API_CID \ @@ -77,8 +71,8 @@ interface nsIBrowserElementAPI : nsISupports void findNext(in long direction); void clearMatch(); - void addNextPaintListener(in nsIBrowserElementNextPaintListener listener); - void removeNextPaintListener(in nsIBrowserElementNextPaintListener listener); + void addNextPaintListener(in jsval listener); // BrowserElementNextPaintEventCallback + void removeNextPaintListener(in jsval listener); // BrowserElementNextPaintEventCallback DOMRequest executeScript(in DOMString script, in jsval options); diff --git a/dom/html/nsBrowserElement.cpp b/dom/html/nsBrowserElement.cpp index ba616a70102a..ff3524bb4c38 100644 --- a/dom/html/nsBrowserElement.cpp +++ b/dom/html/nsBrowserElement.cpp @@ -368,11 +368,9 @@ nsBrowserElement::AddNextPaintListener(BrowserElementNextPaintEventCallback& aLi { NS_ENSURE_TRUE_VOID(IsBrowserElementOrThrow(aRv)); - CallbackObjectHolder holder(&aListener); - nsCOMPtr listener = holder.ToXPCOMCallback(); - - nsresult rv = mBrowserElementAPI->AddNextPaintListener(listener); + JS::Rooted val(RootingCx(), + JS::ObjectOrNullValue(aListener.CallbackOrNull())); + nsresult rv = mBrowserElementAPI->AddNextPaintListener(val); if (NS_WARN_IF(NS_FAILED(rv))) { aRv.Throw(NS_ERROR_DOM_INVALID_STATE_ERR); @@ -385,11 +383,9 @@ nsBrowserElement::RemoveNextPaintListener(BrowserElementNextPaintEventCallback& { NS_ENSURE_TRUE_VOID(IsBrowserElementOrThrow(aRv)); - CallbackObjectHolder holder(&aListener); - nsCOMPtr listener = holder.ToXPCOMCallback(); - - nsresult rv = mBrowserElementAPI->RemoveNextPaintListener(listener); + JS::Rooted val(RootingCx(), + JS::ObjectOrNullValue(aListener.CallbackOrNull())); + nsresult rv = mBrowserElementAPI->RemoveNextPaintListener(val); if (NS_WARN_IF(NS_FAILED(rv))) { aRv.Throw(NS_ERROR_DOM_INVALID_STATE_ERR);