@@ -2,17 +2,22 @@ import { css, html, LitElement, nothing } from 'lit';
22import { LoadingCompleteMixin } from '@brightspace-ui/core/mixins/loading-complete/loading-complete-mixin.js' ;
33
44const IFRAME_SCRIPTS_URL = new URL ( './iframe-scripts.js' , import . meta. url ) . href ;
5+ const TEXT_SOURCE = `
6+ <span id="target">Safe</span> text
7+ <img src=x onerror="document.querySelector('#target').innerHTML = 'Onerror'">
8+ <script>document.querySelector('#target').innerHTML = 'Script'</script>
9+ ` ;
510const stub = ( object , method , fake ) => {
611 const original = object [ method ] ;
712 object [ method ] = fake ;
813 return ( ) => object [ method ] = original ;
914} ;
1015
1116const commands = {
12- default : ( window , element , settings ) => window . html2pdf ( ) . set ( settings ) . from ( element ) . outputPdf ( 'arraybuffer' ) ,
13- legacy : async ( window , element , settings ) => {
17+ default : ( window , src , settings ) => window . html2pdf ( ) . set ( settings ) . from ( src ) . outputPdf ( 'arraybuffer' ) ,
18+ legacy : async ( window , src , settings ) => {
1419 const restore = stub ( window . html2pdf . Worker . prototype , 'save' , function ( ) { return this . then ( function save ( ) { } ) ; } ) ;
15- const arrayBuffer = await window . html2pdf ( element , settings ) . outputPdf ( 'arraybuffer' ) ;
20+ const arrayBuffer = await window . html2pdf ( src , settings ) . outputPdf ( 'arraybuffer' ) ;
1621 restore ( ) ;
1722 return arrayBuffer ;
1823 } ,
@@ -41,6 +46,7 @@ class TestHarness extends LoadingCompleteMixin(LitElement) {
4146 selector : { type : String } ,
4247 settings : { type : String } ,
4348 show : { type : String , reflect : true } ,
49+ textSource : { type : Boolean , attribute : 'text-source' } ,
4450 _arrayBuffer : { state : true } ,
4551 } ;
4652
@@ -140,10 +146,10 @@ class TestHarness extends LoadingCompleteMixin(LitElement) {
140146 }
141147
142148 async _handleScriptLoad ( ) {
143- const element = this . _pdfIframeWindow . document . querySelector ( this . selector ) ;
149+ const src = this . textSource ? TEXT_SOURCE : this . _pdfIframeWindow . document . querySelector ( this . selector ) ;
144150
145151 const command = commands [ this . command || 'default' ] ;
146- const arrayBuffer = await command ( this . _pdfIframeWindow , element , settings [ this . settings || 'default' ] ) ;
152+ const arrayBuffer = await command ( this . _pdfIframeWindow , src , settings [ this . settings || 'default' ] ) ;
147153 await this . _pdfIframeWindow . renderPdf ( arrayBuffer ) ;
148154
149155 this . _resizeIframe ( this . _pdfIframe , true ) ;
0 commit comments