Title: [152422] trunk
Revision
152422
Author
[email protected]
Date
2013-07-05 13:35:11 -0700 (Fri, 05 Jul 2013)

Log Message

[Mac] .webkitClosedCaptionsVisible doesn't work with "Automatic" caption mode
https://bugs.webkit.org/show_bug.cgi?id=118319

Reviewed by Jer Noble.

Source/WebCore: 

Track when captions are enabled with the old 'webkitClosedCaptionsVisible' attribute and
consider that when determining which track should be enabled.

Test: media/track/track-legacyapi-with-automatic-mode.html

* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::HTMLMediaElement): Initialize m_webkitLegacyClosedCaptionOverride.
(WebCore::HTMLMediaElement::setWebkitClosedCaptionsVisible): Set m_webkitLegacyClosedCaptionOverride.
(WebCore::HTMLMediaElement::webkitClosedCaptionsVisible): Return m_webkitLegacyClosedCaptionOverride.
* html/HTMLMediaElement.h:

* page/CaptionUserPreferencesMediaAF.cpp:
(WebCore::CaptionUserPreferencesMediaAF::textTrackSelectionScore): Don't apply "automatic"
    logic when captions were enabled with .webkitClosedCaptionsVisible.

LayoutTests: 

* media/track/track-legacyapi-with-automatic-mode-expected.txt: Added.
* media/track/track-legacyapi-with-automatic-mode.html: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (152421 => 152422)


--- trunk/LayoutTests/ChangeLog	2013-07-05 17:46:29 UTC (rev 152421)
+++ trunk/LayoutTests/ChangeLog	2013-07-05 20:35:11 UTC (rev 152422)
@@ -1,3 +1,13 @@
+2013-07-05  Eric Carlson  <[email protected]>
+
+        [Mac] .webkitClosedCaptionsVisible doesn't work with "Automatic" caption mode
+        https://bugs.webkit.org/show_bug.cgi?id=118319
+
+        Reviewed by Jer Noble.
+
+        * media/track/track-legacyapi-with-automatic-mode-expected.txt: Added.
+        * media/track/track-legacyapi-with-automatic-mode.html: Added.
+
 2013-07-05  Mario Sanchez Prada  <[email protected]>
 
         Unreviewed gardening. Updated TestExpectations file.

Added: trunk/LayoutTests/media/track/track-legacyapi-with-automatic-mode-expected.txt (0 => 152422)


--- trunk/LayoutTests/media/track/track-legacyapi-with-automatic-mode-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/media/track/track-legacyapi-with-automatic-mode-expected.txt	2013-07-05 20:35:11 UTC (rev 152422)
@@ -0,0 +1,30 @@
+Test that enabling a track with .webkitClosedCaptionsVisible succeeds when in "automatic" mode.
+
+
+** Setup
+RUN(internals.setCaptionDisplayMode('Automatic'))
+RUN(trackElement = document.createElement('track'))
+RUN(trackElement.kind = 'captions')
+RUN(trackElement.src = '')
+RUN(video.appendChild(trackElement))
+
+EVENT(canplaythrough)
+
+** Test initial state
+EXPECTED (video.textTracks.length == '1') OK
+EXPECTED (video.textTracks[0].mode == 'disabled') OK
+
+** Enable cues, allow them to load
+RUN(video.webkitClosedCaptionsVisible = true)
+EVENT(load)
+EXPECTED (track.readyState == '2') OK
+RUN(video.currentTime = 0.5)
+
+EVENT(seeked)
+
+** Check to make sure captions are displaying
+EXPECTED (video.textTracks[0].cues != 'null') OK
+EXPECTED (textTrackDisplayElement(video, 'cue').textContent != 'null') OK
+
+END OF TEST
+

Added: trunk/LayoutTests/media/track/track-legacyapi-with-automatic-mode.html (0 => 152422)


--- trunk/LayoutTests/media/track/track-legacyapi-with-automatic-mode.html	                        (rev 0)
+++ trunk/LayoutTests/media/track/track-legacyapi-with-automatic-mode.html	2013-07-05 20:35:11 UTC (rev 152422)
@@ -0,0 +1,67 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>Enabling a track with legacy API succeeds when in "Automatic" mode</title>
+
+        <script src=""
+        <script src=""
+        <script src=""
+        <script src=""
+        <script>
+
+            function seeked()
+            {
+                consoleWrite("<br><i>** Check to make sure captions are displaying<" + "/i>");
+
+                testExpected("video.textTracks[0].cues", null, '!=');
+                testExpected("textTrackDisplayElement(video, 'cue').textContent", null, '!=');
+
+                consoleWrite("");
+                endTest();
+            }
+
+            function trackLoaded()
+            {
+                consoleWrite("EVENT(load)");
+                track = event.target;
+                testExpected("track.readyState", HTMLTrackElement.LOADED);
+                run("video.currentTime = 0.5");
+                waitForEvent('seeked', seeked);
+                consoleWrite("");
+            }
+
+            function canplaythrough()
+            {
+                consoleWrite("<br><i>** Test initial state<" + "/i>");
+                testExpected("video.textTracks.length", 1);
+                testExpected("video.textTracks[0].mode", "disabled");
+
+                consoleWrite("<br><i>** Enable cues, allow them to load<" + "/i>");
+                run("video.webkitClosedCaptionsVisible = true");
+            }
+
+            function setup()
+            {
+                consoleWrite("<br><i>** Setup<" + "/i>");
+                findMediaElement();
+
+                if (window.internals)
+                    run("internals.setCaptionDisplayMode('Automatic')");
+                run("trackElement = document.createElement('track')");
+                run("trackElement.kind = 'captions'");
+                run("trackElement.src = ''");
+                run("video.appendChild(trackElement)");
+
+                video.src = "" '../content/test');
+                trackElement.setAttribute('onload', 'trackLoaded()');
+                waitForEvent('canplaythrough', canplaythrough);
+                consoleWrite("");
+            }
+
+        </script>
+    </head>
+    <body _onload_="setup()">
+        <video controls width=500></video>
+        <p>Test that enabling a track with .webkitClosedCaptionsVisible succeeds when in "automatic" mode.</p>
+    </body>
+</html>

Modified: trunk/Source/WebCore/ChangeLog (152421 => 152422)


--- trunk/Source/WebCore/ChangeLog	2013-07-05 17:46:29 UTC (rev 152421)
+++ trunk/Source/WebCore/ChangeLog	2013-07-05 20:35:11 UTC (rev 152422)
@@ -1,3 +1,25 @@
+2013-07-05  Eric Carlson  <[email protected]>
+
+        [Mac] .webkitClosedCaptionsVisible doesn't work with "Automatic" caption mode
+        https://bugs.webkit.org/show_bug.cgi?id=118319
+
+        Reviewed by Jer Noble.
+
+        Track when captions are enabled with the old 'webkitClosedCaptionsVisible' attribute and
+        consider that when determining which track should be enabled.
+
+        Test: media/track/track-legacyapi-with-automatic-mode.html
+
+        * html/HTMLMediaElement.cpp:
+        (WebCore::HTMLMediaElement::HTMLMediaElement): Initialize m_webkitLegacyClosedCaptionOverride.
+        (WebCore::HTMLMediaElement::setWebkitClosedCaptionsVisible): Set m_webkitLegacyClosedCaptionOverride.
+        (WebCore::HTMLMediaElement::webkitClosedCaptionsVisible): Return m_webkitLegacyClosedCaptionOverride.
+        * html/HTMLMediaElement.h:
+
+        * page/CaptionUserPreferencesMediaAF.cpp:
+        (WebCore::CaptionUserPreferencesMediaAF::textTrackSelectionScore): Don't apply "automatic"
+            logic when captions were enabled with .webkitClosedCaptionsVisible.
+
 2013-07-05  Benjamin Dupont   <[email protected]>
 
         Segmentation fault occurred when ICU data library doesn't embed the expected encoding.

Modified: trunk/Source/WebCore/html/HTMLMediaElement.cpp (152421 => 152422)


--- trunk/Source/WebCore/html/HTMLMediaElement.cpp	2013-07-05 17:46:29 UTC (rev 152421)
+++ trunk/Source/WebCore/html/HTMLMediaElement.cpp	2013-07-05 20:35:11 UTC (rev 152422)
@@ -298,6 +298,7 @@
     , m_sendProgressEvents(true)
     , m_isFullscreen(false)
     , m_closedCaptionsVisible(false)
+    , m_webkitLegacyClosedCaptionOverride(false)
 #if ENABLE(PLUGIN_PROXY_FOR_VIDEO)
     , m_needWidgetUpdate(false)
 #endif
@@ -4526,12 +4527,13 @@
 
 void HTMLMediaElement::setWebkitClosedCaptionsVisible(bool visible)
 {
+    m_webkitLegacyClosedCaptionOverride = visible;
     setClosedCaptionsVisible(visible);
 }
 
 bool HTMLMediaElement::webkitClosedCaptionsVisible() const
 {
-    return m_closedCaptionsVisible;
+    return m_webkitLegacyClosedCaptionOverride && m_closedCaptionsVisible;
 }
 
 

Modified: trunk/Source/WebCore/html/HTMLMediaElement.h (152421 => 152422)


--- trunk/Source/WebCore/html/HTMLMediaElement.h	2013-07-05 17:46:29 UTC (rev 152421)
+++ trunk/Source/WebCore/html/HTMLMediaElement.h	2013-07-05 20:35:11 UTC (rev 152422)
@@ -710,6 +710,7 @@
 
     bool m_isFullscreen : 1;
     bool m_closedCaptionsVisible : 1;
+    bool m_webkitLegacyClosedCaptionOverride : 1;
 
 #if ENABLE(PLUGIN_PROXY_FOR_VIDEO)
     bool m_needWidgetUpdate : 1;

Modified: trunk/Source/WebCore/page/CaptionUserPreferencesMediaAF.cpp (152421 => 152422)


--- trunk/Source/WebCore/page/CaptionUserPreferencesMediaAF.cpp	2013-07-05 17:46:29 UTC (rev 152421)
+++ trunk/Source/WebCore/page/CaptionUserPreferencesMediaAF.cpp	2013-07-05 20:35:11 UTC (rev 152422)
@@ -680,7 +680,7 @@
 
     Vector<String> userPreferredCaptionLanguages = preferredLanguages();
 
-    if (displayMode == Automatic || trackHasOnlyForcedSubtitles) {
+    if ((displayMode == Automatic && !legacyOverride) || trackHasOnlyForcedSubtitles) {
 
         if (!mediaElement || !mediaElement->player())
             return 0;
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to