| OLD | NEW |
| 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 225 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 236 , m_loadInitiatedByUserGesture(false) | 236 , m_loadInitiatedByUserGesture(false) |
| 237 , m_completelyLoaded(false) | 237 , m_completelyLoaded(false) |
| 238 , m_havePreparedToPlay(false) | 238 , m_havePreparedToPlay(false) |
| 239 , m_parsingInProgress(createdByParser) | 239 , m_parsingInProgress(createdByParser) |
| 240 , m_tracksAreReady(true) | 240 , m_tracksAreReady(true) |
| 241 , m_haveVisibleTextTrack(false) | 241 , m_haveVisibleTextTrack(false) |
| 242 , m_processingPreferenceChange(false) | 242 , m_processingPreferenceChange(false) |
| 243 , m_lastTextTrackUpdateTime(-1) | 243 , m_lastTextTrackUpdateTime(-1) |
| 244 , m_textTracks(0) | 244 , m_textTracks(0) |
| 245 , m_ignoreTrackDisplayUpdate(0) | 245 , m_ignoreTrackDisplayUpdate(0) |
| 246 , m_inDestructor(false) |
| 246 #if ENABLE(WEB_AUDIO) | 247 #if ENABLE(WEB_AUDIO) |
| 247 , m_audioSourceNode(0) | 248 , m_audioSourceNode(0) |
| 248 #endif | 249 #endif |
| 249 { | 250 { |
| 250 ASSERT(RuntimeEnabledFeatures::mediaEnabled()); | 251 ASSERT(RuntimeEnabledFeatures::mediaEnabled()); |
| 251 | 252 |
| 252 LOG(Media, "HTMLMediaElement::HTMLMediaElement"); | 253 LOG(Media, "HTMLMediaElement::HTMLMediaElement"); |
| 253 ScriptWrappable::init(this); | 254 ScriptWrappable::init(this); |
| 254 | 255 |
| 255 if (document->settings() && document->settings()->mediaPlaybackRequiresUserG
esture()) { | 256 if (document->settings() && document->settings()->mediaPlaybackRequiresUserG
esture()) { |
| 256 addBehaviorRestriction(RequireUserGestureForRateChangeRestriction); | 257 addBehaviorRestriction(RequireUserGestureForRateChangeRestriction); |
| 257 addBehaviorRestriction(RequireUserGestureForLoadRestriction); | 258 addBehaviorRestriction(RequireUserGestureForLoadRestriction); |
| 258 } | 259 } |
| 259 | 260 |
| 260 setHasCustomStyleCallbacks(); | 261 setHasCustomStyleCallbacks(); |
| 261 addElementToDocumentMap(this, document); | 262 addElementToDocumentMap(this, document); |
| 262 | 263 |
| 263 document->registerForCaptionPreferencesChangedCallbacks(this); | 264 document->registerForCaptionPreferencesChangedCallbacks(this); |
| 264 } | 265 } |
| 265 | 266 |
| 266 HTMLMediaElement::~HTMLMediaElement() | 267 HTMLMediaElement::~HTMLMediaElement() |
| 267 { | 268 { |
| 268 LOG(Media, "HTMLMediaElement::~HTMLMediaElement"); | 269 LOG(Media, "HTMLMediaElement::~HTMLMediaElement"); |
| 270 m_inDestructor = true; |
| 271 |
| 269 setShouldDelayLoadEvent(false); | 272 setShouldDelayLoadEvent(false); |
| 270 document()->unregisterForCaptionPreferencesChangedCallbacks(this); | 273 document()->unregisterForCaptionPreferencesChangedCallbacks(this); |
| 271 if (m_textTracks) | 274 if (m_textTracks) |
| 272 m_textTracks->clearOwner(); | 275 m_textTracks->clearOwner(); |
| 273 if (m_textTracks) { | 276 if (m_textTracks) { |
| 274 for (unsigned i = 0; i < m_textTracks->length(); ++i) | 277 for (unsigned i = 0; i < m_textTracks->length(); ++i) |
| 275 m_textTracks->item(i)->clearClient(); | 278 m_textTracks->item(i)->clearClient(); |
| 276 } | 279 } |
| 277 | 280 |
| 278 if (m_mediaController) | 281 if (m_mediaController) |
| (...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 512 // Schedule the timer to try the next <source> element WITHOUT resetting sta
te ala prepareForLoad. | 515 // Schedule the timer to try the next <source> element WITHOUT resetting sta
te ala prepareForLoad. |
| 513 m_pendingActionFlags |= LoadMediaResource; | 516 m_pendingActionFlags |= LoadMediaResource; |
| 514 m_loadTimer.startOneShot(0); | 517 m_loadTimer.startOneShot(0); |
| 515 } | 518 } |
| 516 | 519 |
| 517 void HTMLMediaElement::scheduleEvent(const AtomicString& eventName) | 520 void HTMLMediaElement::scheduleEvent(const AtomicString& eventName) |
| 518 { | 521 { |
| 519 #if LOG_MEDIA_EVENTS | 522 #if LOG_MEDIA_EVENTS |
| 520 LOG(Media, "HTMLMediaElement::scheduleEvent - scheduling '%s'", eventName.st
ring().ascii().data()); | 523 LOG(Media, "HTMLMediaElement::scheduleEvent - scheduling '%s'", eventName.st
ring().ascii().data()); |
| 521 #endif | 524 #endif |
| 525 if (m_inDestructor) |
| 526 return; |
| 522 RefPtr<Event> event = Event::create(eventName, false, true); | 527 RefPtr<Event> event = Event::create(eventName, false, true); |
| 523 event->setTarget(this); | 528 event->setTarget(this); |
| 524 | 529 |
| 525 m_asyncEventQueue->enqueueEvent(event.release()); | 530 m_asyncEventQueue->enqueueEvent(event.release()); |
| 526 } | 531 } |
| 527 | 532 |
| 528 void HTMLMediaElement::loadTimerFired(Timer<HTMLMediaElement>*) | 533 void HTMLMediaElement::loadTimerFired(Timer<HTMLMediaElement>*) |
| 529 { | 534 { |
| 530 RefPtr<HTMLMediaElement> protect(this); // loadNextSourceChild may fire 'bef
oreload', which can make arbitrary DOM mutations. | 535 RefPtr<HTMLMediaElement> protect(this); // loadNextSourceChild may fire 'bef
oreload', which can make arbitrary DOM mutations. |
| 531 | 536 |
| (...skipping 3488 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4020 info.addMember(m_mediaGroup, "mediaGroup"); | 4025 info.addMember(m_mediaGroup, "mediaGroup"); |
| 4021 info.addMember(m_mediaController, "mediaController"); | 4026 info.addMember(m_mediaController, "mediaController"); |
| 4022 | 4027 |
| 4023 #if ENABLE(WEB_AUDIO) | 4028 #if ENABLE(WEB_AUDIO) |
| 4024 info.addMember(m_audioSourceNode, "audioSourceNode"); | 4029 info.addMember(m_audioSourceNode, "audioSourceNode"); |
| 4025 #endif | 4030 #endif |
| 4026 | 4031 |
| 4027 } | 4032 } |
| 4028 | 4033 |
| 4029 } | 4034 } |
| OLD | NEW |