diff -r 000000000000 -r 6474c204b198 netwerk/base/public/nsILoadGroup.idl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/netwerk/base/public/nsILoadGroup.idl Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,141 @@ +/* -*- Mode: C++; tab-width: 2; 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 "nsIRequest.idl" + +interface nsISimpleEnumerator; +interface nsIRequestObserver; +interface nsIInterfaceRequestor; +interface nsILoadGroupConnectionInfo; + +typedef unsigned long nsLoadFlags; + +/** + * A load group maintains a collection of nsIRequest objects. + */ +[scriptable, uuid(afb57ac2-bce5-4ee3-bb34-385089a9ba5c)] +interface nsILoadGroup : nsIRequest +{ + /** + * The group observer is notified when requests are added to and removed + * from this load group. The groupObserver is weak referenced. + */ + attribute nsIRequestObserver groupObserver; + + /** + * Accesses the default load request for the group. Each time a number + * of requests are added to a group, the defaultLoadRequest may be set + * to indicate that all of the requests are related to a base request. + * + * The load group inherits its load flags from the default load request. + * If the default load request is NULL, then the group's load flags are + * not changed. + */ + attribute nsIRequest defaultLoadRequest; + + /** + * Adds a new request to the group. This will cause the default load + * flags to be applied to the request. If this is a foreground + * request then the groupObserver's onStartRequest will be called. + * + * If the request is the default load request or if the default load + * request is null, then the load group will inherit its load flags from + * the request. + */ + void addRequest(in nsIRequest aRequest, + in nsISupports aContext); + + /** + * Removes a request from the group. If this is a foreground request + * then the groupObserver's onStopRequest will be called. + * + * By the time this call ends, aRequest will have been removed from the + * loadgroup, even if this function throws an exception. + */ + void removeRequest(in nsIRequest aRequest, + in nsISupports aContext, + in nsresult aStatus); + + /** + * Returns the requests contained directly in this group. + * Enumerator element type: nsIRequest. + */ + readonly attribute nsISimpleEnumerator requests; + + /** + * Returns the count of "active" requests (ie. requests without the + * LOAD_BACKGROUND bit set). + */ + readonly attribute unsigned long activeCount; + + /** + * Notification callbacks for the load group. + */ + attribute nsIInterfaceRequestor notificationCallbacks; + + /** + * Connection information for managing things like js/css + * connection blocking, and per-tab connection grouping + */ + readonly attribute nsILoadGroupConnectionInfo connectionInfo; + + /** + * The set of load flags that will be added to all new requests added to + * this group. Any existing requests in the load group are not modified, + * so it is expected these flags will be added before requests are added + * to the group - typically via nsIDocShell::defaultLoadFlags on a new + * docShell. + * Note that these flags are *not* added to the default request for the + * load group; it is expected the default request will already have these + * flags (again, courtesy of setting nsIDocShell::defaultLoadFlags before + * the docShell has created the default request.) + */ + attribute nsLoadFlags defaultLoadFlags; +}; + +%{C++ +// Forward-declare mozilla::net::SpdyPushCache +namespace mozilla { +namespace net { +class SpdyPushCache; +} +} +%} + +[ptr] native SpdyPushCachePtr(mozilla::net::SpdyPushCache); + +/** + * Used to maintain state about the connections of a load group and + * how they interact with blocking items like HEAD css/js loads. + */ + +[uuid(fdc9659c-b597-4ac0-9c9e-14b04dbb682f)] +interface nsILoadGroupConnectionInfo : nsISupports +{ + /** + * Number of active blocking transactions associated with this load group + */ + readonly attribute unsigned long blockingTransactionCount; + + /** + * Increase the number of active blocking transactions associated + * with this load group by one. + */ + void addBlockingTransaction(); + + /** + * Decrease the number of active blocking transactions associated + * with this load group by one. The return value is the number of remaining + * blockers. + */ + unsigned long removeBlockingTransaction(); + + /* reading this attribute gives out weak pointers to the push + * cache. The nsILoadGroupConnectionInfo implemenation owns the cache + * and will destroy it when overwritten or when the load group + * ends. + */ + [noscript] attribute SpdyPushCachePtr spdyPushCache; +};