Merge pull request #2454 from yurydelendik/worker-xhr-response
Tests presence of the xhr-response in the worker
This commit is contained in:
		
						commit
						c05f073a73
					
				| @ -152,7 +152,19 @@ var WorkerMessageHandler = { | |||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     handler.on('test', function wphSetupTest(data) { |     handler.on('test', function wphSetupTest(data) { | ||||||
|       handler.send('test', data instanceof Uint8Array); |       // check if Uint8Array can be sent to worker
 | ||||||
|  |       if (!(data instanceof Uint8Array)) { | ||||||
|  |         handler.send('test', false); | ||||||
|  |         return; | ||||||
|  |       } | ||||||
|  |       // check if the response property is supported by xhr
 | ||||||
|  |       var xhr = new XMLHttpRequest(); | ||||||
|  |       if (!('response' in xhr || 'mozResponse' in xhr || | ||||||
|  |           'responseArrayBuffer' in xhr || 'mozResponseArrayBuffer' in xhr)) { | ||||||
|  |         handler.send('test', false); | ||||||
|  |         return; | ||||||
|  |       } | ||||||
|  |       handler.send('test', true); | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|     handler.on('GetDocRequest', function wphSetupDoc(data) { |     handler.on('GetDocRequest', function wphSetupDoc(data) { | ||||||
|  | |||||||
| @ -512,6 +512,37 @@ var tests = [ | |||||||
|     }, |     }, | ||||||
|     impact: 'Important', |     impact: 'Important', | ||||||
|     area: 'Core' |     area: 'Core' | ||||||
|  |   }, | ||||||
|  |   { | ||||||
|  |     id: 'Worker-xhr-response', | ||||||
|  |     name: 'XMLHttpRequest supports the reponse property in web workers', | ||||||
|  |     run: function () { | ||||||
|  |       if (typeof Worker == 'undefined') | ||||||
|  |         return { output: 'Skipped', emulated: '' }; | ||||||
|  | 
 | ||||||
|  |      try { | ||||||
|  |         var worker = new Worker('worker-stub.js'); | ||||||
|  | 
 | ||||||
|  |         var promise = new Promise(); | ||||||
|  |         var timeout = setTimeout(function () { | ||||||
|  |           promise.resolve({ output: 'Failed', emulated: '?' }); | ||||||
|  |         }, 5000); | ||||||
|  | 
 | ||||||
|  |         worker.addEventListener('message', function (e) { | ||||||
|  |           var data = e.data; | ||||||
|  |           if (data.action == 'xhr' && data.result) | ||||||
|  |             promise.resolve({ output: 'Success', emulated: '' }); | ||||||
|  |           else | ||||||
|  |             promise.resolve({ output: 'Failed', emulated: 'Yes' }); | ||||||
|  |         }); | ||||||
|  |         worker.postMessage({action: 'xhr'}); | ||||||
|  |         return promise; | ||||||
|  |       } catch (e) { | ||||||
|  |         return { output: 'Failed', emulated: 'Yes' }; | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     impact: 'Important', | ||||||
|  |     area: 'Core' | ||||||
|   } |   } | ||||||
| ]; | ]; | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -17,7 +17,16 @@ | |||||||
| 
 | 
 | ||||||
| onmessage = function (e) { | onmessage = function (e) { | ||||||
|   var data = e.data; |   var data = e.data; | ||||||
|   postMessage({action: 'test', result: data.action == 'test' && |   switch (data.action) { | ||||||
|                                        data.data instanceof Uint8Array}); |   case 'test': | ||||||
|  |     postMessage({action: 'test', result: data.data instanceof Uint8Array}); | ||||||
|  |     break; | ||||||
|  |   case 'xhr': | ||||||
|  |     var xhr = new XMLHttpRequest(); | ||||||
|  |     var responseExists = 'response' in xhr || 'mozResponse' in xhr || | ||||||
|  |         'responseArrayBuffer' in xhr || 'mozResponseArrayBuffer' in xhr; | ||||||
|  |     postMessage({action: 'xhr', result: responseExists}); | ||||||
|  |     break; | ||||||
|  |   } | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user