Index: content/browser/appcache/appcache_url_request_job.cc |
diff --git a/content/browser/appcache/appcache_url_request_job.cc b/content/browser/appcache/appcache_url_request_job.cc |
index 467f39f6da7adc22e68bb1b2d2bd47241f0e29d2..8a89def4a7ed1aebe8a46ed1f0e77d221e86a631 100644 |
--- a/content/browser/appcache/appcache_url_request_job.cc |
+++ b/content/browser/appcache/appcache_url_request_job.cc |
@@ -32,33 +32,54 @@ |
namespace content { |
-AppCacheURLRequestJob::AppCacheURLRequestJob( |
- net::URLRequest* request, |
- net::NetworkDelegate* network_delegate, |
- AppCacheStorage* storage, |
- AppCacheHost* host, |
- bool is_main_resource, |
- const OnPrepareToRestartCallback& restart_callback) |
- : net::URLRequestJob(request, network_delegate), |
- host_(host), |
- storage_(storage), |
- has_been_started_(false), |
- has_been_killed_(false), |
- delivery_type_(AWAITING_DELIVERY_ORDERS), |
- cache_id_(kAppCacheNoCacheId), |
- is_fallback_(false), |
- is_main_resource_(is_main_resource), |
- cache_entry_not_found_(false), |
- on_prepare_to_restart_callback_(restart_callback), |
- weak_factory_(this) { |
- DCHECK(storage_); |
-} |
- |
AppCacheURLRequestJob::~AppCacheURLRequestJob() { |
if (storage_) |
storage_->CancelDelegateCallbacks(this); |
} |
+void AppCacheURLRequestJob::Kill() { |
+ if (!has_been_killed_) { |
+ has_been_killed_ = true; |
+ reader_.reset(); |
+ handler_source_reader_.reset(); |
+ if (storage_) { |
+ storage_->CancelDelegateCallbacks(this); |
+ storage_ = NULL; |
+ } |
+ host_ = NULL; |
+ info_ = NULL; |
+ cache_ = NULL; |
+ group_ = NULL; |
+ range_response_info_.reset(); |
+ net::URLRequestJob::Kill(); |
+ AppCacheJob::weak_factory_.InvalidateWeakPtrs(); |
+ } |
+} |
+ |
+bool AppCacheURLRequestJob::IsStarted() const { |
+ return has_been_started_; |
+} |
+ |
+bool AppCacheURLRequestJob::IsWaiting() const { |
+ return delivery_type_ == AWAITING_DELIVERY_ORDERS; |
+} |
+ |
+bool AppCacheURLRequestJob::IsDeliveringAppCacheResponse() const { |
+ return delivery_type_ == APPCACHED_DELIVERY; |
+} |
+ |
+bool AppCacheURLRequestJob::IsDeliveringNetworkResponse() const { |
+ return delivery_type_ == NETWORK_DELIVERY; |
+} |
+ |
+bool AppCacheURLRequestJob::IsDeliveringErrorResponse() const { |
+ return delivery_type_ == ERROR_DELIVERY; |
+} |
+ |
+bool AppCacheURLRequestJob::IsCacheEntryNotFound() const { |
+ return cache_entry_not_found_; |
+} |
+ |
void AppCacheURLRequestJob::DeliverAppCachedResponse(const GURL& manifest_url, |
int64_t cache_id, |
const AppCacheEntry& entry, |
@@ -87,22 +108,47 @@ void AppCacheURLRequestJob::DeliverErrorResponse() { |
MaybeBeginDelivery(); |
} |
-base::WeakPtr<AppCacheURLRequestJob> AppCacheURLRequestJob::GetWeakPtr() { |
- return weak_factory_.GetWeakPtr(); |
+const GURL& AppCacheURLRequestJob::GetURL() const { |
+ return request()->url(); |
+} |
+ |
+net::URLRequestJob* AppCacheURLRequestJob::AsURLRequestJob() { |
+ return this; |
+} |
+ |
+AppCacheURLRequestJob::AppCacheURLRequestJob( |
+ net::URLRequest* request, |
+ net::NetworkDelegate* network_delegate, |
+ AppCacheStorage* storage, |
+ AppCacheHost* host, |
+ bool is_main_resource, |
+ const OnPrepareToRestartCallback& restart_callback) |
+ : net::URLRequestJob(request, network_delegate), |
+ host_(host), |
+ storage_(storage), |
+ has_been_started_(false), |
+ has_been_killed_(false), |
+ delivery_type_(AWAITING_DELIVERY_ORDERS), |
+ cache_id_(kAppCacheNoCacheId), |
+ is_fallback_(false), |
+ is_main_resource_(is_main_resource), |
+ cache_entry_not_found_(false), |
+ on_prepare_to_restart_callback_(restart_callback) { |
+ DCHECK(storage_); |
} |
void AppCacheURLRequestJob::MaybeBeginDelivery() { |
- if (has_been_started() && has_delivery_orders()) { |
+ if (IsStarted() && has_delivery_orders()) { |
// Start asynchronously so that all error reporting and data |
// callbacks happen as they would for network requests. |
base::ThreadTaskRunnerHandle::Get()->PostTask( |
FROM_HERE, base::Bind(&AppCacheURLRequestJob::BeginDelivery, |
- weak_factory_.GetWeakPtr())); |
+ StaticAsWeakPtr(this))); |
} |
} |
void AppCacheURLRequestJob::BeginDelivery() { |
- DCHECK(has_delivery_orders() && has_been_started()); |
+ DCHECK(has_delivery_orders() && IsStarted()); |
if (has_been_killed()) |
return; |
@@ -236,7 +282,7 @@ void AppCacheURLRequestJob::InvokeExecutableHandler( |
handler->HandleRequest( |
request(), |
base::Bind(&AppCacheURLRequestJob::OnExecutableResponseCallback, |
- weak_factory_.GetWeakPtr())); |
+ StaticAsWeakPtr(this))); |
} |
void AppCacheURLRequestJob::OnExecutableResponseCallback( |
@@ -280,7 +326,7 @@ void AppCacheURLRequestJob::BeginErrorDelivery(const char* message) { |
void AppCacheURLRequestJob::OnResponseInfoLoaded( |
AppCacheResponseInfo* response_info, |
int64_t response_id) { |
- DCHECK(is_delivering_appcache_response()); |
+ DCHECK(IsDeliveringAppCacheResponse()); |
if (response_info) { |
info_ = response_info; |
reader_.reset( |
@@ -317,7 +363,7 @@ const net::HttpResponseInfo* AppCacheURLRequestJob::http_info() const { |
void AppCacheURLRequestJob::SetupRangeResponse() { |
DCHECK(is_range_request() && info_.get() && reader_.get() && |
- is_delivering_appcache_response()); |
+ IsDeliveringAppCacheResponse()); |
int resource_size = static_cast<int>(info_->response_data_size()); |
if (resource_size < 0 || !range_requested_.ComputeBounds(resource_size)) { |
range_requested_ = net::HttpByteRange(); |
@@ -342,7 +388,7 @@ void AppCacheURLRequestJob::SetupRangeResponse() { |
} |
void AppCacheURLRequestJob::OnReadComplete(int result) { |
- DCHECK(is_delivering_appcache_response()); |
+ DCHECK(IsDeliveringAppCacheResponse()); |
if (result == 0) { |
AppCacheHistograms::CountResponseRetrieval( |
true, is_main_resource_, manifest_url_.GetOrigin()); |
@@ -360,33 +406,14 @@ void AppCacheURLRequestJob::OnReadComplete(int result) { |
// net::URLRequestJob overrides ------------------------------------------------ |
void AppCacheURLRequestJob::Start() { |
- DCHECK(!has_been_started()); |
+ DCHECK(!IsStarted()); |
has_been_started_ = true; |
start_time_tick_ = base::TimeTicks::Now(); |
MaybeBeginDelivery(); |
} |
-void AppCacheURLRequestJob::Kill() { |
- if (!has_been_killed_) { |
- has_been_killed_ = true; |
- reader_.reset(); |
- handler_source_reader_.reset(); |
- if (storage_) { |
- storage_->CancelDelegateCallbacks(this); |
- storage_ = NULL; |
- } |
- host_ = NULL; |
- info_ = NULL; |
- cache_ = NULL; |
- group_ = NULL; |
- range_response_info_.reset(); |
- net::URLRequestJob::Kill(); |
- weak_factory_.InvalidateWeakPtrs(); |
- } |
-} |
- |
net::LoadState AppCacheURLRequestJob::GetLoadState() const { |
- if (!has_been_started()) |
+ if (!IsStarted()) |
return net::LOAD_STATE_IDLE; |
if (!has_delivery_orders()) |
return net::LOAD_STATE_WAITING_FOR_APPCACHE; |
@@ -418,7 +445,7 @@ void AppCacheURLRequestJob::GetResponseInfo(net::HttpResponseInfo* info) { |
} |
int AppCacheURLRequestJob::ReadRawData(net::IOBuffer* buf, int buf_size) { |
- DCHECK(is_delivering_appcache_response()); |
+ DCHECK(IsDeliveringAppCacheResponse()); |
DCHECK_NE(buf_size, 0); |
DCHECK(!reader_->IsReadPending()); |
reader_->ReadData(buf, buf_size, |