Title: [231045] trunk/Source/WebCore
- Revision
- 231045
- Author
- [email protected]
- Date
- 2018-04-26 08:04:16 -0700 (Thu, 26 Apr 2018)
Log Message
Add lazy initialization of caption display mode for videos.
https://bugs.webkit.org/show_bug.cgi?id=184993
The call to MACaptionAppearanceGetDisplayType in CaptionUserPreferencesMediaAF::captionDisplayMode()
is showing up in samples when called from HTMLMediaElement::finishInitialization().
Reviewed by Eric Carlson.
No new tests, covered by existing tests.
* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::finishInitialization):
(WebCore::HTMLMediaElement::setSelectedTextTrack):
(WebCore::HTMLMediaElement::mediaPlayerCharacteristicChanged):
(WebCore::HTMLMediaElement::captionPreferencesChanged):
(WebCore::HTMLMediaElement::captionDisplayMode):
* html/HTMLMediaElement.h:
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (231044 => 231045)
--- trunk/Source/WebCore/ChangeLog 2018-04-26 12:04:22 UTC (rev 231044)
+++ trunk/Source/WebCore/ChangeLog 2018-04-26 15:04:16 UTC (rev 231045)
@@ -1,3 +1,23 @@
+2018-04-26 Per Arne Vollan <[email protected]>
+
+ Add lazy initialization of caption display mode for videos.
+ https://bugs.webkit.org/show_bug.cgi?id=184993
+
+ The call to MACaptionAppearanceGetDisplayType in CaptionUserPreferencesMediaAF::captionDisplayMode()
+ is showing up in samples when called from HTMLMediaElement::finishInitialization().
+
+ Reviewed by Eric Carlson.
+
+ No new tests, covered by existing tests.
+
+ * html/HTMLMediaElement.cpp:
+ (WebCore::HTMLMediaElement::finishInitialization):
+ (WebCore::HTMLMediaElement::setSelectedTextTrack):
+ (WebCore::HTMLMediaElement::mediaPlayerCharacteristicChanged):
+ (WebCore::HTMLMediaElement::captionPreferencesChanged):
+ (WebCore::HTMLMediaElement::captionDisplayMode):
+ * html/HTMLMediaElement.h:
+
2018-04-26 Zan Dobersek <[email protected]>
[GTK][WPE] Initial ASYNC_SCROLLING support
Modified: trunk/Source/WebCore/html/HTMLMediaElement.cpp (231044 => 231045)
--- trunk/Source/WebCore/html/HTMLMediaElement.cpp 2018-04-26 12:04:22 UTC (rev 231044)
+++ trunk/Source/WebCore/html/HTMLMediaElement.cpp 2018-04-26 15:04:16 UTC (rev 231045)
@@ -560,11 +560,6 @@
}
#endif
-#if ENABLE(VIDEO_TRACK)
- if (page)
- m_captionDisplayMode = page->group().captionPreferences().captionDisplayMode();
-#endif
-
#if ENABLE(MEDIA_SESSION)
m_elementID = nextElementID();
elementIDsToElements().add(m_elementID, this);
@@ -4376,13 +4371,13 @@
return;
if (trackToSelect == TextTrack::captionMenuAutomaticItem()) {
- if (m_captionDisplayMode != CaptionUserPreferences::Automatic)
+ if (captionDisplayMode() != CaptionUserPreferences::Automatic)
m_textTracks->scheduleChangeEvent();
} else if (trackToSelect == TextTrack::captionMenuOffItem()) {
for (int i = 0, length = trackList.length(); i < length; ++i)
trackList.item(i)->setMode(TextTrack::Mode::Disabled);
- if (m_captionDisplayMode != CaptionUserPreferences::ForcedOnly && !trackList.isChangeEventScheduled())
+ if (captionDisplayMode() != CaptionUserPreferences::ForcedOnly && !trackList.isChangeEventScheduled())
m_textTracks->scheduleChangeEvent();
} else {
if (!trackToSelect || !trackList.contains(*trackToSelect))
@@ -5016,7 +5011,7 @@
beginProcessingMediaPlayerCallback();
#if ENABLE(VIDEO_TRACK)
- if (m_captionDisplayMode == CaptionUserPreferences::Automatic && m_subtitleTrackLanguage != m_player->languageOfPrimaryAudioTrack())
+ if (captionDisplayMode() == CaptionUserPreferences::Automatic && m_subtitleTrackLanguage != m_player->languageOfPrimaryAudioTrack())
markCaptionAndSubtitleTracksAsUnconfigured(AfterDelay);
#endif
@@ -6424,13 +6419,25 @@
return;
CaptionUserPreferences::CaptionDisplayMode displayMode = document().page()->group().captionPreferences().captionDisplayMode();
- if (m_captionDisplayMode == displayMode)
+ if (captionDisplayMode() == displayMode)
return;
m_captionDisplayMode = displayMode;
- setWebkitClosedCaptionsVisible(m_captionDisplayMode == CaptionUserPreferences::AlwaysOn);
+ setWebkitClosedCaptionsVisible(captionDisplayMode() == CaptionUserPreferences::AlwaysOn);
}
+CaptionUserPreferences::CaptionDisplayMode HTMLMediaElement::captionDisplayMode()
+{
+ if (!m_captionDisplayMode.has_value()) {
+ if (document().page())
+ m_captionDisplayMode = document().page()->group().captionPreferences().captionDisplayMode();
+ else
+ m_captionDisplayMode = CaptionUserPreferences::Automatic;
+ }
+
+ return m_captionDisplayMode.value();
+}
+
void HTMLMediaElement::markCaptionAndSubtitleTracksAsUnconfigured(ReconfigureMode mode)
{
if (!m_textTracks)
Modified: trunk/Source/WebCore/html/HTMLMediaElement.h (231044 => 231045)
--- trunk/Source/WebCore/html/HTMLMediaElement.h 2018-04-26 12:04:22 UTC (rev 231044)
+++ trunk/Source/WebCore/html/HTMLMediaElement.h 2018-04-26 15:04:16 UTC (rev 231045)
@@ -772,6 +772,7 @@
};
void markCaptionAndSubtitleTracksAsUnconfigured(ReconfigureMode);
void captionPreferencesChanged() override;
+ CaptionUserPreferences::CaptionDisplayMode captionDisplayMode();
#endif
// These "internal" functions do not check user gesture restrictions.
@@ -1087,7 +1088,7 @@
String m_subtitleTrackLanguage;
MediaTime m_lastTextTrackUpdateTime { -1, 1 };
- CaptionUserPreferences::CaptionDisplayMode m_captionDisplayMode { CaptionUserPreferences::Automatic };
+ std::optional<CaptionUserPreferences::CaptionDisplayMode> m_captionDisplayMode;
RefPtr<AudioTrackList> m_audioTracks;
RefPtr<TextTrackList> m_textTracks;
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes