diff options
Diffstat (limited to 'netwerk/base/nsIRequestContext.idl')
-rw-r--r-- | netwerk/base/nsIRequestContext.idl | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/netwerk/base/nsIRequestContext.idl b/netwerk/base/nsIRequestContext.idl new file mode 100644 index 000000000..b40ba7d18 --- /dev/null +++ b/netwerk/base/nsIRequestContext.idl @@ -0,0 +1,95 @@ +/* -*- 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" + +%{C++ +// Forward-declare mozilla::net::SpdyPushCache +namespace mozilla { +namespace net { +class SpdyPushCache; +} +} +%} + +[ptr] native SpdyPushCachePtr(mozilla::net::SpdyPushCache); + +/** + * The nsIRequestContext is used to maintain state about connections + * that are in some way associated with each other (often by being part + * of the same load group) and how they interact with blocking items like + * HEAD css/js loads. + * + * This used to be known as nsILoadGroupConnectionInfo and nsISchedulingContext. + */ +[scriptable, uuid(658e3e6e-8633-4b1a-8d66-fa9f72293e63)] +interface nsIRequestContext : nsISupports +{ + /** + * A unique identifier for this request context + */ + [noscript] readonly attribute nsID ID; + + /** + * Number of active blocking transactions associated with this context + */ + readonly attribute unsigned long blockingTransactionCount; + + /** + * Increase the number of active blocking transactions associated + * with this context by one. + */ + void addBlockingTransaction(); + + /** + * Decrease the number of active blocking transactions associated + * with this context by one. The return value is the number of remaining + * blockers. + */ + unsigned long removeBlockingTransaction(); + + /** + * This gives out a weak pointer to the push cache. + * The nsIRequestContext implementation owns the cache + * and will destroy it when overwritten or when the context + * ends. + */ + [noscript] attribute SpdyPushCachePtr spdyPushCache; + + /** + * This holds a cached value of the user agent override. + */ + [noscript] attribute ACString userAgentOverride; +}; + +/** + * The nsIRequestContextService is how anyone gets access to a request + * context when they haven't been explicitly given a strong reference to an + * existing one. It is responsible for creating and handing out strong + * references to nsIRequestContexts, but only keeps weak references itself. + * The shared request context will go away once no one else is keeping a + * reference to it. If you ask for a request context that has no one else + * holding a reference to it, you'll get a brand new request context. Anyone + * who asks for the same request context while you're holding a reference + * will get a reference to the same request context you have. + */ +[uuid(7fcbf4da-d828-4acc-b144-e5435198f727)] +interface nsIRequestContextService : nsISupports +{ + /** + * Get an existing request context from its ID + */ + nsIRequestContext getRequestContext(in nsIDRef id); + + /** + * Create a new request context identifier + */ + nsID newRequestContextID(); + + /** + * Remove an existing request context from its ID + */ + void removeRequestContext(in nsIDRef id); +}; |