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

Side by Side Diff: Source/web/WebMediaPlayerClientImpl.cpp

Issue 192013002: Move deferred loading logic from WebMediaPlayerClientImpl to HTMLMediaElement. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Clean up unnecessary logic and state. Created 6 years, 9 months 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) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 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 "config.h" 5 #include "config.h"
6 #include "WebMediaPlayerClientImpl.h" 6 #include "WebMediaPlayerClientImpl.h"
7 7
8 #include "WebDocument.h" 8 #include "WebDocument.h"
9 #include "WebFrameClient.h" 9 #include "WebFrameClient.h"
10 #include "WebFrameImpl.h" 10 #include "WebFrameImpl.h"
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after
171 { 171 {
172 m_client->mediaPlayerRequestFullscreen(); 172 m_client->mediaPlayerRequestFullscreen();
173 } 173 }
174 174
175 void WebMediaPlayerClientImpl::requestSeek(double time) 175 void WebMediaPlayerClientImpl::requestSeek(double time)
176 { 176 {
177 m_client->mediaPlayerRequestSeek(time); 177 m_client->mediaPlayerRequestSeek(time);
178 } 178 }
179 179
180 // MediaPlayer ------------------------------------------------- 180 // MediaPlayer -------------------------------------------------
181 181 void WebMediaPlayerClientImpl::load(WebMediaPlayer::LoadType loadType, const WTF ::String& url, WebMediaPlayer::CORSMode corsMode)
182 void WebMediaPlayerClientImpl::load(WebMediaPlayer::LoadType loadType, const WTF ::String& url)
183 { 182 {
184 m_url = KURL(ParsedURLString, url); 183 ASSERT(!m_webMediaPlayer);
185 m_loadType = loadType;
186
187 if (m_preload == MediaPlayer::None) {
188 #if ENABLE(WEB_AUDIO)
189 m_audioSourceProvider.wrap(0); // Clear weak reference to m_webMediaPlay er's WebAudioSourceProvider.
190 #endif
191 m_webMediaPlayer.clear();
192 m_delayingLoad = true;
193 } else
194 loadInternal();
195 }
196
197 void WebMediaPlayerClientImpl::loadInternal()
198 {
199 #if ENABLE(WEB_AUDIO)
200 m_audioSourceProvider.wrap(0); // Clear weak reference to m_webMediaPlayer's WebAudioSourceProvider.
201 #endif
202 184
203 // FIXME: Remove this cast 185 // FIXME: Remove this cast
204 LocalFrame* frame = mediaElement().document().frame(); 186 LocalFrame* frame = mediaElement().document().frame();
205 187
206 WebURL poster = m_client->mediaPlayerPosterURL(); 188 WebURL poster = m_client->mediaPlayerPosterURL();
207 189
208 // This does not actually check whether the hardware can support accelerated 190 // This does not actually check whether the hardware can support accelerated
209 // compositing, but only if the flag is set. However, this is checked lazily 191 // compositing, but only if the flag is set. However, this is checked lazily
210 // in WebViewImpl::setIsAcceleratedCompositingActive() and will fail there 192 // in WebViewImpl::setIsAcceleratedCompositingActive() and will fail there
211 // if necessary. 193 // if necessary.
212 m_needsWebLayerForVideo = frame->contentRenderer()->compositor()->hasAcceler atedCompositing(); 194 m_needsWebLayerForVideo = frame->contentRenderer()->compositor()->hasAcceler atedCompositing();
213 195
214 m_webMediaPlayer = createWebMediaPlayer(this, m_url, frame); 196 KURL kurl(ParsedURLString, url);
215 if (m_webMediaPlayer) { 197 m_webMediaPlayer = createWebMediaPlayer(this, kurl, frame);
198 if (!m_webMediaPlayer)
199 return;
200
216 #if ENABLE(WEB_AUDIO) 201 #if ENABLE(WEB_AUDIO)
217 // Make sure if we create/re-create the WebMediaPlayer that we update ou r wrapper. 202 // Make sure if we create/re-create the WebMediaPlayer that we update our wr apper.
218 m_audioSourceProvider.wrap(m_webMediaPlayer->audioSourceProvider()); 203 m_audioSourceProvider.wrap(m_webMediaPlayer->audioSourceProvider());
219 #endif 204 #endif
220 205
221 // Tell WebMediaPlayer about the poster image URL. 206 // Tell WebMediaPlayer about the poster image URL.
philipj_slow 2014/03/08 19:38:40 Re-indent this comment too? Or just remove it, it'
acolwell GONE FROM CHROMIUM 2014/03/10 21:53:31 Done.
222 m_webMediaPlayer->setPoster(poster); 207 m_webMediaPlayer->setPoster(poster);
223 208
224 // Tell WebMediaPlayer about any connected CDM (may be null). 209 // Tell WebMediaPlayer about any connected CDM (may be null).
225 m_webMediaPlayer->setContentDecryptionModule(HTMLMediaElementEncryptedMe dia::contentDecryptionModule(mediaElement())); 210 m_webMediaPlayer->setContentDecryptionModule(HTMLMediaElementEncryptedMedia: :contentDecryptionModule(mediaElement()));
226 211 m_webMediaPlayer->load(loadType, kurl, corsMode);
227 WebMediaPlayer::CORSMode corsMode = static_cast<WebMediaPlayer::CORSMode >(m_client->mediaPlayerCORSMode());
228 m_webMediaPlayer->load(m_loadType, m_url, corsMode);
229 }
230 } 212 }
231 213
232 void WebMediaPlayerClientImpl::play() 214 void WebMediaPlayerClientImpl::play()
233 { 215 {
234 if (m_webMediaPlayer) 216 if (m_webMediaPlayer)
235 m_webMediaPlayer->play(); 217 m_webMediaPlayer->play();
236 } 218 }
237 219
238 void WebMediaPlayerClientImpl::pause() 220 void WebMediaPlayerClientImpl::pause()
239 { 221 {
(...skipping 11 matching lines...) Expand all
251 { 233 {
252 if (m_webMediaPlayer) 234 if (m_webMediaPlayer)
253 m_webMediaPlayer->exitFullscreen(); 235 m_webMediaPlayer->exitFullscreen();
254 } 236 }
255 237
256 bool WebMediaPlayerClientImpl::canShowFullscreenOverlay() const 238 bool WebMediaPlayerClientImpl::canShowFullscreenOverlay() const
257 { 239 {
258 return m_webMediaPlayer && m_webMediaPlayer->canEnterFullscreen(); 240 return m_webMediaPlayer && m_webMediaPlayer->canEnterFullscreen();
259 } 241 }
260 242
261 void WebMediaPlayerClientImpl::prepareToPlay()
262 {
263 if (m_delayingLoad)
264 startDelayedLoad();
265 }
266
267 IntSize WebMediaPlayerClientImpl::naturalSize() const 243 IntSize WebMediaPlayerClientImpl::naturalSize() const
268 { 244 {
269 if (m_webMediaPlayer) 245 if (m_webMediaPlayer)
270 return m_webMediaPlayer->naturalSize(); 246 return m_webMediaPlayer->naturalSize();
271 return IntSize(); 247 return IntSize();
272 } 248 }
273 249
274 bool WebMediaPlayerClientImpl::hasVideo() const 250 bool WebMediaPlayerClientImpl::hasVideo() const
275 { 251 {
276 if (m_webMediaPlayer) 252 if (m_webMediaPlayer)
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after
422 398
423 return m_webMediaPlayer->copyVideoTextureToPlatformTexture(context, texture, level, internalFormat, type, premultiplyAlpha, flipY); 399 return m_webMediaPlayer->copyVideoTextureToPlatformTexture(context, texture, level, internalFormat, type, premultiplyAlpha, flipY);
424 } 400 }
425 401
426 void WebMediaPlayerClientImpl::setPreload(MediaPlayer::Preload preload) 402 void WebMediaPlayerClientImpl::setPreload(MediaPlayer::Preload preload)
427 { 403 {
428 m_preload = preload; 404 m_preload = preload;
429 405
430 if (m_webMediaPlayer) 406 if (m_webMediaPlayer)
431 m_webMediaPlayer->setPreload(static_cast<WebMediaPlayer::Preload>(preloa d)); 407 m_webMediaPlayer->setPreload(static_cast<WebMediaPlayer::Preload>(preloa d));
432
433 if (m_delayingLoad && m_preload != MediaPlayer::None)
434 startDelayedLoad();
435 } 408 }
436 409
437 bool WebMediaPlayerClientImpl::hasSingleSecurityOrigin() const 410 bool WebMediaPlayerClientImpl::hasSingleSecurityOrigin() const
438 { 411 {
439 if (m_webMediaPlayer) 412 if (m_webMediaPlayer)
440 return m_webMediaPlayer->hasSingleSecurityOrigin(); 413 return m_webMediaPlayer->hasSingleSecurityOrigin();
441 return false; 414 return false;
442 } 415 }
443 416
444 bool WebMediaPlayerClientImpl::didPassCORSAccessCheck() const 417 bool WebMediaPlayerClientImpl::didPassCORSAccessCheck() const
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
536 // the texture based bitmap will be readbacked to system memory then draw on to the canvas. 509 // the texture based bitmap will be readbacked to system memory then draw on to the canvas.
537 SkRect dest; 510 SkRect dest;
538 dest.set(rect.x(), rect.y(), rect.x() + rect.width(), rect.y() + rect.height ()); 511 dest.set(rect.x(), rect.y(), rect.x() + rect.width(), rect.y() + rect.height ());
539 SkPaint paint; 512 SkPaint paint;
540 paint.setAlpha(alpha); 513 paint.setAlpha(alpha);
541 // It is not necessary to pass the dest into the drawBitmap call since all t he context have been set up before calling paintCurrentFrameInContext. 514 // It is not necessary to pass the dest into the drawBitmap call since all t he context have been set up before calling paintCurrentFrameInContext.
542 canvas->drawBitmapRect(m_bitmap, NULL, dest, &paint); 515 canvas->drawBitmapRect(m_bitmap, NULL, dest, &paint);
543 } 516 }
544 #endif 517 #endif
545 518
546 void WebMediaPlayerClientImpl::startDelayedLoad()
547 {
548 ASSERT(m_delayingLoad);
549 ASSERT(!m_webMediaPlayer);
550
551 m_delayingLoad = false;
552
553 loadInternal();
554 }
555
556 WebMediaPlayerClientImpl::WebMediaPlayerClientImpl(MediaPlayerClient* client) 519 WebMediaPlayerClientImpl::WebMediaPlayerClientImpl(MediaPlayerClient* client)
557 : m_client(client) 520 : m_client(client)
558 , m_delayingLoad(false)
559 , m_preload(MediaPlayer::Auto) 521 , m_preload(MediaPlayer::Auto)
560 , m_needsWebLayerForVideo(false) 522 , m_needsWebLayerForVideo(false)
561 , m_volume(1.0) 523 , m_volume(1.0)
562 , m_muted(false) 524 , m_muted(false)
563 , m_rate(1.0) 525 , m_rate(1.0)
564 , m_loadType(WebMediaPlayer::LoadTypeURL)
565 { 526 {
566 ASSERT(m_client); 527 ASSERT(m_client);
567 } 528 }
568 529
569 #if ENABLE(WEB_AUDIO) 530 #if ENABLE(WEB_AUDIO)
570 void WebMediaPlayerClientImpl::AudioSourceProviderImpl::wrap(WebAudioSourceProvi der* provider) 531 void WebMediaPlayerClientImpl::AudioSourceProviderImpl::wrap(WebAudioSourceProvi der* provider)
571 { 532 {
572 MutexLocker locker(provideInputLock); 533 MutexLocker locker(provideInputLock);
573 534
574 if (m_webAudioSourceProvider && provider != m_webAudioSourceProvider) 535 if (m_webAudioSourceProvider && provider != m_webAudioSourceProvider)
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
620 } 581 }
621 582
622 WebCore::HTMLMediaElement& WebMediaPlayerClientImpl::mediaElement() const 583 WebCore::HTMLMediaElement& WebMediaPlayerClientImpl::mediaElement() const
623 { 584 {
624 return *static_cast<HTMLMediaElement*>(m_client); 585 return *static_cast<HTMLMediaElement*>(m_client);
625 } 586 }
626 587
627 #endif 588 #endif
628 589
629 } // namespace blink 590 } // namespace blink
OLDNEW
« Source/core/html/HTMLMediaElement.cpp ('K') | « Source/web/WebMediaPlayerClientImpl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698