DXR is a code search and navigation tool aimed at making sense of large projects. It supports full-text and regex searches as well as structural queries.

Mercurial (b6d82b1a6b02)

VCS Links

Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194
/* -*- 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 "nsIProxiedProtocolHandler.idl"

%{C++
namespace mozilla {
namespace net {
class HSTSDataCallbackWrapper;
}
}
%}

native HSTSDataCallbackWrapperAlreadyAddRefed(RefPtr<mozilla::net::HSTSDataCallbackWrapper>);

[scriptable, builtinclass, uuid(c48126d9-2ddd-485b-a51a-378e917e75f8)]
interface nsIHttpProtocolHandler : nsIProxiedProtocolHandler
{
    /**
     * Get the HTTP advertised user agent string.
     */
    [must_use] readonly attribute ACString userAgent;

    /**
     * Get the application name.
     *
     * @return The name of this application (eg. "Mozilla").
     */
    [must_use] readonly attribute ACString appName;

    /**
     * Get the application version string.
     *
     * @return The complete version (major and minor) string. (eg. "5.0")
     */
    [must_use] readonly attribute ACString appVersion;

    /**
     * Get the current platform.
     *
     * @return The platform this application is running on
     *         (eg. "Windows", "Macintosh", "X11")
     */
    [must_use] readonly attribute ACString platform;

    /**
     * Get the current oscpu.
     *
     * @return The oscpu this application is running on
     */
    [must_use] readonly attribute ACString oscpu;

    /**
     * Get the application comment misc portion.
     */
    [must_use] readonly attribute ACString misc;

    /**
     * Get the Alt-Svc cache keys (used for testing).
     */
    [must_use] readonly attribute Array<ACString> altSvcCacheKeys;

    /**
     * This function is used to ensure HSTS data storage is ready to read after
     * the returned promise is resolved.
     * Note that this function should only used for testing.
     * See bug 1521729 for more details.
     */
    [implicit_jscontext]
    Promise EnsureHSTSDataReady();

    /**
     * A C++ friendly version of EnsureHSTSDataReady
     */
    [noscript]
    void EnsureHSTSDataReadyNative(in HSTSDataCallbackWrapperAlreadyAddRefed aCallback);
};

%{C++
// ----------- Categories -----------
/**
 * At initialization time, the HTTP handler will initialize each service
 * registered under this category:
 */
#define NS_HTTP_STARTUP_CATEGORY "http-startup-category"

// ----------- Observer topics -----------
/**
 * nsIObserver notification corresponding to startup category.  Services
 * registered under the startup category will receive this observer topic at
 * startup if they implement nsIObserver.  The "subject" of the notification
 * is the nsIHttpProtocolHandler instance.
 */
#define NS_HTTP_STARTUP_TOPIC "http-startup"

/**
 * Called when asyncOpen synchronously failes e.g. because of any synchronously
 * performed security checks.  This only fires on the child process, but if
 * needed can be implemented also on the parent process.
 */
#define NS_HTTP_ON_FAILED_OPENING_REQUEST_TOPIC "http-on-failed-opening-request"

 /**
 * This observer topic is notified when an HTTP channel is opened.
 * It is similar to http-on-modify-request, except that
 * 1) The notification is guaranteed to occur before on-modify-request, during
 *    the AsyncOpen call itself.
 * 2) It only occurs for the initial open of a channel, not for internal
 *    asyncOpens that happen during redirects, etc.
 * 3) Some information (most notably nsIProxiedChannel.proxyInfo) may not be set
 *    on the channel object yet.
 *
 * The "subject" of the notification is the nsIHttpChannel instance.
 *
 * Generally the 'http-on-modify-request' notification is preferred unless the
 * synchronous, during-asyncOpen behavior that this notification provides is
 * required.
 */
#define NS_HTTP_ON_OPENING_REQUEST_TOPIC "http-on-opening-request"

/**
 * Before an HTTP request is sent to the server, this observer topic is
 * notified.  The observer of this topic can then choose to set any additional
 * headers for this request before the request is actually sent to the server.
 * The "subject" of the notification is the nsIHttpChannel instance.
 */
#define NS_HTTP_ON_MODIFY_REQUEST_TOPIC "http-on-modify-request"

/**
 * Before an HTTP connection to the server is created, this observer topic is
 * notified.  This observer happens after HSTS upgrades, etc. are set, providing
 * access to the full set of request headers. The observer of this topic can
 * choose to set any additional headers for this request before the request is
 * actually sent to the server. The "subject" of the notification is the
 * nsIHttpChannel instance.
 */
#define NS_HTTP_ON_BEFORE_CONNECT_TOPIC "http-on-before-connect"

/**
 * After an HTTP server response is received, this observer topic is notified.
 * The observer of this topic can interrogate the response.  The "subject" of
 * the notification is the nsIHttpChannel instance.
 */
#define NS_HTTP_ON_EXAMINE_RESPONSE_TOPIC "http-on-examine-response"

/**
 * The observer of this topic is notified after the received HTTP response
 * is merged with data from the browser cache.  This means that, among other
 * things, the Content-Type header will be set correctly.
 */
#define NS_HTTP_ON_EXAMINE_MERGED_RESPONSE_TOPIC "http-on-examine-merged-response"

/**
 * The observer of this topic is notified about a background revalidation that
 * started by hitting a request that fell into stale-while-revalidate window.
 * This notification points to the channel that performed the revalidation and
 * after this notification the cache entry has been validated or updated.
 */
#define NS_HTTP_ON_BACKGROUND_REVALIDATION "http-on-background-revalidation"

/**
 * The observer of this topic is notified before data is read from the cache.
 * The notification is sent if and only if there is no network communication
 * at all.
 */
#define NS_HTTP_ON_EXAMINE_CACHED_RESPONSE_TOPIC "http-on-examine-cached-response"

/**
 * The observer of this topic is notified before before the response for a HTTP
 * load is available. The "subject" of the notification is the nsIHttpChannel
 * instance. Observers may call "switchProcessTo" to perform a process switch
 * while this is being run.
 */
#define NS_HTTP_ON_MAY_CHANGE_PROCESS_TOPIC "http-on-may-change-process"

/**
 * Before an HTTP request corresponding to a channel with the LOAD_DOCUMENT_URI
 * flag is sent to the server, this observer topic is notified. The observer of
 * this topic can then choose to modify the user agent for this request before
 * the request is actually sent to the server. Additionally, the modified user
 * agent will be propagated to sub-resource requests from the same load group.
 */
#define NS_HTTP_ON_USERAGENT_REQUEST_TOPIC "http-on-useragent-request"

/**
 * This topic is notified for every http channel right after it called
 * OnStopRequest on its listener, regardless whether it was finished
 * successfully, failed or has been canceled.
 */
#define NS_HTTP_ON_STOP_REQUEST_TOPIC "http-on-stop-request"

%}