mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-12-02 01:48:05 +00:00
2d53089228
Differential Revision: https://phabricator.services.mozilla.com/D106331
89 lines
2.5 KiB
C++
89 lines
2.5 KiB
C++
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
|
|
/* 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 "nsOpenWindowInfo.h"
|
|
#include "mozilla/OriginAttributes.h"
|
|
#include "mozilla/dom/ToJSValue.h"
|
|
#include "mozilla/dom/BrowserParent.h"
|
|
|
|
NS_IMPL_ISUPPORTS(nsOpenWindowInfo, nsIOpenWindowInfo)
|
|
|
|
NS_IMETHODIMP nsOpenWindowInfo::GetParent(
|
|
mozilla::dom::BrowsingContext** aParent) {
|
|
*aParent = do_AddRef(mParent).take();
|
|
return NS_OK;
|
|
}
|
|
|
|
NS_IMETHODIMP nsOpenWindowInfo::GetIsRemote(bool* aIsRemote) {
|
|
*aIsRemote = mIsRemote;
|
|
return NS_OK;
|
|
}
|
|
|
|
NS_IMETHODIMP nsOpenWindowInfo::GetIsForWindowDotPrint(bool* aResult) {
|
|
*aResult = mIsForWindowDotPrint;
|
|
return NS_OK;
|
|
}
|
|
|
|
NS_IMETHODIMP nsOpenWindowInfo::GetIsForPrinting(bool* aIsForPrinting) {
|
|
*aIsForPrinting = mIsForPrinting;
|
|
return NS_OK;
|
|
}
|
|
|
|
NS_IMETHODIMP nsOpenWindowInfo::GetForceNoOpener(bool* aForceNoOpener) {
|
|
*aForceNoOpener = mForceNoOpener;
|
|
return NS_OK;
|
|
}
|
|
|
|
NS_IMETHODIMP nsOpenWindowInfo::GetScriptableOriginAttributes(
|
|
JSContext* aCx, JS::MutableHandle<JS::Value> aAttrs) {
|
|
bool ok = ToJSValue(aCx, mOriginAttributes, aAttrs);
|
|
NS_ENSURE_TRUE(ok, NS_ERROR_FAILURE);
|
|
return NS_OK;
|
|
}
|
|
|
|
const OriginAttributes& nsOpenWindowInfo::GetOriginAttributes() {
|
|
return mOriginAttributes;
|
|
}
|
|
|
|
BrowserParent* nsOpenWindowInfo::GetNextRemoteBrowser() {
|
|
return mNextRemoteBrowser;
|
|
}
|
|
|
|
nsIBrowsingContextReadyCallback*
|
|
nsOpenWindowInfo::BrowsingContextReadyCallback() {
|
|
return mBrowsingContextReadyCallback;
|
|
}
|
|
|
|
NS_IMPL_ISUPPORTS(nsBrowsingContextReadyCallback,
|
|
nsIBrowsingContextReadyCallback)
|
|
|
|
nsBrowsingContextReadyCallback::nsBrowsingContextReadyCallback(
|
|
RefPtr<BrowsingContextCallbackReceivedPromise::Private> aPromise)
|
|
: mPromise(std::move(aPromise)) {}
|
|
|
|
nsBrowsingContextReadyCallback::~nsBrowsingContextReadyCallback() {
|
|
if (mPromise) {
|
|
mPromise->Reject(NS_ERROR_FAILURE, __func__);
|
|
}
|
|
mPromise = nullptr;
|
|
}
|
|
|
|
NS_IMETHODIMP nsBrowsingContextReadyCallback::BrowsingContextReady(
|
|
BrowsingContext* aBC) {
|
|
MOZ_DIAGNOSTIC_ASSERT(mPromise,
|
|
"The 'browsing context ready' callback is null");
|
|
if (!mPromise) {
|
|
return NS_OK;
|
|
}
|
|
if (aBC) {
|
|
mPromise->Resolve(aBC, __func__);
|
|
} else {
|
|
mPromise->Reject(NS_ERROR_FAILURE, __func__);
|
|
}
|
|
mPromise = nullptr;
|
|
return NS_OK;
|
|
}
|