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

Unified Diff: net/http/http_cache_transaction.cc

Issue 6698009: Add request_id to HttpRequestInfo and pass it to the NetworkDelegate for events. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: net and cache intercept Created 9 years, 9 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 side-by-side diff with in-line comments
Download patch
Index: net/http/http_cache_transaction.cc
diff --git a/net/http/http_cache_transaction.cc b/net/http/http_cache_transaction.cc
index 6665d5ff404661c09502d469b815db7a506dc255..1234f327e76f751902501e07d381340a1cfed695 100644
--- a/net/http/http_cache_transaction.cc
+++ b/net/http/http_cache_transaction.cc
@@ -23,10 +23,12 @@
#include "net/base/load_flags.h"
#include "net/base/net_errors.h"
#include "net/base/net_log.h"
+#include "net/base/network_delegate.h"
#include "net/base/ssl_cert_request_info.h"
#include "net/base/ssl_config_service.h"
#include "net/disk_cache/disk_cache.h"
#include "net/http/disk_cache_based_ssl_host_info.h"
+#include "net/http/http_network_session.h"
#include "net/http/http_request_info.h"
#include "net/http/http_response_headers.h"
#include "net/http/http_transaction.h"
@@ -529,6 +531,9 @@ int HttpCache::Transaction::DoLoop(int result) {
case STATE_CACHE_READ_RESPONSE_COMPLETE:
rv = DoCacheReadResponseComplete(rv);
break;
+ case STATE_CACHE_BEFORE_WRITE_RESPONSE:
+ rv = DoCacheBeforeWriteResponse(rv);
+ break;
case STATE_CACHE_WRITE_RESPONSE:
DCHECK_EQ(OK, rv);
rv = DoCacheWriteResponse();
@@ -1096,6 +1101,7 @@ int HttpCache::Transaction::DoPartialHeadersReceived() {
int HttpCache::Transaction::DoCacheReadResponse() {
DCHECK(entry_);
+
rvargas (doing something else) 2011/03/17 19:40:20 nit: remove
Matt Perry 2011/03/22 21:11:43 Done.
next_state_ = STATE_CACHE_READ_RESPONSE_COMPLETE;
io_buf_len_ = entry_->disk_entry->GetDataSize(kResponseInfoIndex);
@@ -1117,6 +1123,24 @@ int HttpCache::Transaction::DoCacheReadResponseComplete(int result) {
return ERR_CACHE_READ_FAILURE;
}
+ next_state_ = STATE_CACHE_BEFORE_WRITE_RESPONSE;
rvargas (doing something else) 2011/03/17 19:40:20 This should be related to the actual action perfor
Matt Perry 2011/03/22 21:11:43 Done.
+
+ cache_callback_->AddRef(); // Balanced in DoCacheBeforeWriteResponse.
rvargas (doing something else) 2011/03/17 19:40:20 I don't think you want to use this callback. This
Matt Perry 2011/03/22 21:11:43 I need a cancelable callback since the network del
+ if (cache_->GetSession()->network_delegate()) {
+ // TODO(mpcomplete): Does it make sense to pass request headers here? Where
+ // do we get them?
rvargas (doing something else) 2011/03/17 19:40:20 request_->extra_headers
Matt Perry 2011/03/22 21:11:43 Done.
+ HttpRequestHeaders empty_headers;
+ if (cache_->GetSession()->network_delegate()->NotifyBeforeHttpRequest(
+ request_->request_id, &empty_headers, cache_callback_))
+ return ERR_IO_PENDING;
+ }
+
+ return OK;
+}
+
+int HttpCache::Transaction::DoCacheBeforeWriteResponse(int result) {
+ cache_callback_->Release(); // balanced in DoCacheReadResponseComplete
+
// We now have access to the cache entry.
//
// o if we are a reader for the transaction, then we can start reading the
@@ -1130,20 +1154,22 @@ int HttpCache::Transaction::DoCacheReadResponseComplete(int result) {
// conditionalized request (if-modified-since / if-none-match). We check
// if the request headers define a validation request.
//
- switch (mode_) {
- case READ:
- result = BeginCacheRead();
- break;
- case READ_WRITE:
- result = BeginPartialCacheValidation();
- break;
- case UPDATE:
- result = BeginExternallyConditionalizedRequest();
- break;
- case WRITE:
- default:
- NOTREACHED();
- result = ERR_FAILED;
+ if (result == net::OK) {
+ switch (mode_) {
+ case READ:
+ result = BeginCacheRead();
+ break;
+ case READ_WRITE:
+ result = BeginPartialCacheValidation();
+ break;
+ case UPDATE:
+ result = BeginExternallyConditionalizedRequest();
+ break;
+ case WRITE:
+ default:
+ NOTREACHED();
+ result = ERR_FAILED;
+ }
}
return result;
}

Powered by Google App Engine
This is Rietveld 408576698