Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(512)

Side by Side Diff: Source/WebCore/platform/network/chromium/ResourceHandle.cpp

Issue 14246006: Implementing timeout support for XHR (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@timeoutResourceHandle
Patch Set: Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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.
jamesr 2013/04/17 17:51:05 are we doing this?
abarth-chromium 2013/04/18 05:34:09 In general, yes.
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
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_timer(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)
80 m_timer.startOneShot(m_request.timeoutInterval());
76 } 81 }
77 82
78 void ResourceHandleInternal::cancel() 83 void ResourceHandleInternal::cancel()
79 { 84 {
80 m_state = ConnectionStateCanceled; 85 m_state = ConnectionStateCanceled;
81 m_loader->cancel(); 86 m_loader->cancel();
82 87
83 // Do not make any further calls to the client. 88 // Do not make any further calls to the client.
84 m_client = 0; 89 m_client = 0;
85 } 90 }
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
170 ASSERT(m_client); 175 ASSERT(m_client);
171 m_state = ConnectionStateFailed; 176 m_state = ConnectionStateFailed;
172 m_client->didFail(m_owner, error); 177 m_client->didFail(m_owner, error);
173 } 178 }
174 179
175 ResourceHandleInternal* ResourceHandleInternal::FromResourceHandle(ResourceHandl e* handle) 180 ResourceHandleInternal* ResourceHandleInternal::FromResourceHandle(ResourceHandl e* handle)
176 { 181 {
177 return handle->d.get(); 182 return handle->d.get();
178 } 183 }
179 184
185 void ResourceHandleInternal::timerFired(Timer<ResourceHandleInternal>*)
186 {
187 // Use the same value as in NSURLError.h
188 static const int timeoutError = -1001;
darin (slow to review) 2013/04/16 19:03:45 Hmm, the network layer can also generate net::ERR_
Dominik Röttsches 2013/04/17 08:26:52 Yes, the way I read the spec, the ontimeout event
189 static const char* const errorDomain = "WebKitNetworkError";
190
191 m_state = ConnectionStateCanceled;
192 m_loader->cancel();
193 if (m_client) {
194 ResourceError error(errorDomain, timeoutError, m_request.url().string(), String());
195 error.setIsTimeout(true);
196 m_client->didFail(m_owner, error);
197 }
198 }
199
180 // ResourceHandle ------------------------------------------------------------- 200 // ResourceHandle -------------------------------------------------------------
181 201
182 ResourceHandle::ResourceHandle(NetworkingContext* context, const ResourceRequest & request, ResourceHandleClient* client, bool defersLoading, bool shouldContentS niff) 202 ResourceHandle::ResourceHandle(NetworkingContext* context, const ResourceRequest & request, ResourceHandleClient* client, bool defersLoading, bool shouldContentS niff)
183 : d(adoptPtr(new ResourceHandleInternal(context, request, client))) 203 : d(adoptPtr(new ResourceHandleInternal(context, request, client)))
184 { 204 {
185 d->setOwner(this); 205 d->setOwner(this);
186 206
187 // FIXME: Figure out what to do with the bool params. 207 // FIXME: Figure out what to do with the bool params.
188 } 208 }
189 209
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
275 d->didChangePriority(static_cast<WebURLRequest::Priority>(newPriority)); 295 d->didChangePriority(static_cast<WebURLRequest::Priority>(newPriority));
276 } 296 }
277 297
278 // static 298 // static
279 void ResourceHandle::cacheMetadata(const ResourceResponse& response, const Vecto r<char>& data) 299 void ResourceHandle::cacheMetadata(const ResourceResponse& response, const Vecto r<char>& data)
280 { 300 {
281 WebKit::Platform::current()->cacheMetadata(response.url(), response.response Time(), data.data(), data.size()); 301 WebKit::Platform::current()->cacheMetadata(response.url(), response.response Time(), data.data(), data.size());
282 } 302 }
283 303
284 } // namespace WebCore 304 } // namespace WebCore
OLDNEW
« no previous file with comments | « Source/WTF/wtf/FeatureDefines.h ('k') | Source/WebCore/platform/network/chromium/ResourceHandleInternal.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698