зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1597508: Use WidgetUtils::DOMWindowToWidget to determine native window during reopen of Firefox on macOS. r=farre
Differential Revision: https://phabricator.services.mozilla.com/D71408
This commit is contained in:
Родитель
de93efb3ba
Коммит
832f0ee2ae
|
@ -15,38 +15,30 @@
|
|||
#include "nsIBaseWindow.h"
|
||||
#include "nsCommandLine.h"
|
||||
#include "mozIDOMWindow.h"
|
||||
#include "nsIDocShellTreeItem.h"
|
||||
#include "nsIDocShellTreeOwner.h"
|
||||
#include "nsIInterfaceRequestorUtils.h"
|
||||
#include "nsIWebNavigation.h"
|
||||
#include "nsIWidget.h"
|
||||
#include "nsIWindowMediator.h"
|
||||
#include "nsPIDOMWindow.h"
|
||||
#include "WidgetUtils.h"
|
||||
|
||||
// This must be included last:
|
||||
#include "nsObjCExceptions.h"
|
||||
|
||||
using mozilla::widget::WidgetUtils;
|
||||
|
||||
nsresult GetNativeWindowPointerFromDOMWindow(mozIDOMWindowProxy* a_window,
|
||||
NSWindow** a_nativeWindow) {
|
||||
*a_nativeWindow = nil;
|
||||
if (!a_window) return NS_ERROR_INVALID_ARG;
|
||||
|
||||
nsCOMPtr<nsIWebNavigation> mruWebNav(do_GetInterface(a_window));
|
||||
if (mruWebNav) {
|
||||
nsCOMPtr<nsIDocShellTreeItem> mruTreeItem(do_QueryInterface(mruWebNav));
|
||||
nsCOMPtr<nsIDocShellTreeOwner> mruTreeOwner = nullptr;
|
||||
mruTreeItem->GetTreeOwner(getter_AddRefs(mruTreeOwner));
|
||||
if (mruTreeOwner) {
|
||||
nsCOMPtr<nsIBaseWindow> mruBaseWindow(do_QueryInterface(mruTreeOwner));
|
||||
if (mruBaseWindow) {
|
||||
nsCOMPtr<nsIWidget> mruWidget = nullptr;
|
||||
mruBaseWindow->GetMainWidget(getter_AddRefs(mruWidget));
|
||||
if (mruWidget) {
|
||||
*a_nativeWindow = (NSWindow*)mruWidget->GetNativeData(NS_NATIVE_WINDOW);
|
||||
}
|
||||
}
|
||||
}
|
||||
nsPIDOMWindowOuter* win = nsPIDOMWindowOuter::From(a_window);
|
||||
nsCOMPtr<nsIWidget> widget = WidgetUtils::DOMWindowToWidget(win);
|
||||
if (!widget) {
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
*a_nativeWindow = (NSWindow*)widget->GetNativeData(NS_NATIVE_WINDOW);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче