18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*
28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright (C) 2004, 2006 Apple Computer, Inc.  All rights reserved.
38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright (C) 2005, 2006 Michael Emmel mike.emmel@gmail.com
48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * All rights reserved.
58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Redistribution and use in source and binary forms, with or without
78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modification, are permitted provided that the following conditions
88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * are met:
98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 1. Redistributions of source code must retain the above copyright
108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *    notice, this list of conditions and the following disclaimer.
118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 2. Redistributions in binary form must reproduce the above copyright
128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *    notice, this list of conditions and the following disclaimer in the
138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *    documentation and/or other materials provided with the distribution.
148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "config.h"
298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "ResourceHandle.h"
308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
315abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick#include "CachedResourceLoader.h"
328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "NotImplemented.h"
338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "ResourceHandleInternal.h"
348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "ResourceHandleManager.h"
35dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#include "SharedBuffer.h"
368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#if PLATFORM(WIN) && USE(CF)
38dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#include <wtf/PassRefPtr.h>
398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include <wtf/RetainPtr.h>
408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace WebCore {
438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass WebCoreSynchronousLoader : public ResourceHandleClient {
458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectpublic:
468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    WebCoreSynchronousLoader();
478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual void didReceiveResponse(ResourceHandle*, const ResourceResponse&);
492daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    virtual void didReceiveData(ResourceHandle*, const char*, int, int encodedDataLength);
5068513a70bcd92384395513322f1b801e7bf9c729Steve Block    virtual void didFinishLoading(ResourceHandle*, double /*finishTime*/);
518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual void didFail(ResourceHandle*, const ResourceError&);
528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    ResourceResponse resourceResponse() const { return m_response; }
548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    ResourceError resourceError() const { return m_error; }
558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    Vector<char> data() const { return m_data; }
568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectprivate:
588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    ResourceResponse m_response;
598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    ResourceError m_error;
608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    Vector<char> m_data;
618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project};
628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectWebCoreSynchronousLoader::WebCoreSynchronousLoader()
648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid WebCoreSynchronousLoader::didReceiveResponse(ResourceHandle*, const ResourceResponse& response)
688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    m_response = response;
708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid WebCoreSynchronousLoader::didReceiveData(ResourceHandle*, const char* data, int length, int)
738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    m_data.append(data, length);
758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
7768513a70bcd92384395513322f1b801e7bf9c729Steve Blockvoid WebCoreSynchronousLoader::didFinishLoading(ResourceHandle*, double)
788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid WebCoreSynchronousLoader::didFail(ResourceHandle*, const ResourceError& error)
828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    m_error = error;
848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectResourceHandleInternal::~ResourceHandleInternal()
878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
888a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block    fastFree(m_url);
898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    if (m_customHeaders)
908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        curl_slist_free_all(m_customHeaders);
918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectResourceHandle::~ResourceHandle()
948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    cancel();
968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
9868513a70bcd92384395513322f1b801e7bf9c729Steve Blockbool ResourceHandle::start(NetworkingContext* context)
998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
100231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    // The frame could be null if the ResourceHandle is not associated to any
101231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    // Frame, e.g. if we are downloading a file.
102231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    // If the frame is not null but the page is null this must be an attempted
10368513a70bcd92384395513322f1b801e7bf9c729Steve Block    // load from an unload handler, so let's just block it.
10468513a70bcd92384395513322f1b801e7bf9c729Steve Block    // If both the frame and the page are not null the context is valid.
10568513a70bcd92384395513322f1b801e7bf9c729Steve Block    if (context && !context->isValid())
106231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block        return false;
107231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
1088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    ResourceHandleManager::sharedInstance()->add(this);
1098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    return true;
1108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
1118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid ResourceHandle::cancel()
1138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
1148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    ResourceHandleManager::sharedInstance()->cancel(this);
1158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
1168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectPassRefPtr<SharedBuffer> ResourceHandle::bufferedData()
1188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
1198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    return 0;
1208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
1218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectbool ResourceHandle::supportsBufferedData()
1238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
1248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    return false;
1258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
1268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
12781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#if PLATFORM(WIN) && USE(CF)
128a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochstatic HashSet<String>& allowsAnyHTTPSCertificateHosts()
129a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch{
130a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    static HashSet<String> hosts;
131a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
132a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    return hosts;
133a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch}
134a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
1358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid ResourceHandle::setHostAllowsAnyHTTPSCertificate(const String& host)
1368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
1378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    allowsAnyHTTPSCertificateHosts().add(host.lower());
1388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
1398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
1408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
14181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#if PLATFORM(WIN) && USE(CF)
1428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// FIXME:  The CFDataRef will need to be something else when
1438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// building without
1448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstatic HashMap<String, RetainPtr<CFDataRef> >& clientCerts()
1458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
1468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    static HashMap<String, RetainPtr<CFDataRef> > certs;
1478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    return certs;
1488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
1498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid ResourceHandle::setClientCertificate(const String& host, CFDataRef cert)
1518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
1528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    clientCerts().set(host.lower(), cert);
1538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
1548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
1558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
15606ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsenvoid ResourceHandle::platformSetDefersLoading(bool defers)
1578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
158d0825bca7fe65beaee391d30da42e937db621564Steve Block#if LIBCURL_VERSION_NUM > 0x071200
1598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    if (!d->m_handle)
16006ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen        return;
16106ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen
16206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    if (defers) {
1638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        CURLcode error = curl_easy_pause(d->m_handle, CURLPAUSE_ALL);
1648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        // If we could not defer the handle, so don't do it.
1658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        if (error != CURLE_OK)
1668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return;
1678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    } else {
1688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        CURLcode error = curl_easy_pause(d->m_handle, CURLPAUSE_CONT);
1698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        if (error != CURLE_OK)
1708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            // Restarting the handle has failed so just cancel it.
1718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            cancel();
1728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    }
1738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#else
174d0825bca7fe65beaee391d30da42e937db621564Steve Block    LOG_ERROR("Deferred loading is implemented if libcURL version is above 7.18.0");
1758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
1768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
1778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1780bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochbool ResourceHandle::willLoadFromCache(ResourceRequest&, Frame*)
1798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
1808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    notImplemented();
1818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    return false;
1828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
1838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectbool ResourceHandle::loadsBlocked()
1858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
1868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    notImplemented();
1878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    return false;
1888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
1898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
19068513a70bcd92384395513322f1b801e7bf9c729Steve Blockvoid ResourceHandle::loadResourceSynchronously(NetworkingContext*, const ResourceRequest& request, StoredCredentials storedCredentials, ResourceError& error, ResourceResponse& response, Vector<char>& data)
1918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
1928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    WebCoreSynchronousLoader syncLoader;
193e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke    RefPtr<ResourceHandle> handle = adoptRef(new ResourceHandle(request, &syncLoader, true, false));
1948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    ResourceHandleManager* manager = ResourceHandleManager::sharedInstance();
1968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
197e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke    manager->dispatchSynchronousJob(handle.get());
1988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    error = syncLoader.resourceError();
2008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    data = syncLoader.data();
2018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    response = syncLoader.resourceResponse();
2028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
2038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project//stubs needed for windows version
2058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid ResourceHandle::didReceiveAuthenticationChallenge(const AuthenticationChallenge&)
2068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
2078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    notImplemented();
2088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
2098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid ResourceHandle::receivedCredential(const AuthenticationChallenge&, const Credential&)
2118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
2128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    notImplemented();
2138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
2148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid ResourceHandle::receivedRequestToContinueWithoutCredential(const AuthenticationChallenge&)
2168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
2178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    notImplemented();
2188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
2198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid ResourceHandle::receivedCancellation(const AuthenticationChallenge&)
2218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
2228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    notImplemented();
2238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
2248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} // namespace WebCore
226