aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Persch <chpe@cvs.gnome.org>2004-06-15 06:33:15 +0800
committerChristian Persch <chpe@src.gnome.org>2004-06-15 06:33:15 +0800
commit696f5d076f397929d9527f7e6f3c127ede2c00f9 (patch)
tree1101c91e42a44f0fe6ad681df057e3f244fc1698
parent7df4f3cd1d2f6fc0543c81c041d250941abc81f7 (diff)
downloadgsoc2013-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.
-rw-r--r--ChangeLog9
-rw-r--r--embed/mozilla/EphyBrowser.cpp38
-rw-r--r--embed/mozilla/EphyBrowser.h6
-rw-r--r--embed/mozilla/mozilla-embed.cpp35
4 files changed, 81 insertions, 7 deletions
diff --git a/ChangeLog b/ChangeLog
index 53081293c..f7e4d477c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+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.
+
2004-06-14 Christian Persch <chpe@cvs.gnome.org>
* src/bookmarks/ephy-new-bookmark.c: (duplicate_dialog_construct):
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 *