Backed out changeset c9265ada6f40

This commit is contained in:
Jason Duell 2012-03-15 15:05:22 -07:00
parent 2823d113a3
commit 6d25ca614d
4 changed files with 51 additions and 79 deletions

View File

@ -287,18 +287,10 @@ HttpChannelChild::OnStartRequest(const nsHttpResponseHead& responseHead,
getter_AddRefs(mSecurityInfo)); getter_AddRefs(mSecurityInfo));
} }
// Sanity check: we should have either both remove/local socket address or
// neither.
if (selfAddr.raw.family != peerAddr.raw.family) {
NS_WARNING("Child: socket has multiple address families!");
}
mIsFromCache = isFromCache; mIsFromCache = isFromCache;
mCacheEntryAvailable = cacheEntryAvailable; mCacheEntryAvailable = cacheEntryAvailable;
mCacheExpirationTime = cacheExpirationTime; mCacheExpirationTime = cacheExpirationTime;
mCachedCharset = cachedCharset; mCachedCharset = cachedCharset;
mSelfAddr = selfAddr;
mPeerAddr = peerAddr;
AutoEventEnqueuer ensureSerialDispatch(mEventQ); AutoEventEnqueuer ensureSerialDispatch(mEventQ);
@ -321,6 +313,9 @@ HttpChannelChild::OnStartRequest(const nsHttpResponseHead& responseHead,
rv = ApplyContentConversions(); rv = ApplyContentConversions();
if (NS_FAILED(rv)) if (NS_FAILED(rv))
Cancel(rv); Cancel(rv);
mSelfAddr = selfAddr;
mPeerAddr = peerAddr;
} }
class TransportAndDataEvent : public ChannelEvent class TransportAndDataEvent : public ChannelEvent
@ -1118,6 +1113,36 @@ HttpChannelChild::SetupFallbackChannel(const char *aFallbackKey)
DROP_DEAD(); DROP_DEAD();
} }
// The next four _should_ be implemented, but we need to figure out how
// to transfer the data from the chrome process first.
NS_IMETHODIMP
HttpChannelChild::GetRemoteAddress(nsACString & _result)
{
return NS_ERROR_NOT_AVAILABLE;
}
NS_IMETHODIMP
HttpChannelChild::GetRemotePort(PRInt32 * _result)
{
NS_ENSURE_ARG_POINTER(_result);
return NS_ERROR_NOT_AVAILABLE;
}
NS_IMETHODIMP
HttpChannelChild::GetLocalAddress(nsACString & _result)
{
return NS_ERROR_NOT_AVAILABLE;
}
NS_IMETHODIMP
HttpChannelChild::GetLocalPort(PRInt32 * _result)
{
NS_ENSURE_ARG_POINTER(_result);
return NS_ERROR_NOT_AVAILABLE;
}
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// HttpChannelChild::nsICacheInfoChannel // HttpChannelChild::nsICacheInfoChannel
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------

View File

@ -106,6 +106,10 @@ public:
bool aMerge); bool aMerge);
// nsIHttpChannelInternal // nsIHttpChannelInternal
NS_IMETHOD SetupFallbackChannel(const char *aFallbackKey); NS_IMETHOD SetupFallbackChannel(const char *aFallbackKey);
NS_IMETHOD GetLocalAddress(nsACString& addr);
NS_IMETHOD GetLocalPort(PRInt32* port);
NS_IMETHOD GetRemoteAddress(nsACString& addr);
NS_IMETHOD GetRemotePort(PRInt32* port);
// nsISupportsPriority // nsISupportsPriority
NS_IMETHOD SetPriority(PRInt32 value); NS_IMETHOD SetPriority(PRInt32 value);
// nsIResumableChannel // nsIResumableChannel

View File

@ -450,15 +450,6 @@ HttpChannelParent::OnStartRequest(nsIRequest *aRequest, nsISupports *aContext)
} }
nsHttpChannel *httpChan = static_cast<nsHttpChannel *>(mChannel.get()); nsHttpChannel *httpChan = static_cast<nsHttpChannel *>(mChannel.get());
// Sanity check: we should have either both remove/local socket address or
// neither.
PRNetAddr selfAddr = httpChan->GetSelfAddr();
PRNetAddr peerAddr = httpChan->GetPeerAddr();
if (selfAddr.raw.family != peerAddr.raw.family) {
NS_WARNING("Parent: socket has multiple address families!");
}
if (mIPCClosed || if (mIPCClosed ||
!SendOnStartRequest(responseHead ? *responseHead : nsHttpResponseHead(), !SendOnStartRequest(responseHead ? *responseHead : nsHttpResponseHead(),
!!responseHead, !!responseHead,

View File

@ -22,42 +22,14 @@ TracingListener.prototype = {
request.QueryInterface(Components.interfaces.nsIHttpChannelInternal); request.QueryInterface(Components.interfaces.nsIHttpChannelInternal);
var localAddr = "unknown"; // local/remote addresses broken in e10s: disable for now
var localPort = "unknown"; /*
var remoteAddr = "unknown"; do_check_eq(request.localAddress, "127.0.0.1");
var remotePort = "unknown"; do_check_eq(request.localPort > 0, true);
try { do_check_neq(request.localPort, 4444);
localAddr = request.localAddress; do_check_eq(request.remoteAddress, "127.0.0.1");
dump("got local address\n"); do_check_eq(request.remotePort, 4444);
} catch(e) { */
dump("couldn't get local address\n");
}
try {
localPort = request.localPort;
dump("got local port\n");
} catch(e) {
dump("couldn't get local port\n");
}
try {
remoteAddr = request.remoteAddress;
dump("got remote address\n");
} catch(e) {
dump("couldn't get remote address\n");
}
try {
remotePort = request.remotePort;
dump("got remote port\n");
} catch(e) {
dump("couldn't get remote port\n");
}
do_check_eq(localAddr, "127.0.0.1");
do_check_eq(localPort > 0, true);
do_check_eq(remoteAddr, "127.0.0.1");
do_check_eq(remotePort, 4444);
request.QueryInterface(Components.interfaces.nsISupportsPriority);
request.priority = Ci.nsISupportsPriority.PRIORITY_LOW;
// Make sure listener can't be replaced after OnStartRequest was called. // Make sure listener can't be replaced after OnStartRequest was called.
request.QueryInterface(Components.interfaces.nsITraceableChannel); request.QueryInterface(Components.interfaces.nsITraceableChannel);
@ -91,10 +63,9 @@ TracingListener.prototype = {
input.close(); input.close();
} catch (e) { } catch (e) {
dump("TracingListener.onStopRequest swallowing exception: " + e + "\n"); dump("TracingListener.onStopRequest swallowing exception: " + e + "\n");
} finally {
httpserver.stop(do_test_finished);
} }
// we're the last OnStopRequest called by the nsIStreamListenerTee
run_next_test();
}, },
QueryInterface: function(iid) { QueryInterface: function(iid) {
@ -164,37 +135,18 @@ function make_channel(url) {
// Check if received body is correctly modified. // Check if received body is correctly modified.
function channel_finished(request, input, ctx) { function channel_finished(request, input, ctx) {
// No-op: since the nsIStreamListenerTee calls the observer's OnStopRequest httpserver.stop(do_test_finished);
// after this, we call run_next_test() there
}
// needs to be global or it'll go out of scope before it observes request
var observer = new HttpResponseExaminer();
var testRuns = 1; // change this to >1 to run test multiple times
var iteration = 1;
function run_next_test() {
if (iteration > testRuns) {
dump("Shutting down\n");
httpserver.stop(do_test_finished);
return;
}
if (iteration > 1) {
dump("^^^ test iteration=" + iteration + "\n");
}
var channel = make_channel("http://localhost:4444/testdir");
channel.asyncOpen(new ChannelListener(channel_finished), null);
iteration++;
} }
function run_test() { function run_test() {
var observer = new HttpResponseExaminer();
observer.register(); observer.register();
httpserver = new nsHttpServer(); httpserver = new nsHttpServer();
httpserver.registerPathHandler("/testdir", test_handler); httpserver.registerPathHandler("/testdir", test_handler);
httpserver.start(4444); httpserver.start(4444);
run_next_test(); var channel = make_channel("http://localhost:4444/testdir");
channel.asyncOpen(new ChannelListener(channel_finished), null);
do_test_pending(); do_test_pending();
} }