ProtectionSpaceBase.cpp [plain text]
#include "config.h"
#include "ProtectionSpaceBase.h"
#include "ProtectionSpace.h"
#if USE(CFNETWORK) && !PLATFORM(COCOA)
#include "AuthenticationCF.h"
#include <CFNetwork/CFURLProtectionSpacePriv.h>
#include <wtf/RetainPtr.h>
#endif
namespace WebCore {
ProtectionSpaceBase::ProtectionSpaceBase()
: m_host("")
, m_port(0)
, m_serverType(ProtectionSpaceServerHTTP)
, m_realm("")
, m_authenticationScheme(ProtectionSpaceAuthenticationSchemeDefault)
, m_isHashTableDeletedValue(false)
{
}
ProtectionSpaceBase::ProtectionSpaceBase(const String& host, int port, ProtectionSpaceServerType serverType, const String& realm, ProtectionSpaceAuthenticationScheme authenticationScheme)
: m_host(host.length() ? host : "")
, m_port(port)
, m_serverType(serverType)
, m_realm(realm.length() ? realm : "")
, m_authenticationScheme(authenticationScheme)
, m_isHashTableDeletedValue(false)
{
}
const String& ProtectionSpaceBase::host() const
{
return m_host;
}
int ProtectionSpaceBase::port() const
{
return m_port;
}
ProtectionSpaceServerType ProtectionSpaceBase::serverType() const
{
return m_serverType;
}
bool ProtectionSpaceBase::isProxy() const
{
return (m_serverType == ProtectionSpaceProxyHTTP ||
m_serverType == ProtectionSpaceProxyHTTPS ||
m_serverType == ProtectionSpaceProxyFTP ||
m_serverType == ProtectionSpaceProxySOCKS);
}
const String& ProtectionSpaceBase::realm() const
{
return m_realm;
}
ProtectionSpaceAuthenticationScheme ProtectionSpaceBase::authenticationScheme() const
{
return m_authenticationScheme;
}
bool ProtectionSpaceBase::receivesCredentialSecurely() const
{
return (m_serverType == ProtectionSpaceServerHTTPS ||
m_serverType == ProtectionSpaceServerFTPS ||
m_serverType == ProtectionSpaceProxyHTTPS ||
m_authenticationScheme == ProtectionSpaceAuthenticationSchemeHTTPDigest);
}
bool ProtectionSpaceBase::compare(const ProtectionSpace& a, const ProtectionSpace& b)
{
if (a.host() != b.host())
return false;
if (a.port() != b.port())
return false;
if (a.serverType() != b.serverType())
return false;
if (!a.isProxy() && a.realm() != b.realm())
return false;
if (a.authenticationScheme() != b.authenticationScheme())
return false;
return ProtectionSpace::platformCompare(a, b);
}
}