Permalink
Browse files

added ipv6 support to urlparse regex Fixes #2362

  • Loading branch information...
johnbender committed Aug 30, 2011
1 parent 23ee457 commit f679d3062032ef43aa3ba6a97f3d7b9289a208a3
Showing with 28 additions and 2 deletions.
  1. +1 −1 js/jquery.mobile.navigation.js
  2. +1 −1 tests/unit/navigation/index.html
  3. +26 −0 tests/unit/navigation/navigation_helpers.js
@@ -38,7 +38,7 @@
// [15]: ?msg=1234&type=unread
// [16]: #msg-content
//
urlParseRE: /^(((([^:\/#\?]+:)?(?:\/\/((?:(([^:@\/#\?]+)(?:\:([^:@\/#\?]+))?)@)?(([^:\/#\?]+)(?:\:([0-9]+))?))?)?)?((\/?(?:[^\/\?#]+\/+)*)([^\?#]*)))?(\?[^#]+)?)(#.*)?/,
urlParseRE: /^(((([^:\/#\?]+:)?(?:\/\/((?:(([^:@\/#\?]+)(?:\:([^:@\/#\?]+))?)@)?(([^:\/#\?\]\[]+|\[[^\/\]@#?]+\])(?:\:([0-9]+))?))?)?)?((\/?(?:[^\/\?#]+\/+)*)([^\?#]*)))?(\?[^#]+)?)(#.*)?/,
//Parse a URL into a structure that allows easy access to
//all of the URL components by name.
@@ -18,7 +18,7 @@
<script type="text/javascript">
$.testHelper.setPushStateFor([
"navigation_transitions.js",
"navigation_helper.js",
"navigation_helpers.js",
"navigation_core.js",
"navigation_paths.js"
]);
@@ -127,6 +127,32 @@
same( mua( "?foo=1&bar=2#spaz", p5 ), "http://jqm.com/test.php?foo=1&bar=2#spaz", "query relative and fragment - absolute root" );
});
// https://github.com/jquery/jquery-mobile/issues/2362
test( "ipv6 host support", function(){
// http://www.ietf.org/rfc/rfc2732.txt ipv6 examples for tests
// most definitely not comprehensive
var ipv6_1 = "http://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:80/index.html",
ipv6_2 = "http://[1080:0:0:0:8:800:200C:417A]/index.html",
ipv6_3 = "http://[3ffe:2a00:100:7031::1]",
ipv6_4 = "http://[1080::8:800:200C:417A]/foo",
ipv6_5 = "http://[::192.9.5.5]/ipng",
ipv6_6 = "http://[::FFFF:129.144.52.38]:80/index.html",
ipv6_7 = "http://[2010:836B:4179::836B:4179]",
fromIssue = "http://[3fff:cafe:babe::]:443/foo";
same( $.mobile.path.parseUrl(ipv6_1).host, "[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:80");
same( $.mobile.path.parseUrl(ipv6_1).hostname, "[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]");
same( $.mobile.path.parseUrl(ipv6_2).host, "[1080:0:0:0:8:800:200C:417A]");
same( $.mobile.path.parseUrl(ipv6_3).host, "[3ffe:2a00:100:7031::1]");
same( $.mobile.path.parseUrl(ipv6_4).host, "[1080::8:800:200C:417A]");
same( $.mobile.path.parseUrl(ipv6_5).host, "[::192.9.5.5]");
same( $.mobile.path.parseUrl(ipv6_6).host, "[::FFFF:129.144.52.38]:80");
same( $.mobile.path.parseUrl(ipv6_6).hostname, "[::FFFF:129.144.52.38]");
same( $.mobile.path.parseUrl(ipv6_7).host, "[2010:836B:4179::836B:4179]");
same( $.mobile.path.parseUrl(fromIssue).host, "[3fff:cafe:babe::]:443");
same( $.mobile.path.parseUrl(fromIssue).hostname, "[3fff:cafe:babe::]");
});
test( "path.clean is working properly", function(){
var localroot = location.protocol + "//" + location.host + location.pathname,
remoteroot = "http://google.com/",

0 comments on commit f679d30

Please sign in to comment.