gecko-dev/dom/ipc/PProcessHangMonitor.ipdl
Jens Stutte 3ca1fb43c7 Bug 1777198 - Cancel content JS execution on quit-application-granted or on normal content process shutdown. r=smaug
We want to signal content processes to cancel content JS unconditionally on shutdown.
In the case of parent shutdown this has to happen as early as "quit-application-granted", given that both extensions and session storage shutdown rely on the possibility to interact with content processes (which is not possible when they are inside long running JS).
In addition in the case of a normal child shutdown we cancel content JS execution, too.
For now we put this behind the pref "dom.abort_script_on_child_shutdown" which remains default off.

Depends on D150539

Differential Revision: https://phabricator.services.mozilla.com/D150598
2022-08-02 14:02:40 +00:00

48 lines
1.3 KiB
Plaintext

/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*-
* vim: sw=2 ts=8 et :
*/
/* 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/. */
// ParamTraits stuff for nsIRemoteTab::NavigationType
include "mozilla/dom/TabMessageUtils.h";
using nsIRemoteTab::NavigationType from "nsIRemoteTab.h";
using base::ProcessId from "base/process.h";
using mozilla::dom::TabId from "mozilla/dom/ipc/IdType.h";
using mozilla::layers::LayersObserverEpoch from "mozilla/layers/LayersTypes.h";
namespace mozilla {
struct SlowScriptData
{
TabId tabId;
nsCString filename;
nsString addonId;
double duration;
};
[ManualDealloc, ChildImpl=virtual, ParentImpl=virtual]
protocol PProcessHangMonitor
{
parent:
async HangEvidence(SlowScriptData data);
async ClearHang();
child:
async TerminateScript();
async RequestContentJSInterrupt();
async BeginStartingDebugger();
async EndStartingDebugger();
async PaintWhileInterruptingJS(TabId tabId, LayersObserverEpoch aEpoch);
async CancelContentJSExecutionIfRunning(
TabId tabId, NavigationType aNavigationType,
int32_t aNavigationIndex, nsCString? aNavigationURI, int32_t aEpoch);
};
} // namespace mozilla