Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (C) 2009 Google Inc. All rights reserved. | 2 * Copyright (C) 2009 Google Inc. All rights reserved. |
| 3 * Copyright (C) 2013 Intel Corporation. All rights reserved. | |
| 3 * | 4 * |
| 4 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 6 * modification, are permitted provided that the following conditions are |
| 6 * met: | 7 * met: |
| 7 * | 8 * |
| 8 * * Redistributions of source code must retain the above copyright | 9 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 10 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 11 * * Redistributions in binary form must reproduce the above |
| 11 * copyright notice, this list of conditions and the following disclaimer | 12 * copyright notice, this list of conditions and the following disclaimer |
| 12 * in the documentation and/or other materials provided with the | 13 * in the documentation and/or other materials provided with the |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 51 | 52 |
| 52 namespace WebCore { | 53 namespace WebCore { |
| 53 | 54 |
| 54 // ResourceHandleInternal ----------------------------------------------------- | 55 // ResourceHandleInternal ----------------------------------------------------- |
| 55 ResourceHandleInternal::ResourceHandleInternal(NetworkingContext* context, const ResourceRequest& request, ResourceHandleClient* client) | 56 ResourceHandleInternal::ResourceHandleInternal(NetworkingContext* context, const ResourceRequest& request, ResourceHandleClient* client) |
| 56 : m_context(context) | 57 : m_context(context) |
| 57 , m_request(request) | 58 , m_request(request) |
| 58 , m_owner(0) | 59 , m_owner(0) |
| 59 , m_client(client) | 60 , m_client(client) |
| 60 , m_state(ConnectionStateNew) | 61 , m_state(ConnectionStateNew) |
| 62 , m_timeoutTimer(this, &ResourceHandleInternal::timerFired) | |
| 61 { | 63 { |
| 62 } | 64 } |
| 63 | 65 |
| 64 void ResourceHandleInternal::start() | 66 void ResourceHandleInternal::start() |
| 65 { | 67 { |
| 66 if (m_state != ConnectionStateNew) | 68 if (m_state != ConnectionStateNew) |
| 67 CRASH(); | 69 CRASH(); |
| 68 m_state = ConnectionStateStarted; | 70 m_state = ConnectionStateStarted; |
| 69 | 71 |
| 70 m_loader = adoptPtr(Platform::current()->createURLLoader()); | 72 m_loader = adoptPtr(Platform::current()->createURLLoader()); |
| 71 ASSERT(m_loader); | 73 ASSERT(m_loader); |
| 72 | 74 |
| 73 WrappedResourceRequest wrappedRequest(m_request); | 75 WrappedResourceRequest wrappedRequest(m_request); |
| 74 wrappedRequest.setAllowStoredCredentials(allowStoredCredentials()); | 76 wrappedRequest.setAllowStoredCredentials(allowStoredCredentials()); |
| 75 m_loader->loadAsynchronously(wrappedRequest, this); | 77 m_loader->loadAsynchronously(wrappedRequest, this); |
| 78 | |
| 79 if (m_request.timeoutInterval() > 0) | |
|
darin (slow to review)
2013/04/22 17:46:39
I'm also curious if we can remove ResourceRequest:
| |
| 80 m_timeoutTimer.startOneShot(m_request.timeoutInterval()); | |
| 76 } | 81 } |
| 77 | 82 |
| 78 void ResourceHandleInternal::cancel() | 83 void ResourceHandleInternal::cancel(const ResourceError& error) |
| 79 { | 84 { |
| 80 m_state = ConnectionStateCanceled; | 85 m_state = ConnectionStateCanceled; |
| 81 m_loader->cancel(); | 86 m_loader->cancel(); |
| 82 | 87 |
| 88 if (m_client && !error.isNull()) { | |
| 89 m_client->didFail(m_owner, error); | |
|
Dominik Röttsches
2013/04/22 15:47:45
didFail() here triggers a WebCore::ResourceLoader:
| |
| 90 return; | |
| 91 } | |
| 92 | |
| 83 // Do not make any further calls to the client. | 93 // Do not make any further calls to the client. |
| 84 m_client = 0; | 94 m_client = 0; |
| 85 } | 95 } |
| 86 | 96 |
| 87 void ResourceHandleInternal::setDefersLoading(bool value) | 97 void ResourceHandleInternal::setDefersLoading(bool value) |
| 88 { | 98 { |
| 89 m_loader->setDefersLoading(value); | 99 m_loader->setDefersLoading(value); |
| 90 } | 100 } |
| 91 | 101 |
| 92 void ResourceHandleInternal::didChangePriority(WebURLRequest::Priority newPriori ty) | 102 void ResourceHandleInternal::didChangePriority(WebURLRequest::Priority newPriori ty) |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 170 ASSERT(m_client); | 180 ASSERT(m_client); |
| 171 m_state = ConnectionStateFailed; | 181 m_state = ConnectionStateFailed; |
| 172 m_client->didFail(m_owner, error); | 182 m_client->didFail(m_owner, error); |
| 173 } | 183 } |
| 174 | 184 |
| 175 ResourceHandleInternal* ResourceHandleInternal::FromResourceHandle(ResourceHandl e* handle) | 185 ResourceHandleInternal* ResourceHandleInternal::FromResourceHandle(ResourceHandl e* handle) |
| 176 { | 186 { |
| 177 return handle->d.get(); | 187 return handle->d.get(); |
| 178 } | 188 } |
| 179 | 189 |
| 190 void ResourceHandleInternal::timerFired(Timer<ResourceHandleInternal>* timer) | |
| 191 { | |
| 192 ASSERT_UNUSED(timer, timer == &m_timeoutTimer); | |
| 193 | |
| 194 // Using values from net/base/net_error_list.h ERR_TIMED_OUT. | |
| 195 static const int timeoutError = -7; | |
| 196 static const char* const errorDomain = "net"; | |
|
Dominik Röttsches
2013/04/22 15:47:45
Since the cancel() method now checks for isNull(),
| |
| 197 ResourceError error(errorDomain, timeoutError, m_request.url().string(), Str ing()); | |
| 198 error.setIsTimeout(true); | |
| 199 cancel(error); | |
| 200 } | |
| 201 | |
| 180 // ResourceHandle ------------------------------------------------------------- | 202 // ResourceHandle ------------------------------------------------------------- |
| 181 | 203 |
| 182 ResourceHandle::ResourceHandle(NetworkingContext* context, const ResourceRequest & request, ResourceHandleClient* client, bool defersLoading, bool shouldContentS niff) | 204 ResourceHandle::ResourceHandle(NetworkingContext* context, const ResourceRequest & request, ResourceHandleClient* client, bool defersLoading, bool shouldContentS niff) |
| 183 : d(adoptPtr(new ResourceHandleInternal(context, request, client))) | 205 : d(adoptPtr(new ResourceHandleInternal(context, request, client))) |
| 184 { | 206 { |
| 185 d->setOwner(this); | 207 d->setOwner(this); |
| 186 | 208 |
| 187 // FIXME: Figure out what to do with the bool params. | 209 // FIXME: Figure out what to do with the bool params. |
| 188 } | 210 } |
| 189 | 211 |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 275 d->didChangePriority(static_cast<WebURLRequest::Priority>(newPriority)); | 297 d->didChangePriority(static_cast<WebURLRequest::Priority>(newPriority)); |
| 276 } | 298 } |
| 277 | 299 |
| 278 // static | 300 // static |
| 279 void ResourceHandle::cacheMetadata(const ResourceResponse& response, const Vecto r<char>& data) | 301 void ResourceHandle::cacheMetadata(const ResourceResponse& response, const Vecto r<char>& data) |
| 280 { | 302 { |
| 281 WebKit::Platform::current()->cacheMetadata(response.url(), response.response Time(), data.data(), data.size()); | 303 WebKit::Platform::current()->cacheMetadata(response.url(), response.response Time(), data.data(), data.size()); |
| 282 } | 304 } |
| 283 | 305 |
| 284 } // namespace WebCore | 306 } // namespace WebCore |
| OLD | NEW |