Chromium Code Reviews| 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 2274 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2285 !paused() && m_muted && isLockedPendingUserGesture(); | 2285 !paused() && m_muted && isLockedPendingUserGesture(); |
| 2286 bool wasPendingAutoplayMuted = m_autoplayVisibilityObserver && paused() && | 2286 bool wasPendingAutoplayMuted = m_autoplayVisibilityObserver && paused() && |
| 2287 m_muted && isLockedPendingUserGesture(); | 2287 m_muted && isLockedPendingUserGesture(); |
| 2288 | 2288 |
| 2289 if (UserGestureIndicator::processingUserGesture()) | 2289 if (UserGestureIndicator::processingUserGesture()) |
| 2290 unlockUserGesture(); | 2290 unlockUserGesture(); |
| 2291 | 2291 |
| 2292 m_muted = muted; | 2292 m_muted = muted; |
| 2293 m_autoplayHelper->mutedChanged(); | 2293 m_autoplayHelper->mutedChanged(); |
| 2294 | 2294 |
| 2295 updateVolume(); | |
| 2296 | |
| 2297 scheduleEvent(EventTypeNames::volumechange); | |
| 2298 | |
| 2299 // If an element autoplayed while muted, it needs to be unlocked to unmute, | 2295 // If an element autoplayed while muted, it needs to be unlocked to unmute, |
| 2300 // otherwise, it will be paused. | 2296 // otherwise, it will be paused. |
| 2301 if (wasAutoplayingMuted) { | 2297 if (wasAutoplayingMuted) { |
| 2302 if (isGestureNeededForPlayback()) { | 2298 if (isGestureNeededForPlayback()) { |
| 2303 pause(); | 2299 pause(); |
| 2304 m_autoplayUmaHelper->recordAutoplayUnmuteStatus( | 2300 m_autoplayUmaHelper->recordAutoplayUnmuteStatus( |
| 2305 AutoplayUnmuteActionStatus::Failure); | 2301 AutoplayUnmuteActionStatus::Failure); |
| 2306 } else { | 2302 } else { |
| 2307 m_autoplayUmaHelper->recordAutoplayUnmuteStatus( | 2303 m_autoplayUmaHelper->recordAutoplayUnmuteStatus( |
| 2308 AutoplayUnmuteActionStatus::Success); | 2304 AutoplayUnmuteActionStatus::Success); |
| 2309 } | 2305 } |
| 2310 } | 2306 } |
| 2311 | 2307 |
| 2308 updateVolume(); | |
| 2309 | |
| 2310 scheduleEvent(EventTypeNames::volumechange); | |
|
foolip
2016/10/10 11:33:07
This will change the order of events from volumech
mlamouri (slow - plz ping)
2016/10/31 15:27:41
Just to clarify, do you want me to revert the chan
foolip
2016/11/01 16:12:21
Maintaining the event order seems best, yeah.
| |
| 2311 | |
| 2312 // If an element was a candidate for autoplay muted but not visible, it will | 2312 // If an element was a candidate for autoplay muted but not visible, it will |
| 2313 // have a visibility observer ready to start its playback. | 2313 // have a visibility observer ready to start its playback. |
| 2314 if (wasPendingAutoplayMuted) { | 2314 if (wasPendingAutoplayMuted) { |
| 2315 m_autoplayVisibilityObserver->stop(); | 2315 m_autoplayVisibilityObserver->stop(); |
| 2316 m_autoplayVisibilityObserver = nullptr; | 2316 m_autoplayVisibilityObserver = nullptr; |
| 2317 } | 2317 } |
| 2318 } | 2318 } |
| 2319 | 2319 |
| 2320 void HTMLMediaElement::updateVolume() { | 2320 void HTMLMediaElement::updateVolume() { |
| 2321 if (webMediaPlayer()) | 2321 if (webMediaPlayer()) |
| (...skipping 689 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3011 mediaControls()->stoppedCasting(); | 3011 mediaControls()->stoppedCasting(); |
| 3012 if (remotePlaybackClient()) | 3012 if (remotePlaybackClient()) |
| 3013 remotePlaybackClient()->stateChanged(WebRemotePlaybackState::Disconnected); | 3013 remotePlaybackClient()->stateChanged(WebRemotePlaybackState::Disconnected); |
| 3014 } | 3014 } |
| 3015 | 3015 |
| 3016 void HTMLMediaElement::cancelledRemotePlaybackRequest() { | 3016 void HTMLMediaElement::cancelledRemotePlaybackRequest() { |
| 3017 if (remotePlaybackClient()) | 3017 if (remotePlaybackClient()) |
| 3018 remotePlaybackClient()->promptCancelled(); | 3018 remotePlaybackClient()->promptCancelled(); |
| 3019 } | 3019 } |
| 3020 | 3020 |
| 3021 bool HTMLMediaElement::isAutoplayingMuted() { | |
| 3022 if (!isHTMLVideoElement() || | |
| 3023 !RuntimeEnabledFeatures::autoplayMutedVideosEnabled()) | |
| 3024 return false; | |
| 3025 | |
| 3026 return muted() && isLockedPendingUserGesture(); | |
|
foolip
2016/10/10 11:33:07
This will return true even if not actually playing
mlamouri (slow - plz ping)
2016/10/31 15:27:41
That was on purpose but I've added a check to make
| |
| 3027 } | |
| 3028 | |
| 3021 void HTMLMediaElement::requestReload(const WebURL& newUrl) { | 3029 void HTMLMediaElement::requestReload(const WebURL& newUrl) { |
| 3022 DCHECK(webMediaPlayer()); | 3030 DCHECK(webMediaPlayer()); |
| 3023 DCHECK(!m_srcObject); | 3031 DCHECK(!m_srcObject); |
| 3024 DCHECK(newUrl.isValid()); | 3032 DCHECK(newUrl.isValid()); |
| 3025 DCHECK(isSafeToLoadURL(newUrl, Complain)); | 3033 DCHECK(isSafeToLoadURL(newUrl, Complain)); |
| 3026 resetMediaPlayerAndMediaSource(); | 3034 resetMediaPlayerAndMediaSource(); |
| 3027 startPlayerLoad(newUrl); | 3035 startPlayerLoad(newUrl); |
| 3028 } | 3036 } |
| 3029 | 3037 |
| 3030 // MediaPlayerPresentation methods | 3038 // MediaPlayerPresentation methods |
| (...skipping 959 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3990 | 3998 |
| 3991 IntRect HTMLMediaElement::AutoplayHelperClientImpl::absoluteBoundingBoxRect() | 3999 IntRect HTMLMediaElement::AutoplayHelperClientImpl::absoluteBoundingBoxRect() |
| 3992 const { | 4000 const { |
| 3993 IntRect result; | 4001 IntRect result; |
| 3994 if (LayoutObject* object = m_element->layoutObject()) | 4002 if (LayoutObject* object = m_element->layoutObject()) |
| 3995 result = object->absoluteBoundingBoxRect(); | 4003 result = object->absoluteBoundingBoxRect(); |
| 3996 return result; | 4004 return result; |
| 3997 } | 4005 } |
| 3998 | 4006 |
| 3999 } // namespace blink | 4007 } // namespace blink |
| OLD | NEW |