Changeset 142580 in webkit


Ignore:
Timestamp:
Feb 11, 2013 10:30:19 PM (11 years ago)
Author:
eric.carlson@apple.com
Message:

[Mac] Track language selection should be sticky
https://bugs.webkit.org/show_bug.cgi?id=109466

Reviewed by Dean Jackson.

.:

  • Source/autotools/symbols.filter: Export PageGroup::captionPreferences and Page::initGroup.

Source/WebCore:

Choosing a text track from the caption menu should make that track's language the
preferred caption language. Turning captions off from the menu should disable captions
in videos loaded subsequently.

OS X has system support for these settings, so changes made by DRT should not change the
settings on the user's system. Add support for all other ports in DRT only.

Test: media/track/track-user-preferences.html

  • WebCore.exp.in: Export PageGroup::captionPreferences().
  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::HTMLMediaElement): Use page()->group().captionPreferences().
(WebCore::HTMLMediaElement::attach): Ditto.
(WebCore::HTMLMediaElement::detach): Ditto.
(WebCore::HTMLMediaElement::userPrefersCaptions): Ditto.
(WebCore::HTMLMediaElement::configureTextTrackGroup): Ditto. Update for

preferredLanguageFromList change.

(WebCore::HTMLMediaElement::toggleTrackAtIndex): Set user prefs for captions visible and

caption language as appropriate.

  • html/shadow/MediaControlElements.cpp:

(WebCore::MediaControlClosedCaptionsTrackListElement::defaultEventHandler): Remove unneeded comment.
(WebCore::MediaControlTextTrackContainerElement::updateSizes): Use page()->group().captionPreferences().

  • html/shadow/MediaControlsApple.cpp:

(WebCore::MediaControlsApple::closedCaptionTracksChanged): Update caption menu button visibility.

  • page/CaptionUserPreferences.h:

(WebCore::CaptionUserPreferences::userPrefersCaptions): Support "testing" mode.
(WebCore::CaptionUserPreferences::setUserPrefersCaptions): Ditto.
(WebCore::CaptionUserPreferences::registerForPreferencesChangedCallbacks): Ditto.
(WebCore::CaptionUserPreferences::unregisterForPreferencesChangedCallbacks): Ditto.
(WebCore::CaptionUserPreferences::setPreferredLanguage): Ditto.
(WebCore::CaptionUserPreferences::preferredLanguages): Ditto.
(WebCore::CaptionUserPreferences::testingMode): Ditto.
(WebCore::CaptionUserPreferences::setTestingMode): Ditto.
(WebCore::CaptionUserPreferences::CaptionUserPreferences): Ditto.

  • page/CaptionUserPreferencesMac.h:
  • page/CaptionUserPreferencesMac.mm:

(WebCore::CaptionUserPreferencesMac::userPrefersCaptions): Support "testing" mode.
(WebCore::CaptionUserPreferencesMac::setUserPrefersCaptions): Ditto.
(WebCore::CaptionUserPreferencesMac::userHasCaptionPreferences): Ditto.
(WebCore::CaptionUserPreferencesMac::registerForPreferencesChangedCallbacks): Change name from

registerForCaptionPreferencesChangedCallbacks. Support "testing" mode.

(WebCore::CaptionUserPreferencesMac::unregisterForPreferencesChangedCallbacks): Change name from

unregisterForCaptionPreferencesChangedCallbacks. Support "testing" mode.

(WebCore::CaptionUserPreferencesMac::captionsStyleSheetOverride): Support "testing" mode.
(WebCore::CaptionUserPreferencesMac::captionFontSizeScale): Ditto.
(WebCore::CaptionUserPreferencesMac::setPreferredLanguage): Ditto.
(WebCore::CaptionUserPreferencesMac::preferredLanguages): Ditto. Return the platform override when set.

  • page/PageGroup.cpp:

(WebCore::PageGroup::registerForCaptionPreferencesChangedCallbacks): Remove because it is already

available from the caption preference object.

(WebCore::PageGroup::unregisterForCaptionPreferencesChangedCallbacks): Ditto.
(WebCore::PageGroup::userPrefersCaptions): Ditto.
(WebCore::PageGroup::userHasCaptionPreferences): Ditto.
(WebCore::PageGroup::captionFontSizeScale): Ditto.

  • page/PageGroup.h:
  • platform/Language.cpp:

(WebCore::preferredLanguageFromList): Take the list of preferred languages instead of assuming

the system list.

  • platform/Language.h:
  • testing/Internals.cpp:

(WebCore::Internals::resetToConsistentState): Disable caption testing mode.
(WebCore::Internals::Internals): Enable caption testing mode so the user's system

preferences are not modified.

LayoutTests:

  • media/track/track-user-preferences-expected.txt: Added.
  • media/track/track-user-preferences.html: Added.
  • platform/chromium/TestExpectations: Skip new test, it depends on the track menu.
  • platform/efl/TestExpectations: Ditto.
  • platform/gtk/TestExpectations: Ditto.
  • platform/qt/TestExpectations: Ditto.
  • platform/win/TestExpectations: Ditto.
Location:
trunk
Files:
2 added
22 edited

Legend:

Unmodified
Added
Removed
  • trunk/ChangeLog

    r142509 r142580  
     12013-02-11  Eric Carlson  <eric.carlson@apple.com>
     2
     3        [Mac] Track language selection should be sticky
     4        https://bugs.webkit.org/show_bug.cgi?id=109466
     5
     6        Reviewed by Dean Jackson.
     7
     8        * Source/autotools/symbols.filter: Export PageGroup::captionPreferences and Page::initGroup.
     9
    1102013-02-11  Benjamin Poulain  <benjamin@webkit.org>
    211
  • trunk/LayoutTests/ChangeLog

    r142572 r142580  
     12013-02-11  Eric Carlson  <eric.carlson@apple.com>
     2
     3        [Mac] Track language selection should be sticky
     4        https://bugs.webkit.org/show_bug.cgi?id=109466
     5
     6        Reviewed by Dean Jackson.
     7
     8        * media/track/track-user-preferences-expected.txt: Added.
     9        * media/track/track-user-preferences.html: Added.
     10
     11        * platform/chromium/TestExpectations: Skip new test, it depends on the track menu.
     12        * platform/efl/TestExpectations: Ditto.
     13        * platform/gtk/TestExpectations: Ditto.
     14        * platform/qt/TestExpectations: Ditto.
     15        * platform/win/TestExpectations: Ditto.
     16
    1172013-02-11  Keishi Hattori  <keishi@webkit.org>
    218
  • trunk/LayoutTests/platform/chromium/TestExpectations

    r142572 r142580  
    36063606webkit.org/b/101670 media/video-controls-captions-trackmenu-sorted.html [ Skip ]
    36073607webkit.org/b/101670 media/video-controls-captions-trackmenu-localized.html [ Skip ]
     3608webkit.org/b/101670 media/track/track-user-preferences.html [ Skip ]
    36083609
    36093610webkit.org/b/92835 [ Android Mac Win Debug ] svg/as-background-image/svg-as-background-5.html [ Pass Slow ]
  • trunk/LayoutTests/platform/efl/TestExpectations

    r142559 r142580  
    17231723webkit.org/b/101670 media/video-controls-captions-trackmenu-sorted.html [ Skip ]
    17241724webkit.org/b/101670 media/video-controls-captions-trackmenu-localized.html [ Skip ]
     1725webkit.org/b/101670 media/track/track-user-preferences.html [ Skip ]
    17251726
    17261727# Fails until we enable the Resource Timing API.
  • trunk/LayoutTests/platform/gtk/TestExpectations

    r142464 r142580  
    780780webkit.org/b/101670 media/video-controls-captions-trackmenu-sorted.html [ Skip ]
    781781webkit.org/b/101670 media/video-controls-captions-trackmenu-localized.html [ Skip ]
     782webkit.org/b/101670 media/track/track-user-preferences.html [ Skip ]
    782783
    783784webkit.org/b/107194 storage/indexeddb/database-quota.html [ Timeout ]
  • trunk/LayoutTests/platform/qt/TestExpectations

    r142439 r142580  
    25322532webkit.org/b/101670 media/video-controls-captions-trackmenu-sorted.html [ Skip ]
    25332533webkit.org/b/101670 media/video-controls-captions-trackmenu-localized.html [ Skip ]
     2534webkit.org/b/101670 media/track/track-user-preferences.html [ Skip ]
    25342535
    25352536# New, but failing test
  • trunk/LayoutTests/platform/win/TestExpectations

    r142559 r142580  
    25242524
    25252525# https://bugs.webkit.org/show_bug.cgi?id=106477
     2526media/track/track-user-preferences.html
    25262527media/video-controls-captions-trackmenu-localized.html
    25272528media/video-controls-captions-trackmenu-sorted.html
  • trunk/Source/WebCore/ChangeLog

    r142579 r142580  
     12013-02-11  Eric Carlson  <eric.carlson@apple.com>
     2
     3        [Mac] Track language selection should be sticky
     4        https://bugs.webkit.org/show_bug.cgi?id=109466
     5
     6        Reviewed by Dean Jackson.
     7
     8        Choosing a text track from the caption menu should make that track's language the
     9        preferred caption language. Turning captions off from the menu should disable captions
     10        in videos loaded subsequently.
     11
     12        OS X has system support for these settings, so changes made by DRT should not change the
     13        settings on the user's system. Add support for all other ports in DRT only.
     14
     15        Test: media/track/track-user-preferences.html
     16
     17        * WebCore.exp.in: Export PageGroup::captionPreferences().
     18
     19        * html/HTMLMediaElement.cpp:
     20        (WebCore::HTMLMediaElement::HTMLMediaElement): Use page()->group().captionPreferences().
     21        (WebCore::HTMLMediaElement::attach): Ditto.
     22        (WebCore::HTMLMediaElement::detach): Ditto.
     23        (WebCore::HTMLMediaElement::userPrefersCaptions): Ditto.
     24        (WebCore::HTMLMediaElement::configureTextTrackGroup): Ditto. Update for
     25            preferredLanguageFromList change.
     26        (WebCore::HTMLMediaElement::toggleTrackAtIndex): Set user prefs for captions visible and
     27            caption language as appropriate.
     28
     29        * html/shadow/MediaControlElements.cpp:
     30        (WebCore::MediaControlClosedCaptionsTrackListElement::defaultEventHandler): Remove unneeded comment.
     31        (WebCore::MediaControlTextTrackContainerElement::updateSizes):  Use page()->group().captionPreferences().
     32
     33        * html/shadow/MediaControlsApple.cpp:
     34        (WebCore::MediaControlsApple::closedCaptionTracksChanged): Update caption menu button visibility.
     35
     36        * page/CaptionUserPreferences.h:
     37        (WebCore::CaptionUserPreferences::userPrefersCaptions): Support "testing" mode.
     38        (WebCore::CaptionUserPreferences::setUserPrefersCaptions): Ditto.
     39        (WebCore::CaptionUserPreferences::registerForPreferencesChangedCallbacks): Ditto.
     40        (WebCore::CaptionUserPreferences::unregisterForPreferencesChangedCallbacks): Ditto.
     41        (WebCore::CaptionUserPreferences::setPreferredLanguage): Ditto.
     42        (WebCore::CaptionUserPreferences::preferredLanguages): Ditto.
     43        (WebCore::CaptionUserPreferences::testingMode): Ditto.
     44        (WebCore::CaptionUserPreferences::setTestingMode): Ditto.
     45        (WebCore::CaptionUserPreferences::CaptionUserPreferences): Ditto.
     46
     47        * page/CaptionUserPreferencesMac.h:
     48        * page/CaptionUserPreferencesMac.mm:
     49        (WebCore::CaptionUserPreferencesMac::userPrefersCaptions): Support "testing" mode.
     50        (WebCore::CaptionUserPreferencesMac::setUserPrefersCaptions): Ditto.
     51        (WebCore::CaptionUserPreferencesMac::userHasCaptionPreferences): Ditto.
     52        (WebCore::CaptionUserPreferencesMac::registerForPreferencesChangedCallbacks): Change name from
     53            registerForCaptionPreferencesChangedCallbacks. Support "testing" mode.
     54        (WebCore::CaptionUserPreferencesMac::unregisterForPreferencesChangedCallbacks):  Change name from
     55            unregisterForCaptionPreferencesChangedCallbacks. Support "testing" mode.
     56        (WebCore::CaptionUserPreferencesMac::captionsStyleSheetOverride): Support "testing" mode.
     57        (WebCore::CaptionUserPreferencesMac::captionFontSizeScale): Ditto.
     58        (WebCore::CaptionUserPreferencesMac::setPreferredLanguage): Ditto.
     59        (WebCore::CaptionUserPreferencesMac::preferredLanguages): Ditto. Return the platform override when set.
     60
     61        * page/PageGroup.cpp:
     62        (WebCore::PageGroup::registerForCaptionPreferencesChangedCallbacks): Remove because it is already
     63            available from the caption preference object.
     64        (WebCore::PageGroup::unregisterForCaptionPreferencesChangedCallbacks): Ditto.
     65        (WebCore::PageGroup::userPrefersCaptions): Ditto.
     66        (WebCore::PageGroup::userHasCaptionPreferences): Ditto.
     67        (WebCore::PageGroup::captionFontSizeScale): Ditto.
     68        * page/PageGroup.h:
     69
     70        * platform/Language.cpp:
     71        (WebCore::preferredLanguageFromList): Take the list of preferred languages instead of assuming
     72            the system list.
     73        * platform/Language.h:
     74
     75        * testing/Internals.cpp:
     76        (WebCore::Internals::resetToConsistentState): Disable caption testing mode.
     77        (WebCore::Internals::Internals): Enable caption testing mode so the user's system
     78            preferences are not modified.
     79
    1802013-02-11  Huang Dongsung  <luxtella@company100.net>
    281
  • trunk/Source/WebCore/WebCore.exp.in

    r142410 r142580  
    27732773__ZN7WebCore3CDM18registerCDMFactoryEPFN3WTF10PassOwnPtrINS_19CDMPrivateInterfaceEEEPS0_EPFbRKNS1_6StringEE
    27742774#endif
     2775
     2776#if ENABLE(VIDEO_TRACK)
     2777__ZN7WebCore9PageGroup18captionPreferencesEv
     2778#endif
  • trunk/Source/WebCore/html/HTMLMediaElement.cpp

    r142327 r142580  
    318318#if ENABLE(VIDEO_TRACK)
    319319    if (document->page()) {
    320         PageGroup& group = document->page()->group();
    321         if (group.userHasCaptionPreferences())
    322             m_disableCaptions = !group.userPrefersCaptions();
     320        CaptionUserPreferences* captionPreferences = document->page()->group().captionPreferences();
     321        if (captionPreferences->userHasCaptionPreferences())
     322            m_disableCaptions = !captionPreferences->userPrefersCaptions();
    323323    }
    324324#endif
     
    592592#if ENABLE(VIDEO_TRACK)
    593593    if (document()->page())
    594         document()->page()->group().registerForCaptionPreferencesChangedCallbacks(this);
     594        document()->page()->group().captionPreferences()->registerForPreferencesChangedCallbacks(this);
    595595#endif
    596596}
     
    600600#if ENABLE(VIDEO_TRACK)
    601601    if (document()->page())
    602         document()->page()->group().unregisterForCaptionPreferencesChangedCallbacks(this);
     602        document()->page()->group().captionPreferences()->unregisterForPreferencesChangedCallbacks(this);
    603603#endif
    604604    HTMLElement::detach();
     
    29932993        return false;
    29942994
    2995     PageGroup& group = page->group();
    2996     return group.userHasCaptionPreferences() && group.userPrefersCaptions();
     2995    CaptionUserPreferences* captionPreferences = page->group().captionPreferences();
     2996    return captionPreferences->userHasCaptionPreferences() && captionPreferences->userPrefersCaptions();
    29972997}
    29982998
     
    30203020
    30213021    String bestMatchingLanguage;
    3022     if (group.hasSrcLang) {
    3023         Vector<String> languages;
    3024         languages.reserveInitialCapacity(group.tracks.size());
     3022    if (group.hasSrcLang && document()->page()) {
     3023        Vector<String> trackLanguages;
     3024        trackLanguages.reserveInitialCapacity(group.tracks.size());
    30253025        for (size_t i = 0; i < group.tracks.size(); ++i) {
    30263026            String srcLanguage = group.tracks[i]->language();
    30273027            if (srcLanguage.length())
    3028                 languages.append(srcLanguage);
     3028                trackLanguages.append(srcLanguage);
    30293029        }
    3030         bestMatchingLanguage = preferredLanguageFromList(languages);
     3030        bestMatchingLanguage = preferredLanguageFromList(trackLanguages, document()->page()->group().captionPreferences()->preferredLanguages());
    30313031    }
    30323032
     
    30863086        return;
    30873087
     3088    CaptionUserPreferences* captionPreferences = document()->page() ? document()->page()->group().captionPreferences() : 0;
     3089    if (captionPreferences)
     3090        captionPreferences->setUserPrefersCaptions(index != textTracksOffIndex());
     3091
    30883092    for (int i = 0, length = trackList->length(); i < length; ++i) {
    30893093        TextTrack* track = trackList->item(i);
    3090         if (i == index)
     3094        if (i == index) {
    30913095            track->setMode(TextTrack::showingKeyword());
     3096            if (captionPreferences && track->language().length())
     3097                captionPreferences->setPreferredLanguage(track->language());
     3098        }
    30923099        else if (exclusive || index == HTMLMediaElement::textTracksOffIndex())
    30933100            track->setMode(TextTrack::disabledKeyword());
  • trunk/Source/WebCore/html/shadow/MediaControlElements.cpp

    r142271 r142580  
    743743#if ENABLE(VIDEO_TRACK)
    744744    if (event->type() == eventNames().clickEvent) {
    745         // FIXME: Add modifier key for exclusivity override.
    746         // http://webkit.org/b/103361
    747 
    748745        Node* target = event->target()->toNode();
    749746        if (!target || !target->isElementNode())
     
    13301327
    13311328    bool important;
    1332     float fontSize = smallestDimension * (document()->page()->group().captionFontSizeScale(important));
     1329    float fontSize = smallestDimension * (document()->page()->group().captionPreferences()->captionFontSizeScale(important));
    13331330    if (fontSize != m_fontSize) {
    13341331        m_fontSize = fontSize;
  • trunk/Source/WebCore/html/shadow/MediaControlsApple.cpp

    r142271 r142580  
    501501    if (m_closedCaptionsTrackList)
    502502        m_closedCaptionsTrackList->resetTrackListMenu();
     503    if (m_toggleClosedCaptionsButton) {
     504        if (m_mediaController->hasClosedCaptions())
     505            m_toggleClosedCaptionsButton->show();
     506        else
     507            m_toggleClosedCaptionsButton->hide();
     508    }
    503509}
    504510
  • trunk/Source/WebCore/page/CaptionUserPreferences.h

    r141864 r142580  
    5151    virtual ~CaptionUserPreferences() { }
    5252
    53     virtual bool userPrefersCaptions() const { return false; }
    54     virtual void setUserPrefersCaptions(bool) { }
    5553    virtual bool userHasCaptionPreferences() const { return false; }
     54    virtual bool userPrefersCaptions() const { return m_testingMode ? m_userPrefersCaptions : false; }
     55    virtual void setUserPrefersCaptions(bool preference) { m_userPrefersCaptions = preference; }
    5656    virtual float captionFontSizeScale(bool& important) const { important = false; return 0.05f; }
    5757    virtual String captionsStyleSheetOverride() const { return emptyString(); }
    58     virtual void registerForCaptionPreferencesChangedCallbacks(CaptionPreferencesChangedListener*) { }
    59     virtual void unregisterForCaptionPreferencesChangedCallbacks(CaptionPreferencesChangedListener*) { }
     58    virtual void registerForPreferencesChangedCallbacks(CaptionPreferencesChangedListener*) { }
     59    virtual void unregisterForPreferencesChangedCallbacks(CaptionPreferencesChangedListener*) { }
    6060
    61     virtual void setPreferredLanguage(String) const { }
    62     virtual Vector<String> preferredLanguages() const { return platformUserPreferredLanguages(); }
     61    virtual void setPreferredLanguage(String language) { m_userPreferredLanguage = language; }
     62    virtual Vector<String> preferredLanguages() const
     63    {
     64        Vector<String> languages = userPreferredLanguages();
     65        if (m_testingMode && !m_userPreferredLanguage.isEmpty())
     66            languages.insert(0, m_userPreferredLanguage);
     67        return languages;
     68    }
    6369
    6470    virtual String displayNameForTrack(TextTrack* track) const
     
    7177    }
    7278
     79    virtual bool testingMode() const { return m_testingMode; }
     80    virtual void setTestingMode(bool override) { m_testingMode = override; }
     81
    7382    PageGroup* pageGroup() { return m_pageGroup; }
    7483
    7584protected:
    76     CaptionUserPreferences(PageGroup* group) : m_pageGroup(group) { }
     85    CaptionUserPreferences(PageGroup* group)
     86        : m_pageGroup(group)
     87        , m_testingMode(false)
     88        , m_userPrefersCaptions(false)
     89    {
     90    }
    7791
    7892private:
    7993    PageGroup* m_pageGroup;
     94    String m_userPreferredLanguage;
     95    bool m_testingMode;
     96    bool m_userPrefersCaptions;
    8097};
    8198   
  • trunk/Source/WebCore/page/CaptionUserPreferencesMac.h

    r142383 r142580  
    4242
    4343#if MAC_OS_X_VERSION_MIN_REQUIRED >= 1090
     44    virtual bool userHasCaptionPreferences() const OVERRIDE;
    4445    virtual bool userPrefersCaptions() const OVERRIDE;
    4546    virtual void setUserPrefersCaptions(bool) OVERRIDE;
    46     virtual bool userHasCaptionPreferences() const OVERRIDE;
    4747    virtual float captionFontSizeScale(bool&) const OVERRIDE;
    4848    virtual String captionsStyleSheetOverride() const OVERRIDE;
    49     virtual void registerForCaptionPreferencesChangedCallbacks(CaptionPreferencesChangedListener*) OVERRIDE;
    50     virtual void unregisterForCaptionPreferencesChangedCallbacks(CaptionPreferencesChangedListener*) OVERRIDE;
     49    virtual void registerForPreferencesChangedCallbacks(CaptionPreferencesChangedListener*) OVERRIDE;
     50    virtual void unregisterForPreferencesChangedCallbacks(CaptionPreferencesChangedListener*) OVERRIDE;
    5151
    52     virtual void setPreferredLanguage(String) const OVERRIDE;
     52    virtual void setPreferredLanguage(String) OVERRIDE;
    5353    virtual Vector<String> preferredLanguages() const OVERRIDE;
    5454
  • trunk/Source/WebCore/page/CaptionUserPreferencesMac.mm

    r142383 r142580  
    103103bool CaptionUserPreferencesMac::userPrefersCaptions() const
    104104{
    105     if (!MediaAccessibilityLibrary())
     105    if (testingMode() || !MediaAccessibilityLibrary())
    106106        return CaptionUserPreferences::userPrefersCaptions();
    107107
     
    111111void CaptionUserPreferencesMac::setUserPrefersCaptions(bool preference)
    112112{
     113    if (testingMode() || !MediaAccessibilityLibrary()) {
     114        CaptionUserPreferences::setUserPrefersCaptions(preference);
     115        return;
     116    }
     117
     118    MACaptionAppearanceSetShowCaptions(kMACaptionAppearanceDomainUser, preference);
     119}
     120
     121bool CaptionUserPreferencesMac::userHasCaptionPreferences() const
     122{
     123    if (testingMode() || !MediaAccessibilityLibrary())
     124        return CaptionUserPreferences::userHasCaptionPreferences();
     125
     126    return true;
     127}
     128
     129void CaptionUserPreferencesMac::registerForPreferencesChangedCallbacks(CaptionPreferencesChangedListener* listener)
     130{
    113131    if (!MediaAccessibilityLibrary()) {
    114         CaptionUserPreferences::setUserPrefersCaptions(preference);
    115         return;
    116     }
    117 
    118     MACaptionAppearanceSetShowCaptions(kMACaptionAppearanceDomainUser, preference);
    119 }
    120 
    121 bool CaptionUserPreferencesMac::userHasCaptionPreferences() const
    122 {
    123     if (!MediaAccessibilityLibrary())
    124         return CaptionUserPreferences::userHasCaptionPreferences();
    125 
    126     return !MediaAccessibilityLibrary();
    127 }
    128 
    129 void CaptionUserPreferencesMac::registerForCaptionPreferencesChangedCallbacks(CaptionPreferencesChangedListener* listener)
    130 {
    131     if (!MediaAccessibilityLibrary()) {
    132         CaptionUserPreferences::registerForCaptionPreferencesChangedCallbacks(listener);
     132        CaptionUserPreferences::registerForPreferencesChangedCallbacks(listener);
    133133        return;
    134134    }
     
    148148}
    149149
    150 void CaptionUserPreferencesMac::unregisterForCaptionPreferencesChangedCallbacks(CaptionPreferencesChangedListener* listener)
     150void CaptionUserPreferencesMac::unregisterForPreferencesChangedCallbacks(CaptionPreferencesChangedListener* listener)
    151151{
    152152    if (!MediaAccessibilityLibrary()) {
    153         CaptionUserPreferences::unregisterForCaptionPreferencesChangedCallbacks(listener);
     153        CaptionUserPreferences::unregisterForPreferencesChangedCallbacks(listener);
    154154        return;
    155155    }
     
    359359String CaptionUserPreferencesMac::captionsStyleSheetOverride() const
    360360{
    361     if (!MediaAccessibilityLibrary())
     361    if (testingMode() || !MediaAccessibilityLibrary())
    362362        return CaptionUserPreferences::captionsStyleSheetOverride();
    363363
     
    404404float CaptionUserPreferencesMac::captionFontSizeScale(bool& important) const
    405405{
    406     if (!MediaAccessibilityLibrary())
     406    if (testingMode() || !MediaAccessibilityLibrary())
    407407        return CaptionUserPreferences::captionFontSizeScale(important);
    408408
     
    448448}
    449449
    450 void CaptionUserPreferencesMac::setPreferredLanguage(String language) const
    451 {
    452     if (!MediaAccessibilityLibrary()) {
     450void CaptionUserPreferencesMac::setPreferredLanguage(String language)
     451{
     452    if (testingMode() || !MediaAccessibilityLibrary()) {
    453453        CaptionUserPreferences::setPreferredLanguage(language);
    454454        return;
     
    460460Vector<String> CaptionUserPreferencesMac::preferredLanguages() const
    461461{
     462    if (testingMode() || !MediaAccessibilityLibrary())
     463        return CaptionUserPreferences::preferredLanguages();
     464
     465    Vector<String> platformLanguages = platformUserPreferredLanguages();
    462466    Vector<String> override = userPreferredLanguagesOverride();
    463     if (!override.isEmpty())
    464         return override;
    465 
    466     if (!MediaAccessibilityLibrary())
    467         return CaptionUserPreferences::preferredLanguages();
     467    if (!override.isEmpty()) {
     468        if (platformLanguages.size() != override.size())
     469            return override;
     470        for (size_t i = 0; i < override.size(); i++) {
     471            if (override[i] != platformLanguages[i])
     472                return override;
     473        }
     474    }
    468475
    469476    RetainPtr<CFArrayRef> languages(AdoptCF, MACaptionAppearanceCopySelectedLanguages(kMACaptionAppearanceDomainUser));
     
    473480        return CaptionUserPreferences::preferredLanguages();
    474481
    475     Vector<String> userPreferredLanguages(languageCount);
     482    Vector<String> userPreferredLanguages;
     483    userPreferredLanguages.reserveCapacity(languageCount + platformLanguages.size());
    476484    for (CFIndex i = 0; i < languageCount; i++)
    477485        userPreferredLanguages.append(static_cast<CFStringRef>(CFArrayGetValueAtIndex(languages.get(), i)));
     486
     487    userPreferredLanguages.append(platformLanguages);
    478488
    479489    return userPreferredLanguages;
  • trunk/Source/WebCore/page/PageGroup.cpp

    r141864 r142580  
    429429    return m_captionPreferences.get();
    430430}
    431    
    432 void PageGroup::registerForCaptionPreferencesChangedCallbacks(CaptionPreferencesChangedListener* listener)
    433 {
    434     captionPreferences()->registerForCaptionPreferencesChangedCallbacks(listener);
    435 }
    436 
    437 void PageGroup::unregisterForCaptionPreferencesChangedCallbacks(CaptionPreferencesChangedListener* listener)
    438 {
    439     if (!m_captionPreferences)
    440         return;
    441     captionPreferences()->unregisterForCaptionPreferencesChangedCallbacks(listener);
    442 }
    443    
    444 bool PageGroup::userPrefersCaptions()
    445 {
    446     return captionPreferences()->userPrefersCaptions();
    447 }
    448 
    449 bool PageGroup::userHasCaptionPreferences()
    450 {
    451     return captionPreferences()->userPrefersCaptions();
    452 }
    453 
    454 float PageGroup::captionFontSizeScale(bool& important)
    455 {
    456     return captionPreferences()->captionFontSizeScale(important);
    457 }
    458431
    459432#endif
  • trunk/Source/WebCore/page/PageGroup.h

    r141864 r142580  
    110110
    111111#if ENABLE(VIDEO_TRACK)
    112         bool userPrefersCaptions();
    113         bool userHasCaptionPreferences();
    114         float captionFontSizeScale(bool&);
    115         void registerForCaptionPreferencesChangedCallbacks(CaptionPreferencesChangedListener*);
    116         void unregisterForCaptionPreferencesChangedCallbacks(CaptionPreferencesChangedListener*);
    117112        CaptionUserPreferences* captionPreferences();
    118113#endif
     
    123118        void addVisitedLink(LinkHash stringHash);
    124119        void invalidatedInjectedStyleSheetCacheInAllFrames();
    125  
     120
    126121        String m_name;
    127122
  • trunk/Source/WebCore/platform/Language.cpp

    r141790 r142580  
    140140}
    141141
    142 String preferredLanguageFromList(const Vector<String>& languageList)
     142String preferredLanguageFromList(const Vector<String>& languageList, const Vector<String> preferredLanguages)
    143143{
    144     Vector<String> preferredLanguages = userPreferredLanguages();
    145 
    146144    for (size_t i = 0; i < preferredLanguages.size(); ++i) {
    147145        String bestMatch = bestMatchingLanguage(canonicalLanguageIdentifier(preferredLanguages[i]), languageList);
  • trunk/Source/WebCore/platform/Language.h

    r141790 r142580  
    3636Vector<String> userPreferredLanguagesOverride();
    3737void overrideUserPreferredLanguages(const Vector<String>&);
    38 String preferredLanguageFromList(const Vector<String>&);
     38String preferredLanguageFromList(const Vector<String>& languageList, const Vector<String> preferredLanguages);
    3939
    4040// The observer function will be called when system language changes.
  • trunk/Source/WebCore/testing/Internals.cpp

    r142348 r142580  
    133133#endif
    134134
     135#if ENABLE(VIDEO_TRACK)
     136#include "CaptionUserPreferences.h"
     137#include "PageGroup.h"
     138#endif
     139
    135140namespace WebCore {
    136141
     
    255260        page->inspectorController()->setProfilerEnabled(false);
    256261#endif
     262#if ENABLE(VIDEO_TRACK)
     263    page->group().captionPreferences()->setTestingMode(false);
     264#endif
    257265}
    258266
     
    260268    : ContextDestructionObserver(document)
    261269{
     270#if ENABLE(VIDEO_TRACK)
     271    if (document && document->page())
     272        document->page()->group().captionPreferences()->setTestingMode(true);
     273#endif
    262274}
    263275
  • trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj

    r142518 r142580  
    2525                                BC8283D516B4C01F00A278FE /* PBXTargetDependency */,
    2626                                BC8283D716B4C02200A278FE /* PBXTargetDependency */,
    27                                 BCCDE2D616C88DAA00D90310 /* PBXTargetDependency */,
    2827                                BC82844616B4FF6600A278FE /* PBXTargetDependency */,
    2928                                BC82844816B4FF6F00A278FE /* PBXTargetDependency */,
     
    232231                1AB31A9616BC688100F6DBC9 /* StorageManagerMessageReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AB31A9416BC688100F6DBC9 /* StorageManagerMessageReceiver.cpp */; };
    233232                1AB31A9716BC688100F6DBC9 /* StorageManagerMessages.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AB31A9516BC688100F6DBC9 /* StorageManagerMessages.h */; };
    234                 1AB779CC16C9A12600E2CE41 /* PluginProcessConnectionManagerMessageReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AB779CA16C9A12600E2CE41 /* PluginProcessConnectionManagerMessageReceiver.cpp */; };
    235                 1AB779CD16C9A12600E2CE41 /* PluginProcessConnectionManagerMessages.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AB779CB16C9A12600E2CE41 /* PluginProcessConnectionManagerMessages.h */; };
    236233                1AB7D4CA1288AAA700CFD08C /* DownloadProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AB7D4C81288AAA700CFD08C /* DownloadProxy.h */; };
    237234                1AB7D4CB1288AAA700CFD08C /* DownloadProxy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AB7D4C91288AAA700CFD08C /* DownloadProxy.cpp */; };
     
    817814                BC8283D916B4DB2E00A278FE /* NetworkServiceMain.Development.mm in Sources */ = {isa = PBXBuildFile; fileRef = BC8283A716B4BD9100A278FE /* NetworkServiceMain.Development.mm */; };
    818815                BC8283DA16B4DB9300A278FE /* WebKit2.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8DC2EF5B0486A6940098B216 /* WebKit2.framework */; };
     816                BC8283FA16B4FDDE00A278FE /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BC8283B216B4BF7700A278FE /* Foundation.framework */; };
     817                BC82842016B4FDF600A278FE /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BC8283B216B4BF7700A278FE /* Foundation.framework */; };
    819818                BC82843316B4FE1400A278FE /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BC8283B216B4BF7700A278FE /* Foundation.framework */; };
    820819                BC82844916B5004200A278FE /* PluginService.32.Main.mm in Sources */ = {isa = PBXBuildFile; fileRef = BC8283E516B4F8E200A278FE /* PluginService.32.Main.mm */; };
    821820                BC82844B16B5004D00A278FE /* PluginService.64.Main.mm in Sources */ = {isa = PBXBuildFile; fileRef = BC8283EB16B4F8E200A278FE /* PluginService.64.Main.mm */; };
    822821                BC82844D16B5081C00A278FE /* PluginServiceEntryPoint.mm in Sources */ = {isa = PBXBuildFile; fileRef = BC8283EF16B4F8E200A278FE /* PluginServiceEntryPoint.mm */; };
     822                BC82844E16B5089400A278FE /* WebKit2.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8DC2EF5B0486A6940098B216 /* WebKit2.framework */; };
     823                BC82844F16B5089800A278FE /* WebKit2.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8DC2EF5B0486A6940098B216 /* WebKit2.framework */; };
    823824                BC8452A71162C80900CAB9B5 /* DrawingArea.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC8452A51162C80900CAB9B5 /* DrawingArea.cpp */; };
    824825                BC8452A81162C80900CAB9B5 /* DrawingArea.h in Headers */ = {isa = PBXBuildFile; fileRef = BC8452A61162C80900CAB9B5 /* DrawingArea.h */; };
     
    12111212                        remoteInfo = WebProcessServiceForWebKitDevelopment;
    12121213                };
    1213                 BCCDE2D516C88DAA00D90310 /* PBXContainerItemProxy */ = {
    1214                         isa = PBXContainerItemProxy;
    1215                         containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
    1216                         proxyType = 1;
    1217                         remoteGlobalIDString = BC8283F816B4FDDE00A278FE;
    1218                         remoteInfo = Plugin.32;
    1219                 };
    12201214                BCDE093513272496001259FB /* PBXContainerItemProxy */ = {
    12211215                        isa = PBXContainerItemProxy;
     
    15291523                1AB31A9416BC688100F6DBC9 /* StorageManagerMessageReceiver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StorageManagerMessageReceiver.cpp; sourceTree = "<group>"; };
    15301524                1AB31A9516BC688100F6DBC9 /* StorageManagerMessages.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StorageManagerMessages.h; sourceTree = "<group>"; };
    1531                 1AB779C916C99E6400E2CE41 /* PluginProcessConnectionManager.messages.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = PluginProcessConnectionManager.messages.in; sourceTree = "<group>"; };
    1532                 1AB779CA16C9A12600E2CE41 /* PluginProcessConnectionManagerMessageReceiver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PluginProcessConnectionManagerMessageReceiver.cpp; path = PluginProcessConnectionManagerMessageReceiver.cpp; sourceTree = "<group>"; };
    1533                 1AB779CB16C9A12600E2CE41 /* PluginProcessConnectionManagerMessages.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PluginProcessConnectionManagerMessages.h; path = PluginProcessConnectionManagerMessages.h; sourceTree = "<group>"; };
    15341525                1AB7D4C81288AAA700CFD08C /* DownloadProxy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DownloadProxy.h; sourceTree = "<group>"; };
    15351526                1AB7D4C91288AAA700CFD08C /* DownloadProxy.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DownloadProxy.cpp; sourceTree = "<group>"; };
     
    25832574                        buildActionMask = 2147483647;
    25842575                        files = (
     2576                                BC8283FA16B4FDDE00A278FE /* Foundation.framework in Frameworks */,
     2577                                BC82844E16B5089400A278FE /* WebKit2.framework in Frameworks */,
    25852578                        );
    25862579                        runOnlyForDeploymentPostprocessing = 0;
     
    25902583                        buildActionMask = 2147483647;
    25912584                        files = (
     2585                                BC82842016B4FDF600A278FE /* Foundation.framework in Frameworks */,
     2586                                BC82844F16B5089800A278FE /* WebKit2.framework in Frameworks */,
    25922587                        );
    25932588                        runOnlyForDeploymentPostprocessing = 0;
     
    28392834                                1A0EC90E124C0AF5007EF4A5 /* PluginProcessConnectionManager.cpp */,
    28402835                                1A0EC90D124C0AF5007EF4A5 /* PluginProcessConnectionManager.h */,
    2841                                 1AB779C916C99E6400E2CE41 /* PluginProcessConnectionManager.messages.in */,
    28422836                                1A043DC0124FF87500FFBFB5 /* PluginProxy.cpp */,
    28432837                                1A043DBF124FF87500FFBFB5 /* PluginProxy.h */,
     
    46354629                                1A8EF96C1252AF6B00F7067F /* PluginControllerProxyMessageReceiver.cpp */,
    46364630                                1A8EF96D1252AF6B00F7067F /* PluginControllerProxyMessages.h */,
    4637                                 1AB779CA16C9A12600E2CE41 /* PluginProcessConnectionManagerMessageReceiver.cpp */,
    4638                                 1AB779CB16C9A12600E2CE41 /* PluginProcessConnectionManagerMessages.h */,
    46394631                                1A2BB6CE14117B4D000F35D4 /* PluginProcessConnectionMessageReceiver.cpp */,
    46404632                                1A2BB6CF14117B4D000F35D4 /* PluginProcessConnectionMessages.h */,
     
    52515243                                BC204EEF11C83EC8008F3375 /* WKBundle.h in Headers */,
    52525244                                BC204EF011C83EC8008F3375 /* WKBundleAPICast.h in Headers */,
    5253                                 1AB779CD16C9A12600E2CE41 /* PluginProcessConnectionManagerMessages.h in Headers */,
    52545245                                935EEB9F127761AC003322B8 /* WKBundleBackForwardList.h in Headers */,
    52555246                                935EEB9B1277617C003322B8 /* WKBundleBackForwardListItem.h in Headers */,
     
    64576448                                51A9E10A1315CD18009E7031 /* WKKeyValueStorageManager.cpp in Sources */,
    64586449                                33D3A3B51339600B00709BE4 /* WKMediaCacheManager.cpp in Sources */,
    6459                                 1AB779CC16C9A12600E2CE41 /* PluginProcessConnectionManagerMessageReceiver.cpp in Sources */,
    64606450                                BC4075FD124FF0270068F20A /* WKMutableArray.cpp in Sources */,
    64616451                                BC4075FF124FF0270068F20A /* WKMutableDictionary.cpp in Sources */,
     
    66376627                        targetProxy = BCAE9DFC160C0AB000A33217 /* PBXContainerItemProxy */;
    66386628                };
    6639                 BCCDE2D616C88DAA00D90310 /* PBXTargetDependency */ = {
    6640                         isa = PBXTargetDependency;
    6641                         target = BC8283F816B4FDDE00A278FE /* Plugin.32 */;
    6642                         targetProxy = BCCDE2D516C88DAA00D90310 /* PBXContainerItemProxy */;
    6643                 };
    66446629                BCDE093413272496001259FB /* PBXTargetDependency */ = {
    66456630                        isa = PBXTargetDependency;
  • trunk/Source/autotools/symbols.filter

    r142509 r142580  
    268268_ZN7WebCore7Element16createShadowRootERi;
    269269_ZNK7WebCore4KURL6stringEv;
     270_ZN7WebCore9PageGroup18captionPreferencesEv;
     271_ZN7WebCore4Page9initGroupEv;
    270272
    271273local:
Note: See TracChangeset for help on using the changeset viewer.