summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--base/file_util_proxy.cc13
-rw-r--r--base/file_util_proxy.h8
-rw-r--r--content/browser/renderer_host/redirect_to_file_resource_handler.cc6
-rw-r--r--content/browser/renderer_host/redirect_to_file_resource_handler.h4
-rw-r--r--content/common/net/url_fetcher.cc10
5 files changed, 22 insertions, 19 deletions
diff --git a/base/file_util_proxy.cc b/base/file_util_proxy.cc
index bd9807b..2d4db8f 100644
--- a/base/file_util_proxy.cc
+++ b/base/file_util_proxy.cc
@@ -167,12 +167,12 @@ class RelayCreateTemporary : public MessageLoopRelay {
RelayCreateTemporary(
scoped_refptr<base::MessageLoopProxy> message_loop_proxy,
int additional_file_flags,
- base::FileUtilProxy::CreateTemporaryCallback* callback)
+ const base::FileUtilProxy::CreateTemporaryCallback& callback)
: message_loop_proxy_(message_loop_proxy),
additional_file_flags_(additional_file_flags),
callback_(callback),
file_handle_(base::kInvalidPlatformFileValue) {
- DCHECK(callback);
+ DCHECK_EQ(false, callback.is_null());
}
protected:
@@ -199,15 +199,14 @@ class RelayCreateTemporary : public MessageLoopRelay {
}
virtual void RunCallback() {
- callback_->Run(error_code(), base::PassPlatformFile(&file_handle_),
- file_path_);
- delete callback_;
+ callback_.Run(error_code(), base::PassPlatformFile(&file_handle_),
+ file_path_);
}
private:
scoped_refptr<base::MessageLoopProxy> message_loop_proxy_;
int additional_file_flags_;
- base::FileUtilProxy::CreateTemporaryCallback* callback_;
+ base::FileUtilProxy::CreateTemporaryCallback callback_;
base::PlatformFile file_handle_;
FilePath file_path_;
};
@@ -747,7 +746,7 @@ bool FileUtilProxy::CreateOrOpen(
bool FileUtilProxy::CreateTemporary(
scoped_refptr<MessageLoopProxy> message_loop_proxy,
int additional_file_flags,
- CreateTemporaryCallback* callback) {
+ const CreateTemporaryCallback& callback) {
return Start(FROM_HERE, message_loop_proxy,
new RelayCreateTemporary(message_loop_proxy,
additional_file_flags,
diff --git a/base/file_util_proxy.h b/base/file_util_proxy.h
index 808c60e..196043a1 100644
--- a/base/file_util_proxy.h
+++ b/base/file_util_proxy.h
@@ -42,9 +42,9 @@ class BASE_EXPORT FileUtilProxy {
typedef base::Callback<void(PlatformFileError /* error code */,
PassPlatformFile,
bool /* created */)> CreateOrOpenCallback;
- typedef Callback3<PlatformFileError /* error code */,
- PassPlatformFile,
- FilePath>::Type CreateTemporaryCallback;
+ typedef base::Callback<void(PlatformFileError /* error code */,
+ PassPlatformFile,
+ FilePath)> CreateTemporaryCallback;
typedef Callback2<PlatformFileError /* error code */,
bool /* created */>::Type EnsureFileExistsCallback;
typedef Callback2<PlatformFileError /* error code */,
@@ -80,7 +80,7 @@ class BASE_EXPORT FileUtilProxy {
static bool CreateTemporary(
scoped_refptr<MessageLoopProxy> message_loop_proxy,
int additional_file_flags,
- CreateTemporaryCallback* callback);
+ const CreateTemporaryCallback& callback);
// Close the given file handle.
static bool Close(scoped_refptr<MessageLoopProxy> message_loop_proxy,
diff --git a/content/browser/renderer_host/redirect_to_file_resource_handler.cc b/content/browser/renderer_host/redirect_to_file_resource_handler.cc
index 19079a3..25e4914 100644
--- a/content/browser/renderer_host/redirect_to_file_resource_handler.cc
+++ b/content/browser/renderer_host/redirect_to_file_resource_handler.cc
@@ -27,7 +27,7 @@ RedirectToFileResourceHandler::RedirectToFileResourceHandler(
ResourceHandler* next_handler,
int process_id,
ResourceDispatcherHost* host)
- : callback_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)),
+ : ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)),
host_(host),
next_handler_(next_handler),
process_id_(process_id),
@@ -77,8 +77,8 @@ bool RedirectToFileResourceHandler::OnWillStart(int request_id,
base::FileUtilProxy::CreateTemporary(
BrowserThread::GetMessageLoopProxyForThread(BrowserThread::FILE),
base::PLATFORM_FILE_ASYNC,
- callback_factory_.NewCallback(
- &RedirectToFileResourceHandler::DidCreateTemporaryFile));
+ base::Bind(&RedirectToFileResourceHandler::DidCreateTemporaryFile,
+ weak_factory_.GetWeakPtr()));
return true;
}
return next_handler_->OnWillStart(request_id, url, defer);
diff --git a/content/browser/renderer_host/redirect_to_file_resource_handler.h b/content/browser/renderer_host/redirect_to_file_resource_handler.h
index c860b2d..adf1aa7 100644
--- a/content/browser/renderer_host/redirect_to_file_resource_handler.h
+++ b/content/browser/renderer_host/redirect_to_file_resource_handler.h
@@ -7,8 +7,8 @@
#include "base/file_path.h"
#include "base/memory/ref_counted.h"
-#include "base/memory/scoped_callback_factory.h"
#include "base/memory/scoped_ptr.h"
+#include "base/memory/weak_ptr.h"
#include "base/platform_file.h"
#include "content/browser/renderer_host/resource_handler.h"
#include "net/url_request/url_request_status.h"
@@ -57,7 +57,7 @@ class RedirectToFileResourceHandler : public ResourceHandler {
bool WriteMore();
bool BufIsFull() const;
- base::ScopedCallbackFactory<RedirectToFileResourceHandler> callback_factory_;
+ base::WeakPtrFactory<RedirectToFileResourceHandler> weak_factory_;
ResourceDispatcherHost* host_;
scoped_refptr<ResourceHandler> next_handler_;
diff --git a/content/common/net/url_fetcher.cc b/content/common/net/url_fetcher.cc
index b9e1ff7..13332af 100644
--- a/content/common/net/url_fetcher.cc
+++ b/content/common/net/url_fetcher.cc
@@ -6,12 +6,14 @@
#include <set>
+#include "base/bind.h"
#include "base/compiler_specific.h"
#include "base/file_path.h"
#include "base/file_util_proxy.h"
#include "base/lazy_instance.h"
#include "base/memory/scoped_callback_factory.h"
#include "base/memory/scoped_ptr.h"
+#include "base/memory/weak_ptr.h"
#include "base/message_loop_proxy.h"
#include "base/platform_file.h"
#include "base/stl_util.h"
@@ -149,6 +151,7 @@ class URLFetcher::Core
// Callbacks are created for use with base::FileUtilProxy.
base::ScopedCallbackFactory<URLFetcher::Core::TempFileWriter>
callback_factory_;
+ base::WeakPtrFactory<URLFetcher::Core::TempFileWriter> weak_factory_;
// Message loop on which file opperations should happen.
scoped_refptr<base::MessageLoopProxy> file_message_loop_proxy_;
@@ -321,7 +324,8 @@ URLFetcher::Core::TempFileWriter::TempFileWriter(
scoped_refptr<base::MessageLoopProxy> file_message_loop_proxy)
: core_(core),
error_code_(base::PLATFORM_FILE_OK),
- callback_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)),
+ ALLOW_THIS_IN_INITIALIZER_LIST(callback_factory_(this)),
+ ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)),
file_message_loop_proxy_(file_message_loop_proxy),
temp_file_handle_(base::kInvalidPlatformFileValue) {
}
@@ -336,8 +340,8 @@ void URLFetcher::Core::TempFileWriter::CreateTempFile() {
base::FileUtilProxy::CreateTemporary(
file_message_loop_proxy_,
0, // No additional file flags.
- callback_factory_.NewCallback(
- &URLFetcher::Core::TempFileWriter::DidCreateTempFile));
+ base::Bind(&URLFetcher::Core::TempFileWriter::DidCreateTempFile,
+ weak_factory_.GetWeakPtr()));
}
void URLFetcher::Core::TempFileWriter::DidCreateTempFile(