[Chromium] Cross-thread-copy a couple more recently added ResourceResponse data membe...
authormichaeln@google.com <michaeln@google.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 4 Aug 2012 01:28:22 +0000 (01:28 +0000)
committermichaeln@google.com <michaeln@google.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 4 Aug 2012 01:28:22 +0000 (01:28 +0000)
these got missed when they were added. And fix a bug with how the m_remoteIPAddress
data member is handled, an isolatedCopy() is needed for thread safety.
https://bugs.webkit.org/show_bug.cgi?id=93158

Reviewed by David Levin.

No new tests, minor cleanup.

* platform/network/chromium/ResourceResponse.cpp:
(WebCore::ResourceResponse::doPlatformCopyData): make deep copies
(WebCore::ResourceResponse::doPlatformAdopt): take ownership of them
* platform/network/chromium/ResourceResponse.h:
(ResourceResponse):
(CrossThreadResourceResponseData):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@124682 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebCore/ChangeLog
Source/WebCore/platform/network/chromium/ResourceResponse.cpp
Source/WebCore/platform/network/chromium/ResourceResponse.h

index 4ed5f1e..2a9a54e 100644 (file)
@@ -1,3 +1,21 @@
+2012-08-03  Michael Nordman  <michaeln@google.com>
+
+        [Chromium] Cross-thread-copy a couple more recently added ResourceResponse data members, apparently
+        these got missed when they were added. And fix a bug with how the m_remoteIPAddress
+        data member is handled, an isolatedCopy() is needed for thread safety.
+        https://bugs.webkit.org/show_bug.cgi?id=93158
+
+        Reviewed by David Levin.
+
+        No new tests, minor cleanup.
+
+        * platform/network/chromium/ResourceResponse.cpp:
+        (WebCore::ResourceResponse::doPlatformCopyData): make deep copies
+        (WebCore::ResourceResponse::doPlatformAdopt): take ownership of them
+        * platform/network/chromium/ResourceResponse.h:
+        (ResourceResponse):
+        (CrossThreadResourceResponseData):
+
 2012-08-03  Florin Malita  <fmalita@chromium.org>
 
         [SVG] Tref target event listener cleanup
index 189bc1f..81ee3cf 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2010 Google, Inc.
+ * Copyright (C) 2012 Google, Inc.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -30,6 +30,8 @@ namespace WebCore {
 
 PassOwnPtr<CrossThreadResourceResponseData> ResourceResponse::doPlatformCopyData(PassOwnPtr<CrossThreadResourceResponseData> data) const
 {
+    data->m_securityInfo = CString(m_securityInfo.data(), m_securityInfo.length());
+    data->m_httpVersion = m_httpVersion;
     data->m_appCacheID = m_appCacheID;
     data->m_appCacheManifestURL = m_appCacheManifestURL.copy();
     data->m_isMultipartPayload = m_isMultipartPayload;
@@ -38,14 +40,17 @@ PassOwnPtr<CrossThreadResourceResponseData> ResourceResponse::doPlatformCopyData
     data->m_wasAlternateProtocolAvailable = m_wasAlternateProtocolAvailable;
     data->m_wasFetchedViaProxy = m_wasFetchedViaProxy;
     data->m_responseTime = m_responseTime;
-    data->m_remoteIPAddress = m_remoteIPAddress;
+    data->m_remoteIPAddress = m_remoteIPAddress.isolatedCopy();
     data->m_remotePort = m_remotePort;
-    // Bug https://bugs.webkit.org/show_bug.cgi?id=60397 this doesn't support m_downloadedFile.
+    // Bug https://bugs.webkit.org/show_bug.cgi?id=60397 this doesn't support m_downloadedFile,
+    // or whatever values may be present in the opaque m_extraData structure.
     return data;
 }
 
 void ResourceResponse::doPlatformAdopt(PassOwnPtr<CrossThreadResourceResponseData> data)
 {
+    m_securityInfo = data->m_securityInfo;
+    m_httpVersion = data->m_httpVersion;
     m_appCacheID = data->m_appCacheID;
     m_appCacheManifestURL = data->m_appCacheManifestURL.copy();
     m_isMultipartPayload = data->m_isMultipartPayload;
@@ -56,7 +61,8 @@ void ResourceResponse::doPlatformAdopt(PassOwnPtr<CrossThreadResourceResponseDat
     m_responseTime = data->m_responseTime;
     m_remoteIPAddress = data->m_remoteIPAddress;
     m_remotePort = data->m_remotePort;
-    // Bug https://bugs.webkit.org/show_bug.cgi?id=60397 this doesn't support m_downloadedFile.
+    // Bug https://bugs.webkit.org/show_bug.cgi?id=60397 this doesn't support m_downloadedFile,
+    // or whatever values may be present in the opaque m_extraData structure.
 }
 
 } // namespace WebCore
index 261c574..0dd8d6a 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.
- * Copyright (C) 2008 Google, Inc.
+ * Copyright (C) 2012 Google, Inc.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -123,11 +123,6 @@ namespace WebCore {
     private:
         friend class ResourceResponseBase;
 
-        // An opaque value that contains some information regarding the security of
-        // the connection for this request, such as SSL connection info (empty
-        // string if not over HTTPS).
-        CString m_securityInfo;
-
         void doUpdateResourceResponse()
         {
             notImplemented();
@@ -136,6 +131,11 @@ namespace WebCore {
         PassOwnPtr<CrossThreadResourceResponseData> doPlatformCopyData(PassOwnPtr<CrossThreadResourceResponseData>) const;
         void doPlatformAdopt(PassOwnPtr<CrossThreadResourceResponseData>);
 
+        // An opaque value that contains some information regarding the security of
+        // the connection for this request, such as SSL connection info (empty
+        // string if not over HTTPS).
+        CString m_securityInfo;
+
         // HTTP version used in the response, if known.
         HTTPVersion m_httpVersion;
 
@@ -181,6 +181,8 @@ namespace WebCore {
     };
 
     struct CrossThreadResourceResponseData : public CrossThreadResourceResponseDataBase {
+        CString m_securityInfo;
+        ResourceResponse::HTTPVersion m_httpVersion;
         long long m_appCacheID;
         KURL m_appCacheManifestURL;
         bool m_isMultipartPayload;