diff options
-rw-r--r-- | embed/ephy-embed-utils.c | 15 | ||||
-rw-r--r-- | embed/ephy-embed-utils.h | 5 | ||||
-rw-r--r-- | src/ephy-link.c | 21 |
3 files changed, 23 insertions, 18 deletions
diff --git a/embed/ephy-embed-utils.c b/embed/ephy-embed-utils.c index a5c77a782..0405de744 100644 --- a/embed/ephy-embed-utils.c +++ b/embed/ephy-embed-utils.c @@ -95,3 +95,18 @@ ephy_embed_utils_address_has_web_scheme (const char *address) return has_web_scheme; } + +char* +ephy_embed_utils_normalize_address (const char *address) +{ + char *effective_address; + + g_return_val_if_fail (address, NULL); + + if (ephy_embed_utils_address_has_web_scheme (address) == FALSE) + effective_address = g_strconcat ("http://", address, NULL); + else + effective_address = g_strdup (address); + + return effective_address; +} diff --git a/embed/ephy-embed-utils.h b/embed/ephy-embed-utils.h index fa226d0d7..5d82171e9 100644 --- a/embed/ephy-embed-utils.h +++ b/embed/ephy-embed-utils.h @@ -41,8 +41,9 @@ G_BEGIN_DECLS #define EPHY_WEBKIT_BACK_FORWARD_LIMIT 100 -char * ephy_embed_utils_link_message_parse (char *message); -gboolean ephy_embed_utils_address_has_web_scheme (const char *address); +char* ephy_embed_utils_link_message_parse (char *message); +gboolean ephy_embed_utils_address_has_web_scheme (const char *address); +char* ephy_embed_utils_normalize_address (const char *address); G_END_DECLS diff --git a/src/ephy-link.c b/src/ephy-link.c index 7845dfb62..d6b226d65 100644 --- a/src/ephy-link.c +++ b/src/ephy-link.c @@ -89,28 +89,17 @@ 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); - } + char *effective_address; LOG ("ephy_link_open address \"%s\" parent-embed %p flags %u", address, embed, flags); + effective_address = ephy_embed_utils_normalize_address (address); + g_signal_emit (link, signals[OPEN_LINK], 0, - effective_url, embed, flags, + effective_address, embed, flags, &new_embed); - g_free (effective_url); + g_free (effective_address); return new_embed; } |