| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2006, 2007, 2009 Apple Inc. All rights reserved. | 2 * Copyright (C) 2006, 2007, 2009 Apple Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
| 6 * are met: | 6 * are met: |
| 7 * | 7 * |
| 8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
| (...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 149 ASSERT(!response.isNull()); | 149 ASSERT(!response.isNull()); |
| 150 | 150 |
| 151 // Reference the object in this method since the additional processing can d
o | 151 // Reference the object in this method since the additional processing can d
o |
| 152 // anything including removing the last reference to this object; one exampl
e of this is 3266216. | 152 // anything including removing the last reference to this object; one exampl
e of this is 3266216. |
| 153 RefPtr<SubresourceLoader> protect(this); | 153 RefPtr<SubresourceLoader> protect(this); |
| 154 | 154 |
| 155 if (m_resource->resourceToRevalidate()) { | 155 if (m_resource->resourceToRevalidate()) { |
| 156 if (response.httpStatusCode() == 304) { | 156 if (response.httpStatusCode() == 304) { |
| 157 // 304 Not modified / Use local copy | 157 // 304 Not modified / Use local copy |
| 158 // Existing resource is ok, just use it updating the expiration time
. | 158 // Existing resource is ok, just use it updating the expiration time
. |
| 159 m_state = Revalidating; |
| 159 memoryCache()->revalidationSucceeded(m_resource, response); | 160 memoryCache()->revalidationSucceeded(m_resource, response); |
| 160 ResourceLoader::didReceiveResponse(response); | 161 if (!reachedTerminalState()) { |
| 162 ResourceLoader::didReceiveResponse(response); |
| 163 didFinishLoading(currentTime()); |
| 164 } |
| 161 return; | 165 return; |
| 162 } | 166 } |
| 163 // Did not get 304 response, continue as a regular resource load. | 167 // Did not get 304 response, continue as a regular resource load. |
| 164 memoryCache()->revalidationFailed(m_resource); | 168 memoryCache()->revalidationFailed(m_resource); |
| 165 } | 169 } |
| 166 | 170 |
| 167 m_resource->setResponse(response); | 171 m_resource->setResponse(response); |
| 168 if (reachedTerminalState()) | 172 if (reachedTerminalState()) |
| 169 return; | 173 return; |
| 170 ResourceLoader::didReceiveResponse(response); | 174 ResourceLoader::didReceiveResponse(response); |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 233 } | 237 } |
| 234 | 238 |
| 235 void SubresourceLoader::didReceiveCachedMetadata(const char* data, int length) | 239 void SubresourceLoader::didReceiveCachedMetadata(const char* data, int length) |
| 236 { | 240 { |
| 237 ASSERT(!m_resource->resourceToRevalidate()); | 241 ASSERT(!m_resource->resourceToRevalidate()); |
| 238 m_resource->setSerializedCachedMetadata(data, length); | 242 m_resource->setSerializedCachedMetadata(data, length); |
| 239 } | 243 } |
| 240 | 244 |
| 241 void SubresourceLoader::didFinishLoading(double finishTime) | 245 void SubresourceLoader::didFinishLoading(double finishTime) |
| 242 { | 246 { |
| 243 if (m_state != Initialized) | 247 if (m_state != Initialized && m_state != Revalidating) |
| 244 return; | 248 return; |
| 245 ASSERT(!reachedTerminalState()); | 249 ASSERT(!reachedTerminalState()); |
| 246 ASSERT(!m_resource->resourceToRevalidate()); | 250 ASSERT(!m_resource->resourceToRevalidate()); |
| 247 ASSERT(!m_resource->errorOccurred()); | 251 ASSERT(!m_resource->errorOccurred()); |
| 248 LOG(ResourceLoading, "Received '%s'.", m_resource->url().string().latin1().d
ata()); | 252 LOG(ResourceLoading, "Received '%s'.", m_resource->url().string().latin1().d
ata()); |
| 249 | 253 |
| 250 RefPtr<SubresourceLoader> protect(this); | 254 RefPtr<SubresourceLoader> protect(this); |
| 251 CachedResourceHandle<CachedResource> protectResource(m_resource); | 255 CachedResourceHandle<CachedResource> protectResource(m_resource); |
| 252 m_state = Finishing; | 256 m_state = Finishing; |
| 253 m_resource->setLoadFinishTime(finishTime); | 257 m_resource->setLoadFinishTime(finishTime); |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 298 if (reachedTerminalState()) | 302 if (reachedTerminalState()) |
| 299 return; | 303 return; |
| 300 m_resource->stopLoading(); | 304 m_resource->stopLoading(); |
| 301 m_documentLoader->removeSubresourceLoader(this); | 305 m_documentLoader->removeSubresourceLoader(this); |
| 302 } | 306 } |
| 303 m_document = 0; | 307 m_document = 0; |
| 304 ResourceLoader::releaseResources(); | 308 ResourceLoader::releaseResources(); |
| 305 } | 309 } |
| 306 | 310 |
| 307 } | 311 } |
| OLD | NEW |