Title: [201637] trunk/Source/WebCore
Revision
201637
Author
beid...@apple.com
Date
2016-06-02 22:40:40 -0700 (Thu, 02 Jun 2016)

Log Message

Fix AtomicString regression caused by r201603.
https://bugs.webkit.org/show_bug.cgi?id=158338

Reviewed by Chris Dumez.

No new tests (Refactor, plus already caught by existing test configs).

* loader/WorkerThreadableLoader.cpp:
(WebCore::WorkerThreadableLoader::MainThreadBridge::didReceiveResponse):

* platform/network/ResourceResponseBase.cpp:
(WebCore::ResourceResponseBase::crossThreadData): Re-introduce the cross thread data concept,
  but more modern and clean this time.
(WebCore::ResourceResponseBase::fromCrossThreadData):
(WebCore::ResourceResponseBase::isolatedCopy): Deleted.
* platform/network/ResourceResponseBase.h:

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (201636 => 201637)


--- trunk/Source/WebCore/ChangeLog	2016-06-03 05:38:44 UTC (rev 201636)
+++ trunk/Source/WebCore/ChangeLog	2016-06-03 05:40:40 UTC (rev 201637)
@@ -1,3 +1,22 @@
+2016-06-02  Brady Eidson  <beid...@apple.com>
+
+        Fix AtomicString regression caused by r201603.
+        https://bugs.webkit.org/show_bug.cgi?id=158338
+
+        Reviewed by Chris Dumez.
+
+        No new tests (Refactor, plus already caught by existing test configs).
+
+        * loader/WorkerThreadableLoader.cpp:
+        (WebCore::WorkerThreadableLoader::MainThreadBridge::didReceiveResponse):
+        
+        * platform/network/ResourceResponseBase.cpp:
+        (WebCore::ResourceResponseBase::crossThreadData): Re-introduce the cross thread data concept,
+          but more modern and clean this time.
+        (WebCore::ResourceResponseBase::fromCrossThreadData):
+        (WebCore::ResourceResponseBase::isolatedCopy): Deleted.
+        * platform/network/ResourceResponseBase.h:
+
 2016-06-02  Chris Dumez  <cdu...@apple.com>
 
         Drop BlobRegistryContext class as it is no longer needed

Modified: trunk/Source/WebCore/loader/WorkerThreadableLoader.cpp (201636 => 201637)


--- trunk/Source/WebCore/loader/WorkerThreadableLoader.cpp	2016-06-03 05:38:44 UTC (rev 201636)
+++ trunk/Source/WebCore/loader/WorkerThreadableLoader.cpp	2016-06-03 05:40:40 UTC (rev 201637)
@@ -162,9 +162,9 @@
 void WorkerThreadableLoader::MainThreadBridge::didReceiveResponse(unsigned long identifier, const ResourceResponse& response)
 {
     Ref<ThreadableLoaderClientWrapper> protectedWorkerClientWrapper = *m_workerClientWrapper;
-    m_loaderProxy.postTaskForModeToWorkerGlobalScope([protectedWorkerClientWrapper = WTFMove(protectedWorkerClientWrapper), identifier, response = response.isolatedCopy()] (ScriptExecutionContext& context) mutable {
+    m_loaderProxy.postTaskForModeToWorkerGlobalScope([protectedWorkerClientWrapper = WTFMove(protectedWorkerClientWrapper), identifier, responseData = response.crossThreadData()] (ScriptExecutionContext& context) mutable {
         ASSERT_UNUSED(context, context.isWorkerGlobalScope());
-        protectedWorkerClientWrapper->didReceiveResponse(identifier, response);
+        protectedWorkerClientWrapper->didReceiveResponse(identifier, ResourceResponse::fromCrossThreadData(WTFMove(responseData)));
     }, m_taskMode);
 }
 

Modified: trunk/Source/WebCore/platform/network/ResourceResponseBase.cpp (201636 => 201637)


--- trunk/Source/WebCore/platform/network/ResourceResponseBase.cpp	2016-06-03 05:38:44 UTC (rev 201636)
+++ trunk/Source/WebCore/platform/network/ResourceResponseBase.cpp	2016-06-03 05:40:40 UTC (rev 201637)
@@ -63,23 +63,42 @@
 {
 }
 
-ResourceResponse ResourceResponseBase::isolatedCopy() const
+std::unique_ptr<ResourceResponseBase::CrossThreadData> ResourceResponseBase::crossThreadData() const
 {
+    auto data = ""
+
+    data->url = ""
+    data->mimeType = mimeType().isolatedCopy();
+    data->expectedContentLength = expectedContentLength();
+    data->textEncodingName = textEncodingName().isolatedCopy();
+
+    data->httpStatusCode = httpStatusCode();
+    data->httpStatusText = httpStatusText().isolatedCopy();
+    data->httpVersion = httpVersion().isolatedCopy();
+
+    data->httpHeaderFields = httpHeaderFields().isolatedCopy();
+    data->resourceLoadTiming = m_resourceLoadTiming.isolatedCopy();
+    data->type = m_type;
+
+    return data;
+}
+
+ResourceResponse ResourceResponseBase::fromCrossThreadData(std::unique_ptr<CrossThreadData>&& data)
+{
     ResourceResponse response;
 
-    response.setURL(url().isolatedCopy());
-    response.setMimeType(mimeType().isolatedCopy());
-    response.setExpectedContentLength(expectedContentLength());
-    response.setTextEncodingName(textEncodingName().isolatedCopy());
+    response.setURL(data->url);
+    response.setMimeType(data->mimeType);
+    response.setExpectedContentLength(data->expectedContentLength);
+    response.setTextEncodingName(data->textEncodingName);
 
-    response.setHTTPStatusCode(httpStatusCode());
-    response.setHTTPStatusText(httpStatusText().isolatedCopy());
-    response.setHTTPVersion(httpVersion().isolatedCopy());
+    response.setHTTPStatusCode(data->httpStatusCode);
+    response.setHTTPStatusText(data->httpStatusText);
+    response.setHTTPVersion(data->httpVersion);
 
-    response.lazyInit(AllFields);
-    response.m_httpHeaderFields = httpHeaderFields().isolatedCopy();
-    response.m_resourceLoadTiming = m_resourceLoadTiming.isolatedCopy();
-    response.m_type = m_type;
+    response.m_httpHeaderFields = WTFMove(data->httpHeaderFields);
+    response.m_resourceLoadTiming = data->resourceLoadTiming;
+    response.m_type = data->type;
 
     return response;
 }

Modified: trunk/Source/WebCore/platform/network/ResourceResponseBase.h (201636 => 201637)


--- trunk/Source/WebCore/platform/network/ResourceResponseBase.h	2016-06-03 05:38:44 UTC (rev 201636)
+++ trunk/Source/WebCore/platform/network/ResourceResponseBase.h	2016-06-03 05:40:40 UTC (rev 201637)
@@ -45,8 +45,24 @@
 class ResourceResponseBase {
     WTF_MAKE_FAST_ALLOCATED;
 public:
-    ResourceResponse isolatedCopy() const;
+    enum class Type;
 
+    struct CrossThreadData {
+        URL url;
+        String mimeType;
+        long long expectedContentLength;
+        String textEncodingName;
+        int httpStatusCode;
+        String httpStatusText;
+        String httpVersion;
+        HTTPHeaderMap httpHeaderFields;
+        ResourceLoadTiming resourceLoadTiming;
+        Type type;
+    };
+
+    std::unique_ptr<CrossThreadData> crossThreadData() const;
+    static ResourceResponse fromCrossThreadData(std::unique_ptr<CrossThreadData>&&);
+
     bool isNull() const { return m_isNull; }
     WEBCORE_EXPORT bool isHTTP() const;
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to