| 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 265 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 276 , m_inActiveDocument(true) | 276 , m_inActiveDocument(true) |
| 277 , m_autoplaying(true) | 277 , m_autoplaying(true) |
| 278 , m_muted(false) | 278 , m_muted(false) |
| 279 , m_paused(true) | 279 , m_paused(true) |
| 280 , m_seeking(false) | 280 , m_seeking(false) |
| 281 , m_sentStalledEvent(false) | 281 , m_sentStalledEvent(false) |
| 282 , m_sentEndEvent(false) | 282 , m_sentEndEvent(false) |
| 283 , m_pausedInternal(false) | 283 , m_pausedInternal(false) |
| 284 , m_sendProgressEvents(true) | 284 , m_sendProgressEvents(true) |
| 285 , m_closedCaptionsVisible(false) | 285 , m_closedCaptionsVisible(false) |
| 286 , m_dispatchingCanPlayEvent(false) | |
| 287 , m_loadInitiatedByUserGesture(false) | 286 , m_loadInitiatedByUserGesture(false) |
| 288 , m_completelyLoaded(false) | 287 , m_completelyLoaded(false) |
| 289 , m_havePreparedToPlay(false) | 288 , m_havePreparedToPlay(false) |
| 290 , m_parsingInProgress(createdByParser) | 289 , m_parsingInProgress(createdByParser) |
| 291 , m_tracksAreReady(true) | 290 , m_tracksAreReady(true) |
| 292 , m_haveVisibleTextTrack(false) | 291 , m_haveVisibleTextTrack(false) |
| 293 , m_processingPreferenceChange(false) | 292 , m_processingPreferenceChange(false) |
| 294 , m_lastTextTrackUpdateTime(-1) | 293 , m_lastTextTrackUpdateTime(-1) |
| 295 , m_textTracks(0) | 294 , m_textTracks(0) |
| 296 , m_ignoreTrackDisplayUpdate(0) | 295 , m_ignoreTrackDisplayUpdate(0) |
| (...skipping 1852 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2149 | 2148 |
| 2150 void HTMLMediaElement::play() | 2149 void HTMLMediaElement::play() |
| 2151 { | 2150 { |
| 2152 LOG(Media, "HTMLMediaElement::play()"); | 2151 LOG(Media, "HTMLMediaElement::play()"); |
| 2153 | 2152 |
| 2154 if (userGestureRequiredForRateChange() && !UserGestureIndicator::processingU
serGesture()) | 2153 if (userGestureRequiredForRateChange() && !UserGestureIndicator::processingU
serGesture()) |
| 2155 return; | 2154 return; |
| 2156 if (UserGestureIndicator::processingUserGesture()) | 2155 if (UserGestureIndicator::processingUserGesture()) |
| 2157 removeBehaviorsRestrictionsAfterFirstUserGesture(); | 2156 removeBehaviorsRestrictionsAfterFirstUserGesture(); |
| 2158 | 2157 |
| 2159 Settings* settings = document().settings(); | |
| 2160 if (settings && settings->needsSiteSpecificQuirks() && m_dispatchingCanPlayE
vent && !m_loadInitiatedByUserGesture) { | |
| 2161 // It should be impossible to be processing the canplay event while hand
ling a user gesture | |
| 2162 // since it is dispatched asynchronously. | |
| 2163 ASSERT(!UserGestureIndicator::processingUserGesture()); | |
| 2164 String host = document().baseURL().host(); | |
| 2165 if (host.endsWith(".npr.org", false) || equalIgnoringCase(host, "npr.org
")) | |
| 2166 return; | |
| 2167 } | |
| 2168 | |
| 2169 playInternal(); | 2158 playInternal(); |
| 2170 } | 2159 } |
| 2171 | 2160 |
| 2172 void HTMLMediaElement::playInternal() | 2161 void HTMLMediaElement::playInternal() |
| 2173 { | 2162 { |
| 2174 LOG(Media, "HTMLMediaElement::playInternal"); | 2163 LOG(Media, "HTMLMediaElement::playInternal"); |
| 2175 | 2164 |
| 2176 // 4.8.10.9. Playing the media resource | 2165 // 4.8.10.9. Playing the media resource |
| 2177 if (!m_player || m_networkState == NETWORK_EMPTY) | 2166 if (!m_player || m_networkState == NETWORK_EMPTY) |
| 2178 scheduleDelayedAction(LoadMediaResource); | 2167 scheduleDelayedAction(LoadMediaResource); |
| (...skipping 1716 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3895 if (hasMediaControls()) | 3884 if (hasMediaControls()) |
| 3896 mediaControls()->setMediaController(m_mediaController ? m_mediaControlle
r.get() : static_cast<MediaControllerInterface*>(this)); | 3885 mediaControls()->setMediaController(m_mediaController ? m_mediaControlle
r.get() : static_cast<MediaControllerInterface*>(this)); |
| 3897 } | 3886 } |
| 3898 | 3887 |
| 3899 void HTMLMediaElement::updateMediaController() | 3888 void HTMLMediaElement::updateMediaController() |
| 3900 { | 3889 { |
| 3901 if (m_mediaController) | 3890 if (m_mediaController) |
| 3902 m_mediaController->reportControllerState(); | 3891 m_mediaController->reportControllerState(); |
| 3903 } | 3892 } |
| 3904 | 3893 |
| 3905 bool HTMLMediaElement::dispatchEvent(PassRefPtr<Event> event) | |
| 3906 { | |
| 3907 bool dispatchResult; | |
| 3908 bool isCanPlayEvent; | |
| 3909 | |
| 3910 isCanPlayEvent = (event->type() == eventNames().canplayEvent); | |
| 3911 | |
| 3912 if (isCanPlayEvent) | |
| 3913 m_dispatchingCanPlayEvent = true; | |
| 3914 | |
| 3915 dispatchResult = HTMLElement::dispatchEvent(event); | |
| 3916 | |
| 3917 if (isCanPlayEvent) | |
| 3918 m_dispatchingCanPlayEvent = false; | |
| 3919 | |
| 3920 return dispatchResult; | |
| 3921 } | |
| 3922 | |
| 3923 bool HTMLMediaElement::isBlocked() const | 3894 bool HTMLMediaElement::isBlocked() const |
| 3924 { | 3895 { |
| 3925 // A media element is a blocked media element if its readyState attribute is
in the | 3896 // A media element is a blocked media element if its readyState attribute is
in the |
| 3926 // HAVE_NOTHING state, the HAVE_METADATA state, or the HAVE_CURRENT_DATA sta
te, | 3897 // HAVE_NOTHING state, the HAVE_METADATA state, or the HAVE_CURRENT_DATA sta
te, |
| 3927 if (m_readyState <= HAVE_CURRENT_DATA) | 3898 if (m_readyState <= HAVE_CURRENT_DATA) |
| 3928 return true; | 3899 return true; |
| 3929 | 3900 |
| 3930 // or if the element has paused for user interaction. | 3901 // or if the element has paused for user interaction. |
| 3931 return pausedForUserInteraction(); | 3902 return pausedForUserInteraction(); |
| 3932 } | 3903 } |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3997 { | 3968 { |
| 3998 m_restrictions = NoRestrictions; | 3969 m_restrictions = NoRestrictions; |
| 3999 } | 3970 } |
| 4000 | 3971 |
| 4001 void HTMLMediaElement::mediaPlayerScheduleLayerUpdate() | 3972 void HTMLMediaElement::mediaPlayerScheduleLayerUpdate() |
| 4002 { | 3973 { |
| 4003 scheduleLayerUpdate(); | 3974 scheduleLayerUpdate(); |
| 4004 } | 3975 } |
| 4005 | 3976 |
| 4006 } | 3977 } |
| OLD | NEW |