forked from mirrors/gecko-dev
		
	 5843a639d6
			
		
	
	
		5843a639d6
		
	
	
	
	
		
			
			Automatic update from web-platform-tests [WPT] Evaluation and CSP + script text content modification Both evaluation and CSP should use the text at the time of #prepare-a-script. Bug: https://github.com/whatwg/html/issues/7882 Change-Id: I5ba39170a52155473ff3ae7e4845b7f91d6ccf31 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3621689 Reviewed-by: Domenic Denicola <domenic@chromium.org> Commit-Queue: Hiroshige Hayashizaki <hiroshige@chromium.org> Cr-Commit-Position: refs/heads/main@{#1002405} -- wpt-commits: 464a7f038e55b17daab1e43beebdab13aa960dd3 wpt-pr: 33903
		
			
				
	
	
		
			40 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			40 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| <!doctype html>
 | |
| <head>
 | |
| <meta charset=utf-8>
 | |
| <title>Modify HTMLScriptElement's text after #prepare-a-script</title>
 | |
| <link rel=help href="https://html.spec.whatwg.org/multipage/scripting.html#prepare-a-script">
 | |
| <script src="/resources/testharness.js"></script>
 | |
| <script src="/resources/testharnessreport.js"></script>
 | |
| 
 | |
| <script>
 | |
| var t = async_test("Modify inline script element's text " +
 | |
|                    "after prepare-a-script before evaluation");
 | |
| 
 | |
| function changeScriptText() {
 | |
|   document.querySelector('#script0').textContent =
 | |
|     't.unreached_func("This should not be evaluated")();';
 | |
| }
 | |
| 
 | |
| t.step_timeout(changeScriptText, 500);
 | |
| </script>
 | |
| 
 | |
| <!-- This is "a style sheet that is blocking scripts" and thus ... -->
 | |
| <link rel="stylesheet" href="/common/slow.py?pipe=trickle(d1)"></link>
 | |
| 
 | |
| <!-- This inline script becomes a parser-blocking script, and thus
 | |
| the step_timeout is evaluated after script0 is inserted into DOM,
 | |
| prepare-a-script'ed, but before its evaluation. -->
 | |
| <script id="script0">
 | |
| t.step(() => {
 | |
|     // When this is evaluated after the stylesheet is loaded,
 | |
|     // script0's textContent is modified by the async script above,
 | |
|     // but the evaluated script is still the original script here,
 | |
|     // not what is overwritten, because "child text content" is taken in
 | |
|     // #prepare-a-script and passed to "creating a classic script".
 | |
|     var s = document.getElementById('script0');
 | |
|     assert_equals(s.textContent,
 | |
|                   't.unreached_func("This should not be evaluated")();',
 | |
|                   "<script>'s textContent should be already modified");
 | |
|     t.done();
 | |
|   });
 | |
| </script>
 |