Reviewed by Darin
[WebKit-https.git] / WebCore / platform / network / ProtectionSpace.cpp
index e98386ab9eb22ff6e0590a67d35b2253f8c6af74..d0020c15d16bda225b821c9989a1e4b919a22d1c 100644 (file)
 #include "config.h"
 #include "ProtectionSpace.h"
 
+#include "AuthenticationCF.h"
+#include <CFNetwork/CFURLProtectionSpacePriv.h>
+#include <wtf/RetainPtr.h>
+
 namespace WebCore {
 
 // Need to enforce empty, non-null strings due to the pickiness of the String == String operator
@@ -41,7 +45,7 @@ ProtectionSpace::ProtectionSpace(const String& host, int port, ProtectionSpaceSe
     : m_host(host.length() ? host : "")
     , m_port(port)
     , m_serverType(serverType)
-    , m_realm(realm.length() ? host : "")
+    , m_realm(realm.length() ? realm : "")
     , m_authenticationScheme(authenticationScheme)
 {    
 }
@@ -61,6 +65,14 @@ ProtectionSpaceServerType ProtectionSpace::serverType() const
     return m_serverType; 
 }
 
+bool ProtectionSpace::isProxy() const
+{
+    return (m_serverType == ProtectionSpaceProxyHTTP ||
+            m_serverType == ProtectionSpaceProxyHTTPS ||
+            m_serverType == ProtectionSpaceProxyFTP ||
+            m_serverType == ProtectionSpaceProxySOCKS);
+}
+
 const String& ProtectionSpace::realm() const 
 { 
     return m_realm; 
@@ -71,6 +83,12 @@ ProtectionSpaceAuthenticationScheme ProtectionSpace::authenticationScheme() cons
     return m_authenticationScheme; 
 }
 
+bool ProtectionSpace::receivesCredentialSecurely() const
+{
+    RetainPtr<CFURLProtectionSpaceRef> cfSpace(AdoptCF, createCF(*this));
+    return cfSpace && CFURLProtectionSpaceReceivesCredentialSecurely(cfSpace.get());
+}
+
 bool operator==(const ProtectionSpace& a, const ProtectionSpace& b)
 {
     if (a.host() != b.host())