gecko-dev/netwerk/protocol/http/nsIHttpChannelChild.idl
Ehsan Akhgari ddf76b50b9 Bug 1229369 - Intercept redirected network fetches that have their request mode set to manual; r=jdm
In the non-e10s case, this is done by simply avoiding to set the
LOAD_BYPASS_SERVICE_WORKER flag when we detect a non-internal redirect
in the manual redirect mode.

The e10s solution is a bit more complicated.  Only the child process
knows whether a URI needs to be intercepted, so we piggy back on the
code written to support the |event.respondWith(Response.redirect())|
case where we know in the child that the target of the redirect needs to
be intercepted.

This means that we need to check the same condition as in the non-e10s
case, but we also need to check whether the target of the redirection
needs to be intercepted, which means we need to properly take secure
upgrades into account as well.  This is done by computing both whether
we should intercept and whether we should do a secure upgrade in
HttpChannelChild::SetupRedirect() and saving the information on the
HttpChannelChild for later usage in HttpChannelChild::AsyncOpen().
2016-01-05 21:02:00 -05:00

34 lines
1.4 KiB
Text

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#include "nsISupports.idl"
[ptr] native RequestHeaderTuples(mozilla::net::RequestHeaderTuples);
[ref] native OptionalCorsPreflightArgsRef(mozilla::OptionalCorsPreflightArgs);
interface nsIPrincipal;
interface nsIURI;
[uuid(d02b96ed-2789-4f42-a25c-7abe63de7c18)]
interface nsIHttpChannelChild : nsISupports
{
void addCookiesToRequest();
// Mark this channel as requiring an interception; this will propagate
// to the corresponding parent channel when a redirect occurs.
void forceIntercepted(in boolean postRedirectChannelShouldIntercept,
in boolean postRedirectChannelShouldUpgrade);
// Headers that the channel client has set via SetRequestHeader.
readonly attribute RequestHeaderTuples clientSetRequestHeaders;
// Headers that the channel client has set via SetRequestHeader.
[notxpcom, nostdcall]
void GetClientSetCorsPreflightParameters(in OptionalCorsPreflightArgsRef args);
// This method is called by nsCORSListenerProxy if we need to remove
// an entry from the CORS preflight cache in the parent process.
void removeCorsPreflightCacheEntry(in nsIURI aURI, in nsIPrincipal aRequestingPrincipal);
};