mirror of
				https://github.com/LadybirdBrowser/ladybird.git
				synced 2025-10-27 02:20:17 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			42 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| <!DOCTYPE html>
 | |
| <script src="../include.js"></script>
 | |
| <script>
 | |
|     function shadowRealmEvalAsync(realm, asyncBody) {
 | |
|         return new Promise(realm.evaluate(`
 | |
|             (resolve, reject) => {
 | |
|                 (async () => {
 | |
|                     ${asyncBody}
 | |
|                 })().then(resolve, (e) => reject(e.toString()));
 | |
|             }
 | |
|         `));
 | |
|     };
 | |
| 
 | |
|     asyncTest(async done => {
 | |
|         const outerShadowRealm = new ShadowRealm();
 | |
| 
 | |
|         outerShadowRealm.evaluate(`
 | |
|             var innerShadowRealm = new ShadowRealm();
 | |
|         `);
 | |
| 
 | |
|         const outerResult = await shadowRealmEvalAsync(outerShadowRealm, `
 | |
|             function shadowRealmEvalAsync(realm, asyncBody) {
 | |
|                 return new Promise(realm.evaluate(\`
 | |
|                     (resolve, reject) => {
 | |
|                         (async () => {
 | |
|                             \${asyncBody}
 | |
|                         })().then(resolve, (e) => reject(e.toString()));
 | |
|                     }
 | |
|                 \`));
 | |
|             };
 | |
| 
 | |
|             const innerResult = await shadowRealmEvalAsync(innerShadowRealm, \`
 | |
|                 return new Event("Some event...").type;
 | |
|             \`);
 | |
| 
 | |
|             return innerResult;
 | |
|         `);
 | |
| 
 | |
|         println(outerResult);
 | |
|         done();
 | |
|     });
 | |
| </script>
 |