Skip to content

Commit

Permalink
[Mac] .webkitClosedCaptionsVisible doesn't work with "Automatic" capt…
Browse files Browse the repository at this point in the history
…ion 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.


Canonical link: https://commits.webkit.org/136413@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@152422 268f45cc-cd09-0410-ab3c-d52691b4dbfc
  • Loading branch information
eric-carlson committed Jul 5, 2013
1 parent 55eefa5 commit 97a3125
Show file tree
Hide file tree
Showing 7 changed files with 134 additions and 2 deletions.
10 changes: 10 additions & 0 deletions LayoutTests/ChangeLog
@@ -1,3 +1,13 @@
2013-07-05 Eric Carlson <eric.carlson@apple.com>

[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 <mario.prada@samsung.com>

Unreviewed gardening. Updated TestExpectations file.
Expand Down
@@ -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 = 'captions-webvtt/tc004-webvtt-file.vtt')
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

67 changes: 67 additions & 0 deletions LayoutTests/media/track/track-legacyapi-with-automatic-mode.html
@@ -0,0 +1,67 @@
<!DOCTYPE html>
<html>
<head>
<title>Enabling a track with legacy API succeeds when in "Automatic" mode</title>

<script src=../media-file.js></script>
<script src=../video-test.js></script>
<script src=../trackmenu-test.js></script>
<script src=../media-controls.js></script>
<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 = 'captions-webvtt/tc004-webvtt-file.vtt'");
run("video.appendChild(trackElement)");

video.src = findMediaFile('video', '../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>
22 changes: 22 additions & 0 deletions Source/WebCore/ChangeLog
@@ -1,3 +1,25 @@
2013-07-05 Eric Carlson <eric.carlson@apple.com>

[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 <bdupont@nds.com>

Segmentation fault occurred when ICU data library doesn't embed the expected encoding.
Expand Down
4 changes: 3 additions & 1 deletion Source/WebCore/html/HTMLMediaElement.cpp
Expand Up @@ -298,6 +298,7 @@ HTMLMediaElement::HTMLMediaElement(const QualifiedName& tagName, Document* docum
, m_sendProgressEvents(true)
, m_isFullscreen(false)
, m_closedCaptionsVisible(false)
, m_webkitLegacyClosedCaptionOverride(false)
#if ENABLE(PLUGIN_PROXY_FOR_VIDEO)
, m_needWidgetUpdate(false)
#endif
Expand Down Expand Up @@ -4526,12 +4527,13 @@ void HTMLMediaElement::setClosedCaptionsVisible(bool closedCaptionVisible)

void HTMLMediaElement::setWebkitClosedCaptionsVisible(bool visible)
{
m_webkitLegacyClosedCaptionOverride = visible;
setClosedCaptionsVisible(visible);
}

bool HTMLMediaElement::webkitClosedCaptionsVisible() const
{
return m_closedCaptionsVisible;
return m_webkitLegacyClosedCaptionOverride && m_closedCaptionsVisible;
}


Expand Down
1 change: 1 addition & 0 deletions Source/WebCore/html/HTMLMediaElement.h
Expand Up @@ -710,6 +710,7 @@ class HTMLMediaElement : public HTMLElement, private MediaPlayerClient, public M

bool m_isFullscreen : 1;
bool m_closedCaptionsVisible : 1;
bool m_webkitLegacyClosedCaptionOverride : 1;

#if ENABLE(PLUGIN_PROXY_FOR_VIDEO)
bool m_needWidgetUpdate : 1;
Expand Down
2 changes: 1 addition & 1 deletion Source/WebCore/page/CaptionUserPreferencesMediaAF.cpp
Expand Up @@ -680,7 +680,7 @@ int CaptionUserPreferencesMediaAF::textTrackSelectionScore(TextTrack* track, HTM

Vector<String> userPreferredCaptionLanguages = preferredLanguages();

if (displayMode == Automatic || trackHasOnlyForcedSubtitles) {
if ((displayMode == Automatic && !legacyOverride) || trackHasOnlyForcedSubtitles) {

if (!mediaElement || !mediaElement->player())
return 0;
Expand Down

0 comments on commit 97a3125

Please sign in to comment.