Skip to content
Permalink
Browse files
[Curl] Use SynchronousLoaderClient for platformLoadResourceSynchronou…
…sly on WinCairo

https://bugs.webkit.org/show_bug.cgi?id=173195

Patch by Basuke Suzuki <Basuke.Suzuki@sony.com> on 2017-06-12
Reviewed by Alex Christensen.

* PlatformWinCairo.cmake:
* platform/network/curl/ResourceHandleCurl.cpp:
(WebCore::ResourceHandle::platformLoadResourceSynchronously):
* platform/network/curl/SynchronousLoaderClientCurl.cpp: Added.
(WebCore::SynchronousLoaderClient::didReceiveAuthenticationChallenge):
(WebCore::SynchronousLoaderClient::platformBadResponseError):

Canonical link: https://commits.webkit.org/190138@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@218142 268f45cc-cd09-0410-ab3c-d52691b4dbfc
  • Loading branch information
basuke authored and webkit-commit-queue committed Jun 12, 2017
1 parent 1277c8b commit 048ddb2ea143f443f2ace8f3b277b9647fb555d1
Showing 4 changed files with 75 additions and 47 deletions.
@@ -1,3 +1,17 @@
2017-06-12 Basuke Suzuki <Basuke.Suzuki@sony.com>

[Curl] Use SynchronousLoaderClient for platformLoadResourceSynchronously on WinCairo
https://bugs.webkit.org/show_bug.cgi?id=173195

Reviewed by Alex Christensen.

* PlatformWinCairo.cmake:
* platform/network/curl/ResourceHandleCurl.cpp:
(WebCore::ResourceHandle::platformLoadResourceSynchronously):
* platform/network/curl/SynchronousLoaderClientCurl.cpp: Added.
(WebCore::SynchronousLoaderClient::didReceiveAuthenticationChallenge):
(WebCore::SynchronousLoaderClient::platformBadResponseError):

2017-06-12 Eric Carlson <eric.carlson@apple.com>

[MediaStream iOS] If a capturing tab is muted while it is in the background, it can not be unmuted
@@ -42,6 +42,7 @@ list(APPEND WebCore_SOURCES
platform/network/curl/ResourceHandleManager.cpp
platform/network/curl/SSLHandle.cpp
platform/network/curl/SocketStreamHandleImplCurl.cpp
platform/network/curl/SynchronousLoaderClientCurl.cpp

platform/text/win/LocaleWin.cpp

@@ -39,51 +39,10 @@
#include "ResourceHandleInternal.h"
#include "ResourceHandleManager.h"
#include "SSLHandle.h"
#include "SynchronousLoaderClient.h"

namespace WebCore {

class WebCoreSynchronousLoader : public ResourceHandleClient {
public:
WebCoreSynchronousLoader();

void didReceiveResponse(ResourceHandle*, ResourceResponse&&) override;
void didReceiveData(ResourceHandle*, const char*, unsigned, int encodedDataLength) override;
void didFinishLoading(ResourceHandle*) override;
void didFail(ResourceHandle*, const ResourceError&) override;

ResourceResponse resourceResponse() const { return m_response; }
ResourceError resourceError() const { return m_error; }
Vector<char> data() const { return m_data; }

private:
ResourceResponse m_response;
ResourceError m_error;
Vector<char> m_data;
};

WebCoreSynchronousLoader::WebCoreSynchronousLoader()
{
}

void WebCoreSynchronousLoader::didReceiveResponse(ResourceHandle*, ResourceResponse&& response)
{
m_response = WTFMove(response);
}

void WebCoreSynchronousLoader::didReceiveData(ResourceHandle*, const char* data, unsigned length, int)
{
m_data.append(data, length);
}

void WebCoreSynchronousLoader::didFinishLoading(ResourceHandle*)
{
}

void WebCoreSynchronousLoader::didFail(ResourceHandle*, const ResourceError& error)
{
m_error = error;
}

ResourceHandleInternal::~ResourceHandleInternal()
{
fastFree(m_url);
@@ -165,16 +124,16 @@ bool ResourceHandle::shouldUseCredentialStorage()

void ResourceHandle::platformLoadResourceSynchronously(NetworkingContext* context, const ResourceRequest& request, StoredCredentials, ResourceError& error, ResourceResponse& response, Vector<char>& data)
{
WebCoreSynchronousLoader syncLoader;
RefPtr<ResourceHandle> handle = adoptRef(new ResourceHandle(context, request, &syncLoader, true, false));
SynchronousLoaderClient client;
RefPtr<ResourceHandle> handle = adoptRef(new ResourceHandle(context, request, &client, false, false));

ResourceHandleManager* manager = ResourceHandleManager::sharedInstance();

manager->dispatchSynchronousJob(handle.get());

error = syncLoader.resourceError();
data = syncLoader.data();
response = syncLoader.resourceResponse();
error = client.error();
data.swap(client.mutableData());
response = client.response();
}

void ResourceHandle::didReceiveAuthenticationChallenge(const AuthenticationChallenge& challenge)
@@ -0,0 +1,54 @@
/*
* Copyright (C) 2017 Sony Interactive Entertainment Inc.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
* THE POSSIBILITY OF SUCH DAMAGE.
*/

#include "config.h"

#if USE(CURL)
#include "SynchronousLoaderClient.h"

#include "AuthenticationChallenge.h"
#include "EventLoop.h"
#include "NotImplemented.h"
#include "ResourceHandleInternal.h"

namespace WebCore {

void SynchronousLoaderClient::didReceiveAuthenticationChallenge(ResourceHandle* handle, const AuthenticationChallenge& challenge)
{
handle->receivedRequestToContinueWithoutCredential(challenge);
}

ResourceError SynchronousLoaderClient::platformBadResponseError()
{
int errorCode = 0;
URL failingURL;
String localizedDescription("Bad Server Response");

return ResourceError(ASCIILiteral("CURL"), errorCode, failingURL, localizedDescription);
}

}

#endif

0 comments on commit 048ddb2

Please sign in to comment.