blob: c46805a2a4e2b5f2ce91539613a23de79aabe6cd [file] [log] [blame]
// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
chrome.extension.onRequest.addListener(
function(url, sender, sendResponse) {
var isErrorTriggered = false;
var req = new XMLHttpRequest();
console.log('Requesting url: ' + url);
req.open('GET', url, true);
req.onload = function() {
sendResponse({
'event': 'load',
'status': req.status,
'text': req.responseText
});
};
req.onerror = function() {
isErrorTriggered = true;
sendResponse({
'event': 'error',
'status': req.status,
'text': req.responseText
});
};
try {
req.send(null);
} catch (e) {
if (/^https?:/i.test(url)) {
sendResponse({
'thrownError': 'req.send() has thrown an error for ' + url + ': ' + e
});
} else if (!isErrorTriggered) {
// A NetworkError will synchronously be be thrown whenever a
// FTP request fails. This should be handled by req.onerror.
sendResponse({
'thrownError': 'req.send() has thrown an error without dispatching ' +
'the req.onerror event for ' + url + ': ' + e
});
}
}
});
chrome.extension.sendRequest('injected');