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

Side by Side Diff: Source/core/html/HTMLMediaElement.cpp

Issue 1306613002: Keep auxilliary media objects on the heap always. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 5 years, 4 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
« no previous file with comments | « Source/core/html/HTMLMediaElement.h ('k') | Source/core/html/HTMLMediaSource.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012, 2013 Apple Inc. All rights reserved. 2 * Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012, 2013 Apple Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
(...skipping 635 matching lines...) Expand 10 before | Expand all | Expand 10 after
646 if (m_pendingActionFlags & LoadMediaResource) { 646 if (m_pendingActionFlags & LoadMediaResource) {
647 if (m_loadState == LoadingFromSourceElement) 647 if (m_loadState == LoadingFromSourceElement)
648 loadNextSourceChild(); 648 loadNextSourceChild();
649 else 649 else
650 loadInternal(); 650 loadInternal();
651 } 651 }
652 652
653 m_pendingActionFlags = 0; 653 m_pendingActionFlags = 0;
654 } 654 }
655 655
656 PassRefPtrWillBeRawPtr<MediaError> HTMLMediaElement::error() const 656 MediaError* HTMLMediaElement::error() const
657 { 657 {
658 return m_error; 658 return m_error;
659 } 659 }
660 660
661 void HTMLMediaElement::setSrc(const AtomicString& url) 661 void HTMLMediaElement::setSrc(const AtomicString& url)
662 { 662 {
663 setAttribute(srcAttr, url); 663 setAttribute(srcAttr, url);
664 } 664 }
665 665
666 HTMLMediaElement::NetworkState HTMLMediaElement::networkState() const 666 HTMLMediaElement::NetworkState HTMLMediaElement::networkState() const
(...skipping 612 matching lines...) Expand 10 before | Expand all | Expand 10 after
1279 1279
1280 // 9 - Abort these steps. Until the load() method is invoked or the src attr ibute is changed, 1280 // 9 - Abort these steps. Until the load() method is invoked or the src attr ibute is changed,
1281 // the element won't attempt to load another resource. 1281 // the element won't attempt to load another resource.
1282 1282
1283 updateDisplayState(); 1283 updateDisplayState();
1284 1284
1285 if (layoutObject()) 1285 if (layoutObject())
1286 layoutObject()->updateFromElement(); 1286 layoutObject()->updateFromElement();
1287 } 1287 }
1288 1288
1289 void HTMLMediaElement::mediaEngineError(PassRefPtrWillBeRawPtr<MediaError> err) 1289 void HTMLMediaElement::mediaEngineError(MediaError* err)
1290 { 1290 {
1291 ASSERT(m_readyState >= HAVE_METADATA); 1291 ASSERT(m_readyState >= HAVE_METADATA);
1292 WTF_LOG(Media, "HTMLMediaElement::mediaEngineError(%p, %d)", this, static_ca st<int>(err->code())); 1292 WTF_LOG(Media, "HTMLMediaElement::mediaEngineError(%p, %d)", this, static_ca st<int>(err->code()));
1293 1293
1294 // 1 - The user agent should cancel the fetching process. 1294 // 1 - The user agent should cancel the fetching process.
1295 stopPeriodicTimers(); 1295 stopPeriodicTimers();
1296 m_loadState = WaitingForSource; 1296 m_loadState = WaitingForSource;
1297 1297
1298 // 2 - Set the error attribute to a new MediaError object whose code attribu te is 1298 // 2 - Set the error attribute to a new MediaError object whose code attribu te is
1299 // set to MEDIA_ERR_NETWORK/MEDIA_ERR_DECODE. 1299 // set to MEDIA_ERR_NETWORK/MEDIA_ERR_DECODE.
(...skipping 365 matching lines...) Expand 10 before | Expand all | Expand 10 after
1665 double mediaTime = webMediaPlayer()->mediaTimeForTimeValue(time); 1665 double mediaTime = webMediaPlayer()->mediaTimeForTimeValue(time);
1666 if (time != mediaTime) { 1666 if (time != mediaTime) {
1667 WTF_LOG(Media, "HTMLMediaElement::seek(%p, %f) - media timeline equivale nt is %f", this, time, mediaTime); 1667 WTF_LOG(Media, "HTMLMediaElement::seek(%p, %f) - media timeline equivale nt is %f", this, time, mediaTime);
1668 time = mediaTime; 1668 time = mediaTime;
1669 } 1669 }
1670 1670
1671 // 8 - If the (possibly now changed) new playback position is not in one of the ranges given in the 1671 // 8 - If the (possibly now changed) new playback position is not in one of the ranges given in the
1672 // seekable attribute, then let it be the position in one of the ranges give n in the seekable attribute 1672 // seekable attribute, then let it be the position in one of the ranges give n in the seekable attribute
1673 // that is the nearest to the new playback position. ... If there are no ran ges given in the seekable 1673 // that is the nearest to the new playback position. ... If there are no ran ges given in the seekable
1674 // attribute then set the seeking IDL attribute to false and abort these ste ps. 1674 // attribute then set the seeking IDL attribute to false and abort these ste ps.
1675 RefPtrWillBeRawPtr<TimeRanges> seekableRanges = seekable(); 1675 TimeRanges* seekableRanges = seekable();
1676 1676
1677 if (!seekableRanges->length()) { 1677 if (!seekableRanges->length()) {
1678 m_seeking = false; 1678 m_seeking = false;
1679 return; 1679 return;
1680 } 1680 }
1681 time = seekableRanges->nearest(time, now); 1681 time = seekableRanges->nearest(time, now);
1682 1682
1683 if (m_playing && m_lastSeekTime < now) 1683 if (m_playing && m_lastSeekTime < now)
1684 addPlayedRange(m_lastSeekTime, now); 1684 addPlayedRange(m_lastSeekTime, now);
1685 1685
(...skipping 1172 matching lines...) Expand 10 before | Expand all | Expand 10 after
2858 WTF_LOG(Media, "HTMLMediaElement::mediaPlayerSizeChanged(%p)", this); 2858 WTF_LOG(Media, "HTMLMediaElement::mediaPlayerSizeChanged(%p)", this);
2859 2859
2860 ASSERT(hasVideo()); // "resize" makes no sense absent video. 2860 ASSERT(hasVideo()); // "resize" makes no sense absent video.
2861 if (m_readyState > HAVE_NOTHING && isHTMLVideoElement()) 2861 if (m_readyState > HAVE_NOTHING && isHTMLVideoElement())
2862 scheduleEvent(EventTypeNames::resize); 2862 scheduleEvent(EventTypeNames::resize);
2863 2863
2864 if (layoutObject()) 2864 if (layoutObject())
2865 layoutObject()->updateFromElement(); 2865 layoutObject()->updateFromElement();
2866 } 2866 }
2867 2867
2868 PassRefPtrWillBeRawPtr<TimeRanges> HTMLMediaElement::buffered() const 2868 TimeRanges* HTMLMediaElement::buffered() const
2869 { 2869 {
2870 if (m_mediaSource) 2870 if (m_mediaSource)
2871 return m_mediaSource->buffered(); 2871 return m_mediaSource->buffered();
2872 2872
2873 if (!webMediaPlayer()) 2873 if (!webMediaPlayer())
2874 return TimeRanges::create(); 2874 return TimeRanges::create();
2875 2875
2876 return TimeRanges::create(webMediaPlayer()->buffered()); 2876 return TimeRanges::create(webMediaPlayer()->buffered());
2877 } 2877 }
2878 2878
2879 PassRefPtrWillBeRawPtr<TimeRanges> HTMLMediaElement::played() 2879 TimeRanges* HTMLMediaElement::played()
2880 { 2880 {
2881 if (m_playing) { 2881 if (m_playing) {
2882 double time = currentTime(); 2882 double time = currentTime();
2883 if (time > m_lastSeekTime) 2883 if (time > m_lastSeekTime)
2884 addPlayedRange(m_lastSeekTime, time); 2884 addPlayedRange(m_lastSeekTime, time);
2885 } 2885 }
2886 2886
2887 if (!m_playedTimeRanges) 2887 if (!m_playedTimeRanges)
2888 m_playedTimeRanges = TimeRanges::create(); 2888 m_playedTimeRanges = TimeRanges::create();
2889 2889
2890 return m_playedTimeRanges->copy(); 2890 return m_playedTimeRanges->copy();
2891 } 2891 }
2892 2892
2893 PassRefPtrWillBeRawPtr<TimeRanges> HTMLMediaElement::seekable() const 2893 TimeRanges* HTMLMediaElement::seekable() const
2894 { 2894 {
2895 if (!webMediaPlayer()) 2895 if (!webMediaPlayer())
2896 return TimeRanges::create(); 2896 return TimeRanges::create();
2897 2897
2898 if (m_mediaSource) 2898 if (m_mediaSource)
2899 return m_mediaSource->seekable(); 2899 return m_mediaSource->seekable();
2900 2900
2901 return TimeRanges::create(webMediaPlayer()->seekable()); 2901 return TimeRanges::create(webMediaPlayer()->seekable());
2902 } 2902 }
2903 2903
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
2937 2937
2938 // or the current playback position is the earliest possible position and th e direction 2938 // or the current playback position is the earliest possible position and th e direction
2939 // of playback is backwards 2939 // of playback is backwards
2940 ASSERT(directionOfPlayback() == Backward); 2940 ASSERT(directionOfPlayback() == Backward);
2941 return now <= 0; 2941 return now <= 0;
2942 } 2942 }
2943 2943
2944 bool HTMLMediaElement::stoppedDueToErrors() const 2944 bool HTMLMediaElement::stoppedDueToErrors() const
2945 { 2945 {
2946 if (m_readyState >= HAVE_METADATA && m_error) { 2946 if (m_readyState >= HAVE_METADATA && m_error) {
2947 RefPtrWillBeRawPtr<TimeRanges> seekableRanges = seekable(); 2947 TimeRanges* seekableRanges = seekable();
2948 if (!seekableRanges->contain(currentTime())) 2948 if (!seekableRanges->contain(currentTime()))
2949 return true; 2949 return true;
2950 } 2950 }
2951 2951
2952 return false; 2952 return false;
2953 } 2953 }
2954 2954
2955 void HTMLMediaElement::updatePlayState() 2955 void HTMLMediaElement::updatePlayState()
2956 { 2956 {
2957 bool isPlaying = webMediaPlayer() && !webMediaPlayer()->paused(); 2957 bool isPlaying = webMediaPlayer() && !webMediaPlayer()->paused();
(...skipping 814 matching lines...) Expand 10 before | Expand all | Expand 10 after
3772 visitor->trace(m_client); 3772 visitor->trace(m_client);
3773 } 3773 }
3774 3774
3775 DEFINE_TRACE(HTMLMediaElement::AudioSourceProviderImpl) 3775 DEFINE_TRACE(HTMLMediaElement::AudioSourceProviderImpl)
3776 { 3776 {
3777 visitor->trace(m_client); 3777 visitor->trace(m_client);
3778 } 3778 }
3779 #endif 3779 #endif
3780 3780
3781 } 3781 }
OLDNEW
« no previous file with comments | « Source/core/html/HTMLMediaElement.h ('k') | Source/core/html/HTMLMediaSource.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698