[Pkg-mozext-commits] [firebug] 37/68: Issue 4009: XHR messages are different in the Net and Console panel

David Prévot taffit at moszumanska.debian.org
Mon Mar 31 22:45:52 UTC 2014


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

taffit pushed a commit to tag fbtest-1.11.4
in repository firebug.

commit fc3d7f550a144e7215d7e9fb8bbe3d2ced394f5a
Author: Jan Odvarko <odvarko at gmail.com>
Date:   Fri Feb 15 15:11:03 2013 +0100

    Issue 4009: XHR messages are different in the Net and Console panel
---
 extension/content/firebug/net/netMonitor.js |  2 +-
 extension/content/firebug/net/spy.js        | 74 +++++++++++++++++++----------
 2 files changed, 51 insertions(+), 25 deletions(-)

diff --git a/extension/content/firebug/net/netMonitor.js b/extension/content/firebug/net/netMonitor.js
index de99f1a..85a3152 100644
--- a/extension/content/firebug/net/netMonitor.js
+++ b/extension/content/firebug/net/netMonitor.js
@@ -715,7 +715,7 @@ NetCacheListener.prototype =
     {
         // Remember the response for this request.
         var file = this.netProgress.getRequestFile(request, null, true);
-        if (file)
+        if (file && responseText)
             file.responseText = responseText;
 
         Events.dispatch(Firebug.NetMonitor.fbListeners, "onResponseBody", [context, file]);
diff --git a/extension/content/firebug/net/spy.js b/extension/content/firebug/net/spy.js
index 9392d2b..38a48a0 100644
--- a/extension/content/firebug/net/spy.js
+++ b/extension/content/firebug/net/spy.js
@@ -23,12 +23,13 @@ define([
     "firebug/trace/traceModule",
     "firebug/lib/wrapper",
     "firebug/lib/xpcom",
+    "firebug/lib/options",
     "firebug/net/netPanel",
     "firebug/console/errors",
 ],
 function(Obj, Firebug, Domplate, FirebugReps, Events, HttpRequestObserver, StackFrame,
     Http, Css, Dom, Win, System, Str, Url, Arr, Debug, NetHttpActivityObserver, NetUtils,
-    TraceListener, TraceModule, Wrapper, Xpcom) {
+    TraceListener, TraceModule, Wrapper, Xpcom, Options) {
 
 // ********************************************************************************************* //
 // Constants
@@ -42,9 +43,7 @@ var eventListenerService = Cc["@mozilla.org/eventlistenerservice;1"].
 // List of contexts with XHR spy attached.
 var contexts = [];
 
-var versionChecker = Xpcom.CCSV("@mozilla.org/xpcom/version-comparator;1", "nsIVersionComparator");
-var appInfo = Xpcom.CCSV("@mozilla.org/xre/app-info;1", "nsIXULAppInfo");
-var fx18 = versionChecker.compare(appInfo.version, "18") >= 0;
+var redirectionLimit = Options.getPref("network.http", "redirection-limit");
 
 // ********************************************************************************************* //
 // Spy Module
@@ -286,7 +285,11 @@ var SpyHttpObserver =
     {
         try
         {
-            if ((topic == "http-on-modify-request" && !fx18) ||
+            var redirect = (request.redirectionLimit < redirectionLimit);
+
+            // There is no http-on-opening-request in case of redirect so, we need
+            // to use http-on-modify-request.
+            if ((topic == "http-on-modify-request" && redirect) ||
                 topic == "http-on-opening-request" ||
                 topic == "http-on-examine-response" ||
                 topic == "http-on-examine-cached-response")
@@ -311,6 +314,8 @@ var SpyHttpObserver =
         if (!win || !xhr)
             return;
 
+        var redirect = (request.redirectionLimit < redirectionLimit);
+
         for (var i=0; i<contexts.length; ++i)
         {
             var context = contexts[i];
@@ -320,9 +325,9 @@ var SpyHttpObserver =
                 var requestName = request.URI.asciiSpec;
                 var requestMethod = request.requestMethod;
 
-                if (topic == "http-on-modify-request" && !fx18)
+                if (topic == "http-on-modify-request" && redirect)
                     this.requestStarted(request, xhr, spyContext, requestMethod, requestName);
-                if (topic == "http-on-opening-request")
+                else if (topic == "http-on-opening-request")
                     this.requestStarted(request, xhr, spyContext, requestMethod, requestName);
                 else if (topic == "http-on-examine-response")
                     this.requestStopped(request, xhr, spyContext, requestMethod, requestName);
@@ -365,9 +370,7 @@ var SpyHttpObserver =
 
         // Notify registered listeners. The onStart event is fired once for entire XHR
         // (even if there is more redirects within the process).
-        var name = request.URI.asciiSpec;
-        var origName = request.originalURI.asciiSpec;
-        if (name == origName)
+        if (!isRedirect(request))
             Events.dispatch(Firebug.Spy.fbListeners, "onStart", [context, spy]);
 
         // Remember the start time et the end, so it's most accurate.
@@ -502,6 +505,8 @@ var SpyHttpActivityObserver = Obj.extend(NetHttpActivityObserver,
             spy.endTime = time;
             spy.transactionClosed = true;
 
+            updateTime(spy);
+
             // This should be the proper time to detach the Spy object, but only
             // in the case when the XHR is already loaded. If the XHR is made as part of the
             // page load, it may happen that the event (readyState == 4) comes later
@@ -555,8 +560,9 @@ function getSpyForXHR(request, xhrRequest, context, noCreate)
         {
             if (FBTrace.DBG_SPY)
             {
-                FBTrace.sysout("spy.getSpyForXHR; FOUND spy object " +
-                    Http.safeGetRequestName(request) + ", " + Url.getFileName(spy.href));
+                var name = Url.getFileName(spy.request.URI.asciiSpec);
+                var origName = Url.getFileName(spy.request.originalURI.asciiSpec);
+                FBTrace.sysout("spy.getSpyForXHR; FOUND spy object " + name + ", " + origName);
             }
             return spy;
         }
@@ -573,13 +579,18 @@ function getSpyForXHR(request, xhrRequest, context, noCreate)
 
     if (FBTrace.DBG_SPY)
     {
+        var redirect = isRedirect(request);
         FBTrace.sysout("spy.getSpyForXHR; NEW spy object (" +
-            (name == origName ? "new XHR" : "redirected XHR") + ") for: " + name);
+            (redirect ? "redirected XHR" : "new XHR") + ") for: " +
+            Url.getFileName(name) + ", " + Url.getFileName(origName));
     }
 
     // Attach spy only to the original request. Notice that there can be more network requests
     // made by the same XHR if redirects are involved.
-    if (name == origName)
+
+    // The Console panel should display XHR entry for evere redirect so we need to
+    // attach spy for each request (even redirects). See issue 4009
+    //if (name == origName)
         spy.attach();
 
     return spy;
@@ -654,10 +665,7 @@ Firebug.Spy.XMLHttpRequestSpy.prototype =
         }
 
         if (FBTrace.DBG_SPY)
-        {
-            FBTrace.sysout("spy.attach; " + Http.safeGetRequestName(this.request) + ", " +
-                Url.getFileName(this.href));
-        }
+            FBTrace.sysout("spy.attach; " + Http.safeGetRequestName(this.request));
     },
 
     detach: function(force)
@@ -738,9 +746,11 @@ function onHTTPSpyReadyStateChange(spy, event)
 {
     if (FBTrace.DBG_SPY)
     {
+        var name = Url.getFileName(spy.request.URI.asciiSpec);
+        var origName = Url.getFileName(spy.request.originalURI.asciiSpec);
+
         FBTrace.sysout("spy.onHTTPSpyReadyStateChange " + spy.xhrRequest.readyState +
-            " (multipart: " + spy.xhrRequest.multipart + ") " +
-            Http.safeGetRequestName(spy.request) + ", " + Url.getFileName(spy.href));
+            " (multipart: " + spy.xhrRequest.multipart + ") " + name + ", " + origName);
     }
 
     // Remember just in case spy is detached (readyState == 4).
@@ -801,8 +811,9 @@ function onHTTPSpyReadyStateChange(spy, event)
 
         // Notify the Net panel about a request being loaded.
         // xxxHonza: I don't think this is necessary.
+        // stopFile this breaks layout of the net panel in case of redirects.
         var netProgress = spy.context.netProgress;
-        if (netProgress)
+        if (netProgress && !isRedirect(spy.request))
             netProgress.post(netProgress.stopFile, [spy.request, spy.endTime, spy.postText,
                 spy.responseText]);
 
@@ -1169,11 +1180,11 @@ Firebug.XHRSpyListener =
 
 function updateTime(spy)
 {
-    if(spy.logRow)
+    if (spy.logRow)
     {
         var timeBox = spy.logRow.getElementsByClassName("spyTime").item(0);
-        if (spy.responseTime)
-            timeBox.textContent = " " + Str.formatTime(spy.responseTime);
+        if (spy.sendTime && spy.endTime)
+            timeBox.textContent = " " + Str.formatTime(spy.endTime - spy.sendTime);
     }
 }
 
@@ -1311,6 +1322,21 @@ function getResponseHeaders(spy)
     return headers;
 }
 
+function isRedirect(request)
+{
+    try
+    {
+        var name = request.URI.asciiSpec;
+        var origName = request.originalURI.asciiSpec;
+        return (name != origName);
+    }
+    catch (e)
+    {
+    }
+
+    return false;
+}
+
 // ********************************************************************************************* //
 // Registration
 

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



More information about the Pkg-mozext-commits mailing list