зеркало из https://github.com/mozilla/gecko-dev.git
105 строки
3.2 KiB
C++
105 строки
3.2 KiB
C++
/* -*- 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 "nsSecCheckWrapChannel.h"
|
|
#include "nsHttpChannel.h"
|
|
#include "nsCOMPtr.h"
|
|
|
|
static PRLogModuleInfo*
|
|
GetChannelWrapperLog()
|
|
{
|
|
static PRLogModuleInfo* gChannelWrapperPRLog;
|
|
if (!gChannelWrapperPRLog) {
|
|
gChannelWrapperPRLog = PR_NewLogModule("ChannelWrapper");
|
|
}
|
|
return gChannelWrapperPRLog;
|
|
}
|
|
|
|
#define CHANNELWRAPPERLOG(args) MOZ_LOG(GetChannelWrapperLog(), mozilla::LogLevel::Debug, args)
|
|
|
|
NS_IMPL_ADDREF(nsSecCheckWrapChannelBase)
|
|
NS_IMPL_RELEASE(nsSecCheckWrapChannelBase)
|
|
|
|
NS_INTERFACE_MAP_BEGIN(nsSecCheckWrapChannelBase)
|
|
NS_INTERFACE_MAP_ENTRY_CONDITIONAL(nsIHttpChannel, mHttpChannel)
|
|
NS_INTERFACE_MAP_ENTRY_CONDITIONAL(nsIHttpChannelInternal, mHttpChannelInternal)
|
|
NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIHttpChannel)
|
|
NS_INTERFACE_MAP_ENTRY(nsIRequest)
|
|
NS_INTERFACE_MAP_ENTRY(nsIChannel)
|
|
NS_INTERFACE_MAP_ENTRY(nsISecCheckWrapChannel)
|
|
NS_INTERFACE_MAP_END
|
|
|
|
//---------------------------------------------------------
|
|
// nsSecCheckWrapChannelBase implementation
|
|
//---------------------------------------------------------
|
|
|
|
nsSecCheckWrapChannelBase::nsSecCheckWrapChannelBase(nsIChannel* aChannel)
|
|
: mChannel(aChannel)
|
|
, mHttpChannel(do_QueryInterface(aChannel))
|
|
, mHttpChannelInternal(do_QueryInterface(aChannel))
|
|
, mRequest(do_QueryInterface(aChannel))
|
|
{
|
|
MOZ_ASSERT(mChannel, "can not create a channel wrapper without a channel");
|
|
}
|
|
|
|
nsSecCheckWrapChannelBase::~nsSecCheckWrapChannelBase()
|
|
{
|
|
}
|
|
|
|
//---------------------------------------------------------
|
|
// nsISecCheckWrapChannel implementation
|
|
//---------------------------------------------------------
|
|
|
|
NS_IMETHODIMP
|
|
nsSecCheckWrapChannelBase::GetInnerChannel(nsIChannel **aInnerChannel)
|
|
{
|
|
NS_IF_ADDREF(*aInnerChannel = mChannel);
|
|
return NS_OK;
|
|
}
|
|
|
|
//---------------------------------------------------------
|
|
// nsSecCheckWrapChannel implementation
|
|
//---------------------------------------------------------
|
|
|
|
nsSecCheckWrapChannel::nsSecCheckWrapChannel(nsIChannel* aChannel,
|
|
nsILoadInfo* aLoadInfo)
|
|
: nsSecCheckWrapChannelBase(aChannel)
|
|
, mLoadInfo(aLoadInfo)
|
|
{
|
|
{
|
|
nsCOMPtr<nsIURI> uri;
|
|
mChannel->GetURI(getter_AddRefs(uri));
|
|
nsAutoCString spec;
|
|
if (uri) {
|
|
uri->GetSpec(spec);
|
|
}
|
|
CHANNELWRAPPERLOG(("nsSecCheckWrapChannel::nsSecCheckWrapChannel [%p] (%s)",this, spec.get()));
|
|
}
|
|
}
|
|
|
|
nsSecCheckWrapChannel::~nsSecCheckWrapChannel()
|
|
{
|
|
}
|
|
|
|
//---------------------------------------------------------
|
|
// nsIChannel implementation
|
|
//---------------------------------------------------------
|
|
|
|
NS_IMETHODIMP
|
|
nsSecCheckWrapChannel::GetLoadInfo(nsILoadInfo** aLoadInfo)
|
|
{
|
|
CHANNELWRAPPERLOG(("nsSecCheckWrapChannel::GetLoadInfo() [%p]",this));
|
|
NS_IF_ADDREF(*aLoadInfo = mLoadInfo);
|
|
return NS_OK;
|
|
}
|
|
|
|
NS_IMETHODIMP
|
|
nsSecCheckWrapChannel::SetLoadInfo(nsILoadInfo* aLoadInfo)
|
|
{
|
|
CHANNELWRAPPERLOG(("nsSecCheckWrapChannel::SetLoadInfo() [%p]", this));
|
|
mLoadInfo = aLoadInfo;
|
|
return NS_OK;
|
|
}
|