1
0
mirror of https://github.com/videojs/video.js.git synced 2025-01-21 11:02:08 +02:00

1512 Commits

Author SHA1 Message Date
Gary Katsevman
15df4e16b4
fix(text-tracks): cuechange handler not triggering correctly (#5446)
We were only triggering cuechange events if a metadata track started out as not disabled or only when setting the mode to 'showing'

Fixes #5308
2018-09-25 14:42:58 -04:00
Brandon Casey
235b18853e fix(ResizeManager): fixup the null check (#5427) 2018-09-11 11:26:15 -04:00
Gary Katsevman
b25f024a04
fix: make sure all attributes are updated before applying to tag (#5416)
Fixes #5309
2018-09-07 08:56:11 -07:00
Alexander
6d6bfd1420 fix: use consistent id for tech, no matter how it is loaded (#5415)
Change the constant used in the techId prop to the camelCased version, this will result on consistent id when loadTech_() is executed.

Fixes #5411
2018-09-07 08:55:02 -07:00
Brandon Casey
3744df1680
test: fix travis ci issues with resize-manager tests (#5390) 2018-08-28 16:24:26 -04:00
Gary Katsevman
8e9d92cc98
fix: add debounced.cancel and use it in ResizeManager (#5378)
It's possible that ResizeManager will trigger its debounce handler but
then get disposed before the handler runs. This can cause tests to fail,
so, instead, we should cancel the debounce when ResizeManager is
disposed.
2018-08-13 16:39:50 -04:00
Brandon Casey
58405fdf78 fix: always return a promise from play, if supported (#5227)
If Promise is available or if Promise is polyfilled, then we'll return a new Promise from `play()` that will get fulfilled with the value returned from the `play()` method. This means that on IE11, this promise will get resolved when we call `play()` even if play doesn't succeed. We will have a follow-on PR to polyfill this behavior and resolve or reject the promise for browsers like IE11 that don't return a promise from `play()`.
2018-08-10 16:27:05 -04:00
Brandon Casey
6f072d8e2f fix: call component dispose in resize manager to fix leak (#5369)
Because we add Touch Activity in the parent class and those don't actually get removed in Resize Manager we leak on every dispose. Calling super.dispose() cleans them up because we remove our list of handlers via a call to DomData.removeData

Fixes #5339
2018-08-10 16:21:13 -04:00
Gary Katsevman
9cb1ba5ae9
fix(sourceset): ignore blob urls when updating source cache (#5371)
It's possible for us to get a blob url for sourceset, but when we do, we
shouldn't update the source caches with that information.

blob urls can arise when playback is done via Media Source Extension (MSE) such as m3u8 sources with @videojs/http-streaming (VHS).
2018-08-10 15:13:21 -04:00
Ahmed Romih
4b666f9c42 fix: change time tooltips to be absolutely positioned (#5355)
Fixes #5351
2018-07-31 16:40:38 -04:00
Chocobozzz
5e21ebbd2b fix: subtitles/captions freeze when using uglify (#5346)
Angular CLI, and potentially other projects, may use the "pure_getters" compression option of uglify which will end up removing the getter line we use for side-effects to update the active cues. This update makes sure that the line doesn't get removed.

Fixes #5131
2018-07-26 14:16:03 -04:00
Gary Katsevman
8c92cbfb3e
feat: async change events in TextTrackList with EventTarget#queueTrigger (#5332)
Trigger the change event on the next tick. This means that multiple changes to a track's mode will only result in a single change event on its associated TextTrackList rather than 3 events as it may be currently.

Fixes #5159
2018-07-25 17:33:30 -04:00
Brandon Casey
31a0bac823 feat(plugins): allow plugin deregistration from videojs (#5273)
This exposes `deregisterPlugin` on the videojs alongside `registerPlugin`.
2018-07-24 16:26:07 -04:00
gstrat88
fd4c6e12d6 feat(player): remove text tracks on Player#reset (#5327)
Closes #5140
2018-07-24 16:08:44 -04:00
Mike Reinstein
d773cd4feb docs: remove duplicate @deprecated which throws error when minifying via google closure compiler (#5342) 2018-07-24 15:57:29 -04:00
Gary Katsevman
781a6d87c6
feat(middleware): make setSource be optional (#5295)
setSource is useful if you care to be fiddling with the source or doing some work depending on what source is set. However, sometimes, you don't need a setSource and want the middleware to always be selected.
Now, if setSource is missing, it will implicitly be included in the middleware chain.
2018-07-06 14:16:16 -04:00
Gary Katsevman
361dc76e12
revert: "fix: Allow evented objects, such as components and plugins, to listen to the window object in addition to DOM objects. (#5255)" (#5301)
This reverts commit 7fd29b4f18320ee6c7daee6a9110c7afb72695c5.

With this change, playing back HLS content via VHS caused an infinite
event loop to be printed out. See issue #5281
2018-07-06 13:51:22 -04:00
Gary Katsevman
d7f27b7112
perf: setTimeout and requestAnimationFrame memory leak (#5294)
Our setTimeout and requestAnimationFrame methods added dispose handlers so that they get cancelled if the component is disposed before they get a chance to run. However, we were only clearing out these dispose handlers if we cleared the timeout or the rAF manually. Instead make sure that we remove the dispose handler when it is no longer needed.

Fixes #5199.
2018-07-05 16:29:03 -04:00
DoomTay
444b271afe feat(fullscreen-toggle): disable fs button if fullcreen is unavailable (#5296)
Fixes #5290.
2018-07-05 16:28:37 -04:00
Yamamori Akihiro
c9d1e8a3d1 fix: autoplay throws 'undefined promise' error on some browsers. (#5283)
If the source is not loaded, `player.play();` returns `undefined` on Firefox and Edge, which causes exception.
With this fix, player will not make exception and the fallback (`player.play()` execution after loading video) will be enabled.
2018-07-03 12:06:24 -04:00
Stefano Fedeli
e683891183 fix(browser): TOUCH_ENABLED detection with Win10 (#5286)
Fixes #3306
2018-07-03 12:03:46 -04:00
Darius Oleskevicius
1b9bd42a1c feat: add double-click handler to toggle fullscreen (#5148)
Fixes #4948.
2018-07-03 12:02:19 -04:00
Darius Oleskevicius
b430461335 feat(browser): include iOS Chrome UA pattern when detecting Google Chrome (#5262)
Make IS_CHROME return true and IS_ANY_SAFARI return false for iOS Chrome.
2018-06-26 14:36:33 -04:00
Brandon Casey
ceed382222 refactor: removed old bug work-around code (#5200)
This removes some old workarounds for Chrome 15 and Safari 5.
2018-06-25 14:05:07 -04:00
Owen Edwards
53c62aca58 feat: Add an Audio Description icon to an audio track name in the track menu if it is "main-desc" kind. (#4599) 2018-06-21 14:34:16 -04:00
Darius Oleskevicius
237041698c feat: show mute toggle button if the tech supports muting volume (#5052)
Currently, VideoJS combines volume control with muted support, and these actions aren't actually the same. Muting/unmuting volume work independently from the volume control. For example, iOS doesn't support controlling volume programmatically but allows muting/unmuting volume.

This change will display the volume control panel and mute toggle button if the tech supports muting volume. The volume slider will continue to be hidden if the platform doesn't allow programmatically control volume. If neither muting nor control volume is supported, volume panel will not be displayed.

Fixes #4478.
2018-06-21 14:33:08 -04:00
Brandon Casey
e8e4fe2745 feat(autoplay): extend autoplay option for greater good (#5209)
This PR extends the `autoplay` to the player with a few options that should hopefully make working with browsers that disable unmuted autoplay by default easier.
The current boolean option will match current behavior and any unknown option will be treated as it does now. The new options are the string values `muted`, `play`, and `any`.

- `muted` will mute the element and call `play()` on `loadstart`,
- `play` will call `play()` on `loadstart()`, this is similar to the `autoplay` attribute
- `any` will call `play()` on `loadstart()` but if it fails it will try muting the video and calling `play()` again.
2018-06-21 14:32:07 -04:00
Phil Richman
e92f177ce2 feat(text-track-display): Extend the constructColor function to handle 6 digit hex codes (#5238)
When providing the TextTrackDisplay component with track settings overrides, currently colour codes with only three digits are supported. This updates it so that 6 digit hex codes are also accepted.
2018-06-21 14:20:12 -04:00
Pat O'Neill
7fd29b4f18 fix: Allow evented objects, such as components and plugins, to listen to the window object in addition to DOM objects. (#5255)
the bug is that objects using the new-ish evented mixin cannot listen to the window object, preventing things like:

```
component.on(window, 'scroll', throttledListener);
```

This fixes that so anything that's a native EventTarget works.
2018-06-20 17:05:33 -04:00
Chuck Wilson
9504a93643 fix: make sure source options are passed through (#5241)
The changes to source caching in #5156 introduced a regression where the source options were no longer available to plugins. This PR makes sure the cached source object retains any source options passed along.
2018-06-11 13:47:36 -04:00
Darius Oleskevicius
002d7011c5 fix: menu sizing when using longer caption labels (#5228)
Currently, if longer captions labels are used the SubsCaps menu gets all messed up in IE11/Edge. This occurs due to the menu size is not adjusted correctly not taking into consideration the CC icon. This, as a result, causes the captions items not to fit in the menu and because they end up too wide and the menu has overflow: auto style, the horizontal scrollbars show up and cause the menu not to render correctly. Therefore, don't position the caption label absolutely.

Fix #4758.
2018-06-11 13:39:47 -04:00
Darius Oleskevicius
59869b9d49 fix(slider): suppress console warnings in Chrome for Android when scrubbing (#5219)
Instead of calling preventDefault() on touchstart in Chrome, set touch-action: none style on progress control to prevent unintended scrolling.

Fixes #4650.
2018-06-05 13:32:38 -04:00
Robel Tezera
a29156ca7b fix: silence play promise in a few more places (#5213)
Silence the play promise in the Big Play Button, click-to-play, and the poster image.
2018-06-04 15:25:51 -04:00
Thijs Triemstra
a3fd06a1a8 docs(component): fix typo (#5226) 2018-06-04 15:24:13 -04:00
Owen Edwards
f3d7ac2524
fix(menus): change ARIA role of menu items for better screen reader support (#5171)
Change most menu items to an ARIA role of "menuitemradio" when only one item can be selected (i.e. in the Captions, Subtitles, Descriptions, Chapters, Audio Tracks, and Rate menus).

Fixes #5136
2018-05-23 12:47:37 -07:00
Owen Edwards
2bc810decb
fix(player): ensure that JAWS+IE announces the BPB and play button (#5173)
Freedom Scientific's recommended workaround for JAWS + IE not announcing the first button after a video element which doesn't have its own native controls (See https://github.com/FreedomScientific/VFO-standards-support/issues/78).

Fixes #4583
2018-05-23 12:43:44 -07:00
Gary Katsevman
954f3d979f
fix(player): video-js embed missing video-js class (#5194)
When having a video-js embed with a class attribute, as part of the
changes to remove old IE support (#5041), we overwrote our addition of
the video-js class when it was missing. Instead, we want to make sure
that we don't override the class names again since they are already set
up correctly.

Fixes videojs/http-streaming#100
2018-05-22 21:44:35 -04:00
Brandon Casey
22fd327076
tests: do not throw on tech/player dispose (#5179) 2018-05-16 12:02:41 -04:00
Brandon Casey
59c6261cb5
fix: check for el before resetSourceSet (#5176) 2018-05-16 11:19:45 -04:00
Owen Edwards
0aa827fac5 fix(time-display): restore hidden label text for screen readers. (#5157)
Restore hidden label text for screen readers that describes what the button control does.

Renames the Duration Time language item to Duration.

Deprecate controlText_ property.

Fix a typo in translations-needed.md.

Add a space in the hidden label for live-display, so that it doesn't run together with the visible "LIVE" indication.

Fixes #5135
2018-05-11 14:34:33 -04:00
Owen Edwards
dc0d2bc187 fix: Remove spaces from element IDs and ARIA attributes in the Captions Settings Dialog (#5153)
Fixes #4688 and #4884; supercedes 855adf3.
2018-05-11 14:31:28 -04:00
Owen Edwards
8a08957835 fix: Remove unnecessary ARIA role on the Control Bar. (#5154)
There doesn't seem to be any point in indicating the Control Bar as a separate object - it's all just part of the video player. Perhaps in the future, if there's content which isn't part of the control bar that needs to be clearly distinguishable from the control bar, then it would make sense, but right now you don't interact with the control bar and it doesn't convey any concept of grouping.

Fixes #5134
2018-05-11 14:31:28 -04:00
Owen Edwards
1c74e4fa0b fix: Reduce the multiple-announcement by screen readers of the new name of a button when its text label changes. (#5158)
Move the aria-live attribute to the control text element within buttons, rather than on the whole button, so it is not affected by the change of the title attribute, only by the change of the control text.

It seems like having aria-live on the button itself means that JAWS and NVDA announce the button both when the button text changes and when the title attribute changes. NVDA speaks the new label more times because it announces the button text as the label and the title as the description, so it says, for example, "pause button pause". JAWS doesn't appear to do this, so it doesn't repeat it as many times.

Partially addresses #5023
2018-05-11 14:31:28 -04:00
Monica Olinescu
ad1bb9db5e fix(seek-bar): ensure aria-valuenow attribute in seek-bar is not NaN (#5164)
Updated the getPercent function to return 0 instead of NaN. This is in accordance with the return value in the function's jsdocs.

Fixes #4960.
2018-05-11 14:09:15 -04:00
axten
d44682849e feat: add 'autoSetup' option (#5123)
this must be set globally with videojs.options.autoSetup = false in the same tick as videojs source is loaded to take effect

fixes #5094
2018-05-11 13:53:46 -04:00
Brandon Casey
c6617b24f7
feat: copy properties from <video-js> to the media el (#5039) 2018-05-09 15:55:29 -04:00
Brandon Casey
6147e5f7aa
fix: sourceset and browser behavior inconsistencies (#5054)
* We now trigger `sourceset` any time a `<source>` element is appended to a mediaEl with no source.
  * `load` should always fire a `sourceset`
  * `sourceset` should always be the absolute url.
2018-05-09 15:51:47 -04:00
Brandon Casey
ba2ae7868b
feat: update the players source cache on sourceset (#5040) 2018-05-08 17:46:46 -04:00
Gary Katsevman
4a34dd78b1
feat(modal): remove old IE box sizing (#5113) 2018-04-20 16:33:31 -04:00
Oshin Karamian
083a86c363 feat: split overrideNative method into separate methods (#5107)
Split overrideNative method into one for Audio and Video. Fixes issues with differing track support in IE11.
2018-04-19 20:11:11 -04:00