mirror of
https://github.com/zoriya/v10.git
synced 2026-08-16 02:45:09 +00:00
feat(core): add sub-1x playback rates to defaults (#1231)
This commit is contained in:
+12
-5
@@ -6,7 +6,7 @@ import { PlaybackRateButtonCore } from '../playback-rate-button-core';
|
|||||||
|
|
||||||
function createMediaState(overrides: Partial<MediaPlaybackRateState> = {}): MediaPlaybackRateState {
|
function createMediaState(overrides: Partial<MediaPlaybackRateState> = {}): MediaPlaybackRateState {
|
||||||
return {
|
return {
|
||||||
playbackRates: [1, 1.2, 1.5, 1.7, 2],
|
playbackRates: [0.25, 0.5, 0.75, 1, 1.2, 1.5, 1.7, 2],
|
||||||
playbackRate: 1,
|
playbackRate: 1,
|
||||||
setPlaybackRate: vi.fn(),
|
setPlaybackRate: vi.fn(),
|
||||||
...overrides,
|
...overrides,
|
||||||
@@ -96,7 +96,7 @@ describe('PlaybackRateButtonCore', () => {
|
|||||||
const core = new PlaybackRateButtonCore();
|
const core = new PlaybackRateButtonCore();
|
||||||
const media = createMediaState({ playbackRate: 2 });
|
const media = createMediaState({ playbackRate: 2 });
|
||||||
core.cycle(media);
|
core.cycle(media);
|
||||||
expect(media.setPlaybackRate).toHaveBeenCalledWith(1);
|
expect(media.setPlaybackRate).toHaveBeenCalledWith(0.25);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('advances through the middle of the list', () => {
|
it('advances through the middle of the list', () => {
|
||||||
@@ -108,9 +108,9 @@ describe('PlaybackRateButtonCore', () => {
|
|||||||
|
|
||||||
it('finds the first rate greater than current when not in list', () => {
|
it('finds the first rate greater than current when not in list', () => {
|
||||||
const core = new PlaybackRateButtonCore();
|
const core = new PlaybackRateButtonCore();
|
||||||
const media = createMediaState({ playbackRate: 0.75 });
|
const media = createMediaState({ playbackRate: 0.3 });
|
||||||
core.cycle(media);
|
core.cycle(media);
|
||||||
expect(media.setPlaybackRate).toHaveBeenCalledWith(1);
|
expect(media.setPlaybackRate).toHaveBeenCalledWith(0.5);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('finds the next greater rate when between list values', () => {
|
it('finds the next greater rate when between list values', () => {
|
||||||
@@ -124,7 +124,14 @@ describe('PlaybackRateButtonCore', () => {
|
|||||||
const core = new PlaybackRateButtonCore();
|
const core = new PlaybackRateButtonCore();
|
||||||
const media = createMediaState({ playbackRate: 3 });
|
const media = createMediaState({ playbackRate: 3 });
|
||||||
core.cycle(media);
|
core.cycle(media);
|
||||||
expect(media.setPlaybackRate).toHaveBeenCalledWith(1);
|
expect(media.setPlaybackRate).toHaveBeenCalledWith(0.25);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('cycles through sub-1x rates', () => {
|
||||||
|
const core = new PlaybackRateButtonCore();
|
||||||
|
const media = createMediaState({ playbackRate: 0.25 });
|
||||||
|
core.cycle(media);
|
||||||
|
expect(media.setPlaybackRate).toHaveBeenCalledWith(0.5);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('does nothing when disabled', () => {
|
it('does nothing when disabled', () => {
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import { listen } from '@videojs/utils/dom';
|
|||||||
import type { MediaPlaybackRateState } from '../../../core/media/state';
|
import type { MediaPlaybackRateState } from '../../../core/media/state';
|
||||||
import { definePlayerFeature } from '../../feature';
|
import { definePlayerFeature } from '../../feature';
|
||||||
|
|
||||||
const DEFAULT_RATES: readonly number[] = [1, 1.2, 1.5, 1.7, 2];
|
const DEFAULT_RATES: readonly number[] = [0.25, 0.5, 0.75, 1, 1.2, 1.5, 1.7, 2];
|
||||||
|
|
||||||
export const playbackRateFeature = definePlayerFeature({
|
export const playbackRateFeature = definePlayerFeature({
|
||||||
name: 'playbackRate',
|
name: 'playbackRate',
|
||||||
|
|||||||
Reference in New Issue
Block a user