Bug 1350459 - Remove the [Throws] annotation from Window.navigator, r=qdot
MozReview-Commit-ID: 8vjyVrfa3xT
--- a/docshell/base/nsDocShell.cpp
+++ b/docshell/base/nsDocShell.cpp
@@ -3204,19 +3204,17 @@ nsDocShell::GetCustomUserAgent(nsAString
NS_IMETHODIMP
nsDocShell::SetCustomUserAgent(const nsAString& aCustomUserAgent)
{
mCustomUserAgent = aCustomUserAgent;
RefPtr<nsGlobalWindow> win = mScriptGlobal ?
mScriptGlobal->GetCurrentInnerWindowInternal() : nullptr;
if (win) {
- ErrorResult ignored;
- Navigator* navigator = win->GetNavigator(ignored);
- ignored.SuppressException();
+ Navigator* navigator = win->Navigator();
if (navigator) {
navigator->ClearUserAgentCache();
}
}
uint32_t childCount = mChildList.Length();
for (uint32_t i = 0; i < childCount; ++i) {
nsCOMPtr<nsIDocShell> childShell = do_QueryInterface(ChildAt(i));
--- a/dom/base/nsGlobalWindow.cpp
+++ b/dom/base/nsGlobalWindow.cpp
@@ -4162,36 +4162,33 @@ nsGlobalWindow::Window()
nsGlobalWindow*
nsGlobalWindow::Self()
{
return this;
}
Navigator*
-nsGlobalWindow::GetNavigator(ErrorResult& aError)
+nsGlobalWindow::Navigator()
{
MOZ_RELEASE_ASSERT(IsInnerWindow());
if (!mNavigator) {
- mNavigator = new Navigator(AsInner());
+ mNavigator = new mozilla::dom::Navigator(AsInner());
}
return mNavigator;
}
nsIDOMNavigator*
nsGlobalWindow::GetNavigator()
{
FORWARD_TO_INNER(GetNavigator, (), nullptr);
- ErrorResult dummy;
- nsIDOMNavigator* navigator = GetNavigator(dummy);
- dummy.SuppressException();
- return navigator;
+ return Navigator();
}
nsScreen*
nsGlobalWindow::GetScreen(ErrorResult& aError)
{
MOZ_RELEASE_ASSERT(IsInnerWindow());
if (!mScreen) {
--- a/dom/base/nsGlobalWindow.h
+++ b/dom/base/nsGlobalWindow.h
@@ -919,17 +919,17 @@ public:
const nsAString& aName,
const nsAString& aOptions,
mozilla::ErrorResult& aError);
nsresult Open(const nsAString& aUrl, const nsAString& aName,
const nsAString& aOptions,
nsIDocShellLoadInfo* aLoadInfo,
bool aForceNoOpener,
nsPIDOMWindowOuter **_retval) override;
- mozilla::dom::Navigator* GetNavigator(mozilla::ErrorResult& aError);
+ mozilla::dom::Navigator* Navigator();
nsIDOMNavigator* GetNavigator() override;
nsIDOMOfflineResourceList* GetApplicationCache(mozilla::ErrorResult& aError);
already_AddRefed<nsIDOMOfflineResourceList> GetApplicationCache() override;
#if defined(MOZ_WIDGET_ANDROID) || defined(MOZ_WIDGET_GONK)
int16_t Orientation(mozilla::dom::CallerType aCallerType) const;
#endif
--- a/dom/presentation/PresentationRequest.cpp
+++ b/dom/presentation/PresentationRequest.cpp
@@ -176,18 +176,17 @@ PresentationRequest::StartWithDevice(con
return promise.forget();
}
if (doc->GetSandboxFlags() & SANDBOXED_PRESENTATION) {
promise->MaybeReject(NS_ERROR_DOM_SECURITY_ERR);
return promise.forget();
}
- RefPtr<Navigator> navigator =
- nsGlobalWindow::Cast(GetOwner())->GetNavigator(aRv);
+ RefPtr<Navigator> navigator = nsGlobalWindow::Cast(GetOwner())->Navigator();
if (NS_WARN_IF(aRv.Failed())) {
return nullptr;
}
RefPtr<Presentation> presentation = navigator->GetPresentation(aRv);
if (NS_WARN_IF(aRv.Failed())) {
return nullptr;
}
@@ -463,23 +462,22 @@ void
PresentationRequest::NotifyPromiseSettled()
{
PRES_DEBUG("%s\n", __func__);
if (!GetOwner()) {
return;
}
- ErrorResult rv;
- RefPtr<Navigator> navigator =
- nsGlobalWindow::Cast(GetOwner())->GetNavigator(rv);
+ RefPtr<Navigator> navigator = nsGlobalWindow::Cast(GetOwner())->Navigator();
if (!navigator) {
return;
}
+ ErrorResult rv;
RefPtr<Presentation> presentation = navigator->GetPresentation(rv);
if (presentation) {
presentation->SetStartSessionUnsettled(false);
}
}
bool
--- a/dom/webidl/Window.webidl
+++ b/dom/webidl/Window.webidl
@@ -62,17 +62,17 @@ interface nsIDOMCrypto;
//[Throws] readonly attribute WindowProxy parent;
[Replaceable, Throws, CrossOriginReadable] readonly attribute WindowProxy? parent;
[Throws, NeedsSubjectPrincipal] readonly attribute Element? frameElement;
//[Throws] WindowProxy? open(optional USVString url = "about:blank", optional DOMString target = "_blank", [TreatNullAs=EmptyString] optional DOMString features = "");
[Throws, UnsafeInPrerendering] WindowProxy? open(optional DOMString url = "", optional DOMString target = "", [TreatNullAs=EmptyString] optional DOMString features = "");
getter object (DOMString name);
// the user agent
- [Throws] readonly attribute Navigator navigator;
+ readonly attribute Navigator navigator;
#ifdef HAVE_SIDEBAR
[Replaceable, Throws] readonly attribute External external;
#endif
[Throws, Pref="browser.cache.offline.enable"] readonly attribute ApplicationCache applicationCache;
// user prompts
[Throws, UnsafeInPrerendering, NeedsSubjectPrincipal] void alert();
[Throws, UnsafeInPrerendering, NeedsSubjectPrincipal] void alert(DOMString message);
--- a/dom/workers/ServiceWorkerClient.cpp
+++ b/dom/workers/ServiceWorkerClient.cpp
@@ -148,20 +148,19 @@ public:
Run() override
{
AssertIsOnMainThread();
nsGlobalWindow* window = nsGlobalWindow::GetInnerWindowWithId(mWindowId);
if (!window) {
return NS_ERROR_FAILURE;
}
- ErrorResult result;
- dom::Navigator* navigator = window->GetNavigator(result);
- if (NS_WARN_IF(result.Failed())) {
- return result.StealNSResult();
+ dom::Navigator* navigator = window->Navigator();
+ if (!navigator) {
+ return NS_ERROR_FAILURE;
}
RefPtr<ServiceWorkerContainer> container = navigator->ServiceWorker();
AutoJSAPI jsapi;
if (NS_WARN_IF(!jsapi.Init(window))) {
return NS_ERROR_FAILURE;
}
JSContext* cx = jsapi.cx();
--- a/dom/workers/ServiceWorkerManager.cpp
+++ b/dom/workers/ServiceWorkerManager.cpp
@@ -3186,24 +3186,23 @@ FireControllerChangeOnDocument(nsIDocume
nsCOMPtr<nsPIDOMWindowInner> w = aDocument->GetInnerWindow();
if (!w) {
NS_WARNING("Failed to dispatch controllerchange event");
return;
}
auto* window = nsGlobalWindow::Cast(w.get());
- ErrorResult result;
- dom::Navigator* navigator = window->GetNavigator(result);
- if (NS_WARN_IF(result.Failed())) {
- result.SuppressException();
+ dom::Navigator* navigator = window->Navigator();
+ if (!navigator) {
return;
}
RefPtr<ServiceWorkerContainer> container = navigator->ServiceWorker();
+ ErrorResult result;
container->ControllerChanged(result);
if (result.Failed()) {
NS_WARNING("Failed to dispatch controllerchange event");
}
}
} // anonymous namespace
--- a/gfx/vr/ipc/VRManagerChild.cpp
+++ b/gfx/vr/ipc/VRManagerChild.cpp
@@ -274,19 +274,18 @@ VRManagerChild::RecvUpdateDisplayInfo(ns
* the promise returned by Navigator.GetVRDevices
* can resolve. This must happen even if no changes
* to VRDisplays have been detected here.
*/
nsGlobalWindow* window = nsGlobalWindow::GetInnerWindowWithId(windowId);
if (!window) {
continue;
}
- ErrorResult result;
- dom::Navigator* nav = window->GetNavigator(result);
- if (NS_WARN_IF(result.Failed())) {
+ dom::Navigator* nav = window->Navigator();
+ if (!nav) {
continue;
}
nav->NotifyVRDisplaysUpdated();
}
mNavigatorCallbacks.Clear();
return IPC_OK();
}