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

Side by Side Diff: net/http/http_cache_transaction.cc

Issue 6339012: More net/ method ordering. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: More done while waiting for previous patch to clear Created 9 years, 11 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 | Annotate | Revision Log
« no previous file with comments | « net/http/http_cache_transaction.h ('k') | net/http/http_network_layer.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "net/http/http_cache_transaction.h" 5 #include "net/http/http_cache_transaction.h"
6 6
7 #include "build/build_config.h" 7 #include "build/build_config.h"
8 8
9 #if defined(OS_POSIX) 9 #if defined(OS_POSIX)
10 #include <unistd.h> 10 #include <unistd.h>
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after
156 // If there is an outstanding callback, mark it as cancelled so running it 156 // If there is an outstanding callback, mark it as cancelled so running it
157 // does nothing. 157 // does nothing.
158 cache_callback_->Cancel(); 158 cache_callback_->Cancel();
159 write_headers_callback_->Cancel(); 159 write_headers_callback_->Cancel();
160 160
161 // We could still have a cache read or write in progress, so we just null the 161 // We could still have a cache read or write in progress, so we just null the
162 // cache_ pointer to signal that we are dead. See DoCacheReadCompleted. 162 // cache_ pointer to signal that we are dead. See DoCacheReadCompleted.
163 cache_.reset(); 163 cache_.reset();
164 } 164 }
165 165
166 int HttpCache::Transaction::WriteMetadata(IOBuffer* buf, int buf_len,
167 CompletionCallback* callback) {
168 DCHECK(buf);
169 DCHECK_GT(buf_len, 0);
170 DCHECK(callback);
171 if (!cache_ || !entry_)
172 return ERR_UNEXPECTED;
173
174 // We don't need to track this operation for anything.
175 // It could be possible to check if there is something already written and
176 // avoid writing again (it should be the same, right?), but let's allow the
177 // caller to "update" the contents with something new.
178 return entry_->disk_entry->WriteData(kMetadataIndex, 0, buf, buf_len,
179 callback, true);
180 }
181
182 // Histogram data from the end of 2010 show the following distribution of
183 // response headers:
184 //
185 // Content-Length............... 87%
186 // Date......................... 98%
187 // Last-Modified................ 49%
188 // Etag......................... 19%
189 // Accept-Ranges: bytes......... 25%
190 // Accept-Ranges: none.......... 0.4%
191 // Strong Validator............. 50%
192 // Strong Validator + ranges.... 24%
193 // Strong Validator + CL........ 49%
194 //
195 bool HttpCache::Transaction::AddTruncatedFlag() {
196 DCHECK(mode_ & WRITE);
197
198 // Don't set the flag for sparse entries.
199 if (partial_.get() && !truncated_)
200 return true;
201
202 // Double check that there is something worth keeping.
203 if (!entry_->disk_entry->GetDataSize(kResponseContentIndex))
204 return false;
205
206 if (response_.headers->GetContentLength() <= 0 ||
207 response_.headers->HasHeaderValue("Accept-Ranges", "none") ||
208 !response_.headers->HasStrongValidators())
209 return false;
210
211 truncated_ = true;
212 target_state_ = STATE_NONE;
213 next_state_ = STATE_CACHE_WRITE_TRUNCATED_RESPONSE;
214 DoLoop(OK);
215 return true;
216 }
217
218 LoadState HttpCache::Transaction::GetWriterLoadState() const {
219 if (network_trans_.get())
220 return network_trans_->GetLoadState();
221 if (entry_ || !request_)
222 return LOAD_STATE_IDLE;
223 return LOAD_STATE_WAITING_FOR_CACHE;
224 }
225
226 const BoundNetLog& HttpCache::Transaction::net_log() const {
227 return net_log_;
228 }
229
166 int HttpCache::Transaction::Start(const HttpRequestInfo* request, 230 int HttpCache::Transaction::Start(const HttpRequestInfo* request,
167 CompletionCallback* callback, 231 CompletionCallback* callback,
168 const BoundNetLog& net_log) { 232 const BoundNetLog& net_log) {
169 DCHECK(request); 233 DCHECK(request);
170 DCHECK(callback); 234 DCHECK(callback);
171 235
172 // Ensure that we only have one asynchronous call at a time. 236 // Ensure that we only have one asynchronous call at a time.
173 DCHECK(!callback_); 237 DCHECK(!callback_);
174 DCHECK(!reading_); 238 DCHECK(!reading_);
175 DCHECK(!network_trans_.get()); 239 DCHECK(!network_trans_.get());
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
331 395
332 return LOAD_STATE_IDLE; 396 return LOAD_STATE_IDLE;
333 } 397 }
334 398
335 uint64 HttpCache::Transaction::GetUploadProgress() const { 399 uint64 HttpCache::Transaction::GetUploadProgress() const {
336 if (network_trans_.get()) 400 if (network_trans_.get())
337 return network_trans_->GetUploadProgress(); 401 return network_trans_->GetUploadProgress();
338 return final_upload_progress_; 402 return final_upload_progress_;
339 } 403 }
340 404
341 int HttpCache::Transaction::WriteMetadata(IOBuffer* buf, int buf_len,
342 CompletionCallback* callback) {
343 DCHECK(buf);
344 DCHECK_GT(buf_len, 0);
345 DCHECK(callback);
346 if (!cache_ || !entry_)
347 return ERR_UNEXPECTED;
348
349 // We don't need to track this operation for anything.
350 // It could be possible to check if there is something already written and
351 // avoid writing again (it should be the same, right?), but let's allow the
352 // caller to "update" the contents with something new.
353 return entry_->disk_entry->WriteData(kMetadataIndex, 0, buf, buf_len,
354 callback, true);
355 }
356
357 // Histogram data from the end of 2010 show the following distribution of
358 // response headers:
359 //
360 // Content-Length............... 87%
361 // Date......................... 98%
362 // Last-Modified................ 49%
363 // Etag......................... 19%
364 // Accept-Ranges: bytes......... 25%
365 // Accept-Ranges: none.......... 0.4%
366 // Strong Validator............. 50%
367 // Strong Validator + ranges.... 24%
368 // Strong Validator + CL........ 49%
369 //
370 bool HttpCache::Transaction::AddTruncatedFlag() {
371 DCHECK(mode_ & WRITE);
372
373 // Don't set the flag for sparse entries.
374 if (partial_.get() && !truncated_)
375 return true;
376
377 // Double check that there is something worth keeping.
378 if (!entry_->disk_entry->GetDataSize(kResponseContentIndex))
379 return false;
380
381 if (response_.headers->GetContentLength() <= 0 ||
382 response_.headers->HasHeaderValue("Accept-Ranges", "none") ||
383 !response_.headers->HasStrongValidators())
384 return false;
385
386 truncated_ = true;
387 target_state_ = STATE_NONE;
388 next_state_ = STATE_CACHE_WRITE_TRUNCATED_RESPONSE;
389 DoLoop(OK);
390 return true;
391 }
392
393 LoadState HttpCache::Transaction::GetWriterLoadState() const {
394 if (network_trans_.get())
395 return network_trans_->GetLoadState();
396 if (entry_ || !request_)
397 return LOAD_STATE_IDLE;
398 return LOAD_STATE_WAITING_FOR_CACHE;
399 }
400
401 const BoundNetLog& HttpCache::Transaction::net_log() const {
402 return net_log_;
403 }
404
405 //----------------------------------------------------------------------------- 405 //-----------------------------------------------------------------------------
406 406
407 void HttpCache::Transaction::DoCallback(int rv) { 407 void HttpCache::Transaction::DoCallback(int rv) {
408 DCHECK(rv != ERR_IO_PENDING); 408 DCHECK(rv != ERR_IO_PENDING);
409 DCHECK(callback_); 409 DCHECK(callback_);
410 410
411 // Since Run may result in Read being called, clear callback_ up front. 411 // Since Run may result in Read being called, clear callback_ up front.
412 CompletionCallback* c = callback_; 412 CompletionCallback* c = callback_;
413 callback_ = NULL; 413 callback_ = NULL;
414 c->Run(rv); 414 c->Run(rv);
(...skipping 1493 matching lines...) Expand 10 before | Expand all | Expand 10 after
1908 next_state_ = STATE_START_PARTIAL_CACHE_VALIDATION; 1908 next_state_ = STATE_START_PARTIAL_CACHE_VALIDATION;
1909 } 1909 }
1910 return result; 1910 return result;
1911 } 1911 }
1912 1912
1913 void HttpCache::Transaction::OnIOComplete(int result) { 1913 void HttpCache::Transaction::OnIOComplete(int result) {
1914 DoLoop(result); 1914 DoLoop(result);
1915 } 1915 }
1916 1916
1917 } // namespace net 1917 } // namespace net
OLDNEW
« no previous file with comments | « net/http/http_cache_transaction.h ('k') | net/http/http_network_layer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698