Index: webkit/media/simple_data_source_unittest.cc |
diff --git a/webkit/media/simple_data_source_unittest.cc b/webkit/media/simple_data_source_unittest.cc |
index becef1042d02d42ef6ed75e39928035cc1a92787..e49c489246e866e85a7d43721d35da6938d72eeb 100644 |
--- a/webkit/media/simple_data_source_unittest.cc |
+++ b/webkit/media/simple_data_source_unittest.cc |
@@ -127,10 +127,15 @@ class SimpleDataSourceTest : public testing::Test { |
MessageLoop::current()->RunAllPending(); |
} |
- void DestroyDataSource() { |
+ void StopAndDestroyDataSource() { |
data_source_->Stop(media::NewExpectedClosure()); |
MessageLoop::current()->RunAllPending(); |
+ data_source_ = NULL; |
+ } |
+ void AbortAndDestroyDataSource() { |
+ data_source_->Abort(); |
+ MessageLoop::current()->RunAllPending(); |
data_source_ = NULL; |
} |
@@ -168,21 +173,21 @@ TEST_F(SimpleDataSourceTest, InitializeHTTP) { |
InitializeDataSource(kHttpUrl, |
media::NewExpectedStatusCB(media::PIPELINE_OK)); |
RequestSucceeded(); |
- DestroyDataSource(); |
+ StopAndDestroyDataSource(); |
} |
TEST_F(SimpleDataSourceTest, InitializeHTTPS) { |
InitializeDataSource(kHttpsUrl, |
media::NewExpectedStatusCB(media::PIPELINE_OK)); |
RequestSucceeded(); |
- DestroyDataSource(); |
+ StopAndDestroyDataSource(); |
} |
TEST_F(SimpleDataSourceTest, InitializeFile) { |
InitializeDataSource(kFileUrl, |
media::NewExpectedStatusCB(media::PIPELINE_OK)); |
RequestSucceeded(); |
- DestroyDataSource(); |
+ StopAndDestroyDataSource(); |
} |
TEST_F(SimpleDataSourceTest, InitializeData) { |
@@ -201,14 +206,14 @@ TEST_F(SimpleDataSourceTest, InitializeData) { |
media::NewExpectedStatusCB(media::PIPELINE_OK)); |
MessageLoop::current()->RunAllPending(); |
- DestroyDataSource(); |
+ StopAndDestroyDataSource(); |
} |
TEST_F(SimpleDataSourceTest, RequestFailed) { |
InitializeDataSource(kHttpUrl, |
media::NewExpectedStatusCB(media::PIPELINE_ERROR_NETWORK)); |
RequestFailed(); |
- DestroyDataSource(); |
+ StopAndDestroyDataSource(); |
} |
static void OnStatusCB(bool* called, media::PipelineStatus status) { |
@@ -222,7 +227,18 @@ TEST_F(SimpleDataSourceTest, StopWhenDownloading) { |
InitializeDataSource(kHttpUrl, base::Bind(&OnStatusCB, &was_called)); |
EXPECT_CALL(*url_loader_, cancel()); |
- DestroyDataSource(); |
+ StopAndDestroyDataSource(); |
+ EXPECT_FALSE(was_called); |
+} |
+ |
+TEST_F(SimpleDataSourceTest, AbortWhenDownloading) { |
+ // The callback should be deleted, but not executed. |
+ // TODO(scherkus): should this really be the behaviour? Seems strange... |
+ bool was_called = false; |
+ InitializeDataSource(kHttpUrl, base::Bind(&OnStatusCB, &was_called)); |
+ |
+ EXPECT_CALL(*url_loader_, cancel()); |
+ AbortAndDestroyDataSource(); |
EXPECT_FALSE(was_called); |
} |
@@ -231,7 +247,7 @@ TEST_F(SimpleDataSourceTest, AsyncRead) { |
media::NewExpectedStatusCB(media::PIPELINE_OK)); |
RequestSucceeded(); |
AsyncRead(); |
- DestroyDataSource(); |
+ StopAndDestroyDataSource(); |
} |
// NOTE: This test will need to be reworked a little once |
@@ -243,7 +259,7 @@ TEST_F(SimpleDataSourceTest, HasSingleOrigin) { |
media::NewExpectedStatusCB(media::PIPELINE_OK)); |
RequestSucceeded(); |
EXPECT_TRUE(data_source_->HasSingleOrigin()); |
- DestroyDataSource(); |
+ StopAndDestroyDataSource(); |
// Test redirect to the same domain. |
InitializeDataSource(kHttpUrl, |
@@ -251,7 +267,7 @@ TEST_F(SimpleDataSourceTest, HasSingleOrigin) { |
Redirect(kHttpRedirectToSameDomainUrl1); |
RequestSucceeded(); |
EXPECT_TRUE(data_source_->HasSingleOrigin()); |
- DestroyDataSource(); |
+ StopAndDestroyDataSource(); |
// Test redirect twice to the same domain. |
InitializeDataSource(kHttpUrl, |
@@ -260,7 +276,7 @@ TEST_F(SimpleDataSourceTest, HasSingleOrigin) { |
Redirect(kHttpRedirectToSameDomainUrl2); |
RequestSucceeded(); |
EXPECT_TRUE(data_source_->HasSingleOrigin()); |
- DestroyDataSource(); |
+ StopAndDestroyDataSource(); |
// Test redirect to a different domain. |
InitializeDataSource(kHttpUrl, |
@@ -268,7 +284,7 @@ TEST_F(SimpleDataSourceTest, HasSingleOrigin) { |
Redirect(kHttpRedirectToDifferentDomainUrl1); |
RequestSucceeded(); |
EXPECT_FALSE(data_source_->HasSingleOrigin()); |
- DestroyDataSource(); |
+ StopAndDestroyDataSource(); |
// Test redirect to the same domain and then to a different domain. |
InitializeDataSource(kHttpUrl, |
@@ -277,7 +293,7 @@ TEST_F(SimpleDataSourceTest, HasSingleOrigin) { |
Redirect(kHttpRedirectToDifferentDomainUrl1); |
RequestSucceeded(); |
EXPECT_FALSE(data_source_->HasSingleOrigin()); |
- DestroyDataSource(); |
+ StopAndDestroyDataSource(); |
} |
} // namespace webkit_media |