mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-02-26 04:09:50 +00:00
Bug 1159378 - Part 1: Enable nsIStreamLoader to optionally notify an nsIRequestObserver; r=mcmanus
--HG-- extra : rebase_source : f41590a92512a441b4a70f898c2172c5559718de
This commit is contained in:
parent
8464296492
commit
624cf2cad3
@ -49,16 +49,20 @@ interface nsIStreamLoaderObserver : nsISupports
|
||||
*
|
||||
* XXX define behaviour for sizes >4 GB
|
||||
*/
|
||||
[scriptable, uuid(8ea7e890-8211-11d9-8bde-f66bad1e3f3a)]
|
||||
[scriptable, uuid(323bcff1-7513-4e1f-a541-1c9213c2ed1b)]
|
||||
interface nsIStreamLoader : nsIStreamListener
|
||||
{
|
||||
/**
|
||||
* Initialize this stream loader, and start loading the data.
|
||||
*
|
||||
* @param aObserver
|
||||
* @param aStreamObserver
|
||||
* An observer that will be notified when the data is complete.
|
||||
* @param aRequestObserver
|
||||
* An optional observer that will be notified when the request
|
||||
* has started or stopped.
|
||||
*/
|
||||
void init(in nsIStreamLoaderObserver aObserver);
|
||||
void init(in nsIStreamLoaderObserver aStreamObserver,
|
||||
[optional] in nsIRequestObserver aRequestObserver);
|
||||
|
||||
/**
|
||||
* Gets the number of bytes read so far.
|
||||
|
@ -860,13 +860,14 @@ NS_NewDownloader(nsIStreamListener **result,
|
||||
|
||||
inline nsresult
|
||||
NS_NewStreamLoader(nsIStreamLoader **result,
|
||||
nsIStreamLoaderObserver *observer)
|
||||
nsIStreamLoaderObserver *observer,
|
||||
nsIRequestObserver *requestObserver = nullptr)
|
||||
{
|
||||
nsresult rv;
|
||||
nsCOMPtr<nsIStreamLoader> loader =
|
||||
do_CreateInstance(NS_STREAMLOADER_CONTRACTID, &rv);
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
rv = loader->Init(observer);
|
||||
rv = loader->Init(observer, requestObserver);
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
*result = nullptr;
|
||||
loader.swap(*result);
|
||||
|
@ -439,7 +439,7 @@ nsPACMan::StartLoading()
|
||||
return;
|
||||
}
|
||||
|
||||
if (NS_SUCCEEDED(mLoader->Init(this))) {
|
||||
if (NS_SUCCEEDED(mLoader->Init(this, nullptr))) {
|
||||
// Always hit the origin server when loading PAC.
|
||||
nsCOMPtr<nsIIOService> ios = do_GetIOService();
|
||||
if (ios) {
|
||||
|
@ -21,10 +21,12 @@ nsStreamLoader::~nsStreamLoader()
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsStreamLoader::Init(nsIStreamLoaderObserver* observer)
|
||||
nsStreamLoader::Init(nsIStreamLoaderObserver* aStreamObserver,
|
||||
nsIRequestObserver* aRequestObserver)
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(observer);
|
||||
mObserver = observer;
|
||||
NS_ENSURE_ARG_POINTER(aStreamObserver);
|
||||
mObserver = aStreamObserver;
|
||||
mRequestObserver = aRequestObserver;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
@ -80,6 +82,9 @@ nsStreamLoader::OnStartRequest(nsIRequest* request, nsISupports *ctxt)
|
||||
}
|
||||
}
|
||||
mContext = ctxt;
|
||||
if (mRequestObserver) {
|
||||
mRequestObserver->OnStartRequest(request, ctxt);
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
@ -108,6 +113,12 @@ nsStreamLoader::OnStopRequest(nsIRequest* request, nsISupports *ctxt,
|
||||
mObserver = 0;
|
||||
mContext = 0;
|
||||
}
|
||||
|
||||
if (mRequestObserver) {
|
||||
mRequestObserver->OnStopRequest(request, ctxt, aStatus);
|
||||
mRequestObserver = nullptr;
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
@ -42,6 +42,7 @@ protected:
|
||||
nsCOMPtr<nsIStreamLoaderObserver> mObserver;
|
||||
nsCOMPtr<nsISupports> mContext; // the observer's context
|
||||
nsCOMPtr<nsIRequest> mRequest;
|
||||
nsCOMPtr<nsIRequestObserver> mRequestObserver;
|
||||
|
||||
// Buffer to accumulate incoming data. We preallocate if contentSize is
|
||||
// available.
|
||||
|
Loading…
x
Reference in New Issue
Block a user