summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Gryniewicz <dang@gentoo.org>2006-11-17 17:13:47 +0000
committerDaniel Gryniewicz <dang@gentoo.org>2006-11-17 17:13:47 +0000
commit1144416a60adb3bcad6d14f964e23e55572fadd0 (patch)
tree968a0bec1beebda423bf6d6948cd885775f171bf /www-client/epiphany/files
parentAdd ~sparc-fbsd keyword. (diff)
downloadgentoo-2-1144416a60adb3bcad6d14f964e23e55572fadd0.tar.gz
gentoo-2-1144416a60adb3bcad6d14f964e23e55572fadd0.tar.bz2
gentoo-2-1144416a60adb3bcad6d14f964e23e55572fadd0.zip
fixes for bug #153902 and Bug #155380
(Portage version: 2.1.2_rc1-r7)
Diffstat (limited to 'www-client/epiphany/files')
-rw-r--r--www-client/epiphany/files/epiphany-2.16.1-dbus-1.patch38
-rw-r--r--www-client/epiphany/files/epiphany-2.16.1-firefox2.patch326
2 files changed, 364 insertions, 0 deletions
diff --git a/www-client/epiphany/files/epiphany-2.16.1-dbus-1.patch b/www-client/epiphany/files/epiphany-2.16.1-dbus-1.patch
new file mode 100644
index 000000000000..b8eb5f85063e
--- /dev/null
+++ b/www-client/epiphany/files/epiphany-2.16.1-dbus-1.patch
@@ -0,0 +1,38 @@
+diff --exclude-from=/home/dang/.diffrc -up -ruN epiphany-2.16.1.orig/src/ephy-dbus.c epiphany-2.16.1/src/ephy-dbus.c
+--- epiphany-2.16.1.orig/src/ephy-dbus.c 2006-09-13 07:48:50.000000000 -0400
++++ epiphany-2.16.1/src/ephy-dbus.c 2006-11-17 11:20:53.000000000 -0500
+@@ -301,16 +301,6 @@ ephy_dbus_connect_to_session_bus (EphyDb
+ return TRUE;
+ }
+
+-static void
+-ephy_dbus_disconnect_bus (DBusGConnection *bus)
+-{
+- if (bus != NULL) {
+- dbus_connection_close
+- (dbus_g_connection_get_connection (bus));
+- dbus_g_connection_unref (bus);
+- }
+-}
+-
+ /* Public methods */
+
+ static void
+@@ -337,7 +327,7 @@ ephy_dbus_shutdown (EphyDbus *dbus)
+ dbus_connection_remove_filter
+ (dbus_g_connection_get_connection (priv->session_bus),
+ session_filter_func, dbus);
+- ephy_dbus_disconnect_bus (priv->session_bus);
++ dbus_g_connection_unref (priv->session_bus);
+ priv->session_bus = NULL;
+ }
+
+@@ -346,7 +336,7 @@ ephy_dbus_shutdown (EphyDbus *dbus)
+ dbus_connection_remove_filter
+ (dbus_g_connection_get_connection (priv->system_bus),
+ system_filter_func, dbus);
+- ephy_dbus_disconnect_bus (priv->system_bus);
++ dbus_g_connection_unref (priv->system_bus);
+ priv->system_bus = NULL;
+ }
+ }
diff --git a/www-client/epiphany/files/epiphany-2.16.1-firefox2.patch b/www-client/epiphany/files/epiphany-2.16.1-firefox2.patch
new file mode 100644
index 000000000000..9dbf6fc4d22b
--- /dev/null
+++ b/www-client/epiphany/files/epiphany-2.16.1-firefox2.patch
@@ -0,0 +1,326 @@
+diff --exclude-from=/home/dang/.diffrc -up -ruN epiphany-2.16.1.orig/embed/ephy-embed.c epiphany-2.16.1/embed/ephy-embed.c
+--- epiphany-2.16.1.orig/embed/ephy-embed.c 2006-09-13 07:48:29.000000000 -0400
++++ epiphany-2.16.1/embed/ephy-embed.c 2006-11-17 11:17:32.000000000 -0500
+@@ -423,6 +423,25 @@ ephy_embed_load_url (EphyEmbed *embed,
+ }
+
+ /**
++ * ephy_embed_load:
++ * @embed: an #EphyEmbed
++ * @url: an URL
++ * @flags: flags modifying load behaviour
++ * @previous_embed: the referrer embed or %NULL
++ *
++ * Loads a new web page in @embed.
++ **/
++void
++ephy_embed_load (EphyEmbed *embed,
++ const char *url,
++ EphyEmbedLoadFlags flags,
++ EphyEmbed *referring_embed)
++{
++ EphyEmbedIface *iface = EPHY_EMBED_GET_IFACE (embed);
++ iface->load (embed, url, flags, referring_embed);
++}
++
++/**
+ * ephy_embed_stop_load:
+ * @embed: an #EphyEmbed
+ *
+diff --exclude-from=/home/dang/.diffrc -up -ruN epiphany-2.16.1.orig/embed/ephy-embed.h epiphany-2.16.1/embed/ephy-embed.h
+--- epiphany-2.16.1.orig/embed/ephy-embed.h 2006-09-13 07:48:29.000000000 -0400
++++ epiphany-2.16.1/embed/ephy-embed.h 2006-11-17 11:17:32.000000000 -0500
+@@ -63,6 +63,12 @@ typedef enum
+ EPHY_EMBED_CHROME_BOOKMARKSBAR = 1 << 3
+ } EphyEmbedChrome;
+
++typedef enum
++{
++ EPHY_EMBED_LOAD_FLAGS_NONE = 1 << 0,
++ EPHY_EMBED_LOAD_FLAGS_ALLOW_THIRD_PARTY_FIXUP = 1 << 1,
++} EphyEmbedLoadFlags;
++
+ #define EPHY_EMBED_CHROME_ALL (EPHY_EMBED_CHROME_MENUBAR | \
+ EPHY_EMBED_CHROME_TOOLBAR | \
+ EPHY_EMBED_CHROME_STATUSBAR | \
+@@ -157,6 +163,10 @@ struct _EphyEmbedIface
+ /* Methods */
+ void (* load_url) (EphyEmbed *embed,
+ const char *url);
++ void (* load) (EphyEmbed *embed,
++ const char *url,
++ EphyEmbedLoadFlags flags,
++ EphyEmbed *referring_embed);
+ void (* stop_load) (EphyEmbed *embed);
+ void (* reload) (EphyEmbed *embed,
+ gboolean force);
+@@ -232,6 +242,10 @@ GType ephy_embed_get_type (void);
+ /* Base */
+ void ephy_embed_load_url (EphyEmbed *embed,
+ const char *url);
++void ephy_embed_load (EphyEmbed *embed,
++ const char *url,
++ EphyEmbedLoadFlags flags,
++ EphyEmbed *referring_embed);
+
+ void ephy_embed_stop_load (EphyEmbed *embed);
+
+diff --exclude-from=/home/dang/.diffrc -up -ruN epiphany-2.16.1.orig/embed/mozilla/EphyBrowser.cpp epiphany-2.16.1/embed/mozilla/EphyBrowser.cpp
+--- epiphany-2.16.1.orig/embed/mozilla/EphyBrowser.cpp 2006-09-13 07:48:34.000000000 -0400
++++ epiphany-2.16.1/embed/mozilla/EphyBrowser.cpp 2006-11-17 11:17:32.000000000 -0500
+@@ -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 --exclude-from=/home/dang/.diffrc -up -ruN epiphany-2.16.1.orig/embed/mozilla/EphyBrowser.h epiphany-2.16.1/embed/mozilla/EphyBrowser.h
+--- epiphany-2.16.1.orig/embed/mozilla/EphyBrowser.h 2006-09-13 07:48:35.000000000 -0400
++++ epiphany-2.16.1/embed/mozilla/EphyBrowser.h 2006-11-17 11:17:32.000000000 -0500
+@@ -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 --exclude-from=/home/dang/.diffrc -up -ruN epiphany-2.16.1.orig/embed/mozilla/mozilla-embed.cpp epiphany-2.16.1/embed/mozilla/mozilla-embed.cpp
+--- epiphany-2.16.1.orig/embed/mozilla/mozilla-embed.cpp 2006-09-13 07:48:39.000000000 -0400
++++ epiphany-2.16.1/embed/mozilla/mozilla-embed.cpp 2006-11-17 11:18:04.000000000 -0500
+@@ -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;
++
++ pbrowser = MOZILLA_EMBED(preview_embed)->priv->browser;
++ if (pbrowser != NULL)
++ {
++ pbrowser->GetDocumentURI (getter_AddRefs (uri));
++ }
++ }
++#ifdef HAVE_GECKO_1_8_1
++ if (flags & EPHY_EMBED_LOAD_FLAGS_ALLOW_THIRD_PARTY_FIXUP)
++ {
++ browser->LoadURI (url, nsIWebNavigation::LOAD_FLAGS_ALLOW_THIRD_PARTY_FIXUP, uri);
++ }
++ else
++#endif /* HAVE_GECKO_1_8_1 */
++ {
++ 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;
+diff --exclude-from=/home/dang/.diffrc -up -ruN epiphany-2.16.1.orig/src/ephy-link.h epiphany-2.16.1/src/ephy-link.h
+--- epiphany-2.16.1.orig/src/ephy-link.h 2006-09-13 07:48:52.000000000 -0400
++++ epiphany-2.16.1/src/ephy-link.h 2006-11-17 11:17:32.000000000 -0500
+@@ -41,7 +41,8 @@ typedef enum
+ {
+ EPHY_LINK_NEW_WINDOW = 1 << 0,
+ EPHY_LINK_NEW_TAB = 1 << 1,
+- EPHY_LINK_JUMP_TO = 1 << 2
++ EPHY_LINK_JUMP_TO = 1 << 2,
++ EPHY_LINK_ALLOW_FIXUP = 1 << 3
+ } EphyLinkFlags;
+
+ struct _EphyLinkIface
+diff --exclude-from=/home/dang/.diffrc -up -ruN epiphany-2.16.1.orig/src/ephy-location-action.c epiphany-2.16.1/src/ephy-location-action.c
+--- epiphany-2.16.1.orig/src/ephy-location-action.c 2006-09-13 07:48:52.000000000 -0400
++++ epiphany-2.16.1/src/ephy-location-action.c 2006-11-17 11:17:32.000000000 -0500
+@@ -139,7 +139,7 @@ action_activated_cb (GtkEntryCompletion
+ if (url == NULL) return;
+
+ ephy_link_open (EPHY_LINK (action), url, NULL,
+- ephy_link_flags_from_current_event ());
++ ephy_link_flags_from_current_event () | EPHY_LINK_ALLOW_FIXUP);
+
+ g_free (url);
+ }
+@@ -162,7 +162,7 @@ entry_activate_cb (GtkEntry *entry,
+ g_return_if_fail (address != NULL);
+
+ ephy_link_open (EPHY_LINK (action), address, NULL,
+- ephy_link_flags_from_current_event ());
++ ephy_link_flags_from_current_event () | EPHY_LINK_ALLOW_FIXUP);
+
+ g_free (address);
+ }
+diff --exclude-from=/home/dang/.diffrc -up -ruN epiphany-2.16.1.orig/src/ephy-shell.c epiphany-2.16.1/src/ephy-shell.c
+--- epiphany-2.16.1.orig/src/ephy-shell.c 2006-09-13 07:48:52.000000000 -0400
++++ epiphany-2.16.1/src/ephy-shell.c 2006-11-17 11:17:32.000000000 -0500
+@@ -530,8 +530,20 @@ ephy_shell_new_tab_full (EphyShell *shel
+ }
+ else if (flags & EPHY_NEW_TAB_OPEN_PAGE)
+ {
++ EphyEmbedLoadFlags load_flags = 0;
++
+ g_assert (url != NULL);
+- ephy_embed_load_url (embed, url);
++
++ if (flags & EPHY_NEW_TAB_ALLOW_FIXUP)
++ {
++ load_flags = EPHY_EMBED_LOAD_FLAGS_ALLOW_THIRD_PARTY_FIXUP;
++ }
++ else
++ {
++ load_flags = EPHY_EMBED_LOAD_FLAGS_NONE;
++ }
++ ephy_embed_load (embed, url, load_flags, previous_embed);
++
+ is_empty = url_is_empty (url);
+ }
+
+diff --exclude-from=/home/dang/.diffrc -up -ruN epiphany-2.16.1.orig/src/ephy-shell.h epiphany-2.16.1/src/ephy-shell.h
+--- epiphany-2.16.1.orig/src/ephy-shell.h 2006-09-13 07:48:53.000000000 -0400
++++ epiphany-2.16.1/src/ephy-shell.h 2006-11-17 11:17:32.000000000 -0500
+@@ -62,6 +62,10 @@ typedef enum
+ EPHY_NEW_TAB_JUMP = 1 << 9,
+ EPHY_NEW_TAB_IN_NEW_WINDOW = 1 << 10,
+ EPHY_NEW_TAB_IN_EXISTING_WINDOW = 1 << 11,
++
++ /* The way to load */
++ EPHY_NEW_TAB_ALLOW_FIXUP = 1 << 12,
++
+ } EphyNewTabFlags;
+
+ struct _EphyShell
+diff --exclude-from=/home/dang/.diffrc -up -ruN epiphany-2.16.1.orig/src/ephy-window.c epiphany-2.16.1/src/ephy-window.c
+--- epiphany-2.16.1.orig/src/ephy-window.c 2006-09-13 07:48:53.000000000 -0400
++++ epiphany-2.16.1/src/ephy-window.c 2006-11-17 11:17:32.000000000 -0500
+@@ -2976,7 +2976,9 @@ ephy_window_open_link (EphyLink *link,
+ tab = ephy_window_get_active_tab (window);
+ }
+
+- if (flags != 0)
++ if (flags & (EPHY_LINK_JUMP_TO |
++ EPHY_LINK_NEW_TAB |
++ EPHY_LINK_NEW_WINDOW))
+ {
+ EphyNewTabFlags ntflags = EPHY_NEW_TAB_OPEN_PAGE;
+
+@@ -2993,6 +2995,10 @@ ephy_window_open_link (EphyLink *link,
+ {
+ ntflags |= EPHY_NEW_TAB_IN_EXISTING_WINDOW;
+ }
++ if (flags & EPHY_LINK_ALLOW_FIXUP)
++ {
++ ntflags |= EPHY_NEW_TAB_ALLOW_FIXUP;
++ }
+
+ new_tab = ephy_shell_new_tab
+ (ephy_shell,
+@@ -3005,7 +3011,17 @@ ephy_window_open_link (EphyLink *link,
+
+ embed = ephy_tab_get_embed (tab);
+
++ if (flags & EPHY_LINK_ALLOW_FIXUP)
++ {
++ ephy_embed_load (embed,
++ address,
++ EPHY_EMBED_LOAD_FLAGS_ALLOW_THIRD_PARTY_FIXUP,
++ NULL);
++ }
++ else
++ {
+ ephy_embed_load_url (embed, address);
++ }
+
+ if (address == NULL || address[0] == '\0' || strcmp (address, "about:blank") == 0)
+ {