Title: [224904] trunk/Source/WebCore
Revision
224904
Author
eric.carl...@apple.com
Date
2017-11-15 15:25:34 -0800 (Wed, 15 Nov 2017)

Log Message

Log media readyState and networkState as strings
https://bugs.webkit.org/show_bug.cgi?id=179732

Reviewed by Youenn Fablet.

* html/HTMLMediaElement.cpp:
(WebCore::convertEnumerationToString):
(WebCore::HTMLMediaElement::scheduleDelayedAction): Fix logic error.
(WebCore::HTMLMediaElement::pendingActionTimerFired): Fix incorrect log string.
(WebCore::HTMLMediaElement::setNetworkState): Don't cast to int for logging.
(WebCore::HTMLMediaElement::setReadyState): Ditto. Log when autoplay is blocked.

* html/HTMLMediaElementEnums.h:
(PAL::LogArgument<WebCore::HTMLMediaElementEnums::ReadyState>::toString): New.
(PAL::LogArgument<WebCore::HTMLMediaElementEnums::NetworkState>::toString): New.

* platform/graphics/MediaPlayer.cpp:
(WebCore::convertEnumerationToString):
* platform/graphics/MediaPlayerEnums.h:
(PAL::LogArgument<WebCore::MediaPlayerEnums::ReadyState>::toString):
(PAL::LogArgument<WebCore::MediaPlayerEnums::NetworkState>::toString):

* platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp:
(WebCore::MediaPlayerPrivateAVFoundation::updateStates): Log strings.

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (224903 => 224904)


--- trunk/Source/WebCore/ChangeLog	2017-11-15 23:05:41 UTC (rev 224903)
+++ trunk/Source/WebCore/ChangeLog	2017-11-15 23:25:34 UTC (rev 224904)
@@ -1,3 +1,30 @@
+2017-11-15  Eric Carlson  <eric.carl...@apple.com>
+
+        Log media readyState and networkState as strings
+        https://bugs.webkit.org/show_bug.cgi?id=179732
+
+        Reviewed by Youenn Fablet.
+
+        * html/HTMLMediaElement.cpp:
+        (WebCore::convertEnumerationToString):
+        (WebCore::HTMLMediaElement::scheduleDelayedAction): Fix logic error.
+        (WebCore::HTMLMediaElement::pendingActionTimerFired): Fix incorrect log string.
+        (WebCore::HTMLMediaElement::setNetworkState): Don't cast to int for logging.
+        (WebCore::HTMLMediaElement::setReadyState): Ditto. Log when autoplay is blocked.
+
+        * html/HTMLMediaElementEnums.h:
+        (PAL::LogArgument<WebCore::HTMLMediaElementEnums::ReadyState>::toString): New.
+        (PAL::LogArgument<WebCore::HTMLMediaElementEnums::NetworkState>::toString): New.
+
+        * platform/graphics/MediaPlayer.cpp:
+        (WebCore::convertEnumerationToString):
+        * platform/graphics/MediaPlayerEnums.h:
+        (PAL::LogArgument<WebCore::MediaPlayerEnums::ReadyState>::toString):
+        (PAL::LogArgument<WebCore::MediaPlayerEnums::NetworkState>::toString):
+
+        * platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp:
+        (WebCore::MediaPlayerPrivateAVFoundation::updateStates): Log strings.
+
 2017-11-15  Youenn Fablet  <you...@apple.com>
 
         Service Worker fetch should handle empty responses

Modified: trunk/Source/WebCore/html/HTMLMediaElement.cpp (224903 => 224904)


--- trunk/Source/WebCore/html/HTMLMediaElement.cpp	2017-11-15 23:05:41 UTC (rev 224903)
+++ trunk/Source/WebCore/html/HTMLMediaElement.cpp	2017-11-15 23:25:34 UTC (rev 224904)
@@ -254,6 +254,40 @@
 
 using namespace HTMLNames;
 
+String convertEnumerationToString(HTMLMediaElement::ReadyState enumerationValue)
+{
+    static const NeverDestroyed<String> values[] = {
+        MAKE_STATIC_STRING_IMPL("HAVE_NOTHING"),
+        MAKE_STATIC_STRING_IMPL("HAVE_METADATA"),
+        MAKE_STATIC_STRING_IMPL("HAVE_CURRENT_DATA"),
+        MAKE_STATIC_STRING_IMPL("HAVE_FUTURE_DATA"),
+        MAKE_STATIC_STRING_IMPL("HAVE_ENOUGH_DATA"),
+    };
+    static_assert(static_cast<size_t>(HTMLMediaElementEnums::HAVE_NOTHING) == 0, "HTMLMediaElement::HAVE_NOTHING is not 0 as expected");
+    static_assert(static_cast<size_t>(HTMLMediaElementEnums::HAVE_METADATA) == 1, "HTMLMediaElement::HAVE_METADATA is not 1 as expected");
+    static_assert(static_cast<size_t>(HTMLMediaElementEnums::HAVE_CURRENT_DATA) == 2, "HTMLMediaElement::HAVE_CURRENT_DATA is not 2 as expected");
+    static_assert(static_cast<size_t>(HTMLMediaElementEnums::HAVE_FUTURE_DATA) == 3, "HTMLMediaElement::HAVE_FUTURE_DATA is not 3 as expected");
+    static_assert(static_cast<size_t>(HTMLMediaElementEnums::HAVE_ENOUGH_DATA) == 4, "HTMLMediaElement::HAVE_ENOUGH_DATA is not 4 as expected");
+    ASSERT(static_cast<size_t>(enumerationValue) < WTF_ARRAY_LENGTH(values));
+    return values[static_cast<size_t>(enumerationValue)];
+}
+
+String convertEnumerationToString(HTMLMediaElement::NetworkState enumerationValue)
+{
+    static const NeverDestroyed<String> values[] = {
+        MAKE_STATIC_STRING_IMPL("NETWORK_EMPTY"),
+        MAKE_STATIC_STRING_IMPL("NETWORK_IDLE"),
+        MAKE_STATIC_STRING_IMPL("NETWORK_LOADING"),
+        MAKE_STATIC_STRING_IMPL("NETWORK_NO_SOURCE"),
+    };
+    static_assert(static_cast<size_t>(HTMLMediaElementEnums::NETWORK_EMPTY) == 0, "HTMLMediaElement::NETWORK_EMPTY is not 0 as expected");
+    static_assert(static_cast<size_t>(HTMLMediaElementEnums::NETWORK_IDLE) == 1, "HTMLMediaElement::NETWORK_IDLE is not 1 as expected");
+    static_assert(static_cast<size_t>(HTMLMediaElementEnums::NETWORK_LOADING) == 2, "HTMLMediaElement::NETWORK_LOADING is not 2 as expected");
+    static_assert(static_cast<size_t>(HTMLMediaElementEnums::NETWORK_NO_SOURCE) == 3, "HTMLMediaElement::NETWORK_NO_SOURCE is not 3 as expected");
+    ASSERT(static_cast<size_t>(enumerationValue) < WTF_ARRAY_LENGTH(values));
+    return values[static_cast<size_t>(enumerationValue)];
+}
+
 typedef HashMap<Document*, HashSet<HTMLMediaElement*>> DocumentElementSetMap;
 static DocumentElementSetMap& documentToElementSetMap()
 {
@@ -988,7 +1022,7 @@
 
 void HTMLMediaElement::scheduleDelayedAction(DelayedActionType actionType)
 {
-    if (actionType ^ m_pendingActionFlags)
+    if (!(actionType & m_pendingActionFlags))
         ALWAYS_LOG(LOGIDENTIFIER, "setting ", actionName(actionType), " flag");
 
 #if ENABLE(VIDEO_TRACK)
@@ -1088,7 +1122,7 @@
     if (!pendingActions)
         return;
 
-    ALWAYS_LOG(LOGIDENTIFIER, "setting ", actionName(static_cast<DelayedActionType>(pendingActions)), " flag");
+    ALWAYS_LOG(LOGIDENTIFIER, "processing ", actionName(static_cast<DelayedActionType>(pendingActions)), " flag");
 
 #if ENABLE(VIDEO_TRACK)
     if (pendingActions & ConfigureTextTracks)
@@ -2296,7 +2330,7 @@
 void HTMLMediaElement::setNetworkState(MediaPlayer::NetworkState state)
 {
     if (static_cast<int>(state) != static_cast<int>(m_networkState))
-        ALWAYS_LOG(LOGIDENTIFIER, "new state = ", static_cast<int>(state), ", current state = ", static_cast<int>(m_networkState));
+        ALWAYS_LOG(LOGIDENTIFIER, "new state = ", state, ", current state = ", m_networkState);
 
     if (state == MediaPlayer::Empty) {
         // Just update the cached state and leave, we can't do anything.
@@ -2402,7 +2436,7 @@
     bool tracksAreReady = true;
 #endif
 
-    ALWAYS_LOG(LOGIDENTIFIER, "new state = ", static_cast<int>(state), ", current state = ", static_cast<int>(m_readyState));
+    ALWAYS_LOG(LOGIDENTIFIER, "new state = ", state, ", current state = ", m_readyState);
 
     if (tracksAreReady)
         m_readyState = newState;
@@ -2505,8 +2539,10 @@
             m_playbackStartedTime = currentMediaTime().toDouble();
             scheduleEvent(eventNames().playEvent);
             scheduleNotifyAboutPlaying();
-        } else if (success.value() == MediaPlaybackDenialReason::UserGestureRequired)
+        } else if (success.value() == MediaPlaybackDenialReason::UserGestureRequired) {
+            ALWAYS_LOG(LOGIDENTIFIER, "Autoplay blocked, user gesture required");
             setPlaybackWithoutUserGesture(PlaybackWithoutUserGesture::Prevented);
+        }
 
         shouldUpdateDisplayState = true;
     }
@@ -2514,6 +2550,10 @@
     // If we transition to the Future Data state and we're about to begin playing, ensure playback is actually permitted first,
     // honoring any playback denial reasons such as the requirement of a user gesture.
     if (m_readyState == HAVE_FUTURE_DATA && oldState < HAVE_FUTURE_DATA && potentiallyPlaying() && !m_mediaSession->playbackPermitted(*this)) {
+        auto canTransition = canTransitionFromAutoplayToPlay();
+        if (canTransition && canTransition.value() == MediaPlaybackDenialReason::UserGestureRequired)
+            ALWAYS_LOG(LOGIDENTIFIER, "Autoplay blocked, user gesture required");
+
         pauseInternal();
         setPlaybackWithoutUserGesture(PlaybackWithoutUserGesture::Prevented);
     }

Modified: trunk/Source/WebCore/html/HTMLMediaElementEnums.h (224903 => 224904)


--- trunk/Source/WebCore/html/HTMLMediaElementEnums.h	2017-11-15 23:05:41 UTC (rev 224903)
+++ trunk/Source/WebCore/html/HTMLMediaElementEnums.h	2017-11-15 23:25:34 UTC (rev 224904)
@@ -58,4 +58,31 @@
     } SeekType;
 };
 
+String convertEnumerationToString(HTMLMediaElementEnums::ReadyState);
+String convertEnumerationToString(HTMLMediaElementEnums::NetworkState);
+
 } // namespace WebCore
+
+namespace PAL {
+
+template<typename Type>
+struct LogArgument;
+
+template <>
+struct LogArgument<WebCore::HTMLMediaElementEnums::ReadyState> {
+    static String toString(const WebCore::HTMLMediaElementEnums::ReadyState state)
+    {
+        return convertEnumerationToString(state);
+    }
+};
+
+template <>
+struct LogArgument<WebCore::HTMLMediaElementEnums::NetworkState> {
+    static String toString(const WebCore::HTMLMediaElementEnums::NetworkState state)
+    {
+        return convertEnumerationToString(state);
+    }
+};
+
+}; // namespace PAL
+

Modified: trunk/Source/WebCore/platform/graphics/MediaPlayer.cpp (224903 => 224904)


--- trunk/Source/WebCore/platform/graphics/MediaPlayer.cpp	2017-11-15 23:05:41 UTC (rev 224903)
+++ trunk/Source/WebCore/platform/graphics/MediaPlayer.cpp	2017-11-15 23:25:34 UTC (rev 224904)
@@ -1513,6 +1513,46 @@
 }
 #endif
 
+String convertEnumerationToString(MediaPlayerEnums::ReadyState enumerationValue)
+{
+    static const NeverDestroyed<String> values[] = {
+        MAKE_STATIC_STRING_IMPL("HaveNothing"),
+        MAKE_STATIC_STRING_IMPL("HaveMetadata"),
+        MAKE_STATIC_STRING_IMPL("HaveCurrentData"),
+        MAKE_STATIC_STRING_IMPL("HaveFutureData"),
+        MAKE_STATIC_STRING_IMPL("HaveEnoughData"),
+    };
+    static_assert(static_cast<size_t>(MediaPlayerEnums::HaveNothing) == 0, "MediaPlayerEnums::HaveNothing is not 0 as expected");
+    static_assert(static_cast<size_t>(MediaPlayerEnums::HaveMetadata) == 1, "MediaPlayerEnums::HaveMetadata is not 1 as expected");
+    static_assert(static_cast<size_t>(MediaPlayerEnums::HaveCurrentData) == 2, "MediaPlayerEnums::HaveCurrentData is not 2 as expected");
+    static_assert(static_cast<size_t>(MediaPlayerEnums::HaveFutureData) == 3, "MediaPlayerEnums::HaveFutureData is not 3 as expected");
+    static_assert(static_cast<size_t>(MediaPlayerEnums::HaveEnoughData) == 4, "MediaPlayerEnums::HaveEnoughData is not 4 as expected");
+    ASSERT(static_cast<size_t>(enumerationValue) < WTF_ARRAY_LENGTH(values));
+    return values[static_cast<size_t>(enumerationValue)];
 }
 
+String convertEnumerationToString(MediaPlayerEnums::NetworkState enumerationValue)
+{
+    static const NeverDestroyed<String> values[] = {
+        MAKE_STATIC_STRING_IMPL("Empty"),
+        MAKE_STATIC_STRING_IMPL("Idle"),
+        MAKE_STATIC_STRING_IMPL("Loading"),
+        MAKE_STATIC_STRING_IMPL("Loaded"),
+        MAKE_STATIC_STRING_IMPL("FormatError"),
+        MAKE_STATIC_STRING_IMPL("NetworkError"),
+        MAKE_STATIC_STRING_IMPL("DecodeError"),
+    };
+    static_assert(static_cast<size_t>(MediaPlayerEnums::Empty) == 0, "MediaPlayerEnums::Empty is not 0 as expected");
+    static_assert(static_cast<size_t>(MediaPlayerEnums::Idle) == 1, "MediaPlayerEnums::Idle is not 1 as expected");
+    static_assert(static_cast<size_t>(MediaPlayerEnums::Loading) == 2, "MediaPlayerEnums::Loading is not 2 as expected");
+    static_assert(static_cast<size_t>(MediaPlayerEnums::Loaded) == 3, "MediaPlayerEnums::Loaded is not 3 as expected");
+    static_assert(static_cast<size_t>(MediaPlayerEnums::FormatError) == 4, "MediaPlayerEnums::FormatError is not 4 as expected");
+    static_assert(static_cast<size_t>(MediaPlayerEnums::NetworkError) == 5, "MediaPlayerEnums::NetworkError is not 5 as expected");
+    static_assert(static_cast<size_t>(MediaPlayerEnums::DecodeError) == 6, "MediaPlayerEnums::DecodeError is not 6 as expected");
+    ASSERT(static_cast<size_t>(enumerationValue) < WTF_ARRAY_LENGTH(values));
+    return values[static_cast<size_t>(enumerationValue)];
+}
+
+}
+
 #endif

Modified: trunk/Source/WebCore/platform/graphics/MediaPlayerEnums.h (224903 => 224904)


--- trunk/Source/WebCore/platform/graphics/MediaPlayerEnums.h	2017-11-15 23:05:41 UTC (rev 224903)
+++ trunk/Source/WebCore/platform/graphics/MediaPlayerEnums.h	2017-11-15 23:25:34 UTC (rev 224904)
@@ -23,9 +23,10 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
-#ifndef MediaPlayerEnums_h
-#define MediaPlayerEnums_h
+#pragma once
 
+#include <wtf/text/WTFString.h>
+
 namespace WebCore {
 
 class MediaPlayerEnums {
@@ -43,6 +44,31 @@
     typedef uint32_t VideoFullscreenMode;
 };
 
-}
+WTF::String convertEnumerationToString(MediaPlayerEnums::ReadyState);
+WTF::String convertEnumerationToString(MediaPlayerEnums::NetworkState);
 
-#endif
+} // namespace WebCore
+
+
+namespace PAL {
+
+template<typename Type>
+struct LogArgument;
+
+template <>
+struct LogArgument<WebCore::MediaPlayerEnums::ReadyState> {
+    static WTF::String toString(const WebCore::MediaPlayerEnums::ReadyState state)
+    {
+        return convertEnumerationToString(state);
+    }
+};
+
+template <>
+struct LogArgument<WebCore::MediaPlayerEnums::NetworkState> {
+    static WTF::String toString(const WebCore::MediaPlayerEnums::NetworkState state)
+    {
+        return convertEnumerationToString(state);
+    }
+};
+
+}; // namespace PAL

Modified: trunk/Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp (224903 => 224904)


--- trunk/Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp	2017-11-15 23:05:41 UTC (rev 224903)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp	2017-11-15 23:25:34 UTC (rev 224904)
@@ -578,9 +578,9 @@
         m_haveReportedFirstVideoFrame = false;
 
     if (m_networkState != newNetworkState)
-        ALWAYS_LOG(LOGIDENTIFIER, "entered with networkState ", static_cast<int>(m_networkState), ", exiting with ", static_cast<int>(newNetworkState));
+        ALWAYS_LOG(LOGIDENTIFIER, "entered with networkState ", m_networkState, ", exiting with ", newNetworkState);
     if (m_readyState != newReadyState)
-        ALWAYS_LOG(LOGIDENTIFIER, "entered with readyState ", static_cast<int>(m_readyState), ", exiting with ", static_cast<int>(newReadyState));
+        ALWAYS_LOG(LOGIDENTIFIER, "entered with readyState ", m_readyState, ", exiting with ", newReadyState);
 
     setNetworkState(newNetworkState);
     setReadyState(newReadyState);
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to