gecko/netwerk/base/public/nsILoadGroup.idl

127 lines
4.1 KiB
Plaintext

/* -*- 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;
/**
* A load group maintains a collection of nsIRequest objects.
*/
[scriptable, uuid(19501006-46e3-4634-b97d-26eff894b4d3)]
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;
};
%{C++
// Forward-declare mozilla::net::SpdyPushCache3
namespace mozilla {
namespace net {
class SpdyPushCache3;
}
}
%}
[ptr] native SpdyPushCache3Ptr(mozilla::net::SpdyPushCache3);
/**
* Used to maintain state about the connections of a load group and
* how they interact with blocking items like HEAD css/js loads.
*/
[uuid(5361f30e-f968-437c-8f41-69d2756a6022)]
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 SpdyPushCache3Ptr spdyPushCache3;
};