void CredentialStorage::set(const Credential& credential, const ProtectionSpace& protectionSpace, const KURL& url) { ASSERT(protectionSpace.isProxy() || url.protocolIsInHTTPFamily()); ASSERT(protectionSpace.isProxy() || url.isValid()); protectionSpaceToCredentialMap().set(protectionSpace, credential); if (!protectionSpace.isProxy()) { originsWithCredentials().add(originStringFromURL(url)); ProtectionSpaceAuthenticationScheme scheme = protectionSpace.authenticationScheme(); if (scheme == ProtectionSpaceAuthenticationSchemeHTTPBasic || scheme == ProtectionSpaceAuthenticationSchemeDefault) { // The map can contain both a path and its subpath - while redundant, this makes lookups faster. pathToDefaultProtectionSpaceMap().set(protectionSpaceMapKeyFromURL(url), protectionSpace); } } }
void CredentialStorage::set(const Credential& credential, const ProtectionSpace& protectionSpace, const URL& url) { ASSERT(protectionSpace.isProxy() || protectionSpace.authenticationScheme() == ProtectionSpaceAuthenticationSchemeClientCertificateRequested || url.protocolIsInHTTPFamily()); ASSERT(protectionSpace.isProxy() || protectionSpace.authenticationScheme() == ProtectionSpaceAuthenticationSchemeClientCertificateRequested || url.isValid()); m_protectionSpaceToCredentialMap.set(protectionSpace, credential); #if PLATFORM(IOS) if (protectionSpace.authenticationScheme() != ProtectionSpaceAuthenticationSchemeClientCertificateRequested) saveToPersistentStorage(protectionSpace, credential); #endif if (!protectionSpace.isProxy() && protectionSpace.authenticationScheme() != ProtectionSpaceAuthenticationSchemeClientCertificateRequested) { m_originsWithCredentials.add(originStringFromURL(url)); ProtectionSpaceAuthenticationScheme scheme = protectionSpace.authenticationScheme(); if (scheme == ProtectionSpaceAuthenticationSchemeHTTPBasic || scheme == ProtectionSpaceAuthenticationSchemeDefault) { // The map can contain both a path and its subpath - while redundant, this makes lookups faster. m_pathToDefaultProtectionSpaceMap.set(protectionSpaceMapKeyFromURL(url), protectionSpace); } } }
bool operator==(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; // Ignore realm for proxies if (!a.isProxy() && a.realm() != b.realm()) return false; if (a.authenticationScheme() != b.authenticationScheme()) return false; return true; }