OLD | NEW |
---|---|
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/renderer/media/webmediaplayer_impl.h" | 5 #include "webkit/renderer/media/webmediaplayer_impl.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <limits> | 8 #include <limits> |
9 #include <string> | 9 #include <string> |
10 #include <vector> | 10 #include <vector> |
(...skipping 29 matching lines...) Expand all Loading... | |
40 #include "third_party/WebKit/public/platform/WebString.h" | 40 #include "third_party/WebKit/public/platform/WebString.h" |
41 #include "third_party/WebKit/public/platform/WebURL.h" | 41 #include "third_party/WebKit/public/platform/WebURL.h" |
42 #include "third_party/WebKit/public/web/WebMediaSource.h" | 42 #include "third_party/WebKit/public/web/WebMediaSource.h" |
43 #include "third_party/WebKit/public/web/WebRuntimeFeatures.h" | 43 #include "third_party/WebKit/public/web/WebRuntimeFeatures.h" |
44 #include "third_party/WebKit/public/web/WebView.h" | 44 #include "third_party/WebKit/public/web/WebView.h" |
45 #include "v8/include/v8.h" | 45 #include "v8/include/v8.h" |
46 #include "webkit/plugins/ppapi/ppapi_webplugin_impl.h" | 46 #include "webkit/plugins/ppapi/ppapi_webplugin_impl.h" |
47 #include "webkit/renderer/compositor_bindings/web_layer_impl.h" | 47 #include "webkit/renderer/compositor_bindings/web_layer_impl.h" |
48 #include "webkit/renderer/media/buffered_data_source.h" | 48 #include "webkit/renderer/media/buffered_data_source.h" |
49 #include "webkit/renderer/media/crypto/key_systems.h" | 49 #include "webkit/renderer/media/crypto/key_systems.h" |
50 #include "webkit/renderer/media/media_load_delegate.h" | |
50 #include "webkit/renderer/media/texttrack_impl.h" | 51 #include "webkit/renderer/media/texttrack_impl.h" |
51 #include "webkit/renderer/media/webaudiosourceprovider_impl.h" | 52 #include "webkit/renderer/media/webaudiosourceprovider_impl.h" |
52 #include "webkit/renderer/media/webinbandtexttrack_impl.h" | 53 #include "webkit/renderer/media/webinbandtexttrack_impl.h" |
53 #include "webkit/renderer/media/webmediaplayer_delegate.h" | 54 #include "webkit/renderer/media/webmediaplayer_delegate.h" |
54 #include "webkit/renderer/media/webmediaplayer_params.h" | 55 #include "webkit/renderer/media/webmediaplayer_params.h" |
55 #include "webkit/renderer/media/webmediaplayer_util.h" | 56 #include "webkit/renderer/media/webmediaplayer_util.h" |
56 #include "webkit/renderer/media/webmediasourceclient_impl.h" | 57 #include "webkit/renderer/media/webmediasourceclient_impl.h" |
57 | 58 |
58 using WebKit::WebCanvas; | 59 using WebKit::WebCanvas; |
59 using WebKit::WebMediaPlayer; | 60 using WebKit::WebMediaPlayer; |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
132 ready_state_(WebMediaPlayer::ReadyStateHaveNothing), | 133 ready_state_(WebMediaPlayer::ReadyStateHaveNothing), |
133 main_loop_(base::MessageLoopProxy::current()), | 134 main_loop_(base::MessageLoopProxy::current()), |
134 media_loop_(params.message_loop_proxy()), | 135 media_loop_(params.message_loop_proxy()), |
135 paused_(true), | 136 paused_(true), |
136 seeking_(false), | 137 seeking_(false), |
137 playback_rate_(0.0f), | 138 playback_rate_(0.0f), |
138 pending_seek_(false), | 139 pending_seek_(false), |
139 pending_seek_seconds_(0.0f), | 140 pending_seek_seconds_(0.0f), |
140 client_(client), | 141 client_(client), |
141 delegate_(delegate), | 142 delegate_(delegate), |
143 load_delegate_(params.load_delegate()), | |
142 media_log_(params.media_log()), | 144 media_log_(params.media_log()), |
143 accelerated_compositing_reported_(false), | 145 accelerated_compositing_reported_(false), |
144 incremented_externally_allocated_memory_(false), | 146 incremented_externally_allocated_memory_(false), |
145 gpu_factories_(params.gpu_factories()), | 147 gpu_factories_(params.gpu_factories()), |
146 is_local_source_(false), | 148 is_local_source_(false), |
147 supports_save_(true), | 149 supports_save_(true), |
148 starting_(false), | 150 starting_(false), |
149 chunk_demuxer_(NULL), | 151 chunk_demuxer_(NULL), |
150 pending_repaint_(false), | 152 pending_repaint_(false), |
151 pending_size_change_(false), | 153 pending_size_change_(false), |
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
235 if (url.SchemeIs("file")) return kFileURLScheme; | 237 if (url.SchemeIs("file")) return kFileURLScheme; |
236 if (url.SchemeIs("blob")) return kBlobURLScheme; | 238 if (url.SchemeIs("blob")) return kBlobURLScheme; |
237 if (url.SchemeIs("data")) return kDataURLScheme; | 239 if (url.SchemeIs("data")) return kDataURLScheme; |
238 if (url.SchemeIs("filesystem")) return kFileSystemScheme; | 240 if (url.SchemeIs("filesystem")) return kFileSystemScheme; |
239 return kUnknownURLScheme; | 241 return kUnknownURLScheme; |
240 } | 242 } |
241 | 243 |
242 } // anonymous namespace | 244 } // anonymous namespace |
243 | 245 |
244 void WebMediaPlayerImpl::load(const WebKit::WebURL& url, CORSMode cors_mode) { | 246 void WebMediaPlayerImpl::load(const WebKit::WebURL& url, CORSMode cors_mode) { |
245 DCHECK(main_loop_->BelongsToCurrentThread()); | 247 load(url, NULL, cors_mode); |
ddorwin
2013/06/29 01:38:30
overloading not allowed?
scherkus (not reviewing)
2013/07/02 01:46:23
this is an interface defined in WK
AFAIK it's OK
| |
246 | |
247 LoadSetup(url); | |
248 | |
249 // Otherwise it's a regular request which requires resolving the URL first. | |
250 GURL gurl(url); | |
251 data_source_.reset(new BufferedDataSource( | |
252 main_loop_, | |
253 frame_, | |
254 media_log_.get(), | |
255 base::Bind(&WebMediaPlayerImpl::NotifyDownloading, AsWeakPtr()))); | |
256 data_source_->Initialize( | |
257 url, static_cast<BufferedResourceLoader::CORSMode>(cors_mode), | |
258 base::Bind( | |
259 &WebMediaPlayerImpl::DataSourceInitialized, | |
260 AsWeakPtr(), gurl)); | |
261 | |
262 is_local_source_ = !gurl.SchemeIs("http") && !gurl.SchemeIs("https"); | |
263 } | 248 } |
264 | 249 |
265 void WebMediaPlayerImpl::load(const WebKit::WebURL& url, | 250 void WebMediaPlayerImpl::load(const WebKit::WebURL& url, |
266 WebKit::WebMediaSource* media_source, | 251 WebKit::WebMediaSource* media_source, |
ddorwin
2013/06/29 01:38:30
nit: Should be last parameter? (Fine to change lat
scherkus (not reviewing)
2013/07/02 01:46:23
ditto
| |
267 CORSMode cors_mode) { | 252 CORSMode cors_mode) { |
268 LoadSetup(url); | 253 if (load_delegate_) { |
269 | 254 load_delegate_->DeferLoad(base::Bind( |
270 // Media source pipelines can start immediately. | 255 &WebMediaPlayerImpl::ContinueLoad, AsWeakPtr(), url, media_source, |
271 supports_save_ = false; | 256 cors_mode)); |
272 StartPipeline(media_source); | 257 return; |
258 } | |
259 ContinueLoad(url, media_source, cors_mode); | |
273 } | 260 } |
274 | 261 |
275 void WebMediaPlayerImpl::LoadSetup(const WebKit::WebURL& url) { | 262 void WebMediaPlayerImpl::ContinueLoad(const WebKit::WebURL& url, |
263 WebKit::WebMediaSource* media_source, | |
264 CORSMode cors_mode) { | |
265 DCHECK(main_loop_->BelongsToCurrentThread()); | |
266 | |
276 GURL gurl(url); | 267 GURL gurl(url); |
277 UMA_HISTOGRAM_ENUMERATION("Media.URLScheme", URLScheme(gurl), kMaxURLScheme); | 268 UMA_HISTOGRAM_ENUMERATION("Media.URLScheme", URLScheme(gurl), kMaxURLScheme); |
278 | 269 |
279 // Set subresource URL for crash reporting. | 270 // Set subresource URL for crash reporting. |
280 base::debug::SetCrashKeyValue("subresource_url", gurl.spec()); | 271 base::debug::SetCrashKeyValue("subresource_url", gurl.spec()); |
281 | 272 |
282 // Handle any volume/preload changes that occurred before load(). | 273 // Handle any volume/preload changes that occurred before load(). |
283 setVolume(GetClient()->volume()); | 274 setVolume(GetClient()->volume()); |
284 setPreload(GetClient()->preload()); | 275 setPreload(GetClient()->preload()); |
285 | 276 |
286 SetNetworkState(WebMediaPlayer::NetworkStateLoading); | 277 SetNetworkState(WebMediaPlayer::NetworkStateLoading); |
287 SetReadyState(WebMediaPlayer::ReadyStateHaveNothing); | 278 SetReadyState(WebMediaPlayer::ReadyStateHaveNothing); |
288 media_log_->AddEvent(media_log_->CreateLoadEvent(url.spec())); | 279 media_log_->AddEvent(media_log_->CreateLoadEvent(url.spec())); |
280 | |
281 // Media source pipelines can start immediately. | |
282 if (media_source) { | |
283 supports_save_ = false; | |
284 StartPipeline(media_source); | |
285 return; | |
286 } | |
287 | |
288 // Otherwise it's a regular request which requires resolving the URL first. | |
289 data_source_.reset(new BufferedDataSource( | |
290 main_loop_, | |
291 frame_, | |
292 media_log_.get(), | |
293 base::Bind(&WebMediaPlayerImpl::NotifyDownloading, AsWeakPtr()))); | |
294 data_source_->Initialize( | |
295 url, static_cast<BufferedResourceLoader::CORSMode>(cors_mode), | |
296 base::Bind( | |
297 &WebMediaPlayerImpl::DataSourceInitialized, | |
298 AsWeakPtr(), gurl)); | |
299 | |
300 is_local_source_ = !gurl.SchemeIs("http") && !gurl.SchemeIs("https"); | |
289 } | 301 } |
290 | 302 |
291 void WebMediaPlayerImpl::play() { | 303 void WebMediaPlayerImpl::play() { |
292 DCHECK(main_loop_->BelongsToCurrentThread()); | 304 DCHECK(main_loop_->BelongsToCurrentThread()); |
293 | 305 |
294 paused_ = false; | 306 paused_ = false; |
295 pipeline_->SetPlaybackRate(playback_rate_); | 307 pipeline_->SetPlaybackRate(playback_rate_); |
296 | 308 |
297 media_log_->AddEvent(media_log_->CreateEvent(media::MediaLogEvent::PLAY)); | 309 media_log_->AddEvent(media_log_->CreateEvent(media::MediaLogEvent::PLAY)); |
298 | 310 |
(...skipping 918 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1217 | 1229 |
1218 if (pending_repaint_) | 1230 if (pending_repaint_) |
1219 return; | 1231 return; |
1220 | 1232 |
1221 pending_repaint_ = true; | 1233 pending_repaint_ = true; |
1222 main_loop_->PostTask(FROM_HERE, base::Bind( | 1234 main_loop_->PostTask(FROM_HERE, base::Bind( |
1223 &WebMediaPlayerImpl::Repaint, AsWeakPtr())); | 1235 &WebMediaPlayerImpl::Repaint, AsWeakPtr())); |
1224 } | 1236 } |
1225 | 1237 |
1226 } // namespace webkit_media | 1238 } // namespace webkit_media |
OLD | NEW |