Index: webkit/glue/media/buffered_data_source.cc |
diff --git a/webkit/glue/media/buffered_data_source.cc b/webkit/glue/media/buffered_data_source.cc |
index c125dd63de129d1bea64f5a630389fd04ec6adf0..1a008cbd991e73635943067738fb3b6fd4037417 100644 |
--- a/webkit/glue/media/buffered_data_source.cc |
+++ b/webkit/glue/media/buffered_data_source.cc |
@@ -46,7 +46,6 @@ BufferedDataSource::BufferedDataSource( |
frame_(frame), |
loader_(NULL), |
network_activity_(false), |
- initialize_callback_(NULL), |
read_callback_(NULL), |
read_position_(0), |
read_size_(0), |
@@ -85,23 +84,21 @@ void BufferedDataSource::set_host(media::FilterHost* host) { |
} |
void BufferedDataSource::Initialize(const std::string& url, |
- media::PipelineStatusCallback* callback) { |
+ const media::PipelineStatusCB& callback) { |
// Saves the url. |
url_ = GURL(url); |
// This data source doesn't support data:// protocol so reject it. |
if (url_.SchemeIs(kDataScheme)) { |
- callback->Run(media::DATASOURCE_ERROR_URL_NOT_SUPPORTED); |
- delete callback; |
+ callback.Run(media::DATASOURCE_ERROR_URL_NOT_SUPPORTED); |
return; |
} else if (!IsProtocolSupportedForMedia(url_)) { |
- callback->Run(media::PIPELINE_ERROR_NETWORK); |
- delete callback; |
+ callback.Run(media::PIPELINE_ERROR_NETWORK); |
return; |
} |
- DCHECK(callback); |
- initialize_callback_.reset(callback); |
+ DCHECK(!callback.is_null()); |
+ initialize_cb_ = callback; |
// Post a task to complete the initialization task. |
render_loop_->PostTask(FROM_HERE, |
@@ -110,9 +107,9 @@ void BufferedDataSource::Initialize(const std::string& url, |
void BufferedDataSource::CancelInitialize() { |
base::AutoLock auto_lock(lock_); |
- DCHECK(initialize_callback_.get()); |
+ DCHECK(!initialize_cb_.is_null()); |
- initialize_callback_.reset(); |
+ initialize_cb_.Reset(); |
render_loop_->PostTask( |
FROM_HERE, NewRunnableMethod(this, &BufferedDataSource::CleanupTask)); |
@@ -202,7 +199,7 @@ void BufferedDataSource::Abort() { |
void BufferedDataSource::InitializeTask() { |
DCHECK(MessageLoop::current() == render_loop_); |
DCHECK(!loader_.get()); |
- if (stopped_on_render_loop_ || !initialize_callback_.get()) |
+ if (stopped_on_render_loop_ || initialize_cb_.is_null()) |
return; |
if (url_.SchemeIs(kHttpScheme) || url_.SchemeIs(kHttpsScheme)) { |
@@ -379,12 +376,11 @@ void BufferedDataSource::DoneRead_Locked(int error) { |
void BufferedDataSource::DoneInitialization_Locked( |
media::PipelineStatus status) { |
DCHECK(MessageLoop::current() == render_loop_); |
- DCHECK(initialize_callback_.get()); |
+ DCHECK(!initialize_cb_.is_null()); |
lock_.AssertAcquired(); |
- scoped_ptr<media::PipelineStatusCallback> initialize_callback( |
- initialize_callback_.release()); |
- initialize_callback->Run(status); |
+ initialize_cb_.Run(status); |
+ initialize_cb_.Reset(); |
} |
///////////////////////////////////////////////////////////////////////////// |
@@ -396,7 +392,7 @@ void BufferedDataSource::HttpInitialStartCallback(int error) { |
int64 instance_size = loader_->instance_size(); |
bool success = error == net::OK; |
- if (!initialize_callback_.get()) { |
+ if (initialize_cb_.is_null()) { |
loader_->Stop(); |
return; |
} |
@@ -426,7 +422,7 @@ void BufferedDataSource::HttpInitialStartCallback(int error) { |
return; |
} |
- // Reference to prevent destruction while inside the |initialize_callback_| |
+ // Reference to prevent destruction while inside the |initialize_cb_| |
// call. This is a temporary fix to prevent crashes caused by holding the |
// lock and running the destructor. |
// TODO: Review locking in this class and figure out a way to run the callback |
@@ -459,7 +455,7 @@ void BufferedDataSource::NonHttpInitialStartCallback(int error) { |
DCHECK(MessageLoop::current() == render_loop_); |
DCHECK(loader_.get()); |
- if (!initialize_callback_.get()) { |
+ if (initialize_cb_.is_null()) { |
loader_->Stop(); |
return; |
} |
@@ -475,7 +471,7 @@ void BufferedDataSource::NonHttpInitialStartCallback(int error) { |
loader_->Stop(); |
} |
- // Reference to prevent destruction while inside the |initialize_callback_| |
+ // Reference to prevent destruction while inside the |initialize_cb_| |
// call. This is a temporary fix to prevent crashes caused by holding the |
// lock and running the destructor. |
// TODO: Review locking in this class and figure out a way to run the callback |
@@ -491,7 +487,7 @@ void BufferedDataSource::NonHttpInitialStartCallback(int error) { |
// this object when Stop() method is ever called. Locking this method is |
// safe because |lock_| is only acquired in tasks on render thread. |
base::AutoLock auto_lock(lock_); |
- if (stop_signal_received_ || !initialize_callback_.get()) |
+ if (stop_signal_received_ || initialize_cb_.is_null()) |
return; |
if (!success) { |