29 lines
966 B
CoffeeScript
29 lines
966 B
CoffeeScript
requestID = 0
|
|
|
|
chrome.runtime.onMessage.addListener (request, sender, sendResponse) ->
|
|
id = requestID
|
|
requestID++
|
|
sendResponse id
|
|
|
|
xhr = new XMLHttpRequest()
|
|
xhr.open 'GET', request.url, true
|
|
xhr.responseType = request.responseType
|
|
xhr.addEventListener 'load', ->
|
|
if @readyState is @DONE && xhr.status is 200
|
|
contentType = @getResponseHeader 'Content-Type'
|
|
contentDisposition = @getResponseHeader 'Content-Disposition'
|
|
{response} = @
|
|
if request.responseType is 'arraybuffer'
|
|
response = [new Uint8Array(response)...]
|
|
chrome.tabs.sendMessage sender.tab.id, {id, response, contentType, contentDisposition}
|
|
else
|
|
chrome.tabs.sendMessage sender.tab.id, {id, error: true}
|
|
, false
|
|
xhr.addEventListener 'error', ->
|
|
chrome.tabs.sendMessage sender.tab.id, {id, error: true}
|
|
, false
|
|
xhr.addEventListener 'abort', ->
|
|
chrome.tabs.sendMessage sender.tab.id, {id, error: true}
|
|
, false
|
|
xhr.send()
|