aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/Browser.js6
-rw-r--r--test/BrowserSpecs.js12
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);