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

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

Issue 8661002: Fire CanPlayThrough immediately for local and streaming media files (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix media/event-attributes.html 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 "webkit/media/simple_data_source.h" 5 #include "webkit/media/simple_data_source.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/message_loop.h" 8 #include "base/message_loop.h"
9 #include "base/process_util.h" 9 #include "base/process_util.h"
10 #include "media/base/filter_host.h" 10 #include "media/base/filter_host.h"
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
42 &NewSimpleDataSource, build_observer); 42 &NewSimpleDataSource, build_observer);
43 } 43 }
44 44
45 SimpleDataSource::SimpleDataSource( 45 SimpleDataSource::SimpleDataSource(
46 MessageLoop* render_loop, 46 MessageLoop* render_loop,
47 WebKit::WebFrame* frame) 47 WebKit::WebFrame* frame)
48 : render_loop_(render_loop), 48 : render_loop_(render_loop),
49 frame_(frame), 49 frame_(frame),
50 size_(-1), 50 size_(-1),
51 single_origin_(true), 51 single_origin_(true),
52 local_source_(false),
52 state_(UNINITIALIZED), 53 state_(UNINITIALIZED),
53 keep_test_loader_(false) { 54 keep_test_loader_(false) {
54 DCHECK(render_loop); 55 DCHECK(render_loop);
55 } 56 }
56 57
57 SimpleDataSource::~SimpleDataSource() { 58 SimpleDataSource::~SimpleDataSource() {
58 base::AutoLock auto_lock(lock_); 59 base::AutoLock auto_lock(lock_);
59 DCHECK(state_ == UNINITIALIZED || state_ == STOPPED); 60 DCHECK(state_ == UNINITIALIZED || state_ == STOPPED);
60 } 61 }
61 62
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
93 state_ = INITIALIZING; 94 state_ = INITIALIZING;
94 initialize_cb_ = callback; 95 initialize_cb_ = callback;
95 96
96 // Validate the URL. 97 // Validate the URL.
97 url_ = GURL(url); 98 url_ = GURL(url);
98 if (!url_.is_valid()) { 99 if (!url_.is_valid()) {
99 DoneInitialization_Locked(false); 100 DoneInitialization_Locked(false);
100 return; 101 return;
101 } 102 }
102 103
104 // If scheme is file or data, it is a local source.
105 local_source_ = url_.SchemeIsFile() || url_.SchemeIs(kDataScheme);
106
103 // Post a task to the render thread to start loading the resource. 107 // Post a task to the render thread to start loading the resource.
104 render_loop_->PostTask(FROM_HERE, 108 render_loop_->PostTask(FROM_HERE,
105 base::Bind(&SimpleDataSource::StartTask, this)); 109 base::Bind(&SimpleDataSource::StartTask, this));
106 } 110 }
107 } 111 }
108 112
109 void SimpleDataSource::CancelInitialize() { 113 void SimpleDataSource::CancelInitialize() {
110 base::AutoLock auto_lock(lock_); 114 base::AutoLock auto_lock(lock_);
111 DCHECK(!initialize_cb_.is_null()); 115 DCHECK(!initialize_cb_.is_null());
112 state_ = STOPPED; 116 state_ = STOPPED;
(...skipping 26 matching lines...) Expand all
139 bool SimpleDataSource::IsStreaming() { 143 bool SimpleDataSource::IsStreaming() {
140 return false; 144 return false;
141 } 145 }
142 146
143 void SimpleDataSource::SetPreload(media::Preload preload) { 147 void SimpleDataSource::SetPreload(media::Preload preload) {
144 } 148 }
145 149
146 void SimpleDataSource::SetBitrate(int bitrate) { 150 void SimpleDataSource::SetBitrate(int bitrate) {
147 } 151 }
148 152
153 bool SimpleDataSource::IsLocalSource() {
154 return local_source_;
155 }
156
149 void SimpleDataSource::SetURLLoaderForTest(WebKit::WebURLLoader* mock_loader) { 157 void SimpleDataSource::SetURLLoaderForTest(WebKit::WebURLLoader* mock_loader) {
150 url_loader_.reset(mock_loader); 158 url_loader_.reset(mock_loader);
151 keep_test_loader_ = true; 159 keep_test_loader_ = true;
152 } 160 }
153 161
154 void SimpleDataSource::willSendRequest( 162 void SimpleDataSource::willSendRequest(
155 WebKit::WebURLLoader* loader, 163 WebKit::WebURLLoader* loader,
156 WebKit::WebURLRequest& newRequest, 164 WebKit::WebURLRequest& newRequest,
157 const WebKit::WebURLResponse& redirectResponse) { 165 const WebKit::WebURLResponse& redirectResponse) {
158 DCHECK(MessageLoop::current() == render_loop_); 166 DCHECK(MessageLoop::current() == render_loop_);
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after
345 } 353 }
346 354
347 initialize_cb_.Run(status); 355 initialize_cb_.Run(status);
348 initialize_cb_.Reset(); 356 initialize_cb_.Reset();
349 } 357 }
350 358
351 void SimpleDataSource::UpdateHostState() { 359 void SimpleDataSource::UpdateHostState() {
352 if (host()) { 360 if (host()) {
353 host()->SetTotalBytes(size_); 361 host()->SetTotalBytes(size_);
354 host()->SetBufferedBytes(size_); 362 host()->SetBufferedBytes(size_);
355 // If scheme is file or data, say we are loaded.
356 host()->SetLoaded(url_.SchemeIsFile() || url_.SchemeIs(kDataScheme));
357 } 363 }
358 } 364 }
359 365
360 } // namespace webkit_media 366 } // namespace webkit_media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698