diff options
| author | Igor Minar | 2011-07-12 00:47:07 -0700 |
|---|---|---|
| committer | Igor Minar | 2011-07-13 16:21:08 -0700 |
| commit | 8a8a2cf4623708b69dba3816e22b01407e338b73 (patch) | |
| tree | 8f4ae1d8658c0a1cff9497e60551890478cd3a04 | |
| parent | 47efe44a1d8c9a40526a610b5ee31c44288adee0 (diff) | |
| download | angular.js-8a8a2cf4623708b69dba3816e22b01407e338b73.tar.bz2 | |
refactor($browser.xhr): use $browser.addJs for JSONP
There is no reason why we shouldn't reuse $browser.addJs for JSONP
requests.
| -rw-r--r-- | src/Browser.js | 6 | ||||
| -rw-r--r-- | test/BrowserSpecs.js | 14 |
2 files changed, 9 insertions, 11 deletions
diff --git a/src/Browser.js b/src/Browser.js index 535396bd..4340ac4e 100644 --- a/src/Browser.js +++ b/src/Browser.js @@ -89,14 +89,12 @@ function Browser(window, document, body, XHR, $log) { outstandingRequestCount ++; if (lowercase(method) == 'json') { var callbackId = ("angular_" + Math.random() + '_' + (idCounter++)).replace(/\d\./, ''); - var script = jqLite(rawDocument.createElement('script')) - .attr({type: 'text/javascript', src: url.replace('JSON_CALLBACK', callbackId)}); + var script = self.addJs(url.replace('JSON_CALLBACK', callbackId)); window[callbackId] = function(data){ delete window[callbackId]; - script.remove(); + body[0].removeChild(script) completeOutstandingRequest(callback, 200, data); }; - body.append(script); } else { var xhr = new XHR(); xhr.open(method, url, true); diff --git a/test/BrowserSpecs.js b/test/BrowserSpecs.js index f87e98f8..d6eb5697 100644 --- a/test/BrowserSpecs.js +++ b/test/BrowserSpecs.js @@ -1,6 +1,6 @@ describe('browser', function(){ - var browser, fakeWindow, xhr, logs, scripts, setTimeoutQueue; + var browser, fakeWindow, xhr, logs, scripts, removedScripts, setTimeoutQueue; function fakeSetTimeout(fn) { setTimeoutQueue.push(fn); @@ -17,13 +17,15 @@ describe('browser', function(){ beforeEach(function(){ setTimeoutQueue = []; scripts = []; + removedScripts = []; xhr = null; fakeWindow = { location: {href:"http://server"}, setTimeout: fakeSetTimeout }; - var fakeBody = {append: function(node){scripts.push(node);}}; + var fakeBody = [{appendChild: function(node){scripts.push(node);}, + removeChild: function(node){removedScripts.push(node);}}]; var FakeXhr = function(){ xhr = this; @@ -87,15 +89,13 @@ describe('browser', function(){ expect(callback).not.toHaveBeenCalled(); expect(scripts.length).toEqual(1); var script = scripts[0]; - script.remove = function(){ - log += 'remove();'; - }; - var url = script.attr('src').split('?cb='); + var url = script.src.split('?cb='); expect(url[0]).toEqual('http://example.org/path'); expect(typeof fakeWindow[url[1]]).toEqual($function); fakeWindow[url[1]]('data'); expect(callback).toHaveBeenCalled(); - expect(log).toEqual('remove();200:data;'); + expect(log).toEqual('200:data;'); + expect(scripts).toEqual(removedScripts); expect(fakeWindow[url[1]]).toBeUndefined(); }); }); |
