50 lines
1.6 KiB
HTML
50 lines
1.6 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<script src="/resources/testharness.js"></script>
|
|
<script src="/resources/testharnessreport.js"></script>
|
|
|
|
<script src="resources/profile-utils.js"></script>
|
|
|
|
<script id="external-script" src="resources/external-script.js"></script>
|
|
</head>
|
|
<body>
|
|
<script>
|
|
promise_test(async t => {
|
|
const trace = await ProfileUtils.profileFunction(function trampoline(sample) {
|
|
externalScriptFunction(sample);
|
|
});
|
|
|
|
const scriptUrl = document.querySelector('#external-script').src;
|
|
assert_true(ProfileUtils.containsResource(trace, scriptUrl),
|
|
'external resource is included');
|
|
|
|
const expectedTrampolineFrame = {
|
|
name: 'trampoline',
|
|
resourceId: trace.resources.indexOf(
|
|
location.href,
|
|
),
|
|
};
|
|
const expectedExternalFrame = {
|
|
name: 'externalScriptFunction',
|
|
resourceId: trace.resources.indexOf(scriptUrl),
|
|
line: EXTERNAL_SCRIPT_FUNCTION_LINE,
|
|
column: EXTERNAL_SCRIPT_FUNCTION_COLUMN,
|
|
};
|
|
|
|
assert_true(ProfileUtils.containsFrame(trace, expectedTrampolineFrame),
|
|
'trampoline function included');
|
|
|
|
assert_true(ProfileUtils.containsFrame(trace, expectedExternalFrame),
|
|
'external script function included');
|
|
|
|
assert_true(ProfileUtils.containsSubstack(trace, [
|
|
externalScriptFunction,
|
|
expectedTrampolineFrame,
|
|
]),
|
|
'stack exists with external script function');
|
|
|
|
}, 'external script function details');
|
|
</script>
|
|
</body>
|
|
</html>
|