Struct xpcom::interfaces::nsIChannelEventSink [] [src]

#[repr(C)]
pub struct nsIChannelEventSink { /* fields omitted */ }

interface nsIChannelEventSink : nsISupports

/**
 * Implement this interface to receive control over various channel events.
 * Channels will try to get this interface from a channel's
 * notificationCallbacks or, if not available there, from the loadGroup's
 * notificationCallbacks.
 *
 * These methods are called before onStartRequest.
 */

Methods

impl nsIChannelEventSink
[src]

[src]

Cast this nsIChannelEventSink to one of its base interfaces.

impl nsIChannelEventSink
[src]

REDIRECT_TEMPORARY: i64 = 1
/**
     * This is a temporary redirect. New requests for this resource should
     * continue to use the URI of the old channel.
     *
     * The new URI may be identical to the old one.
     */

REDIRECT_PERMANENT: i64 = 2
/**
     * This is a permanent redirect. New requests for this resource should use
     * the URI of the new channel (This might be an HTTP 301 reponse).
     * If this flag is not set, this is a temporary redirect.
     *
     * The new URI may be identical to the old one.
     */

REDIRECT_INTERNAL: i64 = 4
/**
     * This is an internal redirect, i.e. it was not initiated by the remote
     * server, but is specific to the channel implementation.
     *
     * The new URI may be identical to the old one.
     */

REDIRECT_STS_UPGRADE: i64 = 8
/**
     * This is a special-cased redirect coming from hitting HSTS upgrade
     * redirect from http to https only.  In some cases this type of redirect
     * may be considered as safe despite not being the-same-origin redirect.
     */

[src]

/**
     * Called when a redirect occurs. This may happen due to an HTTP 3xx status
     * code. The purpose of this method is to notify the sink that a redirect
     * is about to happen, but also to give the sink the right to veto the
     * redirect by throwing or passing a failure-code in the callback.
     *
     * Note that vetoing the redirect simply means that |newChannel| will not
     * be opened. It is important to understand that |oldChannel| will continue
     * loading as if it received a HTTP 200, which includes notifying observers
     * and possibly display or process content attached to the HTTP response.
     * If the sink wants to prevent this loading it must explicitly deal with
     * it, e.g. by calling |oldChannel->Cancel()|
     *
     * There is a certain freedom in implementing this method:
     *
     * If the return-value indicates success, a callback on |callback| is
     * required. This callback can be done from within asyncOnChannelRedirect
     * (effectively making the call synchronous) or at some point later
     * (making the call asynchronous). Repeat: A callback must be done
     * if this method returns successfully.
     *
     * If the return value indicates error (method throws an exception)
     * the redirect is vetoed and no callback must be done. Repeat: No
     * callback must be done if this method throws!
     *
     * @see nsIAsyncVerifyRedirectCallback::onRedirectVerifyCallback()
     *
     * @param oldChannel
     *        The channel that's being redirected.
     * @param newChannel
     *        The new channel. This channel is not opened yet.
     * @param flags
     *        Flags indicating the type of redirect. A bitmask consisting
     *        of flags from above.
     *        One of REDIRECT_TEMPORARY and REDIRECT_PERMANENT will always be
     *        set.
     * @param callback
     *        Object to inform about the async result of this method
     *
     * @throw <any> Throwing an exception will cause the redirect to be
     *        cancelled
     */

void asyncOnChannelRedirect (in nsIChannel oldChannel, in nsIChannel newChannel, in unsigned long flags, in nsIAsyncVerifyRedirectCallback callback);

Methods from Deref<Target = nsISupports>

[src]

Cast this nsISupports to one of its base interfaces.

[src]

void QueryInterface (in nsIIDRef uuid, [iid_is (uuid), retval] out nsQIResult result);

[src]

[noscript,notxpcom] nsrefcnt AddRef ();

[src]

[noscript,notxpcom] nsrefcnt Release ();

Trait Implementations

impl XpCom for nsIChannelEventSink
[src]

IID: nsIID = nsID(26702349, 14317, 20085, [137, 86, 208, 210, 150, 228, 216, 166])

[src]

Perform a QueryInterface call on this object, attempting to dynamically cast it to the requested interface type. Returns Some(RefPtr) if the cast succeeded, and None otherwise. Read more

impl RefCounted for nsIChannelEventSink
[src]

[src]

Increment the reference count.

[src]

Decrement the reference count, potentially freeing backing memory.

impl Deref for nsIChannelEventSink
[src]

The resulting type after dereferencing.

[src]

Dereferences the value.