| Index: chrome/renderer/resources/greasemonkey_api.js
|
| diff --git a/chrome/renderer/resources/greasemonkey_api.js b/chrome/renderer/resources/greasemonkey_api.js
|
| index 57fa252d7d0dcdc3f15349d8fe18280f3b57bbbf..320e42ac8bea1fb2d5ad7ff23314bd7cc6e48a64 100644
|
| --- a/chrome/renderer/resources/greasemonkey_api.js
|
| +++ b/chrome/renderer/resources/greasemonkey_api.js
|
| @@ -63,18 +63,53 @@ function GM_getResourceText(resourceName) {
|
| }
|
|
|
| function GM_addStyle(css) {
|
| - var head = document.getElementsByTagName("head")[0];
|
| - if (!head) {
|
| - return;
|
| + var parent = document.getElementsByTagName("head")[0];
|
| + if (!parent) {
|
| + parent = document.documentElement;
|
| }
|
| var style = document.createElement("style");
|
| style.type = "text/css";
|
| - style.innerHTML = css;
|
| - head.appendChild(style);
|
| + var textNode = document.createTextNode(css);
|
| + style.appendChild(textNode);
|
| + parent.appendChild(style);
|
| }
|
|
|
| function GM_xmlhttpRequest(details) {
|
| - throw new Error("not implemented.");
|
| + 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_registerMenuCommand(commandName, commandFunc, accelKey,
|
|
|