Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit da3d96c

Browse files
committed
refactor(urlResolve): return already parsed URLs unchanged
Closes angular#14890
1 parent bc77575 commit da3d96c

File tree

2 files changed

+16
-4
lines changed

2 files changed

+16
-4
lines changed

src/ng/urlUtils.js

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,8 @@ var originUrl = urlResolve(window.location.href);
3939
* http://james.padolsey.com/javascript/parsing-urls-with-the-dom/
4040
*
4141
* @kind function
42-
* @param {string} url The URL to be parsed.
42+
* @param {string|object} url The URL to be parsed. If `url` is not a string, it will be returned
43+
* unchanged.
4344
* @description Normalizes and parses a URL.
4445
* @returns {object} Returns the normalized URL as a dictionary.
4546
*
@@ -56,6 +57,8 @@ var originUrl = urlResolve(window.location.href);
5657
*
5758
*/
5859
function urlResolve(url) {
60+
if (!isString(url)) return url;
61+
5962
var href = url;
6063

6164
// Support: IE 9-11 only
@@ -118,7 +121,7 @@ function urlIsAllowedOriginFactory(whitelistedOriginUrls) {
118121
* @returns {boolean} - Whether the specified URL is of an allowed origin.
119122
*/
120123
return function urlIsAllowedOrigin(requestUrl) {
121-
var parsedUrl = isString(requestUrl) ? urlResolve(requestUrl) : requestUrl;
124+
var parsedUrl = urlResolve(requestUrl);
122125
return parsedAllowedOriginUrls.some(urlsAreSameOrigin.bind(null, parsedUrl));
123126
};
124127
}
@@ -134,8 +137,8 @@ function urlIsAllowedOriginFactory(whitelistedOriginUrls) {
134137
* @returns {boolean} - True if both URLs have the same origin, and false otherwise.
135138
*/
136139
function urlsAreSameOrigin(url1, url2) {
137-
url1 = isString(url1) ? urlResolve(url1) : url1;
138-
url2 = isString(url2) ? urlResolve(url2) : url2;
140+
url1 = urlResolve(url1);
141+
url2 = urlResolve(url2);
139142

140143
return (url1.protocol === url2.protocol &&
141144
url1.host === url2.host);

test/ng/urlUtilsSpec.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,15 @@
22

33
describe('urlUtils', function() {
44
describe('urlResolve', function() {
5+
it('should returned already parsed URLs unchanged', function() {
6+
var urlObj = urlResolve('/foo?bar=baz#qux');
7+
expect(urlResolve(urlObj)).toBe(urlObj);
8+
expect(urlResolve(true)).toBe(true);
9+
expect(urlResolve(null)).toBeNull();
10+
expect(urlResolve(undefined)).toBeUndefined();
11+
});
12+
13+
514
it('should normalize a relative url', function() {
615
expect(urlResolve('foo').href).toMatch(/^https?:\/\/[^/]+\/foo$/);
716
});

0 commit comments

Comments
 (0)