/* -*- Mode: C++; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 8 -*- */ /* vim: set sw=4 ts=8 et tw=80 ft=cpp : */ /* 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 protocol PContent; include protocol PInProcess; include DOMTypes; include "mozilla/ipc/URIUtils.h"; namespace mozilla { namespace extensions { struct FrameTransitionData { bool clientRedirect; bool formSubmit; bool forwardBack; bool reload; bool serverRedirect; }; /** * A generic protocol used by the extension framework for process-level IPC. A * child instance is created at startup in the parent process and each content * child process, which can be accessed via * `mozilla::extensions::ExtensionsChild::Get()`. */ protocol PExtensions { manager PContent or PInProcess; parent: async __delete__(); async DocumentChange(MaybeDiscardedBrowsingContext bc, FrameTransitionData transitionData, nullable nsIURI location); async HistoryChange(MaybeDiscardedBrowsingContext bc, FrameTransitionData transitionData, nullable nsIURI location, bool isHistoryStateUpdated, bool isReferenceFragmentUpdated); async StateChange(MaybeDiscardedBrowsingContext bc, nullable nsIURI requestURI, nsresult status, uint32_t stateFlags); async CreatedNavigationTarget(MaybeDiscardedBrowsingContext bc, MaybeDiscardedBrowsingContext sourceBC, nsCString url); async DOMContentLoaded(MaybeDiscardedBrowsingContext bc, nullable nsIURI documentURI); }; } // namespace extensions } // namespace mozilla