[Pkg-mozext-commits] [greasemonkey] 12/35: Update xmlhttprequester.js

David Prévot taffit at moszumanska.debian.org
Wed May 20 02:43:37 UTC 2015


This is an automated email from the git hooks/post-receive script.

taffit pushed a commit to branch master
in repository greasemonkey.

commit 5dadde4da77a4ae4240e182410bc6df3cfb3482c
Author: janekptacijarabaci <janekptacijarabaci at users.noreply.github.com>
Date:   Sun May 3 12:47:56 2015 +0200

    Update xmlhttprequester.js
---
 modules/xmlhttprequester.js | 74 ++++++++++++++++++++++++++++-----------------
 1 file changed, 46 insertions(+), 28 deletions(-)

diff --git a/modules/xmlhttprequester.js b/modules/xmlhttprequester.js
index 1a05463..15f10b1 100644
--- a/modules/xmlhttprequester.js
+++ b/modules/xmlhttprequester.js
@@ -12,6 +12,7 @@ var gStringBundle = Components
 function GM_xmlhttpRequester(wrappedContentWin, originUrl, sandbox) {
   this.wrappedContentWin = wrappedContentWin;
   this.originUrl = originUrl;
+  this.sandbox = sandbox;
   this.sandboxPrincipal = Components.utils.getObjectPrincipal(sandbox);
 }
 
@@ -54,17 +55,15 @@ GM_xmlhttpRequester.prototype.contentStartRequest = function(details) {
   }
 
   var rv = {
-    __exposedProps__: {
-        finalUrl: "r",
-        readyState: "r",
-        responseHeaders: "r",
-        responseText: "r",
-        status: "r",
-        statusText: "r",
-        abort: "r"
-        },
-    abort: function () { return req.abort(); }
-  };
+    abort: function () { return req.abort(); },
+    finalUrl: null,
+    readyState: null,
+    responseHeaders: null,
+    responseText: null,
+    status: null,
+    statusText: null
+  }
+
   if (!!details.synchronous) {
     rv.finalUrl = req.finalUrl;
     rv.readyState = req.readyState;
@@ -73,6 +72,17 @@ GM_xmlhttpRequester.prototype.contentStartRequest = function(details) {
     rv.status = req.status;
     rv.statusText = req.statusText;
   }
+  
+  rv = Components.utils.cloneInto({
+    abort: rv.abort.bind(rv),
+    finalUrl: rv.finalUrl,
+    readyState: rv.readyState,
+    responseHeaders: rv.responseHeaders,
+    responseText: rv.responseText,
+    status: rv.status,
+    statusText: rv.statusText
+  }, this.sandbox, {cloneFunctions: true});
+
   return rv;
 };
 
@@ -83,11 +93,13 @@ function(safeUrl, details, req) {
   this.setupReferer(details, req);
 
   var setupRequestEvent = GM_util.hitch(
-      this, 'setupRequestEvent', this.wrappedContentWin);
+      this, 'setupRequestEvent', this.wrappedContentWin, this.sandbox);
 
   setupRequestEvent(req, "abort", details);
   setupRequestEvent(req, "error", details);
   setupRequestEvent(req, "load", details);
+  setupRequestEvent(req, "loadend", details);
+  setupRequestEvent(req, "loadstart", details);
   setupRequestEvent(req, "progress", details);
   setupRequestEvent(req, "readystatechange", details);
   setupRequestEvent(req, "timeout", details);
@@ -95,7 +107,9 @@ function(safeUrl, details, req) {
     setupRequestEvent(req.upload, "abort", details.upload);
     setupRequestEvent(req.upload, "error", details.upload);
     setupRequestEvent(req.upload, "load", details.upload);
+    setupRequestEvent(req.upload, "loadend", details.upload);
     setupRequestEvent(req.upload, "progress", details.upload);
+    setupRequestEvent(req.upload, "timeout", details.upload);
   }
 
   req.mozBackgroundRequest = !!details.mozBackgroundRequest;
@@ -182,7 +196,7 @@ function(details, req) {
 // method by the same name which is a property of 'details' in the content
 // window's security context.
 GM_xmlhttpRequester.prototype.setupRequestEvent =
-function(wrappedContentWin, req, event, details) {
+function(wrappedContentWin, sandbox, req, event, details) {
   // Waive Xrays so that we can read callback function properties ...
   details = Components.utils.waiveXrays(details);
   var eventCallback = details["on" + event];
@@ -195,21 +209,10 @@ function(wrappedContentWin, req, event, details) {
 
   req.addEventListener(event, function(evt) {
     var responseState = {
-      __exposedProps__: {
-          context: "r",
-          finalUrl: "r",
-          lengthComputable: "r",
-          loaded: "r",
-          readyState: "r",
-          response: "r",
-          responseHeaders: "r",
-          responseText: "r",
-          responseXML: "r",
-          status: "r",
-          statusText: "r",
-          total: "r",
-          },
       context: details.context || null,
+      finalUrl: null,
+      lengthComputable: null,
+      loaded: null,
       readyState: req.readyState,
       response: req.response,
       responseHeaders: null,
@@ -217,7 +220,7 @@ function(wrappedContentWin, req, event, details) {
       responseXML: null,
       status: null,
       statusText: null,
-      finalUrl: null
+      total: null
     };
 
     try {
@@ -258,6 +261,21 @@ function(wrappedContentWin, req, event, details) {
         break;
     }
 
+    responseState = Components.utils.cloneInto({
+      context: responseState.context,
+      finalUrl: responseState.finalUrl,
+      lengthComputable: responseState.lengthComputable,
+      loaded: responseState.loaded,
+      readyState: responseState.readyState,
+      response: responseState.response,
+      responseHeaders: responseState.responseHeaders,
+      responseText: responseState.responseText,
+      responseXML: responseState.responseXML,
+      status: responseState.status,
+      statusText: responseState.statusText,
+      total: responseState.total
+      }, sandbox, {cloneFunctions: true, wrapReflectors: true});
+
     if (GM_util.windowIsClosed(wrappedContentWin)) {
       return;
     }

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-mozext/greasemonkey.git



More information about the Pkg-mozext-commits mailing list