// Copyright 2014 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.
// -----------------------------------------------------------------------------
// NOTE: If you change this file you need to touch renderer_resources.grd to
// have your change take effect.
// -----------------------------------------------------------------------------
// Partial implementation of the Greasemonkey API, see:
// http://wiki.greasespot.net/Greasemonkey_Manual:APIs
function GM_addStyle(css) {
var parent = document.getElementsByTagName("head")[0];
if (!parent) {
parent = document.documentElement;
}
var style = document.createElement("style");
style.type = "text/css";
var textNode = document.createTextNode(css);
style.appendChild(textNode);
parent.appendChild(style);
}
function GM_xmlhttpRequest(details) {
function setupEvent(xhr, url, eventName, callback) {
xhr[eventName] = function () {
var isComplete = xhr.readyState == 4;
var responseState = {
responseText: xhr.responseText,
readyState: xhr.readyState,
responseHeaders: isComplete ? xhr.getAllResponseHeaders() : "",
status: isComplete ? xhr.status : 0,
statusText: isComplete ? xhr.statusText : "",
finalUrl: isComplete ? url : ""
};
callback(responseState);
};
}
var xhr = new XMLHttpRequest();
var eventNames = ["onload", "onerror", "onreadystatechange"];
for (var i = 0; i < eventNames.length; i++ ) {
var eventName = eventNames[i];
if (eventName in details) {
setupEvent(xhr, details.url, eventName, details[eventName]);
}
}
xhr.open(details.method, details.url);
if (details.overrideMimeType) {
xhr.overrideMimeType(details.overrideMimeType);
}
if (details.headers) {
for (var header in details.headers) {
xhr.setRequestHeader(header, details.headers[header]);
}
}
xhr.send(details.data ? details.data : null);
}
function GM_openInTab(url) {
window.open(url, "");
}
function GM_log(message) {
window.console.log(message);
}
(function() {
function generateGreasemonkeyStub(name) {
return function() {
console.log("%s is not supported.", name);
};
}
var apis = ["GM_getValue", "GM_setValue", "GM_registerMenuCommand"];
for (var i = 0, api; api = apis[i]; i++) {
window[api] = generateGreasemonkeyStub(api);
}
})();