Index: webkit/media/buffered_data_source.cc |
diff --git a/webkit/media/buffered_data_source.cc b/webkit/media/buffered_data_source.cc |
index c91504e656e6de5d459d7c57b4962ed1a364d507..abfc5d6e97991660254ff890b20153ef3ff0dc2d 100644 |
--- a/webkit/media/buffered_data_source.cc |
+++ b/webkit/media/buffered_data_source.cc |
@@ -5,6 +5,7 @@ |
#include "webkit/media/buffered_data_source.h" |
#include "base/bind.h" |
+#include "base/callback_helpers.h" |
#include "base/message_loop.h" |
#include "media/base/media_log.h" |
#include "net/base/net_errors.h" |
@@ -89,14 +90,14 @@ void BufferedDataSource::set_host(media::DataSourceHost* host) { |
void BufferedDataSource::Initialize( |
const GURL& url, |
BufferedResourceLoader::CORSMode cors_mode, |
- const media::PipelineStatusCB& initialize_cb) { |
+ const InitializeCB& init_cb) { |
DCHECK(MessageLoop::current() == render_loop_); |
- DCHECK(!initialize_cb.is_null()); |
+ DCHECK(!init_cb.is_null()); |
DCHECK(!loader_.get()); |
url_ = url; |
cors_mode_ = cors_mode; |
- initialize_cb_ = initialize_cb; |
+ init_cb_ = init_cb; |
if (url_.SchemeIs(kHttpScheme) || url_.SchemeIs(kHttpsScheme)) { |
// Do an unbounded range request starting at the beginning. If the server |
@@ -125,7 +126,7 @@ void BufferedDataSource::SetPreload(Preload preload) { |
bool BufferedDataSource::HasSingleOrigin() { |
DCHECK(MessageLoop::current() == render_loop_); |
- DCHECK(initialize_cb_.is_null() && loader_.get()) |
+ DCHECK(init_cb_.is_null() && loader_.get()) |
<< "Initialize() must complete before calling HasSingleOrigin()"; |
return loader_->HasSingleOrigin(); |
} |
@@ -232,7 +233,7 @@ void BufferedDataSource::CleanupTask() { |
{ |
base::AutoLock auto_lock(lock_); |
- initialize_cb_.Reset(); |
+ init_cb_.Reset(); |
if (stopped_on_render_loop_) |
return; |
@@ -322,16 +323,6 @@ void BufferedDataSource::DoneRead_Locked(int bytes_read) { |
read_buffer_ = 0; |
} |
-void BufferedDataSource::DoneInitialization_Locked( |
- media::PipelineStatus status) { |
- DCHECK(MessageLoop::current() == render_loop_); |
- DCHECK(!initialize_cb_.is_null()); |
- lock_.AssertAcquired(); |
- |
- initialize_cb_.Run(status); |
- initialize_cb_.Reset(); |
-} |
- |
///////////////////////////////////////////////////////////////////////////// |
// BufferedResourceLoader callback methods. |
void BufferedDataSource::StartCallback( |
@@ -339,12 +330,12 @@ void BufferedDataSource::StartCallback( |
DCHECK(MessageLoop::current() == render_loop_); |
DCHECK(loader_.get()); |
- bool initialize_cb_is_null = false; |
+ bool init_cb_is_null = false; |
{ |
base::AutoLock auto_lock(lock_); |
- initialize_cb_is_null = initialize_cb_.is_null(); |
+ init_cb_is_null = init_cb_.is_null(); |
} |
- if (initialize_cb_is_null) { |
+ if (init_cb_is_null) { |
loader_->Stop(); |
return; |
} |
@@ -371,13 +362,10 @@ void BufferedDataSource::StartCallback( |
if (stop_signal_received_) |
return; |
- if (!success) { |
- DoneInitialization_Locked(media::PIPELINE_ERROR_NETWORK); |
- return; |
- } |
+ if (success) |
+ UpdateHostState_Locked(); |
- UpdateHostState_Locked(); |
- DoneInitialization_Locked(media::PIPELINE_OK); |
+ base::ResetAndReturn(&init_cb_).Run(success); |
} |
} |