| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/url_request/view_cache_helper.h" | 5 #include "net/url_request/view_cache_helper.h" |
| 6 | 6 |
| 7 #include "base/bind.h" |
| 8 #include "base/bind_helpers.h" |
| 7 #include "base/stringprintf.h" | 9 #include "base/stringprintf.h" |
| 8 #include "net/base/escape.h" | 10 #include "net/base/escape.h" |
| 9 #include "net/base/io_buffer.h" | 11 #include "net/base/io_buffer.h" |
| 10 #include "net/base/net_errors.h" | 12 #include "net/base/net_errors.h" |
| 11 #include "net/disk_cache/disk_cache.h" | 13 #include "net/disk_cache/disk_cache.h" |
| 12 #include "net/http/http_cache.h" | 14 #include "net/http/http_cache.h" |
| 13 #include "net/http/http_response_headers.h" | 15 #include "net/http/http_response_headers.h" |
| 14 #include "net/http/http_response_info.h" | 16 #include "net/http/http_response_info.h" |
| 15 #include "net/url_request/url_request_context.h" | 17 #include "net/url_request/url_request_context.h" |
| 16 | 18 |
| (...skipping 22 matching lines...) Expand all Loading... |
| 39 } // namespace. | 41 } // namespace. |
| 40 | 42 |
| 41 ViewCacheHelper::ViewCacheHelper() | 43 ViewCacheHelper::ViewCacheHelper() |
| 42 : disk_cache_(NULL), | 44 : disk_cache_(NULL), |
| 43 entry_(NULL), | 45 entry_(NULL), |
| 44 iter_(NULL), | 46 iter_(NULL), |
| 45 buf_len_(0), | 47 buf_len_(0), |
| 46 index_(0), | 48 index_(0), |
| 47 data_(NULL), | 49 data_(NULL), |
| 48 next_state_(STATE_NONE), | 50 next_state_(STATE_NONE), |
| 51 ALLOW_THIS_IN_INITIALIZER_LIST(cache_callback_( |
| 52 base::Bind(&ViewCacheHelper::OnIOComplete, base::Unretained(this)))), |
| 49 ALLOW_THIS_IN_INITIALIZER_LIST( | 53 ALLOW_THIS_IN_INITIALIZER_LIST( |
| 50 cache_callback_(this, &ViewCacheHelper::OnIOComplete)), | 54 old_cache_callback_(this, &ViewCacheHelper::OnIOComplete)), |
| 51 ALLOW_THIS_IN_INITIALIZER_LIST( | 55 ALLOW_THIS_IN_INITIALIZER_LIST( |
| 52 entry_callback_(new CancelableOldCompletionCallback<ViewCacheHelper>( | 56 entry_callback_(new CancelableOldCompletionCallback<ViewCacheHelper>( |
| 53 this, &ViewCacheHelper::OnIOComplete))) { | 57 this, &ViewCacheHelper::OnIOComplete))) { |
| 54 } | 58 } |
| 55 | 59 |
| 56 ViewCacheHelper::~ViewCacheHelper() { | 60 ViewCacheHelper::~ViewCacheHelper() { |
| 57 if (entry_) | 61 if (entry_) |
| 58 entry_->Close(); | 62 entry_->Close(); |
| 59 | 63 |
| 60 // Cancel any pending entry callback. | 64 // Cancel any pending entry callback. |
| (...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 212 int ViewCacheHelper::DoGetBackend() { | 216 int ViewCacheHelper::DoGetBackend() { |
| 213 next_state_ = STATE_GET_BACKEND_COMPLETE; | 217 next_state_ = STATE_GET_BACKEND_COMPLETE; |
| 214 | 218 |
| 215 if (!context_->http_transaction_factory()) | 219 if (!context_->http_transaction_factory()) |
| 216 return ERR_FAILED; | 220 return ERR_FAILED; |
| 217 | 221 |
| 218 HttpCache* http_cache = context_->http_transaction_factory()->GetCache(); | 222 HttpCache* http_cache = context_->http_transaction_factory()->GetCache(); |
| 219 if (!http_cache) | 223 if (!http_cache) |
| 220 return ERR_FAILED; | 224 return ERR_FAILED; |
| 221 | 225 |
| 222 return http_cache->GetBackend(&disk_cache_, &cache_callback_); | 226 return http_cache->GetBackend(&disk_cache_, cache_callback_); |
| 223 } | 227 } |
| 224 | 228 |
| 225 int ViewCacheHelper::DoGetBackendComplete(int result) { | 229 int ViewCacheHelper::DoGetBackendComplete(int result) { |
| 226 if (result == ERR_FAILED) { | 230 if (result == ERR_FAILED) { |
| 227 data_->append("no disk cache"); | 231 data_->append("no disk cache"); |
| 228 return OK; | 232 return OK; |
| 229 } | 233 } |
| 230 | 234 |
| 231 DCHECK_EQ(OK, result); | 235 DCHECK_EQ(OK, result); |
| 232 if (key_.empty()) { | 236 if (key_.empty()) { |
| 233 data_->assign(VIEW_CACHE_HEAD); | 237 data_->assign(VIEW_CACHE_HEAD); |
| 234 DCHECK(!iter_); | 238 DCHECK(!iter_); |
| 235 next_state_ = STATE_OPEN_NEXT_ENTRY; | 239 next_state_ = STATE_OPEN_NEXT_ENTRY; |
| 236 return OK; | 240 return OK; |
| 237 } | 241 } |
| 238 | 242 |
| 239 next_state_ = STATE_OPEN_ENTRY; | 243 next_state_ = STATE_OPEN_ENTRY; |
| 240 return OK; | 244 return OK; |
| 241 } | 245 } |
| 242 | 246 |
| 243 int ViewCacheHelper::DoOpenNextEntry() { | 247 int ViewCacheHelper::DoOpenNextEntry() { |
| 244 next_state_ = STATE_OPEN_NEXT_ENTRY_COMPLETE; | 248 next_state_ = STATE_OPEN_NEXT_ENTRY_COMPLETE; |
| 245 return disk_cache_->OpenNextEntry(&iter_, &entry_, &cache_callback_); | 249 return disk_cache_->OpenNextEntry(&iter_, &entry_, &old_cache_callback_); |
| 246 } | 250 } |
| 247 | 251 |
| 248 int ViewCacheHelper::DoOpenNextEntryComplete(int result) { | 252 int ViewCacheHelper::DoOpenNextEntryComplete(int result) { |
| 249 if (result == ERR_FAILED) { | 253 if (result == ERR_FAILED) { |
| 250 data_->append(VIEW_CACHE_TAIL); | 254 data_->append(VIEW_CACHE_TAIL); |
| 251 return OK; | 255 return OK; |
| 252 } | 256 } |
| 253 | 257 |
| 254 DCHECK_EQ(OK, result); | 258 DCHECK_EQ(OK, result); |
| 255 data_->append(FormatEntryInfo(entry_, url_prefix_)); | 259 data_->append(FormatEntryInfo(entry_, url_prefix_)); |
| 256 entry_->Close(); | 260 entry_->Close(); |
| 257 entry_ = NULL; | 261 entry_ = NULL; |
| 258 | 262 |
| 259 next_state_ = STATE_OPEN_NEXT_ENTRY; | 263 next_state_ = STATE_OPEN_NEXT_ENTRY; |
| 260 return OK; | 264 return OK; |
| 261 } | 265 } |
| 262 | 266 |
| 263 int ViewCacheHelper::DoOpenEntry() { | 267 int ViewCacheHelper::DoOpenEntry() { |
| 264 next_state_ = STATE_OPEN_ENTRY_COMPLETE; | 268 next_state_ = STATE_OPEN_ENTRY_COMPLETE; |
| 265 return disk_cache_->OpenEntry(key_, &entry_, &cache_callback_); | 269 return disk_cache_->OpenEntry(key_, &entry_, &old_cache_callback_); |
| 266 } | 270 } |
| 267 | 271 |
| 268 int ViewCacheHelper::DoOpenEntryComplete(int result) { | 272 int ViewCacheHelper::DoOpenEntryComplete(int result) { |
| 269 if (result == ERR_FAILED) { | 273 if (result == ERR_FAILED) { |
| 270 data_->append("no matching cache entry for: " + EscapeForHTML(key_)); | 274 data_->append("no matching cache entry for: " + EscapeForHTML(key_)); |
| 271 return OK; | 275 return OK; |
| 272 } | 276 } |
| 273 | 277 |
| 274 data_->assign(VIEW_CACHE_HEAD); | 278 data_->assign(VIEW_CACHE_HEAD); |
| 275 data_->append(EscapeForHTML(entry_->GetKey())); | 279 data_->append(EscapeForHTML(entry_->GetKey())); |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 348 entry_ = NULL; | 352 entry_ = NULL; |
| 349 } | 353 } |
| 350 return OK; | 354 return OK; |
| 351 } | 355 } |
| 352 | 356 |
| 353 void ViewCacheHelper::OnIOComplete(int result) { | 357 void ViewCacheHelper::OnIOComplete(int result) { |
| 354 DoLoop(result); | 358 DoLoop(result); |
| 355 } | 359 } |
| 356 | 360 |
| 357 } // namespace net. | 361 } // namespace net. |
| OLD | NEW |