Browse Source

notes plugin allows messsages from current/upcoming slide windows

hakimel 3 years ago
parent
commit
0247ae7582
4 changed files with 7 additions and 3 deletions
  1. 0 0
      plugin/notes/notes.esm.js
  2. 0 0
      plugin/notes/notes.js
  3. 1 0
      plugin/notes/plugin.js
  4. 6 3
      plugin/notes/speaker-view.html

File diff suppressed because it is too large
+ 0 - 0
plugin/notes/notes.esm.js


File diff suppressed because it is too large
+ 0 - 0
plugin/notes/notes.js


+ 1 - 0
plugin/notes/plugin.js

@@ -203,6 +203,7 @@ const Plugin = () => {
 					// that we remain connected to the notes even if the presentation
 					// is reloaded.
 					window.addEventListener( 'message', event => {
+
 						if( !speakerWindow && typeof event.data === 'string' ) {
 							let data;
 

+ 6 - 3
plugin/notes/speaker-view.html

@@ -350,7 +350,8 @@
 					layoutDropdown,
 					pendingCalls = {},
 					lastRevealApiCallId = 0,
-					connected = false;
+					connected = false,
+					whitelistedWindows = [window.opener];
 
 				var SPEAKER_LAYOUTS = {
 					'default': 'Default',
@@ -368,8 +369,8 @@
 ;
 				window.addEventListener( 'message', function( event ) {
 
-					// Validate the origin of this message to avoid XSS
-					if( window.location.origin !== event.origin && event.source !== window.opener ) {
+					// Validate the origin of this message to prevent XSS
+					if( window.location.origin !== event.origin && whitelistedWindows.indexOf( event.source ) === -1 ) {
 						return;
 					}
 
@@ -538,6 +539,8 @@
 					upcomingSlide.setAttribute( 'src', upcomingURL );
 					document.querySelector( '#upcoming-slide' ).appendChild( upcomingSlide );
 
+					whitelistedWindows.push( currentSlide.contentWindow, upcomingSlide.contentWindow );
+
 				}
 
 				/**

Some files were not shown because too many files changed in this diff