зеркало из https://github.com/mozilla/pjs.git
make the URI checker handle redirections correctly. Bug 128665,
r=bbaetz, sr=darin, a=asa
This commit is contained in:
Родитель
aaaca0db88
Коммит
dba82db564
|
@ -46,8 +46,9 @@
|
||||||
#include "nsReadableUtils.h" // for ToNewUnicode()
|
#include "nsReadableUtils.h" // for ToNewUnicode()
|
||||||
|
|
||||||
//Interfaces for addref, release and queryinterface
|
//Interfaces for addref, release and queryinterface
|
||||||
NS_IMPL_ISUPPORTS3(nsURIChecker, nsIURIChecker,
|
NS_IMPL_ISUPPORTS5(nsURIChecker, nsIURIChecker,
|
||||||
nsIRequest, nsIStreamListener);
|
nsIRequest, nsIStreamListener,
|
||||||
|
nsIHttpEventSink, nsIInterfaceRequestor);
|
||||||
|
|
||||||
nsURIChecker::nsURIChecker()
|
nsURIChecker::nsURIChecker()
|
||||||
{
|
{
|
||||||
|
@ -118,6 +119,9 @@ nsURIChecker::AsyncCheckURI(const char* aURI, nsIRequestObserver *aObserver,
|
||||||
if (httpChannel)
|
if (httpChannel)
|
||||||
httpChannel->SetRequestMethod("HEAD");
|
httpChannel->SetRequestMethod("HEAD");
|
||||||
|
|
||||||
|
// Hook us up to listen to redirects and the like
|
||||||
|
mChannel->SetNotificationCallbacks(this);
|
||||||
|
|
||||||
// and start the request:
|
// and start the request:
|
||||||
return mChannel->AsyncOpen(this, nsnull);
|
return mChannel->AsyncOpen(this, nsnull);
|
||||||
}
|
}
|
||||||
|
@ -285,3 +289,22 @@ nsURIChecker::OnDataAvailable(nsIRequest *aRequest, nsISupports *aCtxt,
|
||||||
return NS_BINDING_ABORTED;
|
return NS_BINDING_ABORTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////
|
||||||
|
// nsIInterfaceRequestor methods:
|
||||||
|
//
|
||||||
|
NS_IMETHODIMP
|
||||||
|
nsURIChecker::GetInterface(const nsIID & aIID, void **aResult)
|
||||||
|
{
|
||||||
|
return QueryInterface(aIID, aResult);
|
||||||
|
}
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////
|
||||||
|
// nsIHttpEventSink methods:
|
||||||
|
//
|
||||||
|
NS_IMETHODIMP
|
||||||
|
nsURIChecker::OnRedirect(nsIHttpChannel *aHttpChannel, nsIChannel *aNewChannel)
|
||||||
|
{
|
||||||
|
// We have a new channel
|
||||||
|
mChannel = aNewChannel;
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
|
@ -43,13 +43,16 @@
|
||||||
#include "nsIRequest.h"
|
#include "nsIRequest.h"
|
||||||
#include "nsIChannel.h"
|
#include "nsIChannel.h"
|
||||||
#include "nsIStreamListener.h"
|
#include "nsIStreamListener.h"
|
||||||
|
#include "nsIHttpEventSink.h"
|
||||||
|
#include "nsIInterfaceRequestor.h"
|
||||||
#include "nsIURI.h"
|
#include "nsIURI.h"
|
||||||
|
|
||||||
#include "nsIIOService.h"
|
#include "nsIIOService.h"
|
||||||
#include "nsCOMPtr.h"
|
#include "nsCOMPtr.h"
|
||||||
|
|
||||||
class nsURIChecker : public nsIURIChecker, public nsIRequest,
|
class nsURIChecker : public nsIURIChecker, public nsIRequest,
|
||||||
public nsIStreamListener
|
public nsIStreamListener, public nsIHttpEventSink,
|
||||||
|
public nsIInterfaceRequestor
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
nsURIChecker();
|
nsURIChecker();
|
||||||
|
@ -63,6 +66,8 @@ public:
|
||||||
|
|
||||||
NS_DECL_NSIREQUESTOBSERVER
|
NS_DECL_NSIREQUESTOBSERVER
|
||||||
NS_DECL_NSISTREAMLISTENER
|
NS_DECL_NSISTREAMLISTENER
|
||||||
|
NS_DECL_NSIHTTPEVENTSINK
|
||||||
|
NS_DECL_NSIINTERFACEREQUESTOR
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
nsresult mStatus;
|
nsresult mStatus;
|
||||||
|
|
Загрузка…
Ссылка в новой задаче