diff options
| author | RafaĆ Jagoda | 2013-12-27 12:55:02 +0100 |
|---|---|---|
| committer | Tobias Bosch | 2014-01-09 10:10:11 -0800 |
| commit | 28fc80bba0107075ab371fd0a7634a38891626b2 (patch) | |
| tree | 493e228fb06b3443b6808c373d07759d42aefb51 | |
| parent | b6c42d5e8155edc9013bd531f553c278ce37c3c8 (diff) | |
| download | angular.js-28fc80bba0107075ab371fd0a7634a38891626b2.tar.bz2 | |
fix($httpBackend): Allow status code 0 from any protocol
Android 4.1 stock browser also returns status code 0 when
a template is loaded via `http` and the application is cached using
appcache.
Fixes #1356.
Closes #5547.
| -rw-r--r-- | src/ng/httpBackend.js | 8 | ||||
| -rw-r--r-- | test/ng/httpBackendSpec.js | 10 |
2 files changed, 9 insertions, 9 deletions
diff --git a/src/ng/httpBackend.js b/src/ng/httpBackend.js index 565e1b12..d2806e3e 100644 --- a/src/ng/httpBackend.js +++ b/src/ng/httpBackend.js @@ -121,14 +121,14 @@ function createHttpBackend($browser, createXhr, $browserDefer, callbacks, rawDoc } function completeRequest(callback, status, response, headersString) { - var protocol = urlResolve(url).protocol; - // cancel timeout and subsequent timeout promise resolution timeoutId && $browserDefer.cancel(timeoutId); jsonpDone = xhr = null; - // fix status code for file protocol (it's always 0) - status = (protocol == 'file' && status === 0) ? (response ? 200 : 404) : status; + // fix status code when it is 0 (0 status is undocumented). + // Occurs when accessing file resources. + // On Android 4.1 stock browser it occurs while retrieving files from application cache. + status = (status === 0) ? (response ? 200 : 404) : status; // normalize IE bug (http://bugs.jquery.com/ticket/1450) status = status == 1223 ? 204 : status; diff --git a/test/ng/httpBackendSpec.js b/test/ng/httpBackendSpec.js index 49514d8e..92781f9a 100644 --- a/test/ng/httpBackendSpec.js +++ b/test/ng/httpBackendSpec.js @@ -421,7 +421,7 @@ describe('$httpBackend', function() { // TODO(vojta): test whether it fires "async-end" on both success and error }); - describe('file protocol', function() { + describe('protocols that return 0 status code', function() { function respond(status, content) { xhr = MockXhr.$$lastInstance; @@ -435,7 +435,7 @@ describe('$httpBackend', function() { it('should convert 0 to 200 if content', function() { $backend = createHttpBackend($browser, createMockXhr); - $backend('GET', 'file:///whatever/index.html', null, callback); + $backend('GET', 'someProtocol:///whatever/index.html', null, callback); respond(0, 'SOME CONTENT'); expect(callback).toHaveBeenCalled(); @@ -446,7 +446,7 @@ describe('$httpBackend', function() { it('should convert 0 to 404 if no content', function() { $backend = createHttpBackend($browser, createMockXhr); - $backend('GET', 'file:///whatever/index.html', null, callback); + $backend('GET', 'someProtocol:///whatever/index.html', null, callback); respond(0, ''); expect(callback).toHaveBeenCalled(); @@ -462,10 +462,10 @@ describe('$httpBackend', function() { hash : "#/C:/", host : "", hostname : "", - href : "file:///C:/base#!/C:/foo", + href : "someProtocol:///C:/base#!/C:/foo", pathname : "/C:/foo", port : "", - protocol : "file:", + protocol : "someProtocol:", search : "", setAttribute: angular.noop }; |
