diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
commit | 36d22d82aa202bb199967e9512281e9a53db42c9 (patch) | |
tree | 105e8c98ddea1c1e4784a60a5a6410fa416be2de /dom/base/nsPIWindowRoot.h | |
parent | Initial commit. (diff) | |
download | firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.tar.xz firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.zip |
Adding upstream version 115.7.0esr.upstream/115.7.0esrupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'dom/base/nsPIWindowRoot.h')
-rw-r--r-- | dom/base/nsPIWindowRoot.h | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/dom/base/nsPIWindowRoot.h b/dom/base/nsPIWindowRoot.h new file mode 100644 index 0000000000..fe4a0df484 --- /dev/null +++ b/dom/base/nsPIWindowRoot.h @@ -0,0 +1,96 @@ +/* -*- 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/. */ + +#ifndef nsPIWindowRoot_h__ +#define nsPIWindowRoot_h__ + +#include "nsISupports.h" +#include "mozilla/dom/EventTarget.h" + +class nsPIDOMWindowOuter; +class nsIControllers; +class nsIController; +class nsINode; +class nsIRemoteTab; + +#define NS_IWINDOWROOT_IID \ + { \ + 0xb8724c49, 0xc398, 0x4f9b, { \ + 0x82, 0x59, 0x87, 0x27, 0xa6, 0x47, 0xdd, 0x0f \ + } \ + } + +class nsPIWindowRoot : public mozilla::dom::EventTarget { + public: + NS_DECLARE_STATIC_IID_ACCESSOR(NS_IWINDOWROOT_IID) + + bool IsRootWindow() const final { return true; } + + NS_IMPL_FROMEVENTTARGET_HELPER(nsPIWindowRoot, IsRootWindow()) + + virtual nsPIDOMWindowOuter* GetWindow() = 0; + + // get and set the node that is the context of a popup menu + virtual already_AddRefed<nsINode> GetPopupNode() = 0; + virtual void SetPopupNode(nsINode* aNode) = 0; + + /** + * @param aForVisibleWindow true if caller needs controller which is + * associated with visible window. + */ + virtual nsresult GetControllerForCommand(const char* aCommand, + bool aForVisibleWindow, + nsIController** aResult) = 0; + + /** + * @param aForVisibleWindow true if caller needs controllers which are + * associated with visible window. + */ + virtual nsresult GetControllers(bool aForVisibleWindow, + nsIControllers** aResult) = 0; + + virtual void GetEnabledDisabledCommands( + nsTArray<nsCString>& aEnabledCommands, + nsTArray<nsCString>& aDisabledCommands) = 0; + + virtual void SetParentTarget(mozilla::dom::EventTarget* aTarget) = 0; + virtual mozilla::dom::EventTarget* GetParentTarget() = 0; + + // Stores a weak reference to the browser. + virtual void AddBrowser(nsIRemoteTab* aBrowser) = 0; + virtual void RemoveBrowser(nsIRemoteTab* aBrowser) = 0; + + using BrowserEnumerator = void (*)(nsIRemoteTab* aTab, void* aArg); + + // Enumerate all stored browsers that for which the weak reference is valid. + virtual void EnumerateBrowsers(BrowserEnumerator aEnumFunc, void* aArg) = 0; +}; + +namespace mozilla::dom { + +inline nsPIWindowRoot* EventTarget::GetAsWindowRoot() { + return IsRootWindow() ? static_cast<nsPIWindowRoot*>(this) : nullptr; +} + +inline const nsPIWindowRoot* EventTarget::GetAsWindowRoot() const { + return IsRootWindow() ? static_cast<const nsPIWindowRoot*>(this) : nullptr; +} + +inline nsPIWindowRoot* EventTarget::AsWindowRoot() { + MOZ_DIAGNOSTIC_ASSERT(IsRootWindow()); + return static_cast<nsPIWindowRoot*>(this); +} + +inline const nsPIWindowRoot* EventTarget::AsWindowRoot() const { + MOZ_DIAGNOSTIC_ASSERT(IsRootWindow()); + return static_cast<const nsPIWindowRoot*>(this); +} + +} // namespace mozilla::dom + +NS_DEFINE_STATIC_IID_ACCESSOR(nsPIWindowRoot, NS_IWINDOWROOT_IID) + +#endif // nsPIWindowRoot_h__ |