author | Boris Zbarsky <bzbarsky@mit.edu> |
Thu, 26 Apr 2018 23:36:10 -0400 | |
changeset 415891 | 67be83ace31210b4ce904d2e928ffe87618a9b15 |
parent 415890 | 8311c9e2e41452f1c8299035e867e35202767db8 |
child 415892 | a19af55d0bd25817a0902b7fa771fb392cb0791b |
push id | 102688 |
push user | bzbarsky@mozilla.com |
push date | Fri, 27 Apr 2018 04:54:41 +0000 |
treeherder | mozilla-inbound@2d80f0cc731f [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | qdot |
bugs | 1455674 |
milestone | 61.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
--- a/dom/base/nsContentPermissionHelper.cpp +++ b/dom/base/nsContentPermissionHelper.cpp @@ -641,24 +641,24 @@ nsContentPermissionRequestProxy::GetPrin return NS_ERROR_FAILURE; } NS_ADDREF(*aRequestingPrincipal = mParent->mPrincipal); return NS_OK; } NS_IMETHODIMP -nsContentPermissionRequestProxy::GetElement(nsIDOMElement * *aRequestingElement) +nsContentPermissionRequestProxy::GetElement(Element** aRequestingElement) { NS_ENSURE_ARG_POINTER(aRequestingElement); if (mParent == nullptr) { return NS_ERROR_FAILURE; } - nsCOMPtr<nsIDOMElement> elem = do_QueryInterface(mParent->mElement); + nsCOMPtr<Element> elem = mParent->mElement; elem.forget(aRequestingElement); return NS_OK; } NS_IMETHODIMP nsContentPermissionRequestProxy::GetIsHandlingUserInput(bool* aIsHandlingUserInput) { NS_ENSURE_ARG_POINTER(aIsHandlingUserInput);
--- a/dom/base/nsContentUtils.cpp +++ b/dom/base/nsContentUtils.cpp @@ -2045,28 +2045,16 @@ nsContentUtils::Shutdown() * Checks whether two nodes come from the same origin. aTrustedNode is * considered 'safe' in that a user can operate on it and that it isn't * a js-object that implements nsIDOMNode. * Never call this function with the first node provided by script, it * must always be known to be a 'real' node! */ // static nsresult -nsContentUtils::CheckSameOrigin(const nsINode *aTrustedNode, - nsIDOMNode *aUnTrustedNode) -{ - MOZ_ASSERT(aTrustedNode); - - // Make sure it's a real node. - nsCOMPtr<nsINode> unTrustedNode = do_QueryInterface(aUnTrustedNode); - NS_ENSURE_TRUE(unTrustedNode, NS_ERROR_UNEXPECTED); - return CheckSameOrigin(aTrustedNode, unTrustedNode); -} - -nsresult nsContentUtils::CheckSameOrigin(const nsINode* aTrustedNode, const nsINode* unTrustedNode) { MOZ_ASSERT(aTrustedNode); MOZ_ASSERT(unTrustedNode); /* * Get hold of each node's principal
--- a/dom/base/nsContentUtils.h +++ b/dom/base/nsContentUtils.h @@ -586,18 +586,16 @@ public: static int32_t ParseLegacyFontSize(const nsAString& aValue); static void Shutdown(); /** * Checks whether two nodes come from the same origin. */ static nsresult CheckSameOrigin(const nsINode* aTrustedNode, - nsIDOMNode* aUnTrustedNode); - static nsresult CheckSameOrigin(const nsINode* aTrustedNode, const nsINode* unTrustedNode); // Check if the (JS) caller can access aNode. static bool CanCallerAccess(nsIDOMNode *aNode); static bool CanCallerAccess(nsINode* aNode); // Check if the (JS) caller can access aWindow. // aWindow can be either outer or inner window.
--- a/dom/base/nsIObjectLoadingContent.idl +++ b/dom/base/nsIObjectLoadingContent.idl @@ -4,17 +4,16 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "nsISupports.idl" interface nsIRequest; interface nsIFrame; interface nsIObjectFrame; interface nsIPluginTag; -interface nsIDOMElement; interface nsIURI; %{C++ class nsNPAPIPluginInstance; %} [ptr] native nsNPAPIPluginInstancePtr(nsNPAPIPluginInstance); /**
--- a/dom/geolocation/nsGeolocation.cpp +++ b/dom/geolocation/nsGeolocation.cpp @@ -391,17 +391,17 @@ nsGeolocationRequest::GetWindow(mozIDOMW nsCOMPtr<nsPIDOMWindowInner> window = do_QueryReferent(mLocator->GetOwner()); window.forget(aRequestingWindow); return NS_OK; } NS_IMETHODIMP -nsGeolocationRequest::GetElement(nsIDOMElement * *aRequestingElement) +nsGeolocationRequest::GetElement(Element** aRequestingElement) { NS_ENSURE_ARG_POINTER(aRequestingElement); *aRequestingElement = nullptr; return NS_OK; } NS_IMETHODIMP nsGeolocationRequest::GetIsHandlingUserInput(bool* aIsHandlingUserInput)
--- a/dom/html/nsIMenuBuilder.idl +++ b/dom/html/nsIMenuBuilder.idl @@ -1,16 +1,16 @@ /* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "nsISupports.idl" -interface nsIDOMElement; +webidl Element; /** * An interface used to construct native toolbar or context menus from <menu> */ [scriptable, uuid(93F4A48F-D043-4F45-97FD-9771EA1AF976)] interface nsIMenuBuilder : nsISupports { @@ -23,17 +23,17 @@ interface nsIMenuBuilder : nsISupports void openContainer(in DOMString aLabel); /** * Add a new menu item. All menu item details can be obtained from * the element. This method is not called for hidden elements or elements * with no or empty label. The icon should be loaded only if aCanLoadIcon * is true. */ - void addItemFor(in nsIDOMElement aElement, + void addItemFor(in Element aElement, in boolean aCanLoadIcon); /** * Create a new separator. */ void addSeparator(); /**
--- a/dom/interfaces/base/nsIContentPermissionPrompt.idl +++ b/dom/interfaces/base/nsIContentPermissionPrompt.idl @@ -1,19 +1,20 @@ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "nsISupports.idl" interface nsIPrincipal; interface mozIDOMWindow; -interface nsIDOMElement; interface nsIArray; +webidl Element; + /** * Interface provides the request type and its access. */ [scriptable, uuid(ef4db3b8-ca9c-4b1d-8f81-fd88ec32af13)] interface nsIContentPermissionType : nsISupports { /** * The type of the permission request, such as * "geolocation". @@ -80,17 +81,17 @@ interface nsIContentPermissionRequest : /** * The window or element that the permission request was * originated in. Typically the element will be non-null * in when using out of process content. window or * element can be null but not both. */ readonly attribute mozIDOMWindow window; - readonly attribute nsIDOMElement element; + readonly attribute Element element; readonly attribute boolean isHandlingUserInput; /** * The requester to get the required information of * the window. */ readonly attribute nsIContentPermissionRequester requester;
--- a/dom/interfaces/base/nsIContentProcess.idl +++ b/dom/interfaces/base/nsIContentProcess.idl @@ -1,15 +1,14 @@ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "nsISupports.idl" -interface nsIDOMElement; interface nsIURI; [scriptable, builtinclass, uuid(456f58be-29dd-4973-885b-95aece1c9a8a)] interface nsIContentProcessInfo : nsISupports { /** * Is this content process alive? */
--- a/dom/interfaces/base/nsIDOMChromeWindow.idl +++ b/dom/interfaces/base/nsIDOMChromeWindow.idl @@ -1,17 +1,16 @@ /* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "domstubs.idl" interface nsIBrowserDOMWindow; -interface nsIDOMElement; interface mozIDOMWindowProxy; // Scriptable only so Components.interfaces.nsIDOMChromeWindow works. [scriptable, builtinclass, uuid(78bdcb41-1efa-409f-aaba-70842213f80f)] interface nsIDOMChromeWindow : nsISupports { /** * browserDOMWindow provides access to yet another layer of
--- a/dom/interfaces/xul/nsIDOMXULCheckboxElement.idl +++ b/dom/interfaces/xul/nsIDOMXULCheckboxElement.idl @@ -1,12 +1,11 @@ /* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -#include "nsIDOMElement.idl" #include "nsIDOMXULLabeledControlEl.idl" [scriptable, uuid(674965d9-aff4-411d-a382-7cb32c0f25a1)] interface nsIDOMXULCheckboxElement : nsIDOMXULLabeledControlElement { attribute boolean checked; };
--- a/dom/interfaces/xul/nsIDOMXULCommandDispatcher.idl +++ b/dom/interfaces/xul/nsIDOMXULCommandDispatcher.idl @@ -1,32 +1,31 @@ /* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "nsISupports.idl" -interface nsIDOMElement; interface nsIController; interface nsIControllers; interface mozIDOMWindowProxy; webidl Element; [scriptable, uuid(a9fa9fd3-8d62-4f94-9ed8-3ea9c3cf0773)] interface nsIDOMXULCommandDispatcher : nsISupports { attribute Element focusedElement; attribute mozIDOMWindowProxy focusedWindow; - void addCommandUpdater(in nsIDOMElement updater, + void addCommandUpdater(in Element updater, in DOMString events, in DOMString targets); - void removeCommandUpdater(in nsIDOMElement updater); + void removeCommandUpdater(in Element updater); void updateCommands(in DOMString eventName); nsIController getControllerForCommand(in string command); nsIControllers getControllers(); void advanceFocus(); void rewindFocus();
--- a/dom/interfaces/xul/nsIDOMXULLabeledControlEl.idl +++ b/dom/interfaces/xul/nsIDOMXULLabeledControlEl.idl @@ -1,14 +1,13 @@ /* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -#include "nsIDOMElement.idl" #include "nsIDOMXULControlElement.idl" [scriptable, uuid(c58a159f-e27d-40c8-865a-d4dcfd928f62)] interface nsIDOMXULLabeledControlElement : nsIDOMXULControlElement { attribute DOMString crop; attribute DOMString image; attribute DOMString label; attribute DOMString accessKey;
--- a/dom/interfaces/xul/nsIDOMXULTextboxElement.idl +++ b/dom/interfaces/xul/nsIDOMXULTextboxElement.idl @@ -1,15 +1,16 @@ /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "nsIDOMXULLabeledControlEl.idl" -interface nsIDOMHTMLInputElement; + +interface nsIDOMNode; [scriptable, uuid(7edd8215-5155-4845-a02f-dc2c08645cb9)] interface nsIDOMXULTextBoxElement : nsIDOMXULControlElement { // inputField may be any type of editable field, such as an // HTML <input type="text"> or <textarea> readonly attribute nsIDOMNode inputField;
--- a/dom/ipc/ProcessHangMonitor.cpp +++ b/dom/ipc/ProcessHangMonitor.cpp @@ -165,31 +165,17 @@ class HangMonitoredProcess final { public: NS_DECL_THREADSAFE_ISUPPORTS HangMonitoredProcess(HangMonitorParent* aActor, ContentParent* aContentParent) : mActor(aActor), mContentParent(aContentParent) {} - NS_IMETHOD GetHangType(uint32_t* aHangType) override; - NS_IMETHOD GetScriptBrowser(nsIDOMElement** aBrowser) override; - NS_IMETHOD GetScriptFileName(nsACString& aFileName) override; - NS_IMETHOD GetAddonId(nsAString& aAddonId) override; - - NS_IMETHOD GetPluginName(nsACString& aPluginName) override; - - NS_IMETHOD TerminateScript() override; - NS_IMETHOD TerminateGlobal() override; - NS_IMETHOD BeginStartingDebugger() override; - NS_IMETHOD EndStartingDebugger() override; - NS_IMETHOD TerminatePlugin() override; - NS_IMETHOD UserCanceled() override; - - NS_IMETHOD IsReportForBrowser(nsFrameLoader* aFrameLoader, bool* aResult) override; + NS_DECL_NSIHANGREPORT // Called when a content process shuts down. void Clear() { mContentParent = nullptr; mActor = nullptr; } /** @@ -943,34 +929,34 @@ HangMonitoredProcess::GetHangType(uint32 MOZ_ASSERT_UNREACHABLE("Unexpected HangData type"); return NS_ERROR_UNEXPECTED; } return NS_OK; } NS_IMETHODIMP -HangMonitoredProcess::GetScriptBrowser(nsIDOMElement** aBrowser) +HangMonitoredProcess::GetScriptBrowser(Element** aBrowser) { MOZ_RELEASE_ASSERT(NS_IsMainThread()); if (mHangData.type() != HangData::TSlowScriptData) { return NS_ERROR_NOT_AVAILABLE; } TabId tabId = mHangData.get_SlowScriptData().tabId(); if (!mContentParent) { return NS_ERROR_NOT_AVAILABLE; } nsTArray<PBrowserParent*> tabs; mContentParent->ManagedPBrowserParent(tabs); for (size_t i = 0; i < tabs.Length(); i++) { TabParent* tp = TabParent::GetFrom(tabs[i]); if (tp->GetTabId() == tabId) { - nsCOMPtr<nsIDOMElement> node = do_QueryInterface(tp->GetOwnerElement()); + RefPtr<Element> node = tp->GetOwnerElement(); node.forget(aBrowser); return NS_OK; } } *aBrowser = nullptr; return NS_OK; }
--- a/dom/ipc/nsIHangReport.idl +++ b/dom/ipc/nsIHangReport.idl @@ -1,19 +1,18 @@ /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* vim:set ts=2 sw=2 sts=2 et cindent: */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "nsISupports.idl" -interface nsIDOMElement; - webidl FrameLoader; +webidl Element; /** * When a content process hangs, Gecko notifies "process-hang-report" observers * and passes an nsIHangReport for the subject parameter. There is at most one * nsIHangReport associated with a given content process. As long as the content * process stays stuck, the "process-hang-report" observer will continue to be * notified at regular intervals (approximately once per second). The content * process will continue to run uninhibitedly during this time. @@ -26,17 +25,17 @@ interface nsIHangReport : nsISupports const unsigned long PLUGIN_HANG = 2; // The type of hang being reported: SLOW_SCRIPT or PLUGIN_HANG. readonly attribute unsigned long hangType; // For SLOW_SCRIPT reports, these fields contain information about the // slow script. // Only valid for SLOW_SCRIPT reports. - readonly attribute nsIDOMElement scriptBrowser; + readonly attribute Element scriptBrowser; readonly attribute ACString scriptFileName; readonly attribute AString addonId; // For PLUGIN_HANGs, this field contains information about the plugin. // Only valid for PLUGIN_HANG reports. readonly attribute ACString pluginName; // Called by front end code when user ignores or cancels
--- a/dom/midi/MIDIPermissionRequest.cpp +++ b/dom/midi/MIDIPermissionRequest.cpp @@ -86,17 +86,17 @@ NS_IMETHODIMP MIDIPermissionRequest::GetWindow(mozIDOMWindow** aRequestingWindow) { NS_ENSURE_ARG_POINTER(aRequestingWindow); NS_IF_ADDREF(*aRequestingWindow = mWindow); return NS_OK; } NS_IMETHODIMP -MIDIPermissionRequest::GetElement(nsIDOMElement** aRequestingElement) +MIDIPermissionRequest::GetElement(Element** aRequestingElement) { NS_ENSURE_ARG_POINTER(aRequestingElement); *aRequestingElement = nullptr; return NS_OK; } NS_IMETHODIMP MIDIPermissionRequest::Cancel()
--- a/dom/notification/Notification.cpp +++ b/dom/notification/Notification.cpp @@ -589,17 +589,17 @@ NotificationPermissionRequest::GetPrinci NS_IMETHODIMP NotificationPermissionRequest::GetWindow(mozIDOMWindow** aRequestingWindow) { NS_ADDREF(*aRequestingWindow = mWindow); return NS_OK; } NS_IMETHODIMP -NotificationPermissionRequest::GetElement(nsIDOMElement** aElement) +NotificationPermissionRequest::GetElement(Element** aElement) { NS_ENSURE_ARG_POINTER(aElement); *aElement = nullptr; return NS_OK; } NS_IMETHODIMP NotificationPermissionRequest::GetIsHandlingUserInput(bool* aIsHandlingUserInput)
--- a/dom/quota/StorageManager.cpp +++ b/dom/quota/StorageManager.cpp @@ -737,17 +737,17 @@ PersistentStoragePermissionRequest::GetW MOZ_ASSERT(mWindow); NS_ADDREF(*aRequestingWindow = mWindow); return NS_OK; } NS_IMETHODIMP -PersistentStoragePermissionRequest::GetElement(nsIDOMElement** aElement) +PersistentStoragePermissionRequest::GetElement(Element** aElement) { MOZ_ASSERT(NS_IsMainThread()); MOZ_ASSERT(aElement); *aElement = nullptr; return NS_OK; }
--- a/dom/xul/XULDocument.cpp +++ b/dom/xul/XULDocument.cpp @@ -1522,22 +1522,17 @@ XULDocument::RemoveSubtreeFromDocument(n nsAutoScriptBlocker scriptBlocker; RemoveFromIdTable(aElement, id); } // 3. If the element is a 'command updater', then remove the // element from the document's command dispatcher. if (aElement->AttrValueIs(kNameSpaceID_None, nsGkAtoms::commandupdater, nsGkAtoms::_true, eCaseMatters)) { - nsCOMPtr<nsIDOMElement> domelement = do_QueryInterface(aElement); - NS_ASSERTION(domelement != nullptr, "not a DOM element"); - if (! domelement) - return NS_ERROR_UNEXPECTED; - - rv = mCommandDispatcher->RemoveCommandUpdater(domelement); + rv = mCommandDispatcher->RemoveCommandUpdater(aElement); if (NS_FAILED(rv)) return rv; } // 4. Remove the element from our broadcaster map, since it is no longer // in the document. nsCOMPtr<Element> broadcaster, listener; nsAutoString attribute, broadcasterID; rv = FindBroadcaster(aElement, getter_AddRefs(listener),
--- a/dom/xul/nsXULCommandDispatcher.cpp +++ b/dom/xul/nsXULCommandDispatcher.cpp @@ -235,17 +235,17 @@ nsXULCommandDispatcher::AdvanceFocusInto nsIFocusManager* fm = nsFocusManager::GetFocusManager(); if (fm) return fm->MoveFocus(win, aElt, nsIFocusManager::MOVEFOCUS_FORWARD, 0, getter_AddRefs(result)); return NS_OK; } NS_IMETHODIMP -nsXULCommandDispatcher::AddCommandUpdater(nsIDOMElement* aElement, +nsXULCommandDispatcher::AddCommandUpdater(Element* aElement, const nsAString& aEvents, const nsAString& aTargets) { NS_PRECONDITION(aElement != nullptr, "null ptr"); if (! aElement) return NS_ERROR_NULL_POINTER; NS_ENSURE_TRUE(mDocument, NS_ERROR_UNEXPECTED); @@ -305,17 +305,17 @@ nsXULCommandDispatcher::AddCommandUpdate #endif // If we get here, this is a new updater. Append it to the list. *link = new Updater(aElement, aEvents, aTargets); return NS_OK; } NS_IMETHODIMP -nsXULCommandDispatcher::RemoveCommandUpdater(nsIDOMElement* aElement) +nsXULCommandDispatcher::RemoveCommandUpdater(Element* aElement) { NS_PRECONDITION(aElement != nullptr, "null ptr"); if (! aElement) return NS_ERROR_NULL_POINTER; Updater* updater = mUpdaters; Updater** link = &mUpdaters;
--- a/dom/xul/nsXULCommandDispatcher.h +++ b/dom/xul/nsXULCommandDispatcher.h @@ -14,18 +14,18 @@ #define nsXULCommandDispatcher_h__ #include "nsCOMPtr.h" #include "nsIDOMXULCommandDispatcher.h" #include "nsWeakReference.h" #include "nsIDOMNode.h" #include "nsString.h" #include "nsCycleCollectionParticipant.h" +#include "mozilla/RefPtr.h" -class nsIDOMElement; class nsPIWindowRoot; namespace mozilla { namespace dom { class Element; } // namespace dom } // namespace mozilla @@ -51,26 +51,26 @@ protected: mozilla::dom::Element* GetRootFocusedContentAndWindow(nsPIDOMWindowOuter** aWindow); nsCOMPtr<nsIDocument> mDocument; class Updater { public: - Updater(nsIDOMElement* aElement, + Updater(mozilla::dom::Element* aElement, const nsAString& aEvents, const nsAString& aTargets) : mElement(aElement), mEvents(aEvents), mTargets(aTargets), mNext(nullptr) {} - nsCOMPtr<nsIDOMElement> mElement; + RefPtr<mozilla::dom::Element> mElement; nsString mEvents; nsString mTargets; Updater* mNext; }; Updater* mUpdaters; bool Matches(const nsString& aList,
--- a/dom/xul/nsXULContentUtils.cpp +++ b/dom/xul/nsXULContentUtils.cpp @@ -138,19 +138,14 @@ nsXULContentUtils::SetCommandUpdater(nsI events.Assign('*'); nsAutoString targets; aElement->GetAttr(kNameSpaceID_None, nsGkAtoms::targets, targets); if (targets.IsEmpty()) targets.Assign('*'); - nsCOMPtr<nsIDOMElement> domelement = do_QueryInterface(aElement); - NS_ASSERTION(domelement != nullptr, "not a DOM element"); - if (! domelement) - return NS_ERROR_UNEXPECTED; - - rv = dispatcher->AddCommandUpdater(domelement, events, targets); + rv = dispatcher->AddCommandUpdater(aElement, events, targets); if (NS_FAILED(rv)) return rv; return NS_OK; }