Reviewed by Sam.
[WebKit.git] / WebCore / platform / SecurityOrigin.cpp
index efc8aa982db48edcd33a0e66c308331e353287c1..4065b1949e4a42f47cbc4611854f6c93125f624b 100644 (file)
 
 namespace WebCore {
 
+static bool isDefaultPortForProtocol(unsigned short port, String protocol)
+{
+    if (protocol.isEmpty())
+        return false;
+
+    static HashMap<String, unsigned> defaultPorts;
+    if (defaultPorts.isEmpty()) {
+        defaultPorts.set("http", 80);
+        defaultPorts.set("https", 443);
+        defaultPorts.set("ftp", 21);
+        defaultPorts.set("ftps", 990);
+    }
+    return defaultPorts.get(protocol) == port;
+}
+
 SecurityOrigin::SecurityOrigin(const String& protocol, const String& host, unsigned short port)
     : m_protocol(protocol.lower())
     , m_host(host.lower())
@@ -53,6 +68,12 @@ SecurityOrigin::SecurityOrigin(const String& protocol, const String& host, unsig
     // data: URLs are not allowed access to anything other than themselves.
     if (m_protocol == "data")
         m_noAccess = true;
+
+
+    if (isDefaultPortForProtocol(m_port, m_protocol)) {
+        m_port = 0;
+        m_portSet = false;
+    }   
 }
 
 bool SecurityOrigin::isEmpty() const