Skip to content

Commit

Permalink
Merge 367e8fd into 0669549
Browse files Browse the repository at this point in the history
  • Loading branch information
thijstriemstra committed Oct 12, 2019
2 parents 0669549 + 367e8fd commit 82741b3
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 2 deletions.
2 changes: 1 addition & 1 deletion CHANGES.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ wavesurfer.js changelog

- New `barRadius` option to create waveforms with rounded bars (#953)
- Throw error when the url parameter supplied to `wavesurfer.load()`
is empty (#1773)
is empty (#1773, #1775)
- Specify non-minified wavesurfer.js in `main` entry of `package.json` (#1759)
- Add `dblclick` event listener to wavesurfer wrapper (#1764)
- Regions plugin: change region end handler position (#1762)
Expand Down
28 changes: 28 additions & 0 deletions spec/mediaelement.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -278,3 +278,31 @@ describe('WaveSurfer/MediaElement:', function() {
loadElement();
});
});

/** @test {WaveSurfer} */
describe('WaveSurfer/MediaElement/errors:', function() {
var element;

beforeEach(function() {
element = TestHelpers.createElement('test');
});

afterEach(function() {
TestHelpers.removeElement(element);
});

/**
* @test {WaveSurfer}
*/
it('throw when load is called with invalid HTMLMediaElement', function() {
var wave = TestHelpers.createWaveform({
container: '#test',
backend: 'MediaElement'
});
expect(function() {
wave[0].load({
foo: 'bar'
});
}).toThrow(new Error('media parameter is not a valid media element'));
});
});
12 changes: 12 additions & 0 deletions src/mediaelement.js
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,8 @@ export default class MediaElement extends WebAudio {
* @param {HTMLElement} container HTML element
* @param {number[]|Number.<Array[]>} peaks Array of peak data
* @param {string} preload HTML 5 preload attribute value
* @throws Will throw an error if the `url` argument is not a valid media
* element.
*/
load(url, container, peaks, preload) {
const media = document.createElement(this.mediaType);
Expand Down Expand Up @@ -123,6 +125,8 @@ export default class MediaElement extends WebAudio {
*
* @param {HTMLMediaElement} media HTML5 Audio or Video element
* @param {number[]|Number.<Array[]>} peaks Array of peak data
* @throws Will throw an error if the `media` argument is not a valid media
* element.
* @private
*/
_load(media, peaks) {
Expand All @@ -135,6 +139,14 @@ export default class MediaElement extends WebAudio {
media.load();
}

// verify media element
if (
!(media instanceof HTMLMediaElement) ||
media.addEventListener === undefined
) {
throw new Error('media parameter is not a valid media element');
}

media.addEventListener('error', () => {
this.fireEvent('error', 'Error loading media element');
});
Expand Down
2 changes: 1 addition & 1 deletion src/wavesurfer.js
Original file line number Diff line number Diff line change
Expand Up @@ -1277,7 +1277,7 @@ export default class WaveSurfer extends util.Observer {
* befits the current `minPxPerSec` and zoom value) without having to decode
* the audio.
* @returns {void}
* @throws Will throw an error if the url argument is empty.
* @throws Will throw an error if the `url` argument is empty.
* @example
* // uses fetch or media element to load file (depending on backend)
* wavesurfer.load('http://example.com/demo.wav');
Expand Down

0 comments on commit 82741b3

Please sign in to comment.