diff options
-rw-r--r-- | embed/webkit/webkit-embed.c | 14 | ||||
-rw-r--r-- | src/ephy-link.c | 19 |
2 files changed, 19 insertions, 14 deletions
diff --git a/embed/webkit/webkit-embed.c b/embed/webkit/webkit-embed.c index 778106ab2..27a720576 100644 --- a/embed/webkit/webkit-embed.c +++ b/embed/webkit/webkit-embed.c @@ -795,20 +795,8 @@ impl_load (EphyEmbed *embed, EphyEmbed *preview_embed) { WebKitEmbed *wembed = WEBKIT_EMBED (embed); - char *effective_url = NULL; - /* WebKit cannot handle URLs without a protocol */ - if (ephy_embed_utils_address_has_web_scheme (url) == FALSE) - effective_url = g_strconcat ("http://", url, NULL); - else - effective_url = g_strdup (url); - - g_free (wembed->priv->loading_uri); - wembed->priv->loading_uri = g_strdup (effective_url); - - webkit_web_view_open (wembed->priv->web_view, effective_url); - - g_free (effective_url); + webkit_web_view_open (wembed->priv->web_view, url); } static gboolean diff --git a/src/ephy-link.c b/src/ephy-link.c index b74ed2bbf..7845dfb62 100644 --- a/src/ephy-link.c +++ b/src/ephy-link.c @@ -21,6 +21,7 @@ #include "ephy-link.h" +#include "ephy-embed-utils.h" #include "ephy-type-builtins.h" #include "ephy-marshal.h" #include "ephy-signal-accumulator.h" @@ -88,13 +89,29 @@ ephy_link_open (EphyLink *link, EphyLinkFlags flags) { EphyEmbed *new_embed = NULL; + char *effective_url = NULL; + + /* + * WebKit does not normalize URI's by itself, so we need to + * handle this ourselves + */ + if (ephy_embed_utils_address_has_web_scheme (address) == FALSE) + { + effective_url = g_strconcat ("http://", address, NULL); + } + else + { + effective_url = g_strdup (address); + } LOG ("ephy_link_open address \"%s\" parent-embed %p flags %u", address, embed, flags); g_signal_emit (link, signals[OPEN_LINK], 0, - address, embed, flags, + effective_url, embed, flags, &new_embed); + g_free (effective_url); + return new_embed; } |