diff options
| author | Jeff Cross | 2013-11-26 11:36:36 -0800 | 
|---|---|---|
| committer | Jeff Cross | 2013-11-26 18:31:27 -0800 | 
| commit | 736c8fbbae57a209f4ba570e38cc3bd0745a9569 (patch) | |
| tree | 7f6516f1792fc2a1e1828d38228542c4c40c748d /src/ng/urlUtils.js | |
| parent | 947562220d7d1c851f138a816f7530738b97e7b6 (diff) | |
| download | angular.js-736c8fbbae57a209f4ba570e38cc3bd0745a9569.tar.bz2 | |
refactor($location): move file://+win path fix to $location
The urlResolve method was fixed to automatically remove the
volume label from path names to fix issues with the file
protocol on windows where $location.path() was returning
paths where the first segment would be the volume name,
such as "/C:/mypath". See #4942 and #4928
However, the solution was specific to the $location non-
HTML5 mode, and was implemented at a lower level of
abstraction than it should have been. This refactor moves
the fix to inside of the LocationHashBangUrl $$parse method.
Closes #5041
Diffstat (limited to 'src/ng/urlUtils.js')
| -rw-r--r-- | src/ng/urlUtils.js | 48 | 
1 files changed, 4 insertions, 44 deletions
diff --git a/src/ng/urlUtils.js b/src/ng/urlUtils.js index cba8981c..3169248f 100644 --- a/src/ng/urlUtils.js +++ b/src/ng/urlUtils.js @@ -7,11 +7,6 @@  // exactly the behavior needed here.  There is little value is mocking these out for this  // service.  var urlParsingNode = document.createElement("a"); -/* -Matches paths for file protocol on windows, -such as /C:/foo/bar, and captures only /foo/bar. -*/ -var windowsFilePathExp = /^\/?.*?:(\/.*)/;  var originUrl = urlResolve(window.location.href, true); @@ -68,8 +63,7 @@ var originUrl = urlResolve(window.location.href, true);   *   */  function urlResolve(url, base) { -  var href = url, -      pathname; +  var href = url;    if (msie) {      // Normalize before parse.  Refer Implementation Notes on why this is @@ -80,21 +74,6 @@ function urlResolve(url, base) {    urlParsingNode.setAttribute('href', href); -  /* -   * In Windows, on an anchor node on documents loaded from -   * the filesystem, the browser will return a pathname -   * prefixed with the drive name ('/C:/path') when a -   * pathname without a drive is set: -   *  * a.setAttribute('href', '/foo') -   *   * a.pathname === '/C:/foo' //true -   * -   * Inside of Angular, we're always using pathnames that -   * do not include drive names for routing. -   */ - -  pathname = removeWindowsDriveName(urlParsingNode.pathname, url, base); -  pathname = (pathname.charAt(0) === '/') ? pathname : '/' + pathname; -    // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils    return {      href: urlParsingNode.href, @@ -104,11 +83,12 @@ function urlResolve(url, base) {      hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',      hostname: urlParsingNode.hostname,      port: urlParsingNode.port, -    pathname: pathname +    pathname: (urlParsingNode.pathname.charAt(0) === '/') +      ? urlParsingNode.pathname +      : '/' + urlParsingNode.pathname    };  } -  /**   * Parse a request URL and determine whether this is a same-origin request as the application document.   * @@ -121,23 +101,3 @@ function urlIsSameOrigin(requestUrl) {    return (parsed.protocol === originUrl.protocol &&            parsed.host === originUrl.host);  } - -function removeWindowsDriveName (path, url, base) { -  var firstPathSegmentMatch; - -  //Get the relative path from the input URL. -  if (url.indexOf(base) === 0) { -    url = url.replace(base, ''); -  } - -  /* -   * The input URL intentionally contains a -   * first path segment that ends with a colon. -   */ -  if (windowsFilePathExp.exec(url)) { -    return path; -  } - -  firstPathSegmentMatch = windowsFilePathExp.exec(path); -  return firstPathSegmentMatch ? firstPathSegmentMatch[1] : path; -}
\ No newline at end of file  | 
