Index: WebKit/chromium/src/WebURLResponse.cpp
===================================================================
--- WebKit/chromium/src/WebURLResponse.cpp	(revision 76088)
+++ WebKit/chromium/src/WebURLResponse.cpp	(working copy)
@@ -384,6 +384,16 @@
     m_private->m_downloadFilePath = downloadFilePath;
 }
 
+WebString WebURLResponse::socketAddress() const
+{
+    return m_private->m_resourceResponse->socketAddress();
+}
+
+void WebURLResponse::setSocketAddress(const WebString& socketAddress)
+{
+    m_private->m_resourceResponse->setSocketAddress(socketAddress);
+}
+
 void WebURLResponse::assign(WebURLResponsePrivate* p)
 {
     // Subclasses may call this directly so a self-assignment check is needed
Index: WebKit/chromium/public/WebURLResponse.h
===================================================================
--- WebKit/chromium/public/WebURLResponse.h	(revision 76088)
+++ WebKit/chromium/public/WebURLResponse.h	(working copy)
@@ -169,6 +169,11 @@
     WEBKIT_API WebString downloadFilePath() const;
     WEBKIT_API void setDownloadFilePath(const WebString&);
 
+    // Remote address of the socket which fetched this resource, for presenting
+    // to inquisitive users.  Can be "ipv4:port", "[ipv6]:port", or empty.
+    WEBKIT_API WebString socketAddress() const;
+    WEBKIT_API void setSocketAddress(const WebString&);
+
 protected:
     void assign(WebURLResponsePrivate*);
 
Index: WebCore/platform/network/chromium/ResourceResponse.cpp
===================================================================
--- WebCore/platform/network/chromium/ResourceResponse.cpp	(revision 76088)
+++ WebCore/platform/network/chromium/ResourceResponse.cpp	(working copy)
@@ -39,6 +39,7 @@
     data->m_wasAlternateProtocolAvailable = m_wasAlternateProtocolAvailable;
     data->m_wasFetchedViaProxy = m_wasFetchedViaProxy;
     data->m_responseTime = m_responseTime;
+    data->m_socketAddress = m_socketAddress;
     return data;
 }
 
@@ -53,6 +54,7 @@
     m_wasAlternateProtocolAvailable = data->m_wasAlternateProtocolAvailable;
     m_wasFetchedViaProxy = data->m_wasFetchedViaProxy;
     m_responseTime = data->m_responseTime;
+    m_socketAddress = data->m_socketAddress;
 }
 
 } // namespace WebCore
Index: WebCore/platform/network/chromium/ResourceResponse.h
===================================================================
--- WebCore/platform/network/chromium/ResourceResponse.h	(revision 76088)
+++ WebCore/platform/network/chromium/ResourceResponse.h	(working copy)
@@ -96,6 +96,9 @@
         double responseTime() const { return m_responseTime; }
         void setResponseTime(double responseTime) { m_responseTime = responseTime; }
 
+        const String& socketAddress() const { return m_socketAddress; }
+        void setSocketAddress(const String& value) { m_socketAddress = value; }
+
     private:
         friend class ResourceResponseBase;
 
@@ -143,6 +146,10 @@
         // The time at which the response headers were received.  For cached
         // responses, this time could be "far" in the past.
         double m_responseTime;
+
+        // Remote address of the socket which fetched this resource, for presenting
+        // to inquisitive users.  Can be "ipv4:port", "[ipv6]:port", or empty.
+        String m_socketAddress;
     };
 
     struct CrossThreadResourceResponseData : public CrossThreadResourceResponseDataBase {
@@ -155,6 +162,7 @@
         bool m_wasAlternateProtocolAvailable;
         bool m_wasFetchedViaProxy;
         double m_responseTime;
+        String m_socketAddress;
     };
 
 } // namespace WebCore
