Struct xpcom::interfaces::nsIHttpChannel [] [src]

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

interface nsIHttpChannel : nsIChannel

/**
 * nsIHttpChannel
 *
 * This interface allows for the modification of HTTP request parameters and
 * the inspection of the resulting HTTP response status and headers when they
 * become available.
 */

Methods

impl nsIHttpChannel
[src]

[src]

Cast this nsIHttpChannel to one of its base interfaces.

impl nsIHttpChannel
[src]

REFERRER_POLICY_UNSET: i64 = 0
/**
     * Referrer policies. See ReferrerPolicy.h for more details.
     */

REFERRER_POLICY_NO_REFERRER_WHEN_DOWNGRADE: i64 = 1

REFERRER_POLICY_NO_REFERRER: i64 = 2

REFERRER_POLICY_ORIGIN: i64 = 3

REFERRER_POLICY_ORIGIN_WHEN_XORIGIN: i64 = 4

REFERRER_POLICY_UNSAFE_URL: i64 = 5

REFERRER_POLICY_SAME_ORIGIN: i64 = 6

REFERRER_POLICY_STRICT_ORIGIN: i64 = 7

REFERRER_POLICY_STRICT_ORIGIN_WHEN_XORIGIN: i64 = 8

[src]

/**************************************************************************
     * REQUEST CONFIGURATION
     *
     * Modifying request parameters after asyncOpen has been called is an error.
     */
/**
     * Set/get the HTTP request method (default is "GET").  Both setter and
     * getter are case sensitive.
     *
     * This attribute may only be set before the channel is opened.
     *
     * NOTE: The data for a "POST" or "PUT" request can be configured via
     * nsIUploadChannel; however, after setting the upload data, it may be
     * necessary to set the request method explicitly.  The documentation
     * for nsIUploadChannel has further details.
     *
     * @throws NS_ERROR_IN_PROGRESS if set after the channel has been opened.
     */

[must_use] attribute ACString requestMethod;

[src]

/**************************************************************************
     * REQUEST CONFIGURATION
     *
     * Modifying request parameters after asyncOpen has been called is an error.
     */
/**
     * Set/get the HTTP request method (default is "GET").  Both setter and
     * getter are case sensitive.
     *
     * This attribute may only be set before the channel is opened.
     *
     * NOTE: The data for a "POST" or "PUT" request can be configured via
     * nsIUploadChannel; however, after setting the upload data, it may be
     * necessary to set the request method explicitly.  The documentation
     * for nsIUploadChannel has further details.
     *
     * @throws NS_ERROR_IN_PROGRESS if set after the channel has been opened.
     */

[must_use] attribute ACString requestMethod;

[src]

/**
     * Get/set the HTTP referrer URI.  This is the address (URI) of the
     * resource from which this channel's URI was obtained (see RFC2616 section
     * 14.36).
     *
     * This attribute may only be set before the channel is opened.
     *
     * NOTE: The channel may silently refuse to set the Referer header if the
     * URI does not pass certain security checks (e.g., a "https://" URL will
     * never be sent as the referrer for a plaintext HTTP request).  The
     * implementation is not required to throw an exception when the referrer
     * URI is rejected.
     *
     * @throws NS_ERROR_IN_PROGRESS if set after the channel has been opened.
     * @throws NS_ERROR_FAILURE if used for setting referrer during
     *         visitRequestHeaders. Getting the value will not throw.
     */

[must_use] attribute nsIURI referrer;

[src]

/**
     * Get/set the HTTP referrer URI.  This is the address (URI) of the
     * resource from which this channel's URI was obtained (see RFC2616 section
     * 14.36).
     *
     * This attribute may only be set before the channel is opened.
     *
     * NOTE: The channel may silently refuse to set the Referer header if the
     * URI does not pass certain security checks (e.g., a "https://" URL will
     * never be sent as the referrer for a plaintext HTTP request).  The
     * implementation is not required to throw an exception when the referrer
     * URI is rejected.
     *
     * @throws NS_ERROR_IN_PROGRESS if set after the channel has been opened.
     * @throws NS_ERROR_FAILURE if used for setting referrer during
     *         visitRequestHeaders. Getting the value will not throw.
     */

[must_use] attribute nsIURI referrer;

[src]

/**
     * Get the HTTP referrer policy.  The policy is retrieved from the meta
     * referrer tag, which can be one of many values (see ReferrerPolicy.h for
     * more details).
     */

[must_use] readonly attribute unsigned long referrerPolicy;

[src]

/**
     * Set the HTTP referrer URI with a referrer policy.
     * @throws NS_ERROR_FAILURE if called during visitRequestHeaders.
     */

[must_use] void setReferrerWithPolicy (in nsIURI referrer, in unsigned long referrerPolicy);

[src]

/**
     * Returns the network protocol used to fetch the resource as identified
     * by the ALPN Protocol ID.
     *
     * @throws NS_ERROR_NOT_AVAILABLE if called before the response
     *         has been received (before onStartRequest).
     */

[must_use] readonly attribute ACString protocolVersion;

[src]

/**
     * size consumed by the response header fields and the response payload body
     */

[must_use] readonly attribute uint64_t transferSize;

[src]

/**
     * The size of the message body received by the client,
     * after removing any applied content-codings
     */

[must_use] readonly attribute uint64_t decodedBodySize;

[src]

/**
     * The size in octets of the payload body, prior to removing content-codings
     */

[must_use] readonly attribute uint64_t encodedBodySize;

[src]

/**
     * Get the value of a particular request header.
     *
     * @param aHeader
     *        The case-insensitive name of the request header to query (e.g.,
     *        "Cache-Control").
     *
     * @return the value of the request header.
     * @throws NS_ERROR_NOT_AVAILABLE if the header is not set.
     */

[must_use] ACString getRequestHeader (in ACString aHeader);

[src]

/**
     * Set the value of a particular request header.
     *
     * This method allows, for example, the cookies module to add "Cookie"
     * headers to the outgoing HTTP request.
     *
     * This method may only be called before the channel is opened.
     *
     * @param aHeader
     *        The case-insensitive name of the request header to set (e.g.,
     *        "Cookie").
     * @param aValue
     *        The request header value to set (e.g., "X=1").
     * @param aMerge
     *        If true, the new header value will be merged with any existing
     *        values for the specified header.  This flag is ignored if the
     *        specified header does not support merging (e.g., the "Content-
     *        Type" header can only have one value).  The list of headers for
     *        which this flag is ignored is an implementation detail.  If this
     *        flag is false, then the header value will be replaced with the
     *        contents of |aValue|.
     *
     * If aValue is empty and aMerge is false, the header will be cleared.
     *
     * @throws NS_ERROR_IN_PROGRESS if called after the channel has been
     *         opened.
     * @throws NS_ERROR_FAILURE if called during visitRequestHeaders.
     */

[must_use] void setRequestHeader (in ACString aHeader, in ACString aValue, in boolean aMerge);

[src]

/**
     * Set a request header with empty value.
     *
     * This should be used with caution in the cases where the behavior of
     * setRequestHeader ignoring empty header values is undesirable.
     *
     * This method may only be called before the channel is opened.
     *
     * @param aHeader
     *        The case-insensitive name of the request header to set (e.g.,
     *        "Cookie").
     *
     * @throws NS_ERROR_IN_PROGRESS if called after the channel has been
     *         opened.
     * @throws NS_ERROR_FAILURE if called during visitRequestHeaders.
     */

[must_use] void setEmptyRequestHeader (in ACString aHeader);

[src]

/**
     * Call this method to visit all request headers.  Calling setRequestHeader
     * while visiting request headers has undefined behavior.  Don't do it!
     *
     * @param aVisitor
     *        the header visitor instance.
     */

[must_use] void visitRequestHeaders (in nsIHttpHeaderVisitor aVisitor);

[src]

/**
     * Call this method to visit all non-default (UA-provided) request headers.
     * Calling setRequestHeader while visiting request headers has undefined
     * behavior. Don't do it!
     *
     * @param aVisitor
     *        the header visitor instance.
     */

[must_use] void visitNonDefaultRequestHeaders (in nsIHttpHeaderVisitor aVisitor);

[src]

/**
     * This attribute no longer has any effect, it remains for backwards compat
     *
     * @throws NS_ERROR_FAILURE if set after the channel has been opened.
     */

[must_use] attribute boolean allowPipelining;

[src]

/**
     * This attribute no longer has any effect, it remains for backwards compat
     *
     * @throws NS_ERROR_FAILURE if set after the channel has been opened.
     */

[must_use] attribute boolean allowPipelining;

[src]

/**
     * This attribute of the channel indicates whether or not
     * the underlying HTTP transaction should be honor stored Strict Transport
     * Security directives for its principal. It defaults to true. Using
     * OCSP to bootstrap the HTTPs is the likely use case for setting it to
     * false.
     *
     * This attribute may only be set before the channel is opened.
     *
     * @throws NS_ERROR_IN_PROGRESS or NS_ERROR_ALREADY_OPENED
     *         if called after the channel has been opened.
     */

[must_use] attribute boolean allowSTS;

[src]

/**
     * This attribute of the channel indicates whether or not
     * the underlying HTTP transaction should be honor stored Strict Transport
     * Security directives for its principal. It defaults to true. Using
     * OCSP to bootstrap the HTTPs is the likely use case for setting it to
     * false.
     *
     * This attribute may only be set before the channel is opened.
     *
     * @throws NS_ERROR_IN_PROGRESS or NS_ERROR_ALREADY_OPENED
     *         if called after the channel has been opened.
     */

[must_use] attribute boolean allowSTS;

[src]

/**
     * This attribute specifies the number of redirects this channel is allowed
     * to make.  If zero, the channel will fail to redirect and will generate
     * a NS_ERROR_REDIRECT_LOOP failure status.
     *
     * NOTE: An HTTP redirect results in a new channel being created.  If the
     * new channel supports nsIHttpChannel, then it will be assigned a value
     * to its |redirectionLimit| attribute one less than the value of the
     * redirected channel's |redirectionLimit| attribute.  The initial value
     * for this attribute may be a configurable preference (depending on the
     * implementation).
     */

[must_use] attribute unsigned long redirectionLimit;

[src]

/**
     * This attribute specifies the number of redirects this channel is allowed
     * to make.  If zero, the channel will fail to redirect and will generate
     * a NS_ERROR_REDIRECT_LOOP failure status.
     *
     * NOTE: An HTTP redirect results in a new channel being created.  If the
     * new channel supports nsIHttpChannel, then it will be assigned a value
     * to its |redirectionLimit| attribute one less than the value of the
     * redirected channel's |redirectionLimit| attribute.  The initial value
     * for this attribute may be a configurable preference (depending on the
     * implementation).
     */

[must_use] attribute unsigned long redirectionLimit;

[src]

/**************************************************************************
     * RESPONSE INFO
     *
     * Accessing response info before the onStartRequest event is an error.
     */
/**
     * Get the HTTP response code (e.g., 200).
     *
     * @throws NS_ERROR_NOT_AVAILABLE if called before the response
     *         has been received (before onStartRequest).
     */

[must_use] readonly attribute unsigned long responseStatus;

[src]

/**
     * Get the HTTP response status text (e.g., "OK").
     *
     * NOTE: This returns the raw (possibly 8-bit) text from the server.  There
     * are no assumptions made about the charset of the returned text.  You
     * have been warned!
     *
     * @throws NS_ERROR_NOT_AVAILABLE if called before the response
     *         has been received (before onStartRequest).
     */

[must_use] readonly attribute ACString responseStatusText;

[src]

/**
     * Returns true if the HTTP response code indicates success.  The value of
     * nsIRequest::status will be NS_OK even when processing a 404 response
     * because a 404 response may include a message body that (in some cases)
     * should be shown to the user.
     *
     * Use this attribute to distinguish server error pages from normal pages,
     * instead of comparing the response status manually against the set of
     * valid response codes, if that is required by your application.
     *
     * @throws NS_ERROR_NOT_AVAILABLE if called before the response
     *         has been received (before onStartRequest).
     */

[must_use] readonly attribute boolean requestSucceeded;

[src]

/** Indicates whether channel should be treated as the main one for the
    *  current document.  If manually set to true, will always remain true.  Otherwise,
    *  will be true if LOAD_DOCUMENT_URI is set in the channel's loadflags.
    */

[must_use] attribute boolean isMainDocumentChannel;

[src]

/** Indicates whether channel should be treated as the main one for the
    *  current document.  If manually set to true, will always remain true.  Otherwise,
    *  will be true if LOAD_DOCUMENT_URI is set in the channel's loadflags.
    */

[must_use] attribute boolean isMainDocumentChannel;

[src]

/**
     * Get the value of a particular response header.
     *
     * @param aHeader
     *        The case-insensitive name of the response header to query (e.g.,
     *        "Set-Cookie").
     *
     * @return the value of the response header.
     *
     * @throws NS_ERROR_NOT_AVAILABLE if called before the response
     *         has been received (before onStartRequest) or if the header is
     *         not set in the response.
     */

[must_use] ACString getResponseHeader (in ACString header);

[src]

/**
     * Set the value of a particular response header.
     *
     * This method allows, for example, the HTML content sink to inform the HTTP
     * channel about HTTP-EQUIV headers found in HTML <META> tags.
     *
     * @param aHeader
     *        The case-insensitive name of the response header to set (e.g.,
     *        "Cache-control").
     * @param aValue
     *        The response header value to set (e.g., "no-cache").
     * @param aMerge
     *        If true, the new header value will be merged with any existing
     *        values for the specified header.  This flag is ignored if the
     *        specified header does not support merging (e.g., the "Content-
     *        Type" header can only have one value).  The list of headers for
     *        which this flag is ignored is an implementation detail.  If this
     *        flag is false, then the header value will be replaced with the
     *        contents of |aValue|.
     *
     * If aValue is empty and aMerge is false, the header will be cleared.
     *
     * @throws NS_ERROR_NOT_AVAILABLE if called before the response
     *         has been received (before onStartRequest).
     * @throws NS_ERROR_ILLEGAL_VALUE if changing the value of this response
     *         header is not allowed.
     * @throws NS_ERROR_FAILURE if called during visitResponseHeaders,
     *         VisitOriginalResponseHeaders or getOriginalResponseHeader.
     */

[must_use] void setResponseHeader (in ACString header, in ACString value, in boolean merge);

[src]

/**
     * Call this method to visit all response headers.  Calling
     * setResponseHeader while visiting response headers has undefined
     * behavior.  Don't do it!
     *
     * @param aVisitor
     *        the header visitor instance.
     *
     * @throws NS_ERROR_NOT_AVAILABLE if called before the response
     *         has been received (before onStartRequest).
     */

[must_use] void visitResponseHeaders (in nsIHttpHeaderVisitor aVisitor);

[src]

/**
     * Get the value(s) of a particular response header in the form and order
     * it has been received from the remote peer. There can be multiple headers
     * with the same name.
     *
     * @param aHeader
     *        The case-insensitive name of the response header to query (e.g.,
     *        "Set-Cookie").
     *
     * @param aVisitor
     *        the header visitor instance.
     *
     * @throws NS_ERROR_NOT_AVAILABLE if called before the response
     *         has been received (before onStartRequest) or if the header is
     *         not set in the response.
     */

[must_use] void getOriginalResponseHeader (in ACString aHeader, in nsIHttpHeaderVisitor aVisitor);

[src]

/**
     * Call this method to visit all response headers in the form and order as
     * they have been received from the remote peer.
     * Calling setResponseHeader while visiting response headers has undefined
     * behavior.  Don't do it!
     *
     * @param aVisitor
     *        the header visitor instance.
     *
     * @throws NS_ERROR_NOT_AVAILABLE if called before the response
     *         has been received (before onStartRequest).
     */

[must_use] void visitOriginalResponseHeaders (in nsIHttpHeaderVisitor aVisitor);

[src]

/**
     * Returns true if the server sent a "Cache-Control: no-store" response
     * header.
     *
     * @throws NS_ERROR_NOT_AVAILABLE if called before the response
     *         has been received (before onStartRequest).
     */

[must_use] boolean isNoStoreResponse ();

[src]

/**
     * Returns true if the server sent the equivalent of a "Cache-control:
     * no-cache" response header.  Equivalent response headers include:
     * "Pragma: no-cache", "Expires: 0", and "Expires" with a date value
     * in the past relative to the value of the "Date" header.
     *
     * @throws NS_ERROR_NOT_AVAILABLE if called before the response
     *         has been received (before onStartRequest).
     */

[must_use] boolean isNoCacheResponse ();

[src]

/**
     * Returns true if the server sent a "Cache-Control: private" response
     * header.
     *
     * @throws NS_ERROR_NOT_AVAILABLE if called before the response
     *         has been received (before onStartRequest).
     */

[must_use] boolean isPrivateResponse ();

[src]

/**
     * Instructs the channel to immediately redirect to a new destination.
     * Can only be called on channels that have not yet called their
     * listener's OnStartRequest(). Generally that means the latest time
     * this can be used is one of:
     *    "http-on-examine-response"
     *    "http-on-examine-merged-response"
     *    "http-on-examine-cached-response"
     *
     * When non-null URL is set before AsyncOpen:
     *  we attempt to redirect to the targetURI before we even start building
     *  and sending the request to the cache or the origin server.
     *  If the redirect is vetoed, we fail the channel.
     *
     * When set between AsyncOpen and first call to OnStartRequest being called:
     *  we attempt to redirect before we start delivery of network or cached
     *  response to the listener.  If vetoed, we continue with delivery of
     *  the original content to the channel listener.
     *
     * When passed aTargetURI is null the channel behaves normally (can be
     * rewritten).
     *
     * This method provides no explicit conflict resolution. The last
     * caller to call it wins.
     *
     * @throws NS_ERROR_NOT_AVAILABLE if called after the channel has already
     *         started to deliver the content to its listener.
     */

[must_use] void redirectTo (in nsIURI aTargetURI);

[src]

/**
     * Flags a channel to be upgraded to HTTPS.
     *
     * Upgrading to a secure channel must happen before or during
     * "http-on-modify-request". If redirectTo is called early as well, it
     * will win and upgradeToSecure will be a no-op.
     *
     * @throws NS_ERROR_NOT_AVAILABLE if called after the channel has already
     *         started to deliver the content to its listener.
     */

[must_use] void upgradeToSecure ();

[src]

/**
     * Identifies the request context for this load.
     */

[must_use,noscript] attribute uint64_t requestContextID;

[src]

/**
     * Identifies the request context for this load.
     */

[must_use,noscript] attribute uint64_t requestContextID;

[src]

/**
     * Unique ID of the channel, shared between parent and child. Needed if
     * the channel activity needs to be monitored across process boundaries,
     * like in devtools net monitor. See bug 1274556.
     */

[must_use] attribute uint64_t channelId;

[src]

/**
     * Unique ID of the channel, shared between parent and child. Needed if
     * the channel activity needs to be monitored across process boundaries,
     * like in devtools net monitor. See bug 1274556.
     */

[must_use] attribute uint64_t channelId;

[src]

/**
     * ID of the top-level document's inner window.  Identifies the content
     * this channels is being load in.
     */

[must_use] attribute uint64_t topLevelContentWindowId;

[src]

/**
     * ID of the top-level document's inner window.  Identifies the content
     * this channels is being load in.
     */

[must_use] attribute uint64_t topLevelContentWindowId;

[src]

/**
     * Returns true if the channel has loaded a resource that is on the tracking
     * protection list.  This is only available if the
     * privacy.trackingprotection.annotate_channels pref is set and its value
     * should only be relied on after the channel has established a connection.
     */

[infallible] readonly attribute boolean isTrackingResource;

[src]

/**
     * ID of the top-level outer content window. Identifies this channel's
     * top-level window it comes from.
     *
     * NOTE: The setter of this attribute is currently for xpcshell test only.
     *       Don't alter it otherwise.
     */

[must_use] attribute uint64_t topLevelOuterContentWindowId;

[src]

/**
     * ID of the top-level outer content window. Identifies this channel's
     * top-level window it comes from.
     *
     * NOTE: The setter of this attribute is currently for xpcshell test only.
     *       Don't alter it otherwise.
     */

[must_use] attribute uint64_t topLevelOuterContentWindowId;

[src]

/**
     * In e10s, the information that the CORS response blocks the load is in the
     * parent, which doesn't know the true window id of the request, so we may
     * need to proxy the request to the child.
     *
     * @param aMessage
     *        The message to print in the console.
     */

void logBlockedCORSRequest (in AString aMessage);

Methods from Deref<Target = nsIChannel>

[src]

Cast this nsIChannel to one of its base interfaces.

[src]

/**
 * The nsIChannel interface allows clients to construct "GET" requests for
 * specific protocols, and manage them in a uniform way.  Once a channel is
 * created (via nsIIOService::newChannel), parameters for that request may
 * be set by using the channel attributes, or by QI'ing to a subclass of
 * nsIChannel for protocol-specific parameters.  Then, the URI can be fetched
 * by calling nsIChannel::open or nsIChannel::asyncOpen.
 *
 * After a request has been completed, the channel is still valid for accessing
 * protocol-specific results.  For example, QI'ing to nsIHttpChannel allows
 * response headers to be retrieved for the corresponding http transaction.
 *
 * This interface must be used only from the XPCOM main thread.
 */
/**
     * The original URI used to construct the channel. This is used in
     * the case of a redirect or URI "resolution" (e.g. resolving a
     * resource: URI to a file: URI) so that the original pre-redirect
     * URI can still be obtained.  This is never null.  Attempts to
     * set it to null must throw.
     *
     * NOTE: this is distinctly different from the http Referer (referring URI),
     * which is typically the page that contained the original URI (accessible
     * from nsIHttpChannel).
     */

attribute nsIURI originalURI;

[src]

/**
 * The nsIChannel interface allows clients to construct "GET" requests for
 * specific protocols, and manage them in a uniform way.  Once a channel is
 * created (via nsIIOService::newChannel), parameters for that request may
 * be set by using the channel attributes, or by QI'ing to a subclass of
 * nsIChannel for protocol-specific parameters.  Then, the URI can be fetched
 * by calling nsIChannel::open or nsIChannel::asyncOpen.
 *
 * After a request has been completed, the channel is still valid for accessing
 * protocol-specific results.  For example, QI'ing to nsIHttpChannel allows
 * response headers to be retrieved for the corresponding http transaction.
 *
 * This interface must be used only from the XPCOM main thread.
 */
/**
     * The original URI used to construct the channel. This is used in
     * the case of a redirect or URI "resolution" (e.g. resolving a
     * resource: URI to a file: URI) so that the original pre-redirect
     * URI can still be obtained.  This is never null.  Attempts to
     * set it to null must throw.
     *
     * NOTE: this is distinctly different from the http Referer (referring URI),
     * which is typically the page that contained the original URI (accessible
     * from nsIHttpChannel).
     */

attribute nsIURI originalURI;

[src]

/**
     * The URI corresponding to the channel.  Its value is immutable.
     */

readonly attribute nsIURI URI;

[src]

/**
     * The owner, corresponding to the entity that is responsible for this
     * channel.  Used by the security manager to grant or deny privileges to
     * mobile code loaded from this channel.
     *
     * NOTE: this is a strong reference to the owner, so if the owner is also
     * holding a strong reference to the channel, care must be taken to
     * explicitly drop its reference to the channel.
     */

attribute nsISupports owner;

[src]

/**
     * The owner, corresponding to the entity that is responsible for this
     * channel.  Used by the security manager to grant or deny privileges to
     * mobile code loaded from this channel.
     *
     * NOTE: this is a strong reference to the owner, so if the owner is also
     * holding a strong reference to the channel, care must be taken to
     * explicitly drop its reference to the channel.
     */

attribute nsISupports owner;

[src]

/**
     * The notification callbacks for the channel.  This is set by clients, who
     * wish to provide a means to receive progress, status and protocol-specific
     * notifications.  If this value is NULL, the channel implementation may use
     * the notification callbacks from its load group.  The channel may also
     * query the notification callbacks from its load group if its notification
     * callbacks do not supply the requested interface.
     *
     * Interfaces commonly requested include: nsIProgressEventSink, nsIPrompt,
     * and nsIAuthPrompt/nsIAuthPrompt2.
     *
     * When the channel is done, it must not continue holding references to
     * this object.
     *
     * NOTE: A channel implementation should take care when "caching" an
     * interface pointer queried from its notification callbacks.  If the
     * notification callbacks are changed, then a cached interface pointer may
     * become invalid and may therefore need to be re-queried.
     */

attribute nsIInterfaceRequestor notificationCallbacks;

[src]

/**
     * The notification callbacks for the channel.  This is set by clients, who
     * wish to provide a means to receive progress, status and protocol-specific
     * notifications.  If this value is NULL, the channel implementation may use
     * the notification callbacks from its load group.  The channel may also
     * query the notification callbacks from its load group if its notification
     * callbacks do not supply the requested interface.
     *
     * Interfaces commonly requested include: nsIProgressEventSink, nsIPrompt,
     * and nsIAuthPrompt/nsIAuthPrompt2.
     *
     * When the channel is done, it must not continue holding references to
     * this object.
     *
     * NOTE: A channel implementation should take care when "caching" an
     * interface pointer queried from its notification callbacks.  If the
     * notification callbacks are changed, then a cached interface pointer may
     * become invalid and may therefore need to be re-queried.
     */

attribute nsIInterfaceRequestor notificationCallbacks;

[src]

/**
     * Transport-level security information (if any) corresponding to the
     * channel.
     *
     * NOTE: In some circumstances TLS information is propagated onto
     * non-nsIHttpChannel objects to indicate that their contents were likely
     * delivered over TLS all the same.  For example, document.open() may
     * create an nsWyciwygChannel to store the data that will be written to the
     * document.  In that case, if the caller has TLS information, we propagate
     * that info onto the nsWyciwygChannel given that it is likely that the
     * caller will be writing data that was delivered over TLS to the document.
     */

readonly attribute nsISupports securityInfo;

[src]

/**
     * The MIME type of the channel's content if available.
     *
     * NOTE: the content type can often be wrongly specified (e.g., wrong file
     * extension, wrong MIME type, wrong document type stored on a server, etc.),
     * and the caller most likely wants to verify with the actual data.
     *
     * Setting contentType before the channel has been opened provides a hint
     * to the channel as to what the MIME type is.  The channel may ignore this
     * hint in deciding on the actual MIME type that it will report.
     *
     * Setting contentType after onStartRequest has been fired or after open()
     * is called will override the type determined by the channel.
     *
     * Setting contentType between the time that asyncOpen() is called and the
     * time when onStartRequest is fired has undefined behavior at this time.
     *
     * The value of the contentType attribute is a lowercase string.  A value
     * assigned to this attribute will be parsed and normalized as follows:
     *  1- any parameters (delimited with a ';') will be stripped.
     *  2- if a charset parameter is given, then its value will replace the
     *     the contentCharset attribute of the channel.
     *  3- the stripped contentType will be lowercased.
     * Any implementation of nsIChannel must follow these rules.
     */

attribute ACString contentType;

[src]

/**
     * The MIME type of the channel's content if available.
     *
     * NOTE: the content type can often be wrongly specified (e.g., wrong file
     * extension, wrong MIME type, wrong document type stored on a server, etc.),
     * and the caller most likely wants to verify with the actual data.
     *
     * Setting contentType before the channel has been opened provides a hint
     * to the channel as to what the MIME type is.  The channel may ignore this
     * hint in deciding on the actual MIME type that it will report.
     *
     * Setting contentType after onStartRequest has been fired or after open()
     * is called will override the type determined by the channel.
     *
     * Setting contentType between the time that asyncOpen() is called and the
     * time when onStartRequest is fired has undefined behavior at this time.
     *
     * The value of the contentType attribute is a lowercase string.  A value
     * assigned to this attribute will be parsed and normalized as follows:
     *  1- any parameters (delimited with a ';') will be stripped.
     *  2- if a charset parameter is given, then its value will replace the
     *     the contentCharset attribute of the channel.
     *  3- the stripped contentType will be lowercased.
     * Any implementation of nsIChannel must follow these rules.
     */

attribute ACString contentType;

[src]

/**
     * The character set of the channel's content if available and if applicable.
     * This attribute only applies to textual data.
     *
     * The value of the contentCharset attribute is a mixedcase string.
     */

attribute ACString contentCharset;

[src]

/**
     * The character set of the channel's content if available and if applicable.
     * This attribute only applies to textual data.
     *
     * The value of the contentCharset attribute is a mixedcase string.
     */

attribute ACString contentCharset;

[src]

/**
     * The length of the data associated with the channel if available.  A value
     * of -1 indicates that the content length is unknown. Note that this is a
     * 64-bit value and obsoletes the "content-length" property used on some
     * channels.
     */

attribute int64_t contentLength;

[src]

/**
     * The length of the data associated with the channel if available.  A value
     * of -1 indicates that the content length is unknown. Note that this is a
     * 64-bit value and obsoletes the "content-length" property used on some
     * channels.
     */

attribute int64_t contentLength;

[src]

/**
     * Synchronously open the channel.
     *
     * @return blocking input stream to the channel's data.
     *
     * NOTE: nsIChannel implementations are not required to implement this
     * method.  Moreover, since this method may block the calling thread, it
     * should not be called on a thread that processes UI events.  Like any
     * other nsIChannel method it must not be called on any thread other
     * than the XPCOM main thread.
     *
     * NOTE: Implementations should throw NS_ERROR_IN_PROGRESS if the channel
     * is reopened.
     */

nsIInputStream open ();

[src]

/**
     * Performs content security check and calls open()
     */

nsIInputStream open2 ();

[src]

/**
     * Asynchronously open this channel.  Data is fed to the specified stream
     * listener as it becomes available.  The stream listener's methods are
     * called on the thread that calls asyncOpen and are not called until
     * after asyncOpen returns.  If asyncOpen returns successfully, the
     * channel promises to call at least onStartRequest and onStopRequest.
     *
     * If the nsIRequest object passed to the stream listener's methods is not
     * this channel, an appropriate onChannelRedirect notification needs to be
     * sent to the notification callbacks before onStartRequest is called.
     * Once onStartRequest is called, all following method calls on aListener
     * will get the request that was passed to onStartRequest.
     *
     * If the channel's and loadgroup's notification callbacks do not provide
     * an nsIChannelEventSink when onChannelRedirect would be called, that's
     * equivalent to having called onChannelRedirect.
     *
     * If asyncOpen returns successfully, the channel is responsible for
     * keeping itself alive until it has called onStopRequest on aListener or
     * called onChannelRedirect.
     *
     * Implementations are allowed to synchronously add themselves to the
     * associated load group (if any).
     *
     * NOTE: Implementations should throw NS_ERROR_ALREADY_OPENED if the
     * channel is reopened.
     *
     * @param aListener the nsIStreamListener implementation
     * @param aContext an opaque parameter forwarded to aListener's methods
     * @see nsIChannelEventSink for onChannelRedirect
     */

void asyncOpen (in nsIStreamListener aListener, in nsISupports aContext);

[src]

/**
     * Performs content security check and calls asyncOpen().
     */

void asyncOpen2 (in nsIStreamListener aListener);

[src]

/**
     * Access to the type implied or stated by the Content-Disposition header
     * if available and if applicable. This allows determining inline versus
     * attachment.
     *
     * Setting contentDisposition provides a hint to the channel about the
     * disposition.  If a normal Content-Disposition header is present its
     * value will always be used.  If it is missing the hinted value will
     * be used if set.
     *
     * Implementations should throw NS_ERROR_NOT_AVAILABLE if the header either
     * doesn't exist for this type of channel or is empty, and return
     * DISPOSITION_ATTACHMENT if an invalid/noncompliant value is present.
     */

attribute unsigned long contentDisposition;

[src]

/**
     * Access to the type implied or stated by the Content-Disposition header
     * if available and if applicable. This allows determining inline versus
     * attachment.
     *
     * Setting contentDisposition provides a hint to the channel about the
     * disposition.  If a normal Content-Disposition header is present its
     * value will always be used.  If it is missing the hinted value will
     * be used if set.
     *
     * Implementations should throw NS_ERROR_NOT_AVAILABLE if the header either
     * doesn't exist for this type of channel or is empty, and return
     * DISPOSITION_ATTACHMENT if an invalid/noncompliant value is present.
     */

attribute unsigned long contentDisposition;

[src]

/**
     * Access to the filename portion of the Content-Disposition header if
     * available and if applicable. This allows getting the preferred filename
     * without having to parse it out yourself.
     *
     * Setting contentDispositionFilename provides a hint to the channel about
     * the disposition.  If a normal Content-Disposition header is present its
     * value will always be used.  If it is missing the hinted value will be
     * used if set.
     *
     * Implementations should throw NS_ERROR_NOT_AVAILABLE if the header doesn't
     * exist for this type of channel, if the header is empty, if the header
     * doesn't contain a filename portion, or the value of the filename
     * attribute is empty/missing.
     */

attribute AString contentDispositionFilename;

[src]

/**
     * Access to the filename portion of the Content-Disposition header if
     * available and if applicable. This allows getting the preferred filename
     * without having to parse it out yourself.
     *
     * Setting contentDispositionFilename provides a hint to the channel about
     * the disposition.  If a normal Content-Disposition header is present its
     * value will always be used.  If it is missing the hinted value will be
     * used if set.
     *
     * Implementations should throw NS_ERROR_NOT_AVAILABLE if the header doesn't
     * exist for this type of channel, if the header is empty, if the header
     * doesn't contain a filename portion, or the value of the filename
     * attribute is empty/missing.
     */

attribute AString contentDispositionFilename;

[src]

/**
     * Access to the raw Content-Disposition header if available and applicable.
     *
     * Implementations should throw NS_ERROR_NOT_AVAILABLE if the header either
     * doesn't exist for this type of channel or is empty.
     *
     * @deprecated Use contentDisposition/contentDispositionFilename instead.
     */

readonly attribute ACString contentDispositionHeader;

[src]

/**
     * The LoadInfo object contains information about a network load, why it
     * was started, and how we plan on using the resulting response.
     * If a network request is redirected, the new channel will receive a new
     * LoadInfo object. The new object will contain mostly the same
     * information as the pre-redirect one, but updated as appropriate.
     * For detailed information about what parts of LoadInfo are updated on
     * redirect, see documentation on individual properties.
     */

attribute nsILoadInfo loadInfo;

[src]

/**
     * The LoadInfo object contains information about a network load, why it
     * was started, and how we plan on using the resulting response.
     * If a network request is redirected, the new channel will receive a new
     * LoadInfo object. The new object will contain mostly the same
     * information as the pre-redirect one, but updated as appropriate.
     * For detailed information about what parts of LoadInfo are updated on
     * redirect, see documentation on individual properties.
     */

attribute nsILoadInfo loadInfo;

[src]

/**
     * Returns true if the channel is used to create a document.
     * It returns true if the loadFlags have LOAD_DOCUMENT_URI set, or if
     * LOAD_HTML_OBJECT_DATA is set and the channel has the appropriate
     * MIME type.
     * Note: May have the wrong value if called before OnStartRequest as we
     * don't know the MIME type yet.
     */

readonly attribute bool isDocument;

Trait Implementations

impl XpCom for nsIHttpChannel
[src]

IID: nsIID = nsID(3315900531, 17721, 18887, [163, 242, 206, 195, 240, 97, 156, 108])

[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 nsIHttpChannel
[src]

[src]

Increment the reference count.

[src]

Decrement the reference count, potentially freeing backing memory.

impl Deref for nsIHttpChannel
[src]

The resulting type after dereferencing.

[src]

Dereferences the value.