Skip to content

Instantly share code, notes, and snippets.

@teramako
Created March 21, 2011 17:19
Show Gist options
  • Save teramako/879819 to your computer and use it in GitHub Desktop.
Save teramako/879819 to your computer and use it in GitHub Desktop.
diff -r d1ddc3299a92 common/content/util.js
--- a/common/content/util.js Fri Mar 18 22:31:08 2011 +0900
+++ b/common/content/util.js Tue Mar 22 02:19:26 2011 +0900
@@ -762,10 +762,14 @@
// Handle as URL, but remove spaces. Useful for copied/'p'asted URLs.
return url.replace(/\s*\n+\s*/g, "");
+ let uri = util.createURI(url);
+ if (util.validateHost(uri))
+ return uri.spec;
+
// Ok, not a valid proto. If it looks like URL-ish (foo.com/bar),
// let Gecko figure it out.
- if (/[.\/]/.test(url) && !/^\.|\s/.test(url) || /^[\w-.]+:\d+(?:\/|$)/.test(url))
- return url;
+ //if (/[.\/]/.test(url) && !/^\.|\s/.test(url) || /^[\w-.]+:\d+(?:\/|$)/.test(url))
+ // return url;
// TODO: it would be clearer if the appropriate call to
// getSearchURL was made based on whether or not the first word was
@@ -815,6 +819,297 @@
default:
return null;
}
+ },
+ validateHost: function validateHost (uri) {
+ if (!(uri instanceof Ci.nsIURI))
+ uri = uitl.createURI(uri);
+
+ var suffix = window.Services.eTLD.getPublicSuffix(uri);
+ // co.jp など "." が含まれていたらドメイン名だとみなす
+ if (suffix.indexOf(".") > 0)
+ return true;
+
+ switch (suffix) {
+ // gTLD
+ case "aero":
+ case "arpa":
+ case "asia":
+ case "biz":
+ case "cat":
+ case "com":
+ case "coop":
+ case "edu":
+ case "gov":
+ case "info":
+ case "int":
+ case "jobs":
+ case "mil":
+ case "mobi":
+ case "museum":
+ case "name":
+ case "net":
+ case "org":
+ case "pro":
+ case "tel":
+ case "travel":
+ // ccTLD
+ case "ac":
+ case "ad":
+ case "ae":
+ case "af":
+ case "ag":
+ case "ai":
+ case "al":
+ case "am":
+ case "an":
+ case "ao":
+ case "aq":
+ case "ar":
+ case "as":
+ case "at":
+ case "au":
+ case "aw":
+ case "ax":
+ case "az":
+ case "ba":
+ case "bb":
+ case "bd":
+ case "be":
+ case "bf":
+ case "bg":
+ case "bh":
+ case "bi":
+ case "bj":
+ case "bm":
+ case "bn":
+ case "bo":
+ case "br":
+ case "bs":
+ case "bt":
+ case "bv":
+ case "bw":
+ case "by":
+ case "bz":
+ case "ca":
+ case "cc":
+ case "cd":
+ case "cf":
+ case "cg":
+ case "ch":
+ case "ci":
+ case "ck":
+ case "cl":
+ case "cm":
+ case "cn":
+ case "co":
+ case "cr":
+ case "cs":
+ case "cu":
+ case "cv":
+ case "cx":
+ case "cy":
+ case "cz":
+ case "dd":
+ case "de":
+ case "dj":
+ case "dk":
+ case "dm":
+ case "do":
+ case "dz":
+ case "ec":
+ case "ee":
+ case "eg":
+ case "eh":
+ case "er":
+ case "es":
+ case "et":
+ case "eu":
+ case "fi":
+ case "fj":
+ case "fk":
+ case "fm":
+ case "fo":
+ case "fr":
+ case "ga":
+ case "gb":
+ case "gd":
+ case "ge":
+ case "gf":
+ case "gg":
+ case "gh":
+ case "gi":
+ case "gl":
+ case "gm":
+ case "gn":
+ case "gp":
+ case "gq":
+ case "gr":
+ case "gs":
+ case "gt":
+ case "gu":
+ case "gw":
+ case "gy":
+ case "hk":
+ case "hm":
+ case "hn":
+ case "hr":
+ case "ht":
+ case "hu":
+ case "id":
+ case "ie":
+ case "il":
+ case "im":
+ case "in":
+ case "io":
+ case "iq":
+ case "ir":
+ case "is":
+ case "it":
+ case "je":
+ case "jm":
+ case "jo":
+ case "jp":
+ case "ke":
+ case "kg":
+ case "kh":
+ case "ki":
+ case "km":
+ case "kn":
+ case "kp":
+ case "kr":
+ case "kw":
+ case "ky":
+ case "kz":
+ case "la":
+ case "lb":
+ case "lc":
+ case "li":
+ case "lk":
+ case "lr":
+ case "ls":
+ case "lt":
+ case "lu":
+ case "lv":
+ case "ly":
+ case "ma":
+ case "mc":
+ case "md":
+ case "me":
+ case "mg":
+ case "mh":
+ case "mk":
+ case "ml":
+ case "mm":
+ case "mn":
+ case "mo":
+ case "mp":
+ case "mq":
+ case "mr":
+ case "ms":
+ case "mt":
+ case "mu":
+ case "mv":
+ case "mw":
+ case "mx":
+ case "my":
+ case "mz":
+ case "na":
+ case "nc":
+ case "ne":
+ case "nf":
+ case "ng":
+ case "ni":
+ case "nl":
+ case "no":
+ case "np":
+ case "nr":
+ case "nu":
+ case "nz":
+ case "om":
+ case "pa":
+ case "pe":
+ case "pf":
+ case "pg":
+ case "ph":
+ case "pk":
+ case "pl":
+ case "pm":
+ case "pn":
+ case "pr":
+ case "ps":
+ case "pt":
+ case "pw":
+ case "py":
+ case "qa":
+ case "re":
+ case "ro":
+ case "rs":
+ case "ru":
+ case "rw":
+ case "sa":
+ case "sb":
+ case "sc":
+ case "sd":
+ case "se":
+ case "sg":
+ case "sh":
+ case "si":
+ case "sj":
+ case "sk":
+ case "sl":
+ case "sm":
+ case "sn":
+ case "so":
+ case "sr":
+ case "st":
+ case "su":
+ case "sv":
+ case "sy":
+ case "sz":
+ case "tc":
+ case "td":
+ case "tf":
+ case "tg":
+ case "th":
+ case "tj":
+ case "tk":
+ case "tl":
+ case "tm":
+ case "tn":
+ case "to":
+ case "tp":
+ case "tr":
+ case "tt":
+ case "tv":
+ case "tw":
+ case "tz":
+ case "ua":
+ case "ug":
+ case "uk":
+ case "um":
+ case "us":
+ case "uy":
+ case "uz":
+ case "va":
+ case "vc":
+ case "ve":
+ case "vg":
+ case "vi":
+ case "vn":
+ case "vu":
+ case "wf":
+ case "ws":
+ case "ye":
+ case "yt":
+ case "yu":
+ case "za":
+ case "zm":
+ case "zr":
+ case "zw":
+ return true;
+ default:
+ return false;
+ }
}
}, {
// TODO: Why don't we just push all util.BuiltinType up into modules? --djk
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment