diff --git a/src/ng/location.js b/src/ng/location.js index e6f629e593dd..3196b1d57b7c 100644 --- a/src/ng/location.js +++ b/src/ng/location.js @@ -1,6 +1,6 @@ 'use strict'; -var URL_MATCH = /^([^:]+):\/\/(\w+:{0,1}\w*@)?([\w\.-]*)(:([0-9]+))?(\/[^\?#]*)?(\?([^#]*))?(#(.*))?$/, +var URL_MATCH = /^([^:]+):\/\/(\w+:{0,1}\w*@)?(\{?[\w\.-]*\}?)(:([0-9]+))?(\/[^\?#]*)?(\?([^#]*))?(#(.*))?$/, PATH_MATCH = /^([^\?#]*)?(\?([^#]*))?(#(.*))?$/, HASH_MATCH = PATH_MATCH, DEFAULT_PORTS = {'http': 80, 'https': 443, 'ftp': 21}; diff --git a/test/ng/locationSpec.js b/test/ng/locationSpec.js index c40d5323d715..bf91c25023ca 100644 --- a/test/ng/locationSpec.js +++ b/test/ng/locationSpec.js @@ -676,6 +676,19 @@ describe('$location', function() { expect(match[8]).toBe('foo'); expect(match[10]).toBe('bar'); }); + + it('should parse FFOS app:// urls', function() { + var match = URL_MATCH.exec('app://{d0419af1-8b42-41c5-96f4-ef4179e52315}/path'); + + expect(match[1]).toBe('app'); + expect(match[3]).toBe('{d0419af1-8b42-41c5-96f4-ef4179e52315}'); + expect(match[5]).toBeFalsy(); + expect(match[6]).toBe('/path'); + expect(match[8]).toBeFalsy(); + + match = URL_MATCH.exec('app://}foo{') + expect(match).toBe(null); + }); });