external-script.https.html (1620B)
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <script src="/resources/testharness.js"></script> 5 <script src="/resources/testharnessreport.js"></script> 6 7 <script src="resources/profile-utils.js"></script> 8 9 <script id="external-script" src="resources/external-script.js"></script> 10 </head> 11 <body> 12 <script> 13 promise_test(async t => { 14 const trace = await ProfileUtils.profileFunction(function trampoline(sample) { 15 externalScriptFunction(sample); 16 }); 17 18 const scriptUrl = document.querySelector('#external-script').src; 19 assert_true(ProfileUtils.containsResource(trace, scriptUrl), 20 'external resource is included'); 21 22 const expectedTrampolineFrame = { 23 name: 'trampoline', 24 resourceId: trace.resources.indexOf( 25 location.href, 26 ), 27 }; 28 const expectedExternalFrame = { 29 name: 'externalScriptFunction', 30 resourceId: trace.resources.indexOf(scriptUrl), 31 line: EXTERNAL_SCRIPT_FUNCTION_LINE, 32 column: EXTERNAL_SCRIPT_FUNCTION_COLUMN, 33 }; 34 35 assert_true(ProfileUtils.containsFrame(trace, expectedTrampolineFrame), 36 'trampoline function included'); 37 38 assert_true(ProfileUtils.containsFrame(trace, expectedExternalFrame), 39 'external script function included'); 40 41 assert_true(ProfileUtils.containsSubstack(trace, [ 42 externalScriptFunction, 43 expectedTrampolineFrame, 44 ]), 45 'stack exists with external script function'); 46 47 }, 'external script function details'); 48 </script> 49 </body> 50 </html>