зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1620657 - Add `CanonicalBrowsingContext::GetParentProcessWidgetContaining()` r=nika,tnikkel
Differential Revision: https://phabricator.services.mozilla.com/D67683 --HG-- extra : moz-landing-system : lando
This commit is contained in:
Родитель
c248943491
Коммит
1f15cc4c1e
|
@ -16,6 +16,8 @@
|
|||
#include "mozilla/ipc/ProtocolUtils.h"
|
||||
#include "mozilla/NullPrincipal.h"
|
||||
|
||||
#include "nsGlobalWindowOuter.h"
|
||||
|
||||
using namespace mozilla::ipc;
|
||||
|
||||
extern mozilla::LazyLogModule gAutoplayPermissionLog;
|
||||
|
@ -122,6 +124,28 @@ WindowGlobalParent* CanonicalBrowsingContext::GetCurrentWindowGlobal() const {
|
|||
return static_cast<WindowGlobalParent*>(GetCurrentWindowContext());
|
||||
}
|
||||
|
||||
already_AddRefed<nsIWidget>
|
||||
CanonicalBrowsingContext::GetParentProcessWidgetContaining() {
|
||||
// If our document is loaded in-process, such as chrome documents, get the
|
||||
// widget directly from our outer window. Otherwise, try to get the widget
|
||||
// from the toplevel content's browser's element.
|
||||
nsCOMPtr<nsIWidget> widget;
|
||||
if (nsGlobalWindowOuter* window = nsGlobalWindowOuter::Cast(GetDOMWindow())) {
|
||||
widget = window->GetNearestWidget();
|
||||
} else if (Element* topEmbedder = Top()->GetEmbedderElement()) {
|
||||
widget = nsContentUtils::WidgetForContent(topEmbedder);
|
||||
if (!widget) {
|
||||
widget = nsContentUtils::WidgetForDocument(topEmbedder->OwnerDoc());
|
||||
}
|
||||
}
|
||||
|
||||
if (widget) {
|
||||
widget = widget->GetTopLevelWidget();
|
||||
}
|
||||
|
||||
return widget.forget();
|
||||
}
|
||||
|
||||
already_AddRefed<WindowGlobalParent>
|
||||
CanonicalBrowsingContext::GetEmbedderWindowGlobal() const {
|
||||
uint64_t windowId = GetEmbedderInnerWindowId();
|
||||
|
|
|
@ -61,6 +61,8 @@ class CanonicalBrowsingContext final : public BrowsingContext {
|
|||
// The current active WindowGlobal.
|
||||
WindowGlobalParent* GetCurrentWindowGlobal() const;
|
||||
|
||||
already_AddRefed<nsIWidget> GetParentProcessWidgetContaining();
|
||||
|
||||
already_AddRefed<WindowGlobalParent> GetEmbedderWindowGlobal() const;
|
||||
|
||||
nsISHistory* GetSessionHistory();
|
||||
|
|
Загрузка…
Ссылка в новой задаче