aboutsummaryrefslogtreecommitdiffstats
path: root/embed
diff options
context:
space:
mode:
authorXan Lopez <xan@igalia.com>2012-08-15 00:09:08 +0800
committerXan Lopez <xan@igalia.com>2012-08-15 00:09:08 +0800
commit2801de37638347280be76be5c7e34b1237236b7d (patch)
tree67a45ebf041d7a683f3dbf1ab68a4c0972d66168 /embed
parent33f9683837f7f1130851c3f234dec00a6c1ae505 (diff)
downloadgsoc2013-epiphany-2801de37638347280be76be5c7e34b1237236b7d.tar.gz
gsoc2013-epiphany-2801de37638347280be76be5c7e34b1237236b7d.tar.zst
gsoc2013-epiphany-2801de37638347280be76be5c7e34b1237236b7d.zip
ephy-web-view: ignore paths when deciding whether a URI has a TLD
SoupTLD is not happy if we give it something like ".com/blah/blah". Add a unit test for this case too.
Diffstat (limited to 'embed')
-rw-r--r--embed/ephy-web-view.c31
1 files changed, 23 insertions, 8 deletions
diff --git a/embed/ephy-web-view.c b/embed/ephy-web-view.c
index f27226555..5caa27a58 100644
--- a/embed/ephy-web-view.c
+++ b/embed/ephy-web-view.c
@@ -2853,20 +2853,35 @@ ephy_web_view_new (void)
static gboolean
is_public_domain (EphyWebView *view, const char *url)
{
+ SoupURI *soup_uri;
+ gboolean retval = FALSE;
+ const char *host = NULL;
EphyWebViewPrivate *priv = view->priv;
- if (g_regex_match (priv->domain_regex, url, 0, NULL)) {
- if (g_str_equal (url, "localhost"))
- return TRUE;
+ soup_uri = soup_uri_new (url);
+ if (!soup_uri) {
+ char *effective_url = g_strconcat ("http://", url, NULL);
+ soup_uri = soup_uri_new (effective_url);
+ g_free (effective_url);
+ }
+ g_return_val_if_fail (soup_uri, FALSE);
+
+ host = soup_uri->host;
- url = g_strrstr (url, ".");
- if (!url || *url == '\0')
- return FALSE;
+ if (g_regex_match (priv->domain_regex, host, 0, NULL)) {
+ if (g_str_equal (host, "localhost"))
+ retval = TRUE;
+ else {
+ host = g_strrstr (host, ".");
- return soup_tld_domain_is_public_suffix (url);
+ if (host && *host != '\0')
+ retval = soup_tld_domain_is_public_suffix (host);
+ }
}
- return FALSE;
+ soup_uri_free (soup_uri);
+
+ return retval;
}
/**