diff options
Diffstat (limited to 'embed/mozilla/EphyBrowser.cpp')
-rw-r--r-- | embed/mozilla/EphyBrowser.cpp | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/embed/mozilla/EphyBrowser.cpp b/embed/mozilla/EphyBrowser.cpp index 8e2e946a0..aba1645eb 100644 --- a/embed/mozilla/EphyBrowser.cpp +++ b/embed/mozilla/EphyBrowser.cpp @@ -1524,3 +1524,55 @@ EphyBrowser::Close () return domWin->Close(); } + +nsresult +EphyBrowser::GetPIDOMWindow(nsPIDOMWindow **aPIWin) +{ + *aPIWin = nsnull; + + // get the private DOM window + nsCOMPtr<nsPIDOMWindow> domWindowPrivate = do_QueryInterface(mDOMWindow); + + // and the root window for that DOM window + *aPIWin = domWindowPrivate->GetPrivateRoot(); + + if (*aPIWin) + { + NS_ADDREF(*aPIWin); + return NS_OK; + } + + return NS_ERROR_FAILURE; + +} + +nsresult +EphyBrowser::LoadURI(const char *aURI, + PRUint32 aLoadFlags, + nsIURI *aReferrer) +{ + nsString uURI; + nsresult rv = NS_OK; + + NS_CStringToUTF16 (nsCString (aURI), NS_CSTRING_ENCODING_UTF8, uURI); + + if (uURI.Length() == 0) return NS_OK; + + nsCOMPtr<nsIWebNavigation> contentNav = do_QueryInterface (mWebBrowser); + NS_ENSURE_TRUE (contentNav, NS_ERROR_FAILURE); + + nsCOMPtr<nsPIDOMWindow> piWin; + rv = GetPIDOMWindow(getter_AddRefs(piWin)); + NS_ENSURE_SUCCESS (rv, rv); + + nsAutoPopupStatePusher popupStatePusher(piWin, openAllowed); + + rv = contentNav->LoadURI(uURI.get(), // URI string + aLoadFlags, // Load flags + aReferrer, // Referring URI + nsnull, // Post data + nsnull); // extra headers + + return rv; +} + |