Chromium Code Reviews| Index: chrome/browser/net/view_http_cache_job_factory.cc |
| diff --git a/chrome/browser/net/view_http_cache_job_factory.cc b/chrome/browser/net/view_http_cache_job_factory.cc |
| index 1441dd75832e4c3aa8d316026ecbccc1c972de08..8802601b0c1e4650a5a8a2460f3e834e76375072 100644 |
| --- a/chrome/browser/net/view_http_cache_job_factory.cc |
| +++ b/chrome/browser/net/view_http_cache_job_factory.cc |
| @@ -4,11 +4,15 @@ |
| #include "chrome/browser/net/view_http_cache_job_factory.h" |
| +#include "base/bind.h" |
| +#include "base/bind_helpers.h" |
| +#include "base/callback.h" |
| #include "base/compiler_specific.h" |
| +#include "base/memory/weak_ptr.h" |
| #include "base/message_loop.h" |
| #include "base/string_util.h" |
| -#include "base/task.h" |
| #include "chrome/common/url_constants.h" |
| +#include "net/base/completion_callback.h" |
| #include "net/base/net_errors.h" |
| #include "net/url_request/url_request.h" |
| #include "net/url_request/url_request_context.h" |
| @@ -23,20 +27,23 @@ class ViewHttpCacheJob : public net::URLRequestJob { |
| explicit ViewHttpCacheJob(net::URLRequest* request) |
| : net::URLRequestJob(request), |
| core_(new Core), |
| - ALLOW_THIS_IN_INITIALIZER_LIST(method_factory_(this)), |
| + ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)), |
| ALLOW_THIS_IN_INITIALIZER_LIST( |
| - callback_(NewCallback(this, |
| - &ViewHttpCacheJob::OnStartCompleted))) {} |
| + callback_(base::Bind(&ViewHttpCacheJob::OnStartCompleted, |
| + base::Unretained(this)))) { |
| + } |
| - virtual void Start(); |
| - virtual void Kill(); |
| - virtual bool GetMimeType(std::string* mime_type) const { |
| + // net::URLRequestJob implementation. |
| + virtual void Start() OVERRIDE; |
| + virtual void Kill() OVERRIDE; |
| + virtual bool GetMimeType(std::string* mime_type) const OVERRIDE{ |
| return core_->GetMimeType(mime_type); |
| } |
| - virtual bool GetCharset(std::string* charset) { |
| + virtual bool GetCharset(std::string* charset) OVERRIDE{ |
| return core_->GetCharset(charset); |
| } |
| - virtual bool ReadRawData(net::IOBuffer* buf, int buf_size, int *bytes_read) { |
| + virtual bool ReadRawData(net::IOBuffer* buf, |
| + int buf_size, int *bytes_read) OVERRIDE{ |
| return core_->ReadRawData(buf, buf_size, bytes_read); |
| } |
| @@ -45,15 +52,15 @@ class ViewHttpCacheJob : public net::URLRequestJob { |
| public: |
| Core() |
| : data_offset_(0), |
| - ALLOW_THIS_IN_INITIALIZER_LIST( |
| - callback_(this, &Core::OnIOComplete)), |
|
csilv
2011/11/23 18:37:32
I'm a little unclear what this old implementation
|
| - user_callback_(NULL) {} |
| + ALLOW_THIS_IN_INITIALIZER_LIST(callback_( |
| + base::Bind(&Core::OnIOComplete, this))) { |
| + } |
| - int Start(const net::URLRequest& request, Callback0::Type* callback); |
| + int Start(const net::URLRequest& request, const base::Closure& callback); |
| // Prevents it from invoking its callback. It will self-delete. |
| void Orphan() { |
| - user_callback_ = NULL; |
| + user_callback_.Reset(); |
| } |
| bool GetMimeType(std::string* mime_type) const; |
| @@ -71,8 +78,8 @@ class ViewHttpCacheJob : public net::URLRequestJob { |
| std::string data_; |
| int data_offset_; |
| net::ViewCacheHelper cache_helper_; |
| - net::OldCompletionCallbackImpl<Core> callback_; |
| - Callback0::Type* user_callback_; |
| + net::CompletionCallback callback_; |
| + base::Closure user_callback_; |
| DISALLOW_COPY_AND_ASSIGN(Core); |
| }; |
| @@ -83,8 +90,8 @@ class ViewHttpCacheJob : public net::URLRequestJob { |
| void OnStartCompleted(); |
| scoped_refptr<Core> core_; |
| - ScopedRunnableMethodFactory<ViewHttpCacheJob> method_factory_; |
| - scoped_ptr<Callback0::Type> callback_; |
| + base::WeakPtrFactory<ViewHttpCacheJob> weak_factory_; |
| + base::Closure callback_; |
| DISALLOW_COPY_AND_ASSIGN(ViewHttpCacheJob); |
| }; |
| @@ -92,11 +99,11 @@ class ViewHttpCacheJob : public net::URLRequestJob { |
| void ViewHttpCacheJob::Start() { |
| MessageLoop::current()->PostTask( |
| FROM_HERE, |
| - method_factory_.NewRunnableMethod(&ViewHttpCacheJob::StartAsync)); |
| + base::Bind(&ViewHttpCacheJob::StartAsync, weak_factory_.GetWeakPtr())); |
| } |
| void ViewHttpCacheJob::Kill() { |
| - method_factory_.RevokeAll(); |
| + weak_factory_.InvalidateWeakPtrs(); |
| if (core_) { |
| core_->Orphan(); |
| core_ = NULL; |
| @@ -110,7 +117,7 @@ void ViewHttpCacheJob::StartAsync() { |
| if (!request()) |
| return; |
| - int rv = core_->Start(*request(), callback_.get()); |
| + int rv = core_->Start(*request(), callback_); |
| if (rv != net::ERR_IO_PENDING) { |
| DCHECK_EQ(net::OK, rv); |
| OnStartCompleted(); |
| @@ -122,9 +129,9 @@ void ViewHttpCacheJob::OnStartCompleted() { |
| } |
| int ViewHttpCacheJob::Core::Start(const net::URLRequest& request, |
| - Callback0::Type* callback) { |
| - DCHECK(callback); |
| - DCHECK(!user_callback_); |
| + const base::Closure& callback) { |
| + DCHECK(!callback.is_null()); |
| + DCHECK(user_callback_.is_null()); |
| AddRef(); // Released on OnIOComplete(). |
| std::string cache_key = |
| @@ -134,11 +141,10 @@ int ViewHttpCacheJob::Core::Start(const net::URLRequest& request, |
| if (cache_key.empty()) { |
| rv = cache_helper_.GetContentsHTML(request.context(), |
| chrome::kChromeUINetworkViewCacheURL, |
| - &data_, |
| - &callback_); |
| + &data_, callback_); |
| } else { |
| rv = cache_helper_.GetEntryInfoHTML(cache_key, request.context(), |
| - &data_, &callback_); |
| + &data_, callback_); |
| } |
| if (rv == net::ERR_IO_PENDING) |
| @@ -173,8 +179,8 @@ bool ViewHttpCacheJob::Core::ReadRawData(net::IOBuffer* buf, |
| void ViewHttpCacheJob::Core::OnIOComplete(int result) { |
| DCHECK_EQ(net::OK, result); |
| - if (user_callback_) |
| - user_callback_->Run(); |
| + if (!user_callback_.is_null()) |
| + user_callback_.Run(); |
| // We may be holding the last reference to this job. Do not access |this| |
| // after Release(). |