bigscreen-player
Advanced tools
Comparing version 3.15.0 to 3.15.1
@@ -17,2 +17,4 @@ 📺 What | ||
[Test Guidelines](https://github.com/bbc/bigscreen-player/wiki/Areas-Impacted) | ||
| Test engineer sign off | :x: | | ||
@@ -19,0 +21,0 @@ | ---- | ---- | |
@@ -34,4 +34,5 @@ # Contributing | ||
- Once approved by a developer, test engineer maintainers will run manual tests on a range of connected TV devices appropriate for the changes made | ||
- Our test guidelines are documented [here](https://github.com/bbc/bigscreen-player/wiki/Areas-Impacted) | ||
- Maintainers will bump the npm version, tag, and create a GitHub release, triggering a Travis build which publishes the new version to npm | ||
**Note:** Other BBC teams may wish to test and release their contributions themselves. In these cases, please reference your Jira ticket and add your test plan to the Pull Request for review. | ||
**Note:** Other BBC teams may wish to test and release their contributions themselves. In these cases, please reference your Jira ticket and add your test plan (in line with our [test guidelines](https://github.com/bbc/bigscreen-player/wiki/Areas-Impacted)) to the Pull Request for review. |
{ | ||
"name": "bigscreen-player", | ||
"version": "3.15.0", | ||
"version": "3.15.1", | ||
"description": "Simplified media playback for bigscreen devices.", | ||
@@ -13,3 +13,2 @@ "main": "script/bigscreenplayer.js", | ||
"lint:code:changed": "git diff-index --name-only HEAD | egrep '.js$' | xargs eslint", | ||
"build:example-app": "cd docs/example-app/ && npm install && npm run build && cd ../../", | ||
"build:version": "node ./buildVersion.js", | ||
@@ -16,0 +15,0 @@ "pre-release:patch": "npm version patch --no-git-tag --no-git-commit && npm run build:version", |
@@ -17,6 +17,2 @@ # Bigscreen Player | ||
## Example Usage | ||
We have a working example app - see [docs/example-app](docs/example-app). | ||
### Initialisation | ||
@@ -23,0 +19,0 @@ |
@@ -20,4 +20,22 @@ require( | ||
}); | ||
it('Will delete a node which has a parent', function () { | ||
var body = document.createElement('body'); | ||
var child = document.createElement('p'); | ||
body.appendChild(child); | ||
DOMHelpers.safeRemoveElement(child); | ||
expect(body.hasChildNodes()).toBeFalse(); | ||
}); | ||
it('Will do nothing when the node is detatched', function () { | ||
var node = document.createElement('p'); | ||
expect(function () { | ||
DOMHelpers.safeRemoveElement(node); | ||
}).not.toThrow(); | ||
}); | ||
}); | ||
} | ||
); |
@@ -7,5 +7,6 @@ require( | ||
'bigscreenplayer/mediasources', | ||
'bigscreenplayer/models/livesupport' | ||
'bigscreenplayer/models/livesupport', | ||
'bigscreenplayer/domhelpers' | ||
], | ||
function (Squire, MediaKinds, WindowTypes, MediaSources, LiveSupport) { | ||
function (Squire, MediaKinds, WindowTypes, MediaSources, LiveSupport, DOMHelpers) { | ||
var injector = new Squire(); | ||
@@ -170,3 +171,3 @@ var MSEStrategy; | ||
mockVideoElement.currentTime = 0; | ||
document.body.removeChild(playbackElement); | ||
DOMHelpers.safeRemoveElement(playbackElement); | ||
mockPluginsInterface.onErrorHandled.calls.reset(); | ||
@@ -173,0 +174,0 @@ mockDashInstance.attachSource.calls.reset(); |
@@ -315,8 +315,3 @@ define('bigscreenplayer/captions', | ||
if (time > end || time < start) { | ||
if (htmlElementNode) { | ||
var e = htmlElementNode; | ||
if (e.parentNode) { | ||
e.parentNode.removeChild(e); | ||
} | ||
} | ||
DOMHelpers.safeRemoveElement(htmlElementNode); | ||
return true; | ||
@@ -323,0 +318,0 @@ } |
@@ -61,5 +61,3 @@ define( | ||
function tearDown () { | ||
if (container) { | ||
parentElement.removeChild(container); | ||
} | ||
DOMHelpers.safeRemoveElement(container); | ||
} | ||
@@ -66,0 +64,0 @@ |
define('bigscreenplayer/debugger/debugview', | ||
function () { | ||
[ | ||
'bigscreenplayer/domhelpers' | ||
], | ||
function (DOMHelpers) { | ||
'use strict'; | ||
@@ -83,11 +86,12 @@ var appElement, logBox, logContainer, staticContainer, staticBox; | ||
function tearDown () { | ||
if (appElement) { | ||
appElement.removeChild(document.getElementById('logBox')); | ||
appElement.removeChild(document.getElementById('staticBox')); | ||
appElement = undefined; | ||
} | ||
var logBox = document.getElementById('logBox'); | ||
var staticBox = document.getElementById('staticBox'); | ||
DOMHelpers.safeRemoveElement(logBox); | ||
DOMHelpers.safeRemoveElement(staticBox); | ||
appElement = undefined; | ||
staticContainer = undefined; | ||
logContainer = undefined; | ||
logBox = undefined; | ||
staticBox = undefined; | ||
} | ||
@@ -94,0 +98,0 @@ |
@@ -44,2 +44,13 @@ define( | ||
/** | ||
* Safely removes an element from the DOM, simply doing | ||
* nothing if the node is detached (Has no parent). | ||
* @param {Element} el The Element to remove | ||
*/ | ||
var safeRemoveElement = function (el) { | ||
if (el.parentNode) { | ||
el.parentNode.removeChild(el); | ||
} | ||
}; | ||
return { | ||
@@ -50,5 +61,6 @@ addClass: addClass, | ||
rgbaToRGB: rgbaToRGB, | ||
isRGBA: isRGBATuple | ||
isRGBA: isRGBATuple, | ||
safeRemoveElement: safeRemoveElement | ||
}; | ||
} | ||
); |
define('bigscreenplayer/playbackstrategy/liveglitchcurtain', | ||
[ | ||
'bigscreenplayer/playbackspinner' | ||
'bigscreenplayer/playbackspinner', | ||
'bigscreenplayer/domhelpers' | ||
], | ||
function (PlaybackSpinner) { | ||
function (PlaybackSpinner, DOMHelpers) { | ||
return function (parentElement) { | ||
@@ -31,9 +32,7 @@ var curtain; | ||
curtain.style.display = 'none'; | ||
curtain.removeChild(spinner); | ||
DOMHelpers.safeRemoveElement(spinner); | ||
}, | ||
tearDown: function () { | ||
if (curtain) { | ||
parentElement.removeChild(curtain); | ||
} | ||
DOMHelpers.safeRemoveElement(curtain); | ||
@@ -40,0 +39,0 @@ if (spinner) { |
@@ -5,5 +5,6 @@ define( | ||
'bigscreenplayer/playbackstrategy/modifiers/mediaplayerbase', | ||
'bigscreenplayer/debugger/debugtool' | ||
'bigscreenplayer/debugger/debugtool', | ||
'bigscreenplayer/domhelpers' | ||
], | ||
function (MediaPlayerBase, DebugTool) { | ||
function (MediaPlayerBase, DebugTool, DOMHelpers) { | ||
'use strict'; | ||
@@ -564,6 +565,3 @@ var CLAMP_OFFSET_FROM_END_OF_RANGE = 1.1; | ||
delete mediaElement.onPlayStateChange; | ||
if (mediaElement.parentElement) { | ||
mediaElement.parentElement.removeChild(mediaElement); | ||
} else { | ||
} | ||
DOMHelpers.safeRemoveElement(mediaElement); | ||
mediaElement = undefined; | ||
@@ -570,0 +568,0 @@ } |
define( | ||
'bigscreenplayer/playbackstrategy/modifiers/html5', | ||
[ | ||
'bigscreenplayer/playbackstrategy/modifiers/mediaplayerbase' | ||
'bigscreenplayer/playbackstrategy/modifiers/mediaplayerbase', | ||
'bigscreenplayer/domhelpers' | ||
], | ||
function (MediaPlayerBase) { | ||
function (MediaPlayerBase, DOMHelpers) { | ||
'use strict'; | ||
@@ -140,8 +141,2 @@ | ||
function removeElement (el) { | ||
if (el.parentNode) { | ||
el.parentNode.removeChild(el); | ||
} | ||
} | ||
function toStopped () { | ||
@@ -588,5 +583,5 @@ state = MediaPlayerBase.STATE.STOPPED; | ||
removeElement(sourceElement); | ||
DOMHelpers.safeRemoveElement(sourceElement); | ||
unloadMediaSrc(); | ||
removeElement(mediaElement); | ||
DOMHelpers.safeRemoveElement(mediaElement); | ||
@@ -593,0 +588,0 @@ mediaElement = null; |
@@ -12,2 +12,3 @@ define('bigscreenplayer/playbackstrategy/msestrategy', | ||
'bigscreenplayer/utils/timeutils', | ||
'bigscreenplayer/domhelpers', | ||
@@ -17,3 +18,3 @@ // static imports | ||
], | ||
function (MediaState, WindowTypes, DebugTool, MediaKinds, Plugins, ManifestModifier, LiveSupport, DynamicWindowUtils, TimeUtils) { | ||
function (MediaState, WindowTypes, DebugTool, MediaKinds, Plugins, ManifestModifier, LiveSupport, DynamicWindowUtils, TimeUtils, DOMHelpers) { | ||
var MSEStrategy = function (mediaSources, windowType, mediaKind, playbackElement, isUHD, device) { | ||
@@ -517,3 +518,3 @@ var LIVE_DELAY_SECONDS = 1.1; | ||
mediaElement.parentElement.removeChild(mediaElement); | ||
DOMHelpers.safeRemoveElement(mediaElement); | ||
@@ -520,0 +521,0 @@ mediaPlayer = undefined; |
define('bigscreenplayer/version', | ||
function () { | ||
return '3.15.0'; | ||
return '3.15.1'; | ||
} | ||
); |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
Dynamic require
Supply chain riskDynamic require can indicate the package is performing dangerous or unsafe dynamic code execution.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Dynamic require
Supply chain riskDynamic require can indicate the package is performing dangerous or unsafe dynamic code execution.
Found 1 instance in 1 package
Mixed license
License(Experimental) Package contains multiple licenses.
Found 1 instance in 1 package
0
644280
90
14092
240
2