OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012, 2013 Apple Inc. All rights
reserved. | 2 * Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012, 2013 Apple Inc. All rights
reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
(...skipping 2470 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2481 { | 2481 { |
2482 if (!m_textTracks || !m_textTracks->length()) | 2482 if (!m_textTracks || !m_textTracks->length()) |
2483 return; | 2483 return; |
2484 | 2484 |
2485 AutomaticTrackSelection::Configuration configuration; | 2485 AutomaticTrackSelection::Configuration configuration; |
2486 if (m_processingPreferenceChange) | 2486 if (m_processingPreferenceChange) |
2487 configuration.disableCurrentlyEnabledTracks = true; | 2487 configuration.disableCurrentlyEnabledTracks = true; |
2488 if (m_closedCaptionsVisible) | 2488 if (m_closedCaptionsVisible) |
2489 configuration.forceEnableSubtitleOrCaptionTrack = true; | 2489 configuration.forceEnableSubtitleOrCaptionTrack = true; |
2490 | 2490 |
| 2491 Settings* settings = document().settings(); |
| 2492 if (settings) |
| 2493 configuration.textTrackKindUserPreference = settings->textTrackKindUserP
reference(); |
| 2494 |
2491 AutomaticTrackSelection trackSelection(configuration); | 2495 AutomaticTrackSelection trackSelection(configuration); |
2492 trackSelection.perform(*m_textTracks); | 2496 trackSelection.perform(*m_textTracks); |
2493 | 2497 |
2494 textTracksChanged(); | 2498 textTracksChanged(); |
2495 } | 2499 } |
2496 | 2500 |
2497 bool HTMLMediaElement::havePotentialSourceChild() | 2501 bool HTMLMediaElement::havePotentialSourceChild() |
2498 { | 2502 { |
2499 // Stash the current <source> node and next nodes so we can restore them aft
er checking | 2503 // Stash the current <source> node and next nodes so we can restore them aft
er checking |
2500 // to see there is another potential. | 2504 // to see there is another potential. |
(...skipping 750 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3251 m_processingPreferenceChange = true; | 3255 m_processingPreferenceChange = true; |
3252 honorUserPreferencesForAutomaticTextTrackSelection(); | 3256 honorUserPreferencesForAutomaticTextTrackSelection(); |
3253 m_processingPreferenceChange = false; | 3257 m_processingPreferenceChange = false; |
3254 | 3258 |
3255 // As track visibility changed while m_processingPreferenceChange was set, | 3259 // As track visibility changed while m_processingPreferenceChange was set, |
3256 // there was no call to updateTextTrackDisplay(). This call is not in the | 3260 // there was no call to updateTextTrackDisplay(). This call is not in the |
3257 // spec, see the note in configureTextTrackDisplay(). | 3261 // spec, see the note in configureTextTrackDisplay(). |
3258 updateTextTrackDisplay(); | 3262 updateTextTrackDisplay(); |
3259 } | 3263 } |
3260 | 3264 |
| 3265 void HTMLMediaElement::setTextTrackKindUserPreferenceForAllMediaElements(Documen
t* document) |
| 3266 { |
| 3267 WeakMediaElementSet elements = documentToElementSetMap().get(document); |
| 3268 for (const auto& element: elements) |
| 3269 element->automaticTrackSelectionForUpdatedUserPreference(); |
| 3270 } |
| 3271 |
| 3272 void HTMLMediaElement::automaticTrackSelectionForUpdatedUserPreference() |
| 3273 { |
| 3274 markCaptionAndSubtitleTracksAsUnconfigured(); |
| 3275 m_processingPreferenceChange = true; |
| 3276 m_closedCaptionsVisible = false; |
| 3277 honorUserPreferencesForAutomaticTextTrackSelection(); |
| 3278 m_processingPreferenceChange = false; |
| 3279 |
| 3280 // If a track is set to showing post performing automatic track selection, |
| 3281 // set closed captions state to visible to update the CC button and display
the track. |
| 3282 for (unsigned i = 0; i < m_textTracks->length(); ++i) { |
| 3283 RefPtrWillBeRawPtr<TextTrack> textTrack = m_textTracks->item(i); |
| 3284 if (textTrack->mode() == TextTrack::showingKeyword()) |
| 3285 m_closedCaptionsVisible = true; |
| 3286 } |
| 3287 |
| 3288 updateTextTrackDisplay(); |
| 3289 } |
| 3290 |
3261 void HTMLMediaElement::markCaptionAndSubtitleTracksAsUnconfigured() | 3291 void HTMLMediaElement::markCaptionAndSubtitleTracksAsUnconfigured() |
3262 { | 3292 { |
3263 if (!m_textTracks) | 3293 if (!m_textTracks) |
3264 return; | 3294 return; |
3265 | 3295 |
3266 // Mark all tracks as not "configured" so that | 3296 // Mark all tracks as not "configured" so that |
3267 // honorUserPreferencesForAutomaticTextTrackSelection() will reconsider | 3297 // honorUserPreferencesForAutomaticTextTrackSelection() will reconsider |
3268 // which tracks to display in light of new user preferences (e.g. default | 3298 // which tracks to display in light of new user preferences (e.g. default |
3269 // tracks should not be displayed if the user has turned off captions and | 3299 // tracks should not be displayed if the user has turned off captions and |
3270 // non-default tracks should be displayed based on language preferences if | 3300 // non-default tracks should be displayed based on language preferences if |
(...skipping 389 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3660 | 3690 |
3661 #if ENABLE(WEB_AUDIO) | 3691 #if ENABLE(WEB_AUDIO) |
3662 void HTMLMediaElement::clearWeakMembers(Visitor* visitor) | 3692 void HTMLMediaElement::clearWeakMembers(Visitor* visitor) |
3663 { | 3693 { |
3664 if (!visitor->isHeapObjectAlive(m_audioSourceNode) && audioSourceProvider()) | 3694 if (!visitor->isHeapObjectAlive(m_audioSourceNode) && audioSourceProvider()) |
3665 audioSourceProvider()->setClient(nullptr); | 3695 audioSourceProvider()->setClient(nullptr); |
3666 } | 3696 } |
3667 #endif | 3697 #endif |
3668 | 3698 |
3669 } | 3699 } |
OLD | NEW |