Consider user's preferred language when choosing text tracks
authoreric.carlson@apple.com <eric.carlson@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 2 Feb 2012 05:10:31 +0000 (05:10 +0000)
committereric.carlson@apple.com <eric.carlson@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 2 Feb 2012 05:10:31 +0000 (05:10 +0000)
commit52578181758e980fe406e5fcd49d02606995b4cc
treee00066f1f9c16da1cb7e27dc0c8ca37dc731e7bd
parent81596e474b3cd28d45fbcae6de886422e23ee6d0
Consider user's preferred language when choosing text tracks
https://bugs.webkit.org/show_bug.cgi?id=74121

Reviewed by Alexey Proskuryakov.

Source/WebCore:

Tests: media/track/track-language-preference.html
       media/track/track-prefer-captions.html

* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::loadTimerFired): configureTextTracks -> configureNewTextTracks.
(WebCore::HTMLMediaElement::textTracksAreReady): Add more comments.
(WebCore::HTMLMediaElement::textTrackModeChanged): Ditto.
(WebCore::HTMLMediaElement::showingTrackWithSameKind): Minor restructuring.
(WebCore::HTMLMediaElement::userIsInterestedInThisTrackKind): Renamed from userIsInterestedInThisTrack,
    don't consider user's language preference.
(WebCore::HTMLMediaElement::configureTextTrackGroup): New, configure all tracks in a group,
    considering user's kind and language preferences.
(WebCore::HTMLMediaElement::configureNewTextTracks): New, configure all newly added tracks.
* html/HTMLMediaElement.h:
(WebCore::HTMLMediaElement::TrackGroup::TrackGroup):
(TrackGroup):

* platform/Language.cpp:
(WebCore::canonicalLanguageIdentifier): New, create a canonicalized version of a language string.
(WebCore::bestMatchingLanguage): New, return the language from the list that best matches the
    specified language.
(WebCore::preferredLanguageFromList): New, return the language in the specified list that best
    matches the user's language preference.
* platform/Language.h:

* testing/Internals.cpp:
(WebCore::Internals::setShouldDisplayTrackType): New, allow DRT to set the track type preference.
(WebCore::Internals::shouldDisplayTrackType): New, allow DRT to read the track type preference.
* testing/Internals.h:
* testing/Internals.idl:

LayoutTests:

* media/track/track-language-preference-expected.txt: Added.
* media/track/track-language-preference.html: Added.
* media/track/track-prefer-captions-expected.txt: Added.
* media/track/track-prefer-captions.html: Added.
* platform/mac/Skipped:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@106531 268f45cc-cd09-0410-ab3c-d52691b4dbfc
13 files changed:
LayoutTests/ChangeLog
LayoutTests/media/track/track-language-preference-expected.txt [new file with mode: 0644]
LayoutTests/media/track/track-language-preference.html [new file with mode: 0644]
LayoutTests/media/track/track-prefer-captions-expected.txt [new file with mode: 0644]
LayoutTests/media/track/track-prefer-captions.html [new file with mode: 0644]
Source/WebCore/ChangeLog
Source/WebCore/html/HTMLMediaElement.cpp
Source/WebCore/html/HTMLMediaElement.h
Source/WebCore/platform/Language.cpp
Source/WebCore/platform/Language.h
Source/WebCore/testing/Internals.cpp
Source/WebCore/testing/Internals.h
Source/WebCore/testing/Internals.idl