diff options
| -rw-r--r-- | src/Browser.js | 6 | ||||
| -rw-r--r-- | test/BrowserSpecs.js | 12 |
2 files changed, 11 insertions, 7 deletions
diff --git a/src/Browser.js b/src/Browser.js index 85bfb304..bc278b28 100644 --- a/src/Browser.js +++ b/src/Browser.js @@ -81,6 +81,7 @@ function Browser(window, document, body, XHR, $log) { callback = post; post = _null; } + outstandingRequestCount ++; if (lowercase(method) == 'json') { var callbackId = "angular_" + Math.random() + '_' + (idCounter++); callbackId = callbackId.replace(/\d\./, ''); @@ -89,7 +90,7 @@ function Browser(window, document, body, XHR, $log) { script.src = url.replace('JSON_CALLBACK', callbackId); window[callbackId] = function(data){ window[callbackId] = _undefined; - callback(200, data); + completeOutstandingRequest(callback, 200, data); }; body.append(script); } else { @@ -98,7 +99,6 @@ function Browser(window, document, body, XHR, $log) { xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xhr.setRequestHeader("Accept", "application/json, text/plain, */*"); xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest"); - outstandingRequestCount ++; xhr.onreadystatechange = function() { if (xhr.readyState == 4) { completeOutstandingRequest(callback, xhr.status || 200, xhr.responseText); @@ -248,7 +248,7 @@ function Browser(window, document, body, XHR, $log) { }); } return listener; - } + }; ////////////////////////////////////////////////////////////// // Cookies API diff --git a/test/BrowserSpecs.js b/test/BrowserSpecs.js index f0c026ba..96e5a988 100644 --- a/test/BrowserSpecs.js +++ b/test/BrowserSpecs.js @@ -20,16 +20,16 @@ describe('browser', function(){ fakeWindow = { location: {href:"http://server"}, setTimeout: fakeSetTimeout - } + }; - var fakeBody = {append: function(node){scripts.push(node)}}; + var fakeBody = {append: function(node){scripts.push(node);}}; var fakeXhr = function(){ xhr = this; this.open = noop; this.setRequestHeader = noop; this.send = noop; - } + }; logs = {log:[], warn:[], info:[], error:[]}; @@ -68,15 +68,19 @@ describe('browser', function(){ describe('xhr', function(){ describe('JSON', function(){ it('should add script tag for request', function() { + var callback = jasmine.createSpy('callback'); var log = ""; browser.xhr('JSON', 'http://example.org/path?cb=JSON_CALLBACK', function(code, data){ log += code + ':' + data + ';'; }); + browser.notifyWhenNoOutstandingRequests(callback); + expect(callback).not.wasCalled(); expect(scripts.length).toEqual(1); var url = scripts[0].src.split('?cb='); expect(url[0]).toEqual('http://example.org/path'); expect(typeof fakeWindow[url[1]]).toEqual($function); fakeWindow[url[1]]('data'); + expect(callback).wasCalled(); expect(log).toEqual('200:data;'); expect(typeof fakeWindow[url[1]]).toEqual('undefined'); }); @@ -388,7 +392,7 @@ describe('browser', function(){ browser = new Browser(fakeWindow, {}, {}); var events = [], - event = {type: "hashchange"} + event = {type: "hashchange"}; browser.onHashChange(function(e) { events.push(e); |
