nsresult nsFrameLoader::ReallyStartLoading() { NS_ENSURE_STATE(mURIToLoad && mOwnerContent && mOwnerContent->IsInDoc()); // Just to be safe, recheck uri. nsresult rv = CheckURILoad(mURIToLoad); NS_ENSURE_SUCCESS(rv, rv); rv = EnsureDocShell(); NS_ENSURE_SUCCESS(rv, rv); nsCOMPtr<nsIDocShellLoadInfo> loadInfo; mDocShell->CreateLoadInfo(getter_AddRefs(loadInfo)); NS_ENSURE_TRUE(loadInfo, NS_ERROR_FAILURE); // We'll use our principal, not that of the document loaded inside us. This // is very important; needed to prevent XSS attacks on documents loaded in // subframes! loadInfo->SetOwner(mOwnerContent->NodePrincipal()); nsCOMPtr<nsIURI> referrer; rv = mOwnerContent->NodePrincipal()->GetURI(getter_AddRefs(referrer)); NS_ENSURE_SUCCESS(rv, rv); loadInfo->SetReferrer(referrer); // Kick off the load... rv = mDocShell->LoadURI(mURIToLoad, loadInfo, nsIWebNavigation::LOAD_FLAGS_NONE, PR_FALSE); mURIToLoad = nsnull; #ifdef DEBUG if (NS_FAILED(rv)) { NS_WARNING("Failed to load the URL"); } #endif return NS_OK; }
/*=========================================================================== * * Class CSrLoadDlg Event - void OnOK (void); * *=========================================================================*/ void CSrLoadDlg::OnOK (void) { CreateLoadInfo(); CDialog::OnOK(); }