Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "base/bind.h" | |
| 5 #include "media/base/filters.h" | 6 #include "media/base/filters.h" |
| 6 #include "media/base/mock_callback.h" | 7 #include "media/base/mock_callback.h" |
| 7 #include "media/base/mock_filter_host.h" | 8 #include "media/base/mock_filter_host.h" |
| 8 #include "media/base/mock_filters.h" | 9 #include "media/base/mock_filters.h" |
| 9 #include "net/base/net_errors.h" | 10 #include "net/base/net_errors.h" |
| 10 #include "third_party/WebKit/Source/WebKit/chromium/public/WebURLError.h" | 11 #include "third_party/WebKit/Source/WebKit/chromium/public/WebURLError.h" |
| 11 #include "third_party/WebKit/Source/WebKit/chromium/public/WebURLLoader.h" | 12 #include "third_party/WebKit/Source/WebKit/chromium/public/WebURLLoader.h" |
| 12 #include "third_party/WebKit/Source/WebKit/chromium/public/WebURLRequest.h" | 13 #include "third_party/WebKit/Source/WebKit/chromium/public/WebURLRequest.h" |
| 13 #include "third_party/WebKit/Source/WebKit/chromium/public/WebURLResponse.h" | 14 #include "third_party/WebKit/Source/WebKit/chromium/public/WebURLResponse.h" |
| 14 #include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h" | 15 #include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h" |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 57 for (int i = 0; i < kDataSize; ++i) { | 58 for (int i = 0; i < kDataSize; ++i) { |
| 58 data_[i] = i; | 59 data_[i] = i; |
| 59 } | 60 } |
| 60 } | 61 } |
| 61 | 62 |
| 62 virtual ~SimpleDataSourceTest() { | 63 virtual ~SimpleDataSourceTest() { |
| 63 view_->close(); | 64 view_->close(); |
| 64 } | 65 } |
| 65 | 66 |
| 66 void InitializeDataSource(const char* url, | 67 void InitializeDataSource(const char* url, |
| 67 media::MockStatusCallback* callback) { | 68 const media::PipelineStatusCB& callback) { |
| 68 gurl_ = GURL(url); | 69 gurl_ = GURL(url); |
| 69 | 70 |
| 70 url_loader_ = new NiceMock<MockWebURLLoader>(); | 71 url_loader_ = new NiceMock<MockWebURLLoader>(); |
| 71 | 72 |
| 72 data_source_ = new SimpleDataSource(MessageLoop::current(), | 73 data_source_ = new SimpleDataSource(MessageLoop::current(), |
| 73 view_->mainFrame()); | 74 view_->mainFrame()); |
| 74 | 75 |
| 75 // There is no need to provide a message loop to data source. | 76 // There is no need to provide a message loop to data source. |
| 76 data_source_->set_host(&host_); | 77 data_source_->set_host(&host_); |
| 77 data_source_->SetURLLoaderForTest(url_loader_); | 78 data_source_->SetURLLoaderForTest(url_loader_); |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 157 MockWebFrameClient client_; | 158 MockWebFrameClient client_; |
| 158 WebView* view_; | 159 WebView* view_; |
| 159 | 160 |
| 160 char data_[kDataSize]; | 161 char data_[kDataSize]; |
| 161 | 162 |
| 162 DISALLOW_COPY_AND_ASSIGN(SimpleDataSourceTest); | 163 DISALLOW_COPY_AND_ASSIGN(SimpleDataSourceTest); |
| 163 }; | 164 }; |
| 164 | 165 |
| 165 TEST_F(SimpleDataSourceTest, InitializeHTTP) { | 166 TEST_F(SimpleDataSourceTest, InitializeHTTP) { |
| 166 InitializeDataSource(kHttpUrl, | 167 InitializeDataSource(kHttpUrl, |
| 167 media::NewExpectedStatusCallback(media::PIPELINE_OK)); | 168 media::NewExpectedStatusCB(media::PIPELINE_OK)); |
| 168 RequestSucceeded(false); | 169 RequestSucceeded(false); |
| 169 DestroyDataSource(); | 170 DestroyDataSource(); |
| 170 } | 171 } |
| 171 | 172 |
| 172 TEST_F(SimpleDataSourceTest, InitializeHTTPS) { | 173 TEST_F(SimpleDataSourceTest, InitializeHTTPS) { |
| 173 InitializeDataSource(kHttpsUrl, | 174 InitializeDataSource(kHttpsUrl, |
| 174 media::NewExpectedStatusCallback(media::PIPELINE_OK)); | 175 media::NewExpectedStatusCB(media::PIPELINE_OK)); |
| 175 RequestSucceeded(false); | 176 RequestSucceeded(false); |
| 176 DestroyDataSource(); | 177 DestroyDataSource(); |
| 177 } | 178 } |
| 178 | 179 |
| 179 TEST_F(SimpleDataSourceTest, InitializeFile) { | 180 TEST_F(SimpleDataSourceTest, InitializeFile) { |
| 180 InitializeDataSource(kFileUrl, | 181 InitializeDataSource(kFileUrl, |
| 181 media::NewExpectedStatusCallback(media::PIPELINE_OK)); | 182 media::NewExpectedStatusCB(media::PIPELINE_OK)); |
| 182 RequestSucceeded(true); | 183 RequestSucceeded(true); |
| 183 DestroyDataSource(); | 184 DestroyDataSource(); |
| 184 } | 185 } |
| 185 | 186 |
| 186 TEST_F(SimpleDataSourceTest, InitializeData) { | 187 TEST_F(SimpleDataSourceTest, InitializeData) { |
| 187 url_loader_ = new NiceMock<MockWebURLLoader>(); | 188 url_loader_ = new NiceMock<MockWebURLLoader>(); |
| 188 | 189 |
| 189 data_source_ = new SimpleDataSource(MessageLoop::current(), | 190 data_source_ = new SimpleDataSource(MessageLoop::current(), |
| 190 view_->mainFrame()); | 191 view_->mainFrame()); |
| 191 // There is no need to provide a message loop to data source. | 192 // There is no need to provide a message loop to data source. |
| 192 data_source_->set_host(&host_); | 193 data_source_->set_host(&host_); |
| 193 data_source_->SetURLLoaderForTest(url_loader_); | 194 data_source_->SetURLLoaderForTest(url_loader_); |
| 194 | 195 |
| 195 EXPECT_CALL(host_, SetLoaded(true)); | 196 EXPECT_CALL(host_, SetLoaded(true)); |
| 196 EXPECT_CALL(host_, SetTotalBytes(sizeof(kDataUrlDecoded))); | 197 EXPECT_CALL(host_, SetTotalBytes(sizeof(kDataUrlDecoded))); |
| 197 EXPECT_CALL(host_, SetBufferedBytes(sizeof(kDataUrlDecoded))); | 198 EXPECT_CALL(host_, SetBufferedBytes(sizeof(kDataUrlDecoded))); |
| 198 | 199 |
| 199 data_source_->Initialize(kDataUrl, | 200 data_source_->Initialize(kDataUrl, |
| 200 media::NewExpectedStatusCallback(media::PIPELINE_OK)); | 201 media::NewExpectedStatusCB(media::PIPELINE_OK)); |
| 201 MessageLoop::current()->RunAllPending(); | 202 MessageLoop::current()->RunAllPending(); |
| 202 | 203 |
| 203 DestroyDataSource(); | 204 DestroyDataSource(); |
| 204 } | 205 } |
| 205 | 206 |
| 206 TEST_F(SimpleDataSourceTest, RequestFailed) { | 207 TEST_F(SimpleDataSourceTest, RequestFailed) { |
| 207 InitializeDataSource(kHttpUrl, | 208 InitializeDataSource(kHttpUrl, |
| 208 media::NewExpectedStatusCallback(media::PIPELINE_ERROR_NETWORK)); | 209 media::NewExpectedStatusCB(media::PIPELINE_ERROR_NETWORK)); |
| 209 RequestFailed(); | 210 RequestFailed(); |
| 210 DestroyDataSource(); | 211 DestroyDataSource(); |
| 211 } | 212 } |
| 212 | 213 |
| 214 static void OnStatusCB(bool* called, media::PipelineStatus status) { | |
| 215 *called = true; | |
| 216 } | |
| 217 | |
| 213 TEST_F(SimpleDataSourceTest, StopWhenDownloading) { | 218 TEST_F(SimpleDataSourceTest, StopWhenDownloading) { |
| 214 // The callback should be deleted, but not executed. | 219 // The callback should be deleted, but not executed. |
| 215 // TODO(scherkus): should this really be the behaviour? Seems strange... | 220 // TODO(scherkus): should this really be the behaviour? Seems strange... |
| 216 StrictMock<media::MockStatusCallback>* callback = | 221 bool wasCalled = false; |
|
scherkus (not reviewing)
2011/08/09 20:10:20
woah this ain't java here mister
was_called
acolwell GONE FROM CHROMIUM
2011/08/09 20:36:48
Done. Old habits die hard. :/
| |
| 217 new StrictMock<media::MockStatusCallback>(); | 222 InitializeDataSource(kHttpUrl, base::Bind(&OnStatusCB, &wasCalled)); |
| 218 EXPECT_CALL(*callback, Destructor()); | |
| 219 | |
| 220 InitializeDataSource(kHttpUrl, callback); | |
| 221 | 223 |
| 222 EXPECT_CALL(*url_loader_, cancel()); | 224 EXPECT_CALL(*url_loader_, cancel()); |
| 223 DestroyDataSource(); | 225 DestroyDataSource(); |
| 226 EXPECT_FALSE(wasCalled); | |
| 224 } | 227 } |
| 225 | 228 |
| 226 TEST_F(SimpleDataSourceTest, AsyncRead) { | 229 TEST_F(SimpleDataSourceTest, AsyncRead) { |
| 227 InitializeDataSource(kFileUrl, | 230 InitializeDataSource(kFileUrl, |
| 228 media::NewExpectedStatusCallback(media::PIPELINE_OK)); | 231 media::NewExpectedStatusCB(media::PIPELINE_OK)); |
| 229 RequestSucceeded(true); | 232 RequestSucceeded(true); |
| 230 AsyncRead(); | 233 AsyncRead(); |
| 231 DestroyDataSource(); | 234 DestroyDataSource(); |
| 232 } | 235 } |
| 233 | 236 |
| 234 // NOTE: This test will need to be reworked a little once | 237 // NOTE: This test will need to be reworked a little once |
| 235 // http://code.google.com/p/chromium/issues/detail?id=72578 | 238 // http://code.google.com/p/chromium/issues/detail?id=72578 |
| 236 // is fixed. | 239 // is fixed. |
| 237 TEST_F(SimpleDataSourceTest, HasSingleOrigin) { | 240 TEST_F(SimpleDataSourceTest, HasSingleOrigin) { |
| 238 // Make sure no redirect case works as expected. | 241 // Make sure no redirect case works as expected. |
| 239 InitializeDataSource(kHttpUrl, | 242 InitializeDataSource(kHttpUrl, |
| 240 media::NewExpectedStatusCallback(media::PIPELINE_OK)); | 243 media::NewExpectedStatusCB(media::PIPELINE_OK)); |
| 241 RequestSucceeded(false); | 244 RequestSucceeded(false); |
| 242 EXPECT_TRUE(data_source_->HasSingleOrigin()); | 245 EXPECT_TRUE(data_source_->HasSingleOrigin()); |
| 243 DestroyDataSource(); | 246 DestroyDataSource(); |
| 244 | 247 |
| 245 // Test redirect to the same domain. | 248 // Test redirect to the same domain. |
| 246 InitializeDataSource(kHttpUrl, | 249 InitializeDataSource(kHttpUrl, |
| 247 media::NewExpectedStatusCallback(media::PIPELINE_OK)); | 250 media::NewExpectedStatusCB(media::PIPELINE_OK)); |
| 248 Redirect(kHttpRedirectToSameDomainUrl1); | 251 Redirect(kHttpRedirectToSameDomainUrl1); |
| 249 RequestSucceeded(false); | 252 RequestSucceeded(false); |
| 250 EXPECT_TRUE(data_source_->HasSingleOrigin()); | 253 EXPECT_TRUE(data_source_->HasSingleOrigin()); |
| 251 DestroyDataSource(); | 254 DestroyDataSource(); |
| 252 | 255 |
| 253 // Test redirect twice to the same domain. | 256 // Test redirect twice to the same domain. |
| 254 InitializeDataSource(kHttpUrl, | 257 InitializeDataSource(kHttpUrl, |
| 255 media::NewExpectedStatusCallback(media::PIPELINE_OK)); | 258 media::NewExpectedStatusCB(media::PIPELINE_OK)); |
| 256 Redirect(kHttpRedirectToSameDomainUrl1); | 259 Redirect(kHttpRedirectToSameDomainUrl1); |
| 257 Redirect(kHttpRedirectToSameDomainUrl2); | 260 Redirect(kHttpRedirectToSameDomainUrl2); |
| 258 RequestSucceeded(false); | 261 RequestSucceeded(false); |
| 259 EXPECT_TRUE(data_source_->HasSingleOrigin()); | 262 EXPECT_TRUE(data_source_->HasSingleOrigin()); |
| 260 DestroyDataSource(); | 263 DestroyDataSource(); |
| 261 | 264 |
| 262 // Test redirect to a different domain. | 265 // Test redirect to a different domain. |
| 263 InitializeDataSource(kHttpUrl, | 266 InitializeDataSource(kHttpUrl, |
| 264 media::NewExpectedStatusCallback(media::PIPELINE_OK)); | 267 media::NewExpectedStatusCB(media::PIPELINE_OK)); |
| 265 Redirect(kHttpRedirectToDifferentDomainUrl1); | 268 Redirect(kHttpRedirectToDifferentDomainUrl1); |
| 266 RequestSucceeded(false); | 269 RequestSucceeded(false); |
| 267 EXPECT_FALSE(data_source_->HasSingleOrigin()); | 270 EXPECT_FALSE(data_source_->HasSingleOrigin()); |
| 268 DestroyDataSource(); | 271 DestroyDataSource(); |
| 269 | 272 |
| 270 // Test redirect to the same domain and then to a different domain. | 273 // Test redirect to the same domain and then to a different domain. |
| 271 InitializeDataSource(kHttpUrl, | 274 InitializeDataSource(kHttpUrl, |
| 272 media::NewExpectedStatusCallback(media::PIPELINE_OK)); | 275 media::NewExpectedStatusCB(media::PIPELINE_OK)); |
| 273 Redirect(kHttpRedirectToSameDomainUrl1); | 276 Redirect(kHttpRedirectToSameDomainUrl1); |
| 274 Redirect(kHttpRedirectToDifferentDomainUrl1); | 277 Redirect(kHttpRedirectToDifferentDomainUrl1); |
| 275 RequestSucceeded(false); | 278 RequestSucceeded(false); |
| 276 EXPECT_FALSE(data_source_->HasSingleOrigin()); | 279 EXPECT_FALSE(data_source_->HasSingleOrigin()); |
| 277 DestroyDataSource(); | 280 DestroyDataSource(); |
| 278 } | 281 } |
| 279 | 282 |
| 280 } // namespace webkit_glue | 283 } // namespace webkit_glue |
| OLD | NEW |