From d47c823afab404f0ef4a6269086c88c89efedcc1 Mon Sep 17 00:00:00 2001 From: Vincent Valot Date: Tue, 11 May 2021 19:04:29 +0200 Subject: [PATCH] fix: choose the configured preferred text role at start (#3399) --- demo/common/message_ids.js | 1 + demo/config.js | 3 ++- demo/demo_utils.js | 1 + demo/locales/en.json | 1 + demo/locales/source.json | 4 ++++ lib/player.js | 1 + test/demo/demo_unit.js | 1 - test/player_unit.js | 18 ++++++++++++++++++ 8 files changed, 28 insertions(+), 2 deletions(-) diff --git a/demo/common/message_ids.js b/demo/common/message_ids.js index 1c06e366dc..b11bb75bce 100644 --- a/demo/common/message_ids.js +++ b/demo/common/message_ids.js @@ -228,6 +228,7 @@ shakaDemo.MessageIds = { STREAMING_SECTION_HEADER: 'DEMO_STREAMING_SECTION_HEADER', SWITCH_INTERVAL: 'DEMO_SWITCH_INTERVAL', TEXT_LANGUAGE: 'DEMO_TEXT_LANGUAGE', + TEXT_ROLE: 'DEMO_TEXT_ROLE', TIMEOUT: 'DEMO_TIMEOUT', TRICK_PLAY_CONTROLS: 'DEMO_TRICK_PLAY_CONTROLS', TRICK_PLAY_CONTROLS_WARNING: 'DEMO_TRICK_PLAY_CONTROLS_WARNING', diff --git a/demo/config.js b/demo/config.js index b7002423ab..aa8afa5691 100644 --- a/demo/config.js +++ b/demo/config.js @@ -395,7 +395,8 @@ shakaDemo.Config = class { const docLink = this.resolveExternLink_('.PlayerConfiguration'); this.addSection_(MessageIds.LANGUAGE_SECTION_HEADER, docLink) .addTextInput_(MessageIds.AUDIO_LANGUAGE, 'preferredAudioLanguage') - .addTextInput_(MessageIds.TEXT_LANGUAGE, 'preferredTextLanguage'); + .addTextInput_(MessageIds.TEXT_LANGUAGE, 'preferredTextLanguage') + .addTextInput_(MessageIds.TEXT_ROLE, 'preferredTextRole'); const onChange = (input) => { shakaDemoMain.setUILocale(input.value); shakaDemoMain.remakeHash(); diff --git a/demo/demo_utils.js b/demo/demo_utils.js index db7d163c49..4489ac7214 100644 --- a/demo/demo_utils.js +++ b/demo/demo_utils.js @@ -38,6 +38,7 @@ shakaDemo.Utils = class { // Override config values with custom names. configOverride('audiolang', 'preferredAudioLanguage'); configOverride('textlang', 'preferredTextLanguage'); + configOverride('textrole', 'preferredTextRole'); configOverride('channels', 'preferredAudioChannelCount'); // Override config values that are handled manually. diff --git a/demo/locales/en.json b/demo/locales/en.json index 0a516a3e60..1dcd950fa4 100644 --- a/demo/locales/en.json +++ b/demo/locales/en.json @@ -187,6 +187,7 @@ "DEMO_SURROUND_SEARCH": "Filters for assets with at least one surround sound audio track.", "DEMO_SWITCH_INTERVAL": "Switch Interval", "DEMO_TEXT_LANGUAGE": "Preferred Text Language", + "DEMO_TEXT_ROLE": "Preferred Text Role", "DEMO_THUMBNAILS": "Thumbnails", "DEMO_TIMEOUT": "Timeout Factor", "DEMO_TRICK_MODE": "Special trick mode track", diff --git a/demo/locales/source.json b/demo/locales/source.json index c304b0440a..96d8c276cf 100644 --- a/demo/locales/source.json +++ b/demo/locales/source.json @@ -755,6 +755,10 @@ "description": "The name of a configuration value.", "message": "Preferred Text Language" }, + "DEMO_TEXT_ROLE": { + "description": "The name of a configuration value.", + "message": "Preferred Text Role" + }, "DEMO_THUMBNAILS": { "description": "Text that describes an asset that has a thumbnail stream.", "message": "Thumbnails" diff --git a/lib/player.js b/lib/player.js index 4eef2b062e..b13cfa1197 100644 --- a/lib/player.js +++ b/lib/player.js @@ -1826,6 +1826,7 @@ shaka.Player = class extends shaka.util.FakeEventTarget { this.config_.preferredAudioChannelCount); this.currentTextLanguage_ = this.config_.preferredTextLanguage; + this.currentTextRole_ = this.config_.preferredTextRole; shaka.Player.applyPlayRange_(this.manifest_.presentationTimeline, this.config_.playRangeStart, diff --git a/test/demo/demo_unit.js b/test/demo/demo_unit.js index 7627a3451c..b493f7f151 100644 --- a/test/demo/demo_unit.js +++ b/test/demo/demo_unit.js @@ -96,7 +96,6 @@ describe('Demo', () => { const configPrimitives = new Set(['number', 'string', 'boolean']); const exceptions = new Set() .add('preferredVariantRole') - .add('preferredTextRole') .add('playRangeStart') .add('playRangeEnd') .add('manifest.dash.keySystemsByURI'); diff --git a/test/player_unit.js b/test/player_unit.js index 07599aeba9..3621b57df9 100644 --- a/test/player_unit.js +++ b/test/player_unit.js @@ -1986,6 +1986,24 @@ describe('Player', () => { expect(variantChanged).not.toHaveBeenCalled(); }); }); + + it('chooses the configured text language and role at start', async () => { + player.configure({ + preferredTextLanguage: 'en', + preferredTextRole: 'commentary', + }); + + await player.load(fakeManifestUri, 0, fakeMimeType); + + // Text was turned on during startup. + expect(player.isTextTrackVisible()).toBe(true); + + expect(getActiveTextTrack()).toEqual(jasmine.objectContaining({ + id: 52, + language: 'en', + roles: ['commentary'], + })); + }); }); // describe('tracks') describe('languages', () => {