[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