Changeset 196401 in webkit


Ignore:
Timestamp:
Feb 10, 2016 4:10:52 PM (8 years ago)
Author:
eric.carlson@apple.com
Message:

Update "manual" caption track logic
https://bugs.webkit.org/show_bug.cgi?id=154084
<rdar://problem/24530516>

Reviewed by Dean Jackson.

No new tests, media/track/track-manual-mode.html was updated.

  • English.lproj/Localizable.strings: Add new string.
  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::addTextTrack): track.setManualSelectionMode is no more.
(WebCore::HTMLMediaElement::configureTextTrackGroup): Never enable a track automatically when

in manual selection mode.

(WebCore::HTMLMediaElement::captionPreferencesChanged): track.setManualSelectionMode is no more.

  • html/track/TextTrack.cpp:

(WebCore::TextTrack::containsOnlyForcedSubtitles): Return true for forced tracks.
(WebCore::TextTrack::kind): Deleted.

  • html/track/TextTrack.h:
  • html/track/TrackBase.h:

(WebCore::TrackBase::kind): De-virtualize, nobody overrides it.

  • page/CaptionUserPreferencesMediaAF.cpp:

(WebCore::trackDisplayName): Include "forced" in the name of forced tracks.

  • platform/LocalizedStrings.cpp:

(WebCore::forcedTrackMenuItemText): New.

  • platform/LocalizedStrings.h:
Location:
trunk
Files:
12 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r196398 r196401  
     12016-02-10  Eric Carlson  <eric.carlson@apple.com>
     2
     3        Update "manual" caption track logic
     4        https://bugs.webkit.org/show_bug.cgi?id=154084
     5        <rdar://problem/24530516>
     6
     7        Reviewed by Dean Jackson.
     8
     9        * media/track/track-manual-mode-expected.txt:
     10        * media/track/track-manual-mode.html:
     11
    1122016-02-10  Ryan Haddad  <ryanhaddad@apple.com>
    213
  • trunk/LayoutTests/media/track/track-manual-mode-expected.txt

    r196010 r196401  
    77EVENT(canplaythrough)
    88
    9 ** Forced tracks should be in .textTracks as well as in the menu,
    10 ** but should be labeled as 'subtitles'
    11 
     9** Forced tracks should be in .textTracks as well as in the menu
    1210EXPECTED (video.textTracks.length == '9') OK
    1311EXPECTED (trackMenuItems.length == '11') OK
     12
     13** 'forced' should be in the title of a forced track menu item
     14Track menu:
     150: "Off", checked
     161: "Auto (Recommended)"
     172: "English Closed Captions CC"
     183: "English Subtitles"
     194: "English Subtitles Forced"
     205: "French Subtitles"
     216: "French Subtitles Forced"
     227: "German Subtitles"
     238: "German Subtitles Forced"
     249: "Spanish Subtitles"
     2510: "Spanish Subtitles Forced"
    1426
    1527** No track should be enabled by default
     
    1931
    2032EXPECTED (video.textTracks[1].language == 'en') OK
    21 EXPECTED (video.textTracks[1].kind == 'subtitles') OK
     33EXPECTED (video.textTracks[1].kind == 'forced') OK
    2234EXPECTED (video.textTracks[1].mode == 'disabled') OK
    2335
     
    2739
    2840EXPECTED (video.textTracks[3].language == 'fr') OK
    29 EXPECTED (video.textTracks[3].kind == 'subtitles') OK
     41EXPECTED (video.textTracks[3].kind == 'forced') OK
    3042EXPECTED (video.textTracks[3].mode == 'disabled') OK
    3143
     
    3547
    3648EXPECTED (video.textTracks[5].language == 'es') OK
    37 EXPECTED (video.textTracks[5].kind == 'subtitles') OK
     49EXPECTED (video.textTracks[5].kind == 'forced') OK
    3850EXPECTED (video.textTracks[5].mode == 'disabled') OK
    3951
     
    4355
    4456EXPECTED (video.textTracks[7].language == 'de') OK
    45 EXPECTED (video.textTracks[7].kind == 'subtitles') OK
     57EXPECTED (video.textTracks[7].kind == 'forced') OK
    4658EXPECTED (video.textTracks[7].mode == 'disabled') OK
    4759
  • trunk/LayoutTests/media/track/track-manual-mode.html

    r196010 r196401  
    1111            function testTracks()
    1212            {
    13                 consoleWrite(`<br><i>** Forced tracks should be in .textTracks as well as in the menu,`);
    14                 consoleWrite(`<i>** but should be labeled as 'subtitles'</i><br>`);
     13                consoleWrite(`<br><i>** Forced tracks should be in .textTracks as well as in the menu`);
    1514                testExpected("video.textTracks.length", 9);
    1615
     
    2524                testExpected("trackMenuItems.length", 11);
    2625
     26                consoleWrite(`<br><i>** 'forced' should be in the title of a forced track menu item<i>`);
     27                listTrackMenu();
     28
    2729                consoleWrite("<br><i>** No track should be enabled by default<" + "/i>");
    2830                testExpected("video.textTracks[0].language", "en");
     
    3234
    3335                testExpected("video.textTracks[1].language", "en");
    34                 testExpected("video.textTracks[1].kind", "subtitles");
     36                testExpected("video.textTracks[1].kind", "forced");
    3537                testExpected("video.textTracks[1].mode", "disabled");
    3638                consoleWrite("");
     
    4244
    4345                testExpected("video.textTracks[3].language", "fr");
    44                 testExpected("video.textTracks[3].kind", "subtitles");
     46                testExpected("video.textTracks[3].kind", "forced");
    4547                testExpected("video.textTracks[3].mode", "disabled");
    4648                consoleWrite("");
     
    5254
    5355                testExpected("video.textTracks[5].language", "es");
    54                 testExpected("video.textTracks[5].kind", "subtitles");
     56                testExpected("video.textTracks[5].kind", "forced");
    5557                testExpected("video.textTracks[5].mode", "disabled");
    5658                consoleWrite("");
     
    6264
    6365                testExpected("video.textTracks[7].language", "de");
    64                 testExpected("video.textTracks[7].kind", "subtitles");
     66                testExpected("video.textTracks[7].kind", "forced");
    6567                testExpected("video.textTracks[7].mode", "disabled");
    6668                consoleWrite("");
  • trunk/Source/WebCore/ChangeLog

    r196400 r196401  
     12016-02-10  Eric Carlson  <eric.carlson@apple.com>
     2
     3        Update "manual" caption track logic
     4        https://bugs.webkit.org/show_bug.cgi?id=154084
     5        <rdar://problem/24530516>
     6
     7        Reviewed by Dean Jackson.
     8
     9        No new tests, media/track/track-manual-mode.html was updated.
     10
     11        * English.lproj/Localizable.strings: Add new string.
     12
     13        * html/HTMLMediaElement.cpp:
     14        (WebCore::HTMLMediaElement::addTextTrack): track.setManualSelectionMode is no more.
     15        (WebCore::HTMLMediaElement::configureTextTrackGroup): Never enable a track automatically when
     16          in manual selection mode.
     17        (WebCore::HTMLMediaElement::captionPreferencesChanged):  track.setManualSelectionMode is no more.
     18
     19        * html/track/TextTrack.cpp:
     20        (WebCore::TextTrack::containsOnlyForcedSubtitles): Return true for forced tracks.
     21        (WebCore::TextTrack::kind): Deleted.
     22        * html/track/TextTrack.h:
     23
     24        * html/track/TrackBase.h:
     25        (WebCore::TrackBase::kind): De-virtualize, nobody overrides it.
     26
     27        * page/CaptionUserPreferencesMediaAF.cpp:
     28        (WebCore::trackDisplayName): Include "forced" in the name of forced tracks.
     29
     30        * platform/LocalizedStrings.cpp:
     31        (WebCore::forcedTrackMenuItemText): New.
     32        * platform/LocalizedStrings.h:
     33
    1342016-02-10  Jiewen Tan  <jiewen_tan@apple.com>
    235
  • trunk/Source/WebCore/English.lproj/Localizable.strings

    r195971 r196401  
    4141"%@ Easy Reader" = "%@ Easy Reader";
    4242
     43/* Text track contains forced subtitles */
     44"%@ Forced" = "%@ Forced";
     45
    4346/* visible name of the network process. The argument is the application name. */
    4447"%@ Networking" = "%@ Networking";
  • trunk/Source/WebCore/html/HTMLMediaElement.cpp

    r196400 r196401  
    35513551    }
    35523552
    3553     track->setManualSelectionMode(m_captionDisplayMode == CaptionUserPreferences::Manual);
    35543553    textTracks()->append(track);
    35553554
     
    38143813    }
    38153814
    3816     if (!trackToEnable && defaultTrack)
    3817         trackToEnable = defaultTrack;
    3818    
    3819     // If no track matches the user's preferred language, none was marked as 'default', and there is a forced subtitle track
    3820     // in the same language as the language of the primary audio track, enable it.
    3821     if (!trackToEnable && forcedSubitleTrack)
    3822         trackToEnable = forcedSubitleTrack;
    3823 
    3824     // If no track matches, don't disable an already visible track unless preferences say they all should be off.
    3825     if (group.kind != TrackGroup::CaptionsAndSubtitles || displayMode != CaptionUserPreferences::ForcedOnly) {
    3826         if (!trackToEnable && !defaultTrack && group.visibleTrack)
    3827             trackToEnable = group.visibleTrack;
    3828     }
    3829    
    3830     // If no track matches the user's preferred language and non was marked 'default', enable the first track
    3831     // because the user has explicitly stated a preference for this kind of track.
    3832     if (!trackToEnable && fallbackTrack)
    3833         trackToEnable = fallbackTrack;
    3834 
    3835     if (trackToEnable)
    3836         m_subtitleTrackLanguage = trackToEnable->language();
    3837     else
    3838         m_subtitleTrackLanguage = emptyString();
    3839    
     3815    if (displayMode != CaptionUserPreferences::Manual) {
     3816        if (!trackToEnable && defaultTrack)
     3817            trackToEnable = defaultTrack;
     3818
     3819        // If no track matches the user's preferred language, none was marked as 'default', and there is a forced subtitle track
     3820        // in the same language as the language of the primary audio track, enable it.
     3821        if (!trackToEnable && forcedSubitleTrack)
     3822            trackToEnable = forcedSubitleTrack;
     3823
     3824        // If no track matches, don't disable an already visible track unless preferences say they all should be off.
     3825        if (group.kind != TrackGroup::CaptionsAndSubtitles || displayMode != CaptionUserPreferences::ForcedOnly) {
     3826            if (!trackToEnable && !defaultTrack && group.visibleTrack)
     3827                trackToEnable = group.visibleTrack;
     3828        }
     3829
     3830        // If no track matches the user's preferred language and non was marked 'default', enable the first track
     3831        // because the user has explicitly stated a preference for this kind of track.
     3832        if (!trackToEnable && fallbackTrack)
     3833            trackToEnable = fallbackTrack;
     3834
     3835        if (trackToEnable)
     3836            m_subtitleTrackLanguage = trackToEnable->language();
     3837        else
     3838            m_subtitleTrackLanguage = emptyString();
     3839    }
     3840
    38403841    if (currentlyEnabledTracks.size()) {
    38413842        for (size_t i = 0; i < currentlyEnabledTracks.size(); ++i) {
     
    56965697        return;
    56975698
    5698     if (m_captionDisplayMode == CaptionUserPreferences::Manual || displayMode == CaptionUserPreferences::Manual) {
    5699         for (unsigned i = 0; i < m_textTracks->length(); ++i)
    5700             m_textTracks->item(i)->setManualSelectionMode(displayMode == CaptionUserPreferences::Manual);
    5701     }
    5702 
    57035699    m_captionDisplayMode = displayMode;
    57045700    setWebkitClosedCaptionsVisible(m_captionDisplayMode == CaptionUserPreferences::AlwaysOn);
  • trunk/Source/WebCore/html/track/TextTrack.cpp

    r196010 r196401  
    174174}
    175175
    176 AtomicString TextTrack::kind() const
    177 {
    178     AtomicString kind = TrackBase::kind();
    179     if (!m_manualSelectionMode || kind != forcedKeyword())
    180         return kind;
    181 
    182     return subtitlesKeyword();
    183 }
    184 
    185176void TextTrack::setKind(const AtomicString& newKind)
    186177{
     
    555546}
    556547
     548bool TextTrack::containsOnlyForcedSubtitles() const
     549{
     550    return kind() == forcedKeyword();
     551}
     552
    557553#if ENABLE(MEDIA_SOURCE)
    558554void TextTrack::setLanguage(const AtomicString& language)
  • trunk/Source/WebCore/html/track/TextTrack.h

    r196010 r196401  
    8383    static const AtomicString& showingKeyword();
    8484
    85     void setKind(const AtomicString&) override;
    86     AtomicString kind() const override;
     85    virtual void setKind(const AtomicString&) override;
    8786
    8887    virtual AtomicString inBandMetadataTrackDispatchType() const { return emptyString(); }
     
    118117    virtual bool isClosedCaptions() const { return false; }
    119118    virtual bool isSDH() const { return false; }
    120     virtual bool containsOnlyForcedSubtitles() const { return false; }
     119    virtual bool containsOnlyForcedSubtitles() const;
    121120    virtual bool isMainProgramContent() const;
    122121    virtual bool isEasyToRead() const { return false; }
     
    143142
    144143    virtual MediaTime startTimeVariance() const { return MediaTime::zeroTime(); }
    145 
    146     void setManualSelectionMode(bool mode) { m_manualSelectionMode = mode; }
    147144
    148145    using RefCounted<TrackBase>::ref;
     
    175172    int m_renderedTrackIndex;
    176173    bool m_hasBeenConfigured;
    177     bool m_manualSelectionMode { false };
    178174};
    179175
  • trunk/Source/WebCore/html/track/TrackBase.h

    r196010 r196401  
    5252    virtual void setId(const AtomicString& id) { m_id = id; }
    5353
    54     virtual AtomicString kind() const { return m_kind; }
     54    AtomicString kind() const { return m_kind; }
    5555    virtual void setKind(const AtomicString&);
    5656
  • trunk/Source/WebCore/page/CaptionUserPreferencesMediaAF.cpp

    r196080 r196401  
    668668        return textTrackAutomaticMenuItemText();
    669669
    670     StringBuilder displayName;
    671     buildDisplayStringForTrackBase(displayName, *track);
    672 
    673     if (displayName.isEmpty())
    674         displayName.append(textTrackNoLabelText());
    675    
     670    StringBuilder displayNameBuilder;
     671    buildDisplayStringForTrackBase(displayNameBuilder, *track);
     672
     673    if (displayNameBuilder.isEmpty())
     674        displayNameBuilder.append(textTrackNoLabelText());
     675
     676    String displayName = displayNameBuilder.toString();
     677
     678    if (track->isClosedCaptions()) {
     679        displayName = closedCaptionTrackMenuItemText(displayName);
     680        if (track->isEasyToRead())
     681            displayName = easyReaderTrackMenuItemText(displayName);
     682
     683        return displayName;
     684    }
     685
     686    if (track->isSDH())
     687        displayName = sdhTrackMenuItemText(displayName);
     688
     689    if (track->containsOnlyForcedSubtitles())
     690        displayName = forcedTrackMenuItemText(displayName);
     691
    676692    if (track->isEasyToRead())
    677         return easyReaderTrackMenuItemText(displayName.toString());
    678    
    679     if (track->isClosedCaptions())
    680         return closedCaptionTrackMenuItemText(displayName.toString());
    681 
    682     if (track->isSDH())
    683         return sdhTrackMenuItemText(displayName.toString());
    684 
    685     return displayName.toString();
     693        displayName = easyReaderTrackMenuItemText(displayName);
     694
     695    return displayName;
    686696}
    687697
  • trunk/Source/WebCore/platform/LocalizedStrings.cpp

    r194819 r196401  
    11121112    return formatLocalizedString(WEB_UI_STRING("%@ Easy Reader", "Text track contains simplified (3rd grade level) subtitles"), title.createCFString().get());
    11131113}
     1114
     1115String forcedTrackMenuItemText(const String& title)
     1116{
     1117    return formatLocalizedString(WEB_UI_STRING("%@ Forced", "Text track contains forced subtitles"), title.createCFString().get());
     1118}
    11141119#endif
    11151120
  • trunk/Source/WebCore/platform/LocalizedStrings.h

    r186012 r196401  
    258258    String sdhTrackMenuItemText(const String&);
    259259    String easyReaderTrackMenuItemText(const String&);
     260    String forcedTrackMenuItemText(const String&);
    260261#endif
    261262#endif
Note: See TracChangeset for help on using the changeset viewer.