gecko-dev/dom/chrome-webidl/BrowsingContext.webidl
Kris Maglione 0349ad7fd6 Bug 1562292: Part 1a - Consider requesting context in BrowsingContext lookup methods. r=farre
Access to a particular named browsing context depends on the caller who is
attempting the access. For a call to `parent.open(..., name)`, for instance,
it's the privileges of the sub-frame making the open() call that matter, even
though the name resolution happens relative to the parent.

The current BrowsingContext FindWithName logic always considers only the
access of the BrowsingContext it's searching relative to, regardless of the
caller, while the corresponding DocShell logic correctly takes the caller into
account.

This patch updates the APIs to allow passing a specific accessing
BrowsingContext, and falls back to the target when one isn't passed (e.g., by
WebIDL callers, to which the new parameter is not exposed).

Differential Revision: https://phabricator.services.mozilla.com/D40492

--HG--
extra : rebase_source : b9b490c3feac203b3273a7f6f721ed71e41db0d3
extra : histedit_source : d26fe0d4fd962cad76fbf0f1701eff32cb1a9c49
2019-07-30 17:30:55 -07:00

58 lines
1.7 KiB
Plaintext

/* -*- 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/. */
interface nsIDocShell;
[Exposed=Window, ChromeOnly]
interface BrowsingContext {
static BrowsingContext? get(unsigned long long aId);
static BrowsingContext? getFromWindow(WindowProxy window);
BrowsingContext? findChildWithName(DOMString name, BrowsingContext accessor);
BrowsingContext? findWithName(DOMString name, BrowsingContext accessor);
readonly attribute DOMString name;
readonly attribute BrowsingContext? parent;
readonly attribute BrowsingContext top;
sequence<BrowsingContext> getChildren();
readonly attribute nsIDocShell? docShell;
readonly attribute Element? embedderElement;
readonly attribute unsigned long long id;
readonly attribute BrowsingContext? opener;
readonly attribute BrowsingContextGroup group;
};
[Exposed=Window, ChromeOnly]
interface CanonicalBrowsingContext : BrowsingContext {
sequence<WindowGlobalParent> getWindowGlobals();
readonly attribute WindowGlobalParent? currentWindowGlobal;
// XXX(nika): This feels kinda hacky, but will do for now while we don't
// synchronously create WindowGlobalParent. It can throw if somehow the
// content process has died.
[Throws]
readonly attribute DOMString? currentRemoteType;
readonly attribute WindowGlobalParent? embedderWindowGlobal;
void notifyStartDelayedAutoplayMedia();
void notifyMediaMutedChanged(boolean muted);
};
[Exposed=Window, ChromeOnly]
interface BrowsingContextGroup {
sequence<BrowsingContext> getToplevels();
};