diff options
author | Jean-François Rameau <jframeau@cvs.gnome.org> | 2006-10-23 01:08:06 +0800 |
---|---|---|
committer | Jean-François Rameau <jframeau@src.gnome.org> | 2006-10-23 01:08:06 +0800 |
commit | f2d423a34e23b3d785fab96c9c14925bdbe16591 (patch) | |
tree | 9bea04c2dc966a64887bd56796bc08c6051038f1 /embed/mozilla | |
parent | 461daa07586775c39d72c22287e0ab1fd1f9cf34 (diff) | |
download | gsoc2013-epiphany-f2d423a34e23b3d785fab96c9c14925bdbe16591.tar gsoc2013-epiphany-f2d423a34e23b3d785fab96c9c14925bdbe16591.tar.gz gsoc2013-epiphany-f2d423a34e23b3d785fab96c9c14925bdbe16591.tar.bz2 gsoc2013-epiphany-f2d423a34e23b3d785fab96c9c14925bdbe16591.tar.lz gsoc2013-epiphany-f2d423a34e23b3d785fab96c9c14925bdbe16591.tar.xz gsoc2013-epiphany-f2d423a34e23b3d785fab96c9c14925bdbe16591.tar.zst gsoc2013-epiphany-f2d423a34e23b3d785fab96c9c14925bdbe16591.zip |
Get keyword search back by passing ALLOW_THIRD_PARTY_FIXUP flag to gecko.
2006-10-22 Jean-François Rameau <jframeau@cvs.gnome.org>
* embed/ephy-embed.h:
* embed/ephy-embed.c:
* embed/mozilla/EphyBrowser.cpp:
* embed/mozilla/EphyBrowser.h:
* embed/mozilla/mozilla-embed.cpp:
* src/ephy-link.h:
* src/ephy-location-action.c: (action_activated_cb):
* src/ephy-shell.c: (ephy_shell_new_tab_full):
* src/ephy-shell.h:
* src/ephy-window.c: (ephy_window_open_link):
Get keyword search back by passing ALLOW_THIRD_PARTY_FIXUP flag to gecko.
Add a new load method to EphyEmbed to custom load behaviour and pass (optional) referrer.
Fix bug #350053.
Diffstat (limited to 'embed/mozilla')
-rw-r--r-- | embed/mozilla/EphyBrowser.cpp | 52 | ||||
-rw-r--r-- | embed/mozilla/EphyBrowser.h | 6 | ||||
-rw-r--r-- | embed/mozilla/mozilla-embed.cpp | 37 |
3 files changed, 95 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; +} + diff --git a/embed/mozilla/EphyBrowser.h b/embed/mozilla/EphyBrowser.h index c1464893f..9b41cd0d9 100644 --- a/embed/mozilla/EphyBrowser.h +++ b/embed/mozilla/EphyBrowser.h @@ -36,6 +36,7 @@ #include <nsIWebBrowserFocus.h> #include <nsIWebBrowser.h> #include <nsIWebNavigation.h> +#include <nsPIDOMWindow.h> #ifdef ALLOW_PRIVATE_API #include <nsIContentViewer.h> @@ -172,6 +173,7 @@ public: nsresult GetDocumentURI (nsIURI **aURI); nsresult GetTargetDocumentURI (nsIURI **aURI); nsresult GetDOMWindow (nsIDOMWindow **window); + nsresult GetPIDOMWindow(nsPIDOMWindow **aPIWin); nsresult GetHasModifiedForms (PRBool *modified); @@ -183,6 +185,10 @@ public: nsresult Close (); + nsresult LoadURI(const char *aURI, + PRUint32 aLoadFlags = nsIWebNavigation::LOAD_FLAGS_NONE, + nsIURI *aURI = nsnull); + EphyEmbedDocumentType GetDocumentType (); nsCOMPtr<nsIWebBrowser> mWebBrowser; diff --git a/embed/mozilla/mozilla-embed.cpp b/embed/mozilla/mozilla-embed.cpp index db8d09e68..45213598e 100644 --- a/embed/mozilla/mozilla-embed.cpp +++ b/embed/mozilla/mozilla-embed.cpp @@ -324,6 +324,42 @@ impl_load_url (EphyEmbed *embed, gtk_moz_embed_load_url (GTK_MOZ_EMBED(embed), url); } +static char * impl_get_location (EphyEmbed *embed, gboolean toplevel); + +static void +impl_load (EphyEmbed *embed, + const char *url, + EphyEmbedLoadFlags flags, + EphyEmbed *preview_embed) +{ + EphyBrowser *browser; + + browser = MOZILLA_EMBED(embed)->priv->browser; + g_return_if_fail (browser != NULL); + + nsCOMPtr<nsIURI> uri; + if (preview_embed != NULL) + { + EphyBrowser *pbrowser; + nsresult rv; + + pbrowser = MOZILLA_EMBED(preview_embed)->priv->browser; + if (pbrowser != NULL) + { + pbrowser->GetDocumentURI (getter_AddRefs (uri)); + } + } + + if (flags & EPHY_EMBED_LOAD_FLAGS_ALLOW_THIRD_PARTY_FIXUP) + { + browser->LoadURI (url, nsIWebNavigation::LOAD_FLAGS_ALLOW_THIRD_PARTY_FIXUP, uri); + } + else + { + browser->LoadURI (url, nsIWebNavigation::LOAD_FLAGS_NONE, uri); + } +} + static void impl_stop_load (EphyEmbed *embed) { @@ -1114,6 +1150,7 @@ static void ephy_embed_iface_init (EphyEmbedIface *iface) { iface->load_url = impl_load_url; + iface->load = impl_load; iface->stop_load = impl_stop_load; iface->can_go_back = impl_can_go_back; iface->can_go_forward =impl_can_go_forward; |