NS_IMETHODIMP HangMonitoredProcess::GetScriptBrowser(nsIDOMElement** aBrowser) { MOZ_RELEASE_ASSERT(NS_IsMainThread()); if (mHangData.type() != HangData::TSlowScriptData) { return NS_ERROR_NOT_AVAILABLE; } TabId tabId = mHangData.get_SlowScriptData().tabId(); if (!mContentParent) { return NS_ERROR_NOT_AVAILABLE; } nsTArray<PBrowserParent*> tabs; mContentParent->ManagedPBrowserParent(tabs); for (size_t i = 0; i < tabs.Length(); i++) { TabParent* tp = TabParent::GetFrom(tabs[i]); if (tp->GetTabId() == tabId) { nsCOMPtr<nsIDOMElement> node = do_QueryInterface(tp->GetOwnerElement()); node.forget(aBrowser); return NS_OK; } } *aBrowser = nullptr; return NS_OK; }
nsIDOMWindow* PrintingParent::DOMWindowFromBrowserParent(PBrowserParent* parent) { if (!parent) { return nullptr; } TabParent* tabParent = TabParent::GetFrom(parent); if (!tabParent) { return nullptr; } nsCOMPtr<Element> frameElement = tabParent->GetOwnerElement(); if (!frameElement) { return nullptr; } nsCOMPtr<nsIContent> frame(do_QueryInterface(frameElement)); if (!frame) { return nullptr; } nsCOMPtr<nsIDOMWindow> parentWin = do_QueryInterface(frame->OwnerDoc()->GetWindow()); if (!parentWin) { return nullptr; } return parentWin; }