gecko-dev/dom/webidl/GroupedHistoryEvent.webidl
Michael Layzell d77310ec7b Bug 1310771 - Part 2: Emit BrowserWillChangeProcess and BrowserChangedProcess when doing cross-frameloader navigations, r=smaug
With GroupedSHistory, history navigations may now require the browser to
change which frameloader is stored internally from within Core. This
patch adds a mechanism to allow for chrome code to respond to these
changes and both delay the change, or respond once the change is
performed.

Delaying the change is accomplished through the BrowserWillChangeProcess
event, which is fired when it is determined that a process change will
happen for the given browser, but the change has not occured yet. During
this time the nsIFrameLoader::AddProcessChangeBlockingPromise method may
be called on the target browser's frameloader. Any promises passed to
this method will be waited on, and the process change will not occur
until they have all been fulfiled.

Once that has occured, the process change occurs, and the
BrowserChangedProcess event is fired.

This is useful for chrome code which needs to flush state from the
original process before the change, and then which needs to connect
state in the new process with state in the chrome process.

MozReview-Commit-ID: C0Xn6pfruB2
2016-11-18 16:00:43 -05:00

18 lines
550 B
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/.
*/
[ChromeOnly,
Constructor(DOMString type, optional GroupedHistoryEventInit eventInitDict)]
interface GroupedHistoryEvent : Event
{
readonly attribute Element? otherBrowser;
};
dictionary GroupedHistoryEventInit : EventInit
{
Element? otherBrowser = null;
};