| OLD | NEW |
| (Empty) |
| 1 <!doctype html> | |
| 2 <!-- | |
| 3 Copyright (c) 2014 The Polymer Project Authors. All rights reserved. | |
| 4 This code may only be used under the BSD style license found at http://polymer.g
ithub.io/LICENSE.txt | |
| 5 The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt | |
| 6 The complete set of contributors may be found at http://polymer.github.io/CONTRI
BUTORS.txt | |
| 7 Code distributed by Google as part of the polymer project is also | |
| 8 subject to an additional IP rights grant found at http://polymer.github.io/PATEN
TS.txt | |
| 9 --> | |
| 10 <html> | |
| 11 <head> | |
| 12 <title>core-ajax</title> | |
| 13 | |
| 14 <script src="../../webcomponentsjs/webcomponents.js"></script> | |
| 15 <script src="../../web-component-tester/browser.js"></script> | |
| 16 | |
| 17 | |
| 18 | |
| 19 <link rel="import" href="../core-ajax.html"> | |
| 20 | |
| 21 </head> | |
| 22 <body> | |
| 23 | |
| 24 <core-ajax | |
| 25 handleAs="json" | |
| 26 auto></core-ajax> | |
| 27 | |
| 28 <!-- | |
| 29 Test that when core-ajax fires multiple times as requests are updated, | |
| 30 only the response from the most recent request is used to update the respons
e | |
| 31 object. | |
| 32 --> | |
| 33 <script> | |
| 34 test('race-condition', function(done) { | |
| 35 var ajax = document.querySelector("core-ajax"); | |
| 36 var xhr = sinon.useFakeXMLHttpRequest(); | |
| 37 var headers = { | |
| 38 "Content-Type": "text/json" | |
| 39 }; | |
| 40 var body = function(url) { | |
| 41 return '{"url": "' + url + '"}'; | |
| 42 }; | |
| 43 var requests = []; | |
| 44 xhr.onCreate = function (xhr) { | |
| 45 requests.push(xhr); | |
| 46 }; | |
| 47 | |
| 48 // Make request1, then request2. request2 returns first, followed by reque
st1. | |
| 49 async.series([ | |
| 50 function(cb) { | |
| 51 ajax.url="http://example.org/request1" | |
| 52 cb(); | |
| 53 }, | |
| 54 animationFrameFlush, | |
| 55 function(cb) { | |
| 56 ajax.url="http://example.org/request2" | |
| 57 cb(); | |
| 58 }, | |
| 59 animationFrameFlush, | |
| 60 function(cb) { | |
| 61 requests[0].respond(200, headers, body("http://example.org/request2"))
; | |
| 62 cb(); | |
| 63 }, | |
| 64 flush, | |
| 65 function(cb) { | |
| 66 requests[1].respond(200, headers, body("http://example.org/request1"))
; | |
| 67 cb(); | |
| 68 }, | |
| 69 flush, | |
| 70 function(cb) { | |
| 71 assert(ajax.response.url.match('request1'), | |
| 72 "Race condition detected. An earlier request's delayed response "
+ | |
| 73 "caused the more recent request's response to be overwritten."); | |
| 74 done(); | |
| 75 cb(); | |
| 76 } | |
| 77 ], function(){}); | |
| 78 }); | |
| 79 </script> | |
| 80 </body> | |
| 81 </html> | |
| OLD | NEW |