Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(297)

Side by Side Diff: webkit/media/simple_data_source_unittest.cc

Issue 8661002: Fire CanPlayThrough immediately for local and streaming media files (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase ToT Created 9 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 "base/bind.h"
6 #include "media/base/filters.h" 6 #include "media/base/filters.h"
7 #include "media/base/mock_callback.h" 7 #include "media/base/mock_callback.h"
8 #include "media/base/mock_filter_host.h" 8 #include "media/base/mock_filter_host.h"
9 #include "media/base/mock_filters.h" 9 #include "media/base/mock_filters.h"
10 #include "net/base/net_errors.h" 10 #include "net/base/net_errors.h"
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
77 view_->mainFrame()); 77 view_->mainFrame());
78 78
79 // There is no need to provide a message loop to data source. 79 // There is no need to provide a message loop to data source.
80 data_source_->set_host(&host_); 80 data_source_->set_host(&host_);
81 data_source_->SetURLLoaderForTest(url_loader_); 81 data_source_->SetURLLoaderForTest(url_loader_);
82 82
83 data_source_->Initialize(url, callback); 83 data_source_->Initialize(url, callback);
84 MessageLoop::current()->RunAllPending(); 84 MessageLoop::current()->RunAllPending();
85 } 85 }
86 86
87 void RequestSucceeded(bool is_loaded) { 87 void RequestSucceeded() {
88 WebURLResponse response(gurl_); 88 WebURLResponse response(gurl_);
89 response.setExpectedContentLength(kDataSize); 89 response.setExpectedContentLength(kDataSize);
90 90
91 data_source_->didReceiveResponse(NULL, response); 91 data_source_->didReceiveResponse(NULL, response);
92 int64 size; 92 int64 size;
93 EXPECT_TRUE(data_source_->GetSize(&size)); 93 EXPECT_TRUE(data_source_->GetSize(&size));
94 EXPECT_EQ(kDataSize, size); 94 EXPECT_EQ(kDataSize, size);
95 95
96 for (int i = 0; i < kDataSize; ++i) { 96 for (int i = 0; i < kDataSize; ++i)
97 data_source_->didReceiveData(NULL, data_ + i, 1, 1); 97 data_source_->didReceiveData(NULL, data_ + i, 1, 1);
98 }
99
100 EXPECT_CALL(host_, SetLoaded(is_loaded));
101 98
102 InSequence s; 99 InSequence s;
103 EXPECT_CALL(host_, SetTotalBytes(kDataSize)); 100 EXPECT_CALL(host_, SetTotalBytes(kDataSize));
104 EXPECT_CALL(host_, SetBufferedBytes(kDataSize)); 101 EXPECT_CALL(host_, SetBufferedBytes(kDataSize));
105 102
106 data_source_->didFinishLoading(NULL, 0); 103 data_source_->didFinishLoading(NULL, 0);
107 104
108 // Let the tasks to be executed. 105 // Let the tasks to be executed.
109 MessageLoop::current()->RunAllPending(); 106 MessageLoop::current()->RunAllPending();
110 } 107 }
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
163 WebView* view_; 160 WebView* view_;
164 161
165 char data_[kDataSize]; 162 char data_[kDataSize];
166 163
167 DISALLOW_COPY_AND_ASSIGN(SimpleDataSourceTest); 164 DISALLOW_COPY_AND_ASSIGN(SimpleDataSourceTest);
168 }; 165 };
169 166
170 TEST_F(SimpleDataSourceTest, InitializeHTTP) { 167 TEST_F(SimpleDataSourceTest, InitializeHTTP) {
171 InitializeDataSource(kHttpUrl, 168 InitializeDataSource(kHttpUrl,
172 media::NewExpectedStatusCB(media::PIPELINE_OK)); 169 media::NewExpectedStatusCB(media::PIPELINE_OK));
173 RequestSucceeded(false); 170 RequestSucceeded();
174 DestroyDataSource(); 171 DestroyDataSource();
175 } 172 }
176 173
177 TEST_F(SimpleDataSourceTest, InitializeHTTPS) { 174 TEST_F(SimpleDataSourceTest, InitializeHTTPS) {
178 InitializeDataSource(kHttpsUrl, 175 InitializeDataSource(kHttpsUrl,
179 media::NewExpectedStatusCB(media::PIPELINE_OK)); 176 media::NewExpectedStatusCB(media::PIPELINE_OK));
180 RequestSucceeded(false); 177 RequestSucceeded();
181 DestroyDataSource(); 178 DestroyDataSource();
182 } 179 }
183 180
184 TEST_F(SimpleDataSourceTest, InitializeFile) { 181 TEST_F(SimpleDataSourceTest, InitializeFile) {
185 InitializeDataSource(kFileUrl, 182 InitializeDataSource(kFileUrl,
186 media::NewExpectedStatusCB(media::PIPELINE_OK)); 183 media::NewExpectedStatusCB(media::PIPELINE_OK));
187 RequestSucceeded(true); 184 RequestSucceeded();
188 DestroyDataSource(); 185 DestroyDataSource();
189 } 186 }
190 187
191 TEST_F(SimpleDataSourceTest, InitializeData) { 188 TEST_F(SimpleDataSourceTest, InitializeData) {
192 url_loader_ = new NiceMock<MockWebURLLoader>(); 189 url_loader_ = new NiceMock<MockWebURLLoader>();
193 190
194 data_source_ = new SimpleDataSource(MessageLoop::current(), 191 data_source_ = new SimpleDataSource(MessageLoop::current(),
195 view_->mainFrame()); 192 view_->mainFrame());
196 // There is no need to provide a message loop to data source. 193 // There is no need to provide a message loop to data source.
197 data_source_->set_host(&host_); 194 data_source_->set_host(&host_);
198 data_source_->SetURLLoaderForTest(url_loader_); 195 data_source_->SetURLLoaderForTest(url_loader_);
199 196
200 EXPECT_CALL(host_, SetLoaded(true));
201 EXPECT_CALL(host_, SetTotalBytes(sizeof(kDataUrlDecoded))); 197 EXPECT_CALL(host_, SetTotalBytes(sizeof(kDataUrlDecoded)));
202 EXPECT_CALL(host_, SetBufferedBytes(sizeof(kDataUrlDecoded))); 198 EXPECT_CALL(host_, SetBufferedBytes(sizeof(kDataUrlDecoded)));
203 199
204 data_source_->Initialize(kDataUrl, 200 data_source_->Initialize(kDataUrl,
205 media::NewExpectedStatusCB(media::PIPELINE_OK)); 201 media::NewExpectedStatusCB(media::PIPELINE_OK));
206 MessageLoop::current()->RunAllPending(); 202 MessageLoop::current()->RunAllPending();
207 203
208 DestroyDataSource(); 204 DestroyDataSource();
209 } 205 }
210 206
(...skipping 15 matching lines...) Expand all
226 InitializeDataSource(kHttpUrl, base::Bind(&OnStatusCB, &was_called)); 222 InitializeDataSource(kHttpUrl, base::Bind(&OnStatusCB, &was_called));
227 223
228 EXPECT_CALL(*url_loader_, cancel()); 224 EXPECT_CALL(*url_loader_, cancel());
229 DestroyDataSource(); 225 DestroyDataSource();
230 EXPECT_FALSE(was_called); 226 EXPECT_FALSE(was_called);
231 } 227 }
232 228
233 TEST_F(SimpleDataSourceTest, AsyncRead) { 229 TEST_F(SimpleDataSourceTest, AsyncRead) {
234 InitializeDataSource(kFileUrl, 230 InitializeDataSource(kFileUrl,
235 media::NewExpectedStatusCB(media::PIPELINE_OK)); 231 media::NewExpectedStatusCB(media::PIPELINE_OK));
236 RequestSucceeded(true); 232 RequestSucceeded();
237 AsyncRead(); 233 AsyncRead();
238 DestroyDataSource(); 234 DestroyDataSource();
239 } 235 }
240 236
241 // NOTE: This test will need to be reworked a little once 237 // NOTE: This test will need to be reworked a little once
242 // http://code.google.com/p/chromium/issues/detail?id=72578 238 // http://code.google.com/p/chromium/issues/detail?id=72578
243 // is fixed. 239 // is fixed.
244 TEST_F(SimpleDataSourceTest, HasSingleOrigin) { 240 TEST_F(SimpleDataSourceTest, HasSingleOrigin) {
245 // Make sure no redirect case works as expected. 241 // Make sure no redirect case works as expected.
246 InitializeDataSource(kHttpUrl, 242 InitializeDataSource(kHttpUrl,
247 media::NewExpectedStatusCB(media::PIPELINE_OK)); 243 media::NewExpectedStatusCB(media::PIPELINE_OK));
248 RequestSucceeded(false); 244 RequestSucceeded();
249 EXPECT_TRUE(data_source_->HasSingleOrigin()); 245 EXPECT_TRUE(data_source_->HasSingleOrigin());
250 DestroyDataSource(); 246 DestroyDataSource();
251 247
252 // Test redirect to the same domain. 248 // Test redirect to the same domain.
253 InitializeDataSource(kHttpUrl, 249 InitializeDataSource(kHttpUrl,
254 media::NewExpectedStatusCB(media::PIPELINE_OK)); 250 media::NewExpectedStatusCB(media::PIPELINE_OK));
255 Redirect(kHttpRedirectToSameDomainUrl1); 251 Redirect(kHttpRedirectToSameDomainUrl1);
256 RequestSucceeded(false); 252 RequestSucceeded();
257 EXPECT_TRUE(data_source_->HasSingleOrigin()); 253 EXPECT_TRUE(data_source_->HasSingleOrigin());
258 DestroyDataSource(); 254 DestroyDataSource();
259 255
260 // Test redirect twice to the same domain. 256 // Test redirect twice to the same domain.
261 InitializeDataSource(kHttpUrl, 257 InitializeDataSource(kHttpUrl,
262 media::NewExpectedStatusCB(media::PIPELINE_OK)); 258 media::NewExpectedStatusCB(media::PIPELINE_OK));
263 Redirect(kHttpRedirectToSameDomainUrl1); 259 Redirect(kHttpRedirectToSameDomainUrl1);
264 Redirect(kHttpRedirectToSameDomainUrl2); 260 Redirect(kHttpRedirectToSameDomainUrl2);
265 RequestSucceeded(false); 261 RequestSucceeded();
266 EXPECT_TRUE(data_source_->HasSingleOrigin()); 262 EXPECT_TRUE(data_source_->HasSingleOrigin());
267 DestroyDataSource(); 263 DestroyDataSource();
268 264
269 // Test redirect to a different domain. 265 // Test redirect to a different domain.
270 InitializeDataSource(kHttpUrl, 266 InitializeDataSource(kHttpUrl,
271 media::NewExpectedStatusCB(media::PIPELINE_OK)); 267 media::NewExpectedStatusCB(media::PIPELINE_OK));
272 Redirect(kHttpRedirectToDifferentDomainUrl1); 268 Redirect(kHttpRedirectToDifferentDomainUrl1);
273 RequestSucceeded(false); 269 RequestSucceeded();
274 EXPECT_FALSE(data_source_->HasSingleOrigin()); 270 EXPECT_FALSE(data_source_->HasSingleOrigin());
275 DestroyDataSource(); 271 DestroyDataSource();
276 272
277 // 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.
278 InitializeDataSource(kHttpUrl, 274 InitializeDataSource(kHttpUrl,
279 media::NewExpectedStatusCB(media::PIPELINE_OK)); 275 media::NewExpectedStatusCB(media::PIPELINE_OK));
280 Redirect(kHttpRedirectToSameDomainUrl1); 276 Redirect(kHttpRedirectToSameDomainUrl1);
281 Redirect(kHttpRedirectToDifferentDomainUrl1); 277 Redirect(kHttpRedirectToDifferentDomainUrl1);
282 RequestSucceeded(false); 278 RequestSucceeded();
283 EXPECT_FALSE(data_source_->HasSingleOrigin()); 279 EXPECT_FALSE(data_source_->HasSingleOrigin());
284 DestroyDataSource(); 280 DestroyDataSource();
285 } 281 }
286 282
287 } // namespace webkit_media 283 } // namespace webkit_media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698