From 72c8cf3233278bccea9ef22e3117900f5982cec1 Mon Sep 17 00:00:00 2001 From: Scott Taylor Date: Wed, 16 Jul 2014 18:18:18 +0000 Subject: [PATCH] Cleanup after [29179]: * Pause players when media is edited via modal * Remove players on unind * Account for failure when an empty node is passed to an `mce.view.View` See #28905. git-svn-id: https://develop.svn.wordpress.org/trunk@29191 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/js/mce-view.js | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/src/wp-includes/js/mce-view.js b/src/wp-includes/js/mce-view.js index 4754895726..9dcb8ba793 100644 --- a/src/wp-includes/js/mce-view.js +++ b/src/wp-includes/js/mce-view.js @@ -129,10 +129,10 @@ window.wp = window.wp || {}; iframe, iframeDoc, i, resize; node = $( node ).find( '.wpview-content' )[0]; - - if ( node ) { - node.innerHTML = ''; + if ( ! node ) { + return; } + node.innerHTML = ''; iframe = dom.add( node, 'iframe', { src: tinymce.Env.ie ? 'javascript:""' : '', @@ -511,10 +511,14 @@ window.wp = window.wp || {}; _.bindAll( this, 'createIframe', 'setNode', 'fetch', 'pausePlayers' ); $( this ).on( 'ready', this.setNode ); + + $( document ).on( 'media:edit', this.pausePlayers ); }, setNode: function ( event, editor, node ) { - this.node = node; + if ( node ) { + this.node = node; + } editor.on( 'hide', this.pausePlayers ); if ( this.parsed ) { @@ -573,12 +577,25 @@ window.wp = window.wp || {}; pausePlayers: function() { var p, win = $( 'iframe', this.node ).get(0).contentWindow; - if ( win.mejs ) { + if ( win && win.mejs ) { for ( p in win.mejs.players ) { win.mejs.players[p].pause(); + } + } + }, + + unsetPlayers: function() { + var p, win = $( 'iframe', this.node ).get(0).contentWindow; + if ( win && win.mejs ) { + for ( p in win.mejs.players ) { win.mejs.players[p].remove(); } } + }, + + unbind: function() { + this.pausePlayers(); + this.unsetPlayers(); } },