Skip to content

Commit

Permalink
Hide language menus when empty
Browse files Browse the repository at this point in the history
On iOS, for now, we do not have a list of tracks.  In this case, hide
the audio language menu.

This also cleans up the hiding and showing of the captions menu, which
no longer requires a special case for TS since we integrated
transmuxing with the tracks API.

Finally, this fixes a few minor indentation issues.

Issue #997

Change-Id: I1b5bc329431e3d43a0238cd4af7839d220aa9b6b
  • Loading branch information
joeyparrish committed Apr 16, 2019
1 parent a9bb876 commit c2667c1
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 65 deletions.
20 changes: 0 additions & 20 deletions demo/common/demo_utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -82,26 +82,6 @@ ShakaDemoUtils.addLicenseRequestHeaders_ =
};


/**
* Return true if the current content is in the Transport Stream format.
* Used to decide if the caption button is shown all the time in the demo,
* and whether to show 'Default Text' as a Text Track option.
*
* @param {shaka.Player} player
* @return {boolean}
*/
ShakaDemoUtils.isTsContent = function(player) {
let activeTracks = player.getVariantTracks().filter(function(track) {
return track.active == true;
});
let activeTrack = activeTracks[0];
if (activeTrack) {
return activeTrack.mimeType == 'video/mp2t';
}
return false;
};


/**
* Creates a number of asset buttons, with selection functionality.
* Clicking one of these elements will add the "selected" tag to it, and remove
Expand Down
18 changes: 12 additions & 6 deletions ui/audio_language_selection.js
Original file line number Diff line number Diff line change
Expand Up @@ -62,16 +62,16 @@ shaka.ui.AudioLanguageSelection = class extends shaka.ui.Element {


this.eventManager.listen(this.player, 'trackschanged', () => {
this.updateAudioLanguages_();
});
this.onTracksChanged_();
});

this.eventManager.listen(this.player, 'variantchanged', () => {
this.updateAudioLanguages_();
});
this.updateAudioLanguages_();
});

this.eventManager.listen(this.languagesButton_, 'click', () => {
this.onLanguagesClick_();
});
this.onLanguagesClick_();
});

// Set up all the strings in the user's preferred language.
this.updateLocalizedStrings_();
Expand Down Expand Up @@ -171,6 +171,12 @@ shaka.ui.AudioLanguageSelection = class extends shaka.ui.Element {
new shaka.util.FakeEvent('languageselectionupdated'));
}

/** @private */
onTracksChanged_() {
const hasVariants = this.player.getVariantTracks().length > 0;
shaka.ui.Utils.setDisplay(this.languagesButton_, hasVariants);
this.updateAudioLanguages_();
}

/**
* @param {string} language
Expand Down
30 changes: 11 additions & 19 deletions ui/text_selection.js
Original file line number Diff line number Diff line change
Expand Up @@ -63,20 +63,20 @@ shaka.ui.TextSelection = class extends shaka.ui.Element {
});

this.eventManager.listen(this.player, 'texttrackvisibility', () => {
this.onCaptionStateChange_();
});
this.onCaptionStateChange_();
});

this.eventManager.listen(this.captionButton_, 'click', () => {
this.onCaptionClick_();
});
this.onCaptionClick_();
});

this.eventManager.listen(this.player, 'textchanged', () => {
this.updateTextLanguages_();
});
this.updateTextLanguages_();
});

this.eventManager.listen(this.player, 'trackschanged', () => {
this.onTracksChange_();
});
this.onTracksChanged_();
});

// Initialize caption state with a fake event.
this.onCaptionStateChange_();
Expand Down Expand Up @@ -267,17 +267,9 @@ shaka.ui.TextSelection = class extends shaka.ui.Element {


/** @private */
onTracksChange_() {
// TS content might have captions embedded in video stream, we can't know
// until we start transmuxing. So, always show the caption button if we're
// playing TS content.
if (shaka.ui.Utils.isTsContent(this.player)) {
shaka.ui.Utils.setDisplay(this.captionButton_, true);
} else {
const hasText = this.player.getTextTracks().length;
shaka.ui.Utils.setDisplay(this.captionButton_, hasText > 0);
}

onTracksChanged_() {
const hasText = this.player.getTextTracks().length > 0;
shaka.ui.Utils.setDisplay(this.captionButton_, hasText);
this.updateTextLanguages_();
}
};
Expand Down
20 changes: 0 additions & 20 deletions ui/ui_utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -51,26 +51,6 @@ shaka.ui.Utils.getDescendantIfExists = function(element, className) {
};


/**
* Return true if the content is Transport Stream.
* Used to decide if caption button is shown all the time in the demo,
* and whether to show 'Default Text' as a Text Track option.
*
* @param {shaka.Player} player
* @return {boolean}
*/
shaka.ui.Utils.isTsContent = function(player) {
let activeTracks = player.getVariantTracks().filter(function(track) {
return track.active == true;
});
let activeTrack = activeTracks[0];
if (activeTrack) {
return activeTrack.mimeType == 'video/mp2t';
}
return false;
};


/**
* Finds a descendant of |menu| that has a 'shaka-chosen-item' class
* and focuses on its' parent.
Expand Down

0 comments on commit c2667c1

Please sign in to comment.