Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(7580)

Unified Diff: chrome/renderer/resources/greasemonkey_api.js

Issue 39121: Commit http://codereview.chromium.org/27037 (Closed)
Patch Set: Created 11 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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,
« no previous file with comments | « chrome/renderer/extensions/greasemonkey_api_unittest.cc ('k') | chrome/test/data/extensions/greasemonkey_api_test.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698