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

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

Issue 1055503002: Eliminate MediaPlayer & MediaPlayerClient abstractions (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 5 years, 8 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
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 14 matching lines...) Expand all
25 25
26 #ifndef HTMLMediaElement_h 26 #ifndef HTMLMediaElement_h
27 #define HTMLMediaElement_h 27 #define HTMLMediaElement_h
28 28
29 #include "core/CoreExport.h" 29 #include "core/CoreExport.h"
30 #include "core/dom/ActiveDOMObject.h" 30 #include "core/dom/ActiveDOMObject.h"
31 #include "core/events/GenericEventQueue.h" 31 #include "core/events/GenericEventQueue.h"
32 #include "core/html/HTMLElement.h" 32 #include "core/html/HTMLElement.h"
33 #include "core/html/track/TextTrack.h" 33 #include "core/html/track/TextTrack.h"
34 #include "platform/Supplementable.h" 34 #include "platform/Supplementable.h"
35 #include "platform/graphics/media/MediaPlayer.h" 35 #include "platform/audio/AudioSourceProvider.h"
36 #include "public/platform/WebAudioSourceProviderClient.h"
36 #include "public/platform/WebMediaPlayerClient.h" 37 #include "public/platform/WebMediaPlayerClient.h"
37 #include "public/platform/WebMimeRegistry.h" 38 #include "public/platform/WebMimeRegistry.h"
38 39
39 namespace blink { 40 namespace blink {
40 class WebInbandTextTrack; 41 class WebInbandTextTrack;
41 class WebLayer; 42 class WebLayer;
42 } 43 }
43 44
44 namespace blink { 45 namespace blink {
45 46
(...skipping 16 matching lines...) Expand all
62 class TextTrackContainer; 63 class TextTrackContainer;
63 class TextTrackList; 64 class TextTrackList;
64 class TimeRanges; 65 class TimeRanges;
65 class URLRegistry; 66 class URLRegistry;
66 class VideoTrackList; 67 class VideoTrackList;
67 68
68 // FIXME: The inheritance from MediaPlayerClient here should be private inherita nce. 69 // FIXME: The inheritance from MediaPlayerClient here should be private inherita nce.
69 // But it can't be until the Chromium WebMediaPlayerClientImpl class is fixed so it 70 // But it can't be until the Chromium WebMediaPlayerClientImpl class is fixed so it
70 // no longer depends on typecasting a MediaPlayerClient to an HTMLMediaElement. 71 // no longer depends on typecasting a MediaPlayerClient to an HTMLMediaElement.
71 72
72 class CORE_EXPORT HTMLMediaElement : public HTMLElement, public WillBeHeapSupple mentable<HTMLMediaElement>, public MediaPlayerClient, public ActiveDOMObject { 73 class CORE_EXPORT HTMLMediaElement : public HTMLElement, public WillBeHeapSupple mentable<HTMLMediaElement>, public WebMediaPlayerClient, public ActiveDOMObject {
73 DEFINE_WRAPPERTYPEINFO(); 74 DEFINE_WRAPPERTYPEINFO();
74 WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(HTMLMediaElement); 75 WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(HTMLMediaElement);
75 public: 76 public:
76 static blink::WebMimeRegistry::SupportsType supportsType(const ContentType&, const String& keySystem = String()); 77 static blink::WebMimeRegistry::SupportsType supportsType(const ContentType&, const String& keySystem = String());
77 78
78 static void setMediaStreamRegistry(URLRegistry*); 79 static void setMediaStreamRegistry(URLRegistry*);
79 static bool isMediaStreamURL(const String& url); 80 static bool isMediaStreamURL(const String& url);
80 81
81 DECLARE_VIRTUAL_TRACE(); 82 DECLARE_VIRTUAL_TRACE();
82 #if ENABLE(WEB_AUDIO) 83 #if ENABLE(WEB_AUDIO)
83 void clearWeakMembers(Visitor*); 84 void clearWeakMembers(Visitor*);
84 #endif 85 #endif
85 blink::WebMediaPlayer* webMediaPlayer() const { return m_player ? m_player-> webMediaPlayer() : 0; } 86 blink::WebMediaPlayer* webMediaPlayer() const { return m_webMediaPlayer.get( ); }
86 87
87 virtual bool hasVideo() const { return false; } 88 virtual bool hasVideo() const { return false; }
88 bool hasAudio() const; 89 bool hasAudio() const;
89 90
90 bool supportsSave() const; 91 bool supportsSave() const;
91 92
92 blink::WebLayer* platformLayer() const; 93 blink::WebLayer* platformLayer() const;
93 94
94 enum DelayedActionType { 95 enum DelayedActionType {
95 LoadMediaResource = 1 << 0, 96 LoadMediaResource = 1 << 0,
96 LoadTextTrackResource = 1 << 1, 97 LoadTextTrackResource = 1 << 1,
97 TextTrackChangesNotification = 1 << 2 98 TextTrackChangesNotification = 1 << 2
98 }; 99 };
99 void scheduleDelayedAction(DelayedActionType); 100 void scheduleDelayedAction(DelayedActionType);
100 101
101 bool hasRemoteRoutes() const { return m_remoteRoutesAvailable; } 102 bool hasRemoteRoutes() const { return m_remoteRoutesAvailable; }
102 bool isPlayingRemotely() const { return m_playingRemotely; } 103 bool isPlayingRemotely() const { return m_playingRemotely; }
103 104
104 // error state 105 // error state
105 PassRefPtrWillBeRawPtr<MediaError> error() const; 106 PassRefPtrWillBeRawPtr<MediaError> error() const;
106 107
107 // network state 108 // network state
108 void setSrc(const AtomicString&); 109 void setSrc(const AtomicString&);
109 const KURL& currentSrc() const { return m_currentSrc; } 110 const KURL& currentSrc() const { return m_currentSrc; }
110 111
111 enum NetworkState { NETWORK_EMPTY, NETWORK_IDLE, NETWORK_LOADING, NETWORK_NO _SOURCE }; 112 enum NetworkState { NETWORK_EMPTY, NETWORK_IDLE, NETWORK_LOADING, NETWORK_NO _SOURCE };
112 NetworkState networkState() const; 113 NetworkState networkState() const;
113 114
114 String preload() const; 115 String preload() const;
115 MediaPlayer::Preload preloadType() const { return m_preload; } 116 WebMediaPlayer::Preload preloadType() const { return m_preload; }
116 void setPreload(const AtomicString&); 117 void setPreload(const AtomicString&);
117 118
118 PassRefPtrWillBeRawPtr<TimeRanges> buffered() const; 119 PassRefPtrWillBeRawPtr<TimeRanges> buffered() const;
119 void load(); 120 void load();
120 String canPlayType(const String& mimeType, const String& keySystem = String( )) const; 121 String canPlayType(const String& mimeType, const String& keySystem = String( )) const;
121 122
122 // ready state 123 // ready state
123 enum ReadyState { HAVE_NOTHING, HAVE_METADATA, HAVE_CURRENT_DATA, HAVE_FUTUR E_DATA, HAVE_ENOUGH_DATA }; 124 enum ReadyState { HAVE_NOTHING, HAVE_METADATA, HAVE_CURRENT_DATA, HAVE_FUTUR E_DATA, HAVE_ENOUGH_DATA };
124 ReadyState readyState() const; 125 ReadyState readyState() const;
125 bool seeking() const; 126 bool seeking() const;
(...skipping 18 matching lines...) Expand all
144 void pause(); 145 void pause();
145 void requestRemotePlayback(); 146 void requestRemotePlayback();
146 void requestRemotePlaybackControl(); 147 void requestRemotePlaybackControl();
147 148
148 // statistics 149 // statistics
149 unsigned webkitAudioDecodedByteCount() const; 150 unsigned webkitAudioDecodedByteCount() const;
150 unsigned webkitVideoDecodedByteCount() const; 151 unsigned webkitVideoDecodedByteCount() const;
151 152
152 // media source extensions 153 // media source extensions
153 void closeMediaSource(); 154 void closeMediaSource();
154 void durationChanged(double duration, bool requestSeek); 155 void mediaPlayerDurationChanged(double duration, bool requestSeek);
156
157 virtual void networkStateChanged() override final;
158 virtual void readyStateChanged() override final;
159 virtual void timeChanged() override final;
160 virtual void repaint() override final;
161 virtual void durationChanged() override final;
162 virtual void sizeChanged() override final;
163 virtual void playbackStateChanged() override final;
164
165 virtual void keyAdded(const WebString& keySystem, const WebString& sessionId ) override final;
166 virtual void keyError(const WebString& keySystem, const WebString& sessionId , MediaKeyErrorCode, unsigned short systemCode) override final;
167 virtual void keyMessage(const WebString& keySystem, const WebString& session Id, const unsigned char* message, unsigned messageLength, const WebURL& defaultU RL) override final;
168 virtual void encrypted(WebEncryptedMediaInitDataType, const unsigned char* i nitData, unsigned initDataLength) override final;
169 virtual void didBlockPlaybackWaitingForKey() override final;
170 virtual void didResumePlaybackBlockedForKey() override final;
171 virtual void setWebLayer(blink::WebLayer*) override final;
172 virtual blink::WebMediaPlayer::TrackId addAudioTrack(const WebString&, blink ::WebMediaPlayerClient::AudioTrackKind, const WebString&, const WebString&, bool ) override final;
173 virtual void removeAudioTrack(blink::WebMediaPlayer::TrackId) override final ;
174 virtual blink::WebMediaPlayer::TrackId addVideoTrack(const WebString&, blink ::WebMediaPlayerClient::VideoTrackKind, const WebString&, const WebString&, bool ) override final;
175 virtual void removeVideoTrack(blink::WebMediaPlayer::TrackId) override final ;
176 virtual void addTextTrack(blink::WebInbandTextTrack*) override final;
177 virtual void removeTextTrack(blink::WebInbandTextTrack*) override final;
178 virtual void mediaSourceOpened(blink::WebMediaSource*) override final;
179 virtual void requestFullscreen() override final;
180 virtual void requestSeek(double) override final;
181 virtual void remoteRouteAvailabilityChanged(bool) override final;
182 virtual void connectedToRemoteDevice() override final;
183 virtual void disconnectedFromRemoteDevice() override final;
184
155 185
156 // controls 186 // controls
157 bool shouldShowControls() const; 187 bool shouldShowControls() const;
158 double volume() const; 188 double volume() const;
159 void setVolume(double, ExceptionState&); 189 void setVolume(double, ExceptionState&);
160 bool muted() const; 190 bool muted() const;
161 void setMuted(bool); 191 void setMuted(bool);
162 192
163 // play/pause toggling that uses the media controller if present. togglePlay StateWillPlay() is 193 // play/pause toggling that uses the media controller if present. togglePlay StateWillPlay() is
164 // true if togglePlayState() will call play() or unpause() on the media elem ent or controller. 194 // true if togglePlayState() will call play() or unpause() on the media elem ent or controller.
165 bool togglePlayStateWillPlay() const; 195 bool togglePlayStateWillPlay() const;
166 void togglePlayState(); 196 void togglePlayState();
167 197
168 AudioTrackList& audioTracks(); 198 AudioTrackList& audioTracks();
169 void audioTrackChanged(); 199 void audioTrackChanged();
170 200
171 VideoTrackList& videoTracks(); 201 VideoTrackList& videoTracks();
172 void selectedVideoTrackChanged(blink::WebMediaPlayer::TrackId*); 202 void selectedVideoTrackChanged(blink::WebMediaPlayer::TrackId*);
173 203
174 PassRefPtrWillBeRawPtr<TextTrack> addTextTrack(const AtomicString& kind, con st AtomicString& label, const AtomicString& language, ExceptionState&); 204 PassRefPtrWillBeRawPtr<TextTrack> addTextTrack(const AtomicString& kind, con st AtomicString& label, const AtomicString& language, ExceptionState&);
175 205
176 TextTrackList* textTracks(); 206 TextTrackList* textTracks();
177 CueTimeline& cueTimeline(); 207 CueTimeline& cueTimeline();
178 208
179 void addTextTrack(TextTrack*); 209 void mediaPlayerAddTextTrack(TextTrack*);
180 void removeTextTrack(TextTrack*); 210 void mediaPlayerRemoveTextTrack(TextTrack*);
181 void textTracksChanged(); 211 void textTracksChanged();
182 void notifyMediaPlayerOfTextTrackChanges(); 212 void notifyMediaPlayerOfTextTrackChanges();
183 213
184 // Implements the "forget the media element's media-resource-specific tracks " algorithm in the HTML5 spec. 214 // Implements the "forget the media element's media-resource-specific tracks " algorithm in the HTML5 spec.
185 void forgetResourceSpecificTracks(); 215 void forgetResourceSpecificTracks();
186 216
187 void didAddTrackElement(HTMLTrackElement*); 217 void didAddTrackElement(HTMLTrackElement*);
188 void didRemoveTrackElement(HTMLTrackElement*); 218 void didRemoveTrackElement(HTMLTrackElement*);
189 219
190 blink::WebMediaPlayer::TrackId addAudioTrack(const String& id, blink::WebMed iaPlayerClient::AudioTrackKind, const AtomicString& label, const AtomicString& l anguage, bool enabled); 220 // cleanup
191 void removeAudioTrack(blink::WebMediaPlayer::TrackId);
192 blink::WebMediaPlayer::TrackId addVideoTrack(const String& id, blink::WebMed iaPlayerClient::VideoTrackKind, const AtomicString& label, const AtomicString& l anguage, bool selected);
193 void removeVideoTrack(blink::WebMediaPlayer::TrackId);
194
195 virtual void mediaPlayerDidAddTextTrack(blink::WebInbandTextTrack*) override final;
196 virtual void mediaPlayerDidRemoveTextTrack(blink::WebInbandTextTrack*) overr ide final;
197 // FIXME: Remove this when WebMediaPlayerClientImpl::loadInternal does not d epend on it. 221 // FIXME: Remove this when WebMediaPlayerClientImpl::loadInternal does not d epend on it.
198 virtual KURL mediaPlayerPosterURL() override { return KURL(); } 222 virtual KURL mediaPlayerPosterURL() { return KURL(); }
199 223
200 void honorUserPreferencesForAutomaticTextTrackSelection(); 224 void honorUserPreferencesForAutomaticTextTrackSelection();
201 225
202 bool textTracksAreReady() const; 226 bool textTracksAreReady() const;
203 enum VisibilityChangeAssumption { 227 enum VisibilityChangeAssumption {
204 AssumeNoVisibleChange, 228 AssumeNoVisibleChange,
205 AssumeVisibleChange 229 AssumeVisibleChange
206 }; 230 };
207 void configureTextTrackDisplay(VisibilityChangeAssumption); 231 void configureTextTrackDisplay(VisibilityChangeAssumption);
208 void updateTextTrackDisplay(); 232 void updateTextTrackDisplay();
209 double lastSeekTime() const { return m_lastSeekTime; } 233 double lastSeekTime() const { return m_lastSeekTime; }
210 void textTrackReadyStateChanged(TextTrack*); 234 void textTrackReadyStateChanged(TextTrack*);
211 235
212 void textTrackModeChanged(TextTrack*); 236 void textTrackModeChanged(TextTrack*);
213 237
214 // EventTarget function. 238 // EventTarget function.
215 // Both Node (via HTMLElement) and ActiveDOMObject define this method, which 239 // Both Node (via HTMLElement) and ActiveDOMObject define this method, which
216 // causes an ambiguity error at compile time. This class's constructor 240 // causes an ambiguity error at compile time. This class's constructor
217 // ensures that both implementations return document, so return the result 241 // ensures that both implementations return document, so return the result
218 // of one of them here. 242 // of one of them here.
219 using HTMLElement::executionContext; 243 using HTMLElement::executionContext;
220 244
221 bool hasSingleSecurityOrigin() const { return !m_player || (webMediaPlayer() && webMediaPlayer()->hasSingleSecurityOrigin()); } 245 bool hasSingleSecurityOrigin() const { return webMediaPlayer() && webMediaPl ayer()->hasSingleSecurityOrigin(); }
222 246
223 bool isFullscreen() const; 247 bool isFullscreen() const;
224 void enterFullscreen(); 248 void enterFullscreen();
225 void exitFullscreen(); 249 void exitFullscreen();
226 250
227 bool hasClosedCaptions() const; 251 bool hasClosedCaptions() const;
228 bool closedCaptionsVisible() const; 252 bool closedCaptionsVisible() const;
229 void setClosedCaptionsVisible(bool); 253 void setClosedCaptionsVisible(bool);
230 254
231 void remoteRouteAvailabilityChanged(bool);
232 void connectedToRemoteDevice();
233 void disconnectedFromRemoteDevice();
234
235 // Returns the MediaControls, or null if they have not been added yet. 255 // Returns the MediaControls, or null if they have not been added yet.
236 // Note that this can be non-null even if there is no controls attribute. 256 // Note that this can be non-null even if there is no controls attribute.
237 MediaControls* mediaControls() const; 257 MediaControls* mediaControls() const;
238 258
239 // Notifies the media element that the media controls became visible, so 259 // Notifies the media element that the media controls became visible, so
240 // that text track layout may be updated to avoid overlapping them. 260 // that text track layout may be updated to avoid overlapping them.
241 void mediaControlsDidBecomeVisible(); 261 void mediaControlsDidBecomeVisible();
242 262
243 void sourceWasRemoved(HTMLSourceElement*); 263 void sourceWasRemoved(HTMLSourceElement*);
244 void sourceWasAdded(HTMLSourceElement*); 264 void sourceWasAdded(HTMLSourceElement*);
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
323 virtual void defaultEventHandler(Event*) override final; 343 virtual void defaultEventHandler(Event*) override final;
324 344
325 // ActiveDOMObject functions. 345 // ActiveDOMObject functions.
326 virtual void stop() override final; 346 virtual void stop() override final;
327 347
328 virtual void updateDisplayState() { } 348 virtual void updateDisplayState() { }
329 349
330 void setReadyState(ReadyState); 350 void setReadyState(ReadyState);
331 void setNetworkState(blink::WebMediaPlayer::NetworkState); 351 void setNetworkState(blink::WebMediaPlayer::NetworkState);
332 352
333 virtual void mediaPlayerNetworkStateChanged() override final; 353 // cleanup
354 /*virtual void mediaPlayerNetworkStateChanged() override final;
334 virtual void mediaPlayerReadyStateChanged() override final; 355 virtual void mediaPlayerReadyStateChanged() override final;
335 virtual void mediaPlayerTimeChanged() override final; 356 virtual void mediaPlayerTimeChanged() override final;
336 virtual void mediaPlayerDurationChanged() override final; 357 virtual void mediaPlayerDurationChanged() override final;
337 virtual void mediaPlayerPlaybackStateChanged() override final; 358 virtual void mediaPlayerPlaybackStateChanged() override final;
338 virtual void mediaPlayerRequestFullscreen() override final; 359 virtual void mediaPlayerRequestFullscreen() override final;
339 virtual void mediaPlayerRequestSeek(double) override final; 360 virtual void mediaPlayerRequestSeek(double) override final;
340 virtual void mediaPlayerRepaint() override final; 361 virtual void mediaPlayerRepaint() override final;
341 virtual void mediaPlayerSizeChanged() override final; 362 virtual void mediaPlayerSizeChanged() override final;
342 virtual void mediaPlayerSetWebLayer(blink::WebLayer*) override final; 363 virtual void mediaPlayerSetWebLayer(blink::WebLayer*) override final;
343 virtual void mediaPlayerMediaSourceOpened(blink::WebMediaSource*) override f inal; 364 virtual void mediaPlayerMediaSourceOpened(blink::WebMediaSource*) override f inal;*/
344 365
345 void loadTimerFired(Timer<HTMLMediaElement>*); 366 void loadTimerFired(Timer<HTMLMediaElement>*);
346 void progressEventTimerFired(Timer<HTMLMediaElement>*); 367 void progressEventTimerFired(Timer<HTMLMediaElement>*);
347 void playbackProgressTimerFired(Timer<HTMLMediaElement>*); 368 void playbackProgressTimerFired(Timer<HTMLMediaElement>*);
348 void startPlaybackProgressTimer(); 369 void startPlaybackProgressTimer();
349 void startProgressEventTimer(); 370 void startProgressEventTimer();
350 void stopPeriodicTimers(); 371 void stopPeriodicTimers();
351 372
352 void seek(double time); 373 void seek(double time);
353 void finishSeek(); 374 void finishSeek();
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
445 // addAudioTrack() and addVideoTrack(). 466 // addAudioTrack() and addVideoTrack().
446 // FIXME: Remove this once all WebMediaPlayer implementations properly repor t their track info. 467 // FIXME: Remove this once all WebMediaPlayer implementations properly repor t their track info.
447 void createPlaceholderTracksIfNecessary(); 468 void createPlaceholderTracksIfNecessary();
448 469
449 // Sets the selected/enabled tracks if they aren't set before we initially 470 // Sets the selected/enabled tracks if they aren't set before we initially
450 // transition to HAVE_METADATA. 471 // transition to HAVE_METADATA.
451 void selectInitialTracksIfNecessary(); 472 void selectInitialTracksIfNecessary();
452 473
453 void audioTracksTimerFired(Timer<HTMLMediaElement>*); 474 void audioTracksTimerFired(Timer<HTMLMediaElement>*);
454 475
476 PassOwnPtr<WebMediaPlayer> createWebMediaPlayer(const WebURL&);
477 void loadMediaPlayer(const WTF::String& url);
478
455 Timer<HTMLMediaElement> m_loadTimer; 479 Timer<HTMLMediaElement> m_loadTimer;
456 Timer<HTMLMediaElement> m_progressEventTimer; 480 Timer<HTMLMediaElement> m_progressEventTimer;
457 Timer<HTMLMediaElement> m_playbackProgressTimer; 481 Timer<HTMLMediaElement> m_playbackProgressTimer;
458 Timer<HTMLMediaElement> m_audioTracksTimer; 482 Timer<HTMLMediaElement> m_audioTracksTimer;
459 RefPtrWillBeMember<TimeRanges> m_playedTimeRanges; 483 RefPtrWillBeMember<TimeRanges> m_playedTimeRanges;
460 OwnPtrWillBeMember<GenericEventQueue> m_asyncEventQueue; 484 OwnPtrWillBeMember<GenericEventQueue> m_asyncEventQueue;
461 485
462 double m_playbackRate; 486 double m_playbackRate;
463 double m_defaultPlaybackRate; 487 double m_defaultPlaybackRate;
464 NetworkState m_networkState; 488 NetworkState m_networkState;
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
500 WaitingForStopDelayingLoadEventTask, 524 WaitingForStopDelayingLoadEventTask,
501 // The load is the deferred, and waiting for a triggering event. 525 // The load is the deferred, and waiting for a triggering event.
502 WaitingForTrigger, 526 WaitingForTrigger,
503 // The load is deferred, and waiting for the task to set the 527 // The load is deferred, and waiting for the task to set the
504 // delaying-the-load-event flag, after which the load will be executed. 528 // delaying-the-load-event flag, after which the load will be executed.
505 ExecuteOnStopDelayingLoadEventTask 529 ExecuteOnStopDelayingLoadEventTask
506 }; 530 };
507 DeferredLoadState m_deferredLoadState; 531 DeferredLoadState m_deferredLoadState;
508 Timer<HTMLMediaElement> m_deferredLoadTimer; 532 Timer<HTMLMediaElement> m_deferredLoadTimer;
509 533
510 OwnPtr<MediaPlayer> m_player;
511 blink::WebLayer* m_webLayer; 534 blink::WebLayer* m_webLayer;
512 535
513 MediaPlayer::Preload m_preload; 536 WebMediaPlayer::Preload m_preload;
514 537
515 DisplayMode m_displayMode; 538 DisplayMode m_displayMode;
516 539
517 RefPtrWillBeMember<HTMLMediaSource> m_mediaSource; 540 RefPtrWillBeMember<HTMLMediaSource> m_mediaSource;
518 541
519 // Cached time value. Only valid when ready state is HAVE_METADATA or 542 // Cached time value. Only valid when ready state is HAVE_METADATA or
520 // higher, otherwise the current time is assumed to be zero. 543 // higher, otherwise the current time is assumed to be zero.
521 mutable double m_cachedTime; 544 mutable double m_cachedTime;
522 545
523 double m_fragmentEndTime; 546 double m_fragmentEndTime;
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
564 RefPtrWillBeMember<TextTrackList> m_textTracks; 587 RefPtrWillBeMember<TextTrackList> m_textTracks;
565 WillBeHeapVector<RefPtrWillBeMember<TextTrack>> m_textTracksWhenResourceSele ctionBegan; 588 WillBeHeapVector<RefPtrWillBeMember<TextTrack>> m_textTracksWhenResourceSele ctionBegan;
566 589
567 OwnPtrWillBeMember<CueTimeline> m_cueTimeline; 590 OwnPtrWillBeMember<CueTimeline> m_cueTimeline;
568 591
569 #if ENABLE(WEB_AUDIO) 592 #if ENABLE(WEB_AUDIO)
570 // This is a weak reference, since m_audioSourceNode holds a reference to us . 593 // This is a weak reference, since m_audioSourceNode holds a reference to us .
571 // FIXME: Oilpan: Consider making this a strongly traced pointer with oilpan where strong cycles are not a problem. 594 // FIXME: Oilpan: Consider making this a strongly traced pointer with oilpan where strong cycles are not a problem.
572 GC_PLUGIN_IGNORE("http://crbug.com/404577") 595 GC_PLUGIN_IGNORE("http://crbug.com/404577")
573 RawPtrWillBeWeakMember<AudioSourceProviderClient> m_audioSourceNode; 596 RawPtrWillBeWeakMember<AudioSourceProviderClient> m_audioSourceNode;
597
598 // AudioClientImpl wraps an AudioSourceProviderClient.
599 // When the audio format is known, Chromium calls setFormat().
600
601 class AudioClientImpl final : public GarbageCollectedFinalized<AudioClientIm pl>, public WebAudioSourceProviderClient {
602 public:
603 explicit AudioClientImpl(AudioSourceProviderClient* client)
604 : m_client(client)
605 {
606 }
607
608 virtual ~AudioClientImpl() { }
609
610 // WebAudioSourceProviderClient
611 virtual void setFormat(size_t numberOfChannels, float sampleRate) overri de;
612
613 DECLARE_TRACE();
614
615 private:
616 Member<AudioSourceProviderClient> m_client;
617 };
618
619 // AudioSourceProviderImpl wraps a WebAudioSourceProvider.
620 // provideInput() calls into Chromium to get a rendered audio stream.
621
622 class AudioSourceProviderImpl final : public AudioSourceProvider {
623 public:
624 AudioSourceProviderImpl()
625 : m_webAudioSourceProvider(0)
626 {
627 }
628
629 virtual ~AudioSourceProviderImpl() { }
630
631 // Wraps the given WebAudioSourceProvider.
632 void wrap(WebAudioSourceProvider*);
633
634 // AudioSourceProvider
635 virtual void setClient(AudioSourceProviderClient*) override;
636 virtual void provideInput(AudioBus*, size_t framesToProcess) override;
637
638 private:
639 WebAudioSourceProvider* m_webAudioSourceProvider;
640 Persistent<AudioClientImpl> m_client;
641 Mutex provideInputLock;
642 };
643
644 AudioSourceProviderImpl m_audioSourceProvider;
574 #endif 645 #endif
575 646
576 friend class MediaController; 647 friend class MediaController;
577 RefPtrWillBeMember<MediaController> m_mediaController; 648 RefPtrWillBeMember<MediaController> m_mediaController;
649 OwnPtr<WebMediaPlayer> m_webMediaPlayer;
578 650
579 friend class Internals; 651 friend class Internals;
580 friend class TrackDisplayUpdateScope; 652 friend class TrackDisplayUpdateScope;
581 653
582 static URLRegistry* s_mediaStreamRegistry; 654 static URLRegistry* s_mediaStreamRegistry;
583 }; 655 };
584 656
585 inline bool isHTMLMediaElement(const HTMLElement& element) 657 inline bool isHTMLMediaElement(const HTMLElement& element)
586 { 658 {
587 return isHTMLAudioElement(element) || isHTMLVideoElement(element); 659 return isHTMLAudioElement(element) || isHTMLVideoElement(element);
588 } 660 }
589 661
590 DEFINE_HTMLELEMENT_TYPE_CASTS_WITH_FUNCTION(HTMLMediaElement); 662 DEFINE_HTMLELEMENT_TYPE_CASTS_WITH_FUNCTION(HTMLMediaElement);
591 663
592 } // namespace blink 664 } // namespace blink
593 665
594 #endif // HTMLMediaElement_h 666 #endif // HTMLMediaElement_h
OLDNEW
« no previous file with comments | « no previous file | Source/core/html/HTMLMediaElement.cpp » ('j') | Source/core/html/HTMLMediaElement.cpp » ('J')

Powered by Google App Engine
This is Rietveld 408576698