diff options
author | Christian Persch <chpe@cvs.gnome.org> | 2004-06-15 06:33:15 +0800 |
---|---|---|
committer | Christian Persch <chpe@src.gnome.org> | 2004-06-15 06:33:15 +0800 |
commit | 696f5d076f397929d9527f7e6f3c127ede2c00f9 (patch) | |
tree | 1101c91e42a44f0fe6ad681df057e3f244fc1698 /embed/mozilla | |
parent | 7df4f3cd1d2f6fc0543c81c041d250941abc81f7 (diff) | |
download | gsoc2013-epiphany-696f5d076f397929d9527f7e6f3c127ede2c00f9.tar gsoc2013-epiphany-696f5d076f397929d9527f7e6f3c127ede2c00f9.tar.gz gsoc2013-epiphany-696f5d076f397929d9527f7e6f3c127ede2c00f9.tar.bz2 gsoc2013-epiphany-696f5d076f397929d9527f7e6f3c127ede2c00f9.tar.lz gsoc2013-epiphany-696f5d076f397929d9527f7e6f3c127ede2c00f9.tar.xz gsoc2013-epiphany-696f5d076f397929d9527f7e6f3c127ede2c00f9.tar.zst gsoc2013-epiphany-696f5d076f397929d9527f7e6f3c127ede2c00f9.zip |
Work around mozilla bug #246392 which goes back to the original urls when
2004-06-15 Christian Persch <chpe@cvs.gnome.org>
* embed/mozilla/EphyBrowser.cpp:
* embed/mozilla/EphyBrowser.h:
* embed/mozilla/mozilla-embed.cpp:
Work around mozilla bug #246392 which goes back to the original urls
when reloading a frameset. Fixes bug #115800.
Diffstat (limited to 'embed/mozilla')
-rw-r--r-- | embed/mozilla/EphyBrowser.cpp | 38 | ||||
-rw-r--r-- | embed/mozilla/EphyBrowser.h | 6 | ||||
-rw-r--r-- | embed/mozilla/mozilla-embed.cpp | 35 |
3 files changed, 72 insertions, 7 deletions
diff --git a/embed/mozilla/EphyBrowser.cpp b/embed/mozilla/EphyBrowser.cpp index 061eba80c..9101ea31f 100644 --- a/embed/mozilla/EphyBrowser.cpp +++ b/embed/mozilla/EphyBrowser.cpp @@ -415,6 +415,44 @@ nsresult EphyBrowser::GoToHistoryIndex (PRInt16 index) return ContentNav->GotoIndex (index); } +/* Workaround for broken reload with frames, see mozilla bug + * http://bugzilla.mozilla.org/show_bug.cgi?id=246392 + */ +nsresult EphyBrowser::Reload (PRUint32 flags) +{ + NS_ENSURE_TRUE (mWebBrowser, NS_ERROR_FAILURE); + + nsCOMPtr<nsISHistory> sessionHistory; + GetSHistory (getter_AddRefs (sessionHistory)); + + nsCOMPtr<nsIWebNavigation> webNavigation; + webNavigation = do_QueryInterface (sessionHistory); + + if (!webNavigation) + { + webNavigation = do_QueryInterface (mWebBrowser); + } + NS_ENSURE_TRUE (webNavigation, NS_ERROR_FAILURE); + + PRUint32 reloadFlags; + switch (flags) + { + case RELOAD_FORCE: + reloadFlags = nsIWebNavigation::LOAD_FLAGS_BYPASS_CACHE | + nsIWebNavigation::LOAD_FLAGS_BYPASS_PROXY; + break; + case RELOAD_ENCODING_CHANGE: + reloadFlags = nsIWebNavigation::LOAD_FLAGS_CHARSET_CHANGE; + break; + case RELOAD_NORMAL: + default: + reloadFlags = 0; + break; + } + + return webNavigation->Reload (reloadFlags); +} + nsresult EphyBrowser::SetZoom (float aZoom, PRBool reflow) { if (!mWebBrowser) return NS_ERROR_FAILURE; diff --git a/embed/mozilla/EphyBrowser.h b/embed/mozilla/EphyBrowser.h index 0f3a89d85..27a1e399c 100644 --- a/embed/mozilla/EphyBrowser.h +++ b/embed/mozilla/EphyBrowser.h @@ -107,6 +107,12 @@ public: nsresult GetSHUrlAtIndex (PRInt32 index, nsCString &url); nsresult GoToHistoryIndex (PRInt16 index); + enum { RELOAD_NORMAL = 0 }; + enum { RELOAD_FORCE = 1 }; + enum { RELOAD_ENCODING_CHANGE = 2 }; + + nsresult Reload (PRUint32 flags); + nsresult ForceEncoding (const char *encoding); nsresult GetEncodingInfo (EphyEncodingInfo **infoptr); diff --git a/embed/mozilla/mozilla-embed.cpp b/embed/mozilla/mozilla-embed.cpp index e8ad4fc59..f52e25ca1 100644 --- a/embed/mozilla/mozilla-embed.cpp +++ b/embed/mozilla/mozilla-embed.cpp @@ -51,7 +51,6 @@ static void mozilla_embed_destroy (GtkObject *object); static void mozilla_embed_finalize (GObject *object); static void ephy_embed_iface_init (EphyEmbedIface *iface); -static void mozilla_embed_connect_signals (MozillaEmbed *membed); static void mozilla_embed_location_changed_cb (GtkMozEmbed *embed, MozillaEmbed *membed); static void mozilla_embed_net_state_all_cb (GtkMozEmbed *embed, @@ -517,16 +516,29 @@ static void impl_reload (EphyEmbed *embed, EmbedReloadFlags flags) { - guint32 mflags; - - mflags = GTK_MOZ_EMBED_FLAG_RELOADNORMAL; - - if (flags & EMBED_RELOAD_FORCE) + /* Workaround for broken reload with frames, see mozilla bug + * http://bugzilla.mozilla.org/show_bug.cgi?id=246392 + * Replace #if 0 with appropriate MOZILLA_CHECK_VERSION4 once the bug + * has been fixed + */ + gboolean force; + + force = (flags == EMBED_RELOAD_FORCE); +#if 0 + guint mflags = 0; + + if (force) { mflags = GTK_MOZ_EMBED_FLAG_RELOADBYPASSPROXYANDCACHE; } - + gtk_moz_embed_reload (GTK_MOZ_EMBED(embed), mflags); +#else + MozillaEmbedPrivate *mpriv = MOZILLA_EMBED (embed)->priv; + + mpriv->browser->Reload (force ? (PRUint32) EphyBrowser::RELOAD_FORCE : + (PRUint32) EphyBrowser::RELOAD_NORMAL); +#endif } static void @@ -742,8 +754,17 @@ impl_set_encoding (EphyEmbed *embed, result = mpriv->browser->ForceEncoding (encoding); if (NS_FAILED (result)) return; + /* Workaround for broken reload with frames, see mozilla bug + * http://bugzilla.mozilla.org/show_bug.cgi?id=246392 + * Replace #if 0 with appropriate MOZILLA_CHECK_VERSION4 once the bug + * has been fixed + */ +#if 0 gtk_moz_embed_reload (GTK_MOZ_EMBED (embed), GTK_MOZ_EMBED_FLAG_RELOADCHARSETCHANGE); +#else + mpriv->browser->Reload (EphyBrowser::RELOAD_ENCODING_CHANGE); +#endif } static EphyEncodingInfo * |