Commit 08112f27 authored by Andrew Comminos's avatar Andrew Comminos Committed by Commit Bot

Port JS Self-Profiling HTTP web tests to wpt_internal tests

In the process of converting these tests to standard WPTs, fix them up to work
inside of wpt_internal.

Bug: 956688
Change-Id: I4685ca247091b1a64bd8da735fa42a34420e447a
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2444793
Commit-Queue: Andrew Comminos <acomminos@fb.com>
Reviewed-by: default avatarNicolás Peña Moreno <npm@chromium.org>
Cr-Commit-Position: refs/heads/master@{#814061}
parent bbf5fd2c
...@@ -20,7 +20,7 @@ crbug.com/933880 http/tests/misc/redirect-to-about-blank.html [ Timeout ] ...@@ -20,7 +20,7 @@ crbug.com/933880 http/tests/misc/redirect-to-about-blank.html [ Timeout ]
http/tests/inspector-protocol/fetch/fetch-oopif.js [ Skip ] http/tests/inspector-protocol/fetch/fetch-oopif.js [ Skip ]
# JS Self-Profiling currently requires site isolation. # JS Self-Profiling currently requires site isolation.
crbug.com/956688 http/tests/js-self-profiling/* [ Skip ] crbug.com/956688 wpt_internal/js-self-profiling/* [ Skip ]
crbug.com/1106413 external/wpt/webmessaging/multi-globals/broadcastchannel-current.sub.html [ Failure ] crbug.com/1106413 external/wpt/webmessaging/multi-globals/broadcastchannel-current.sub.html [ Failure ]
crbug.com/1106413 external/wpt/webmessaging/multi-globals/broadcastchannel-incumbent.sub.html [ Failure ] crbug.com/1106413 external/wpt/webmessaging/multi-globals/broadcastchannel-incumbent.sub.html [ Failure ]
<FilesMatch "\.js$">
# Allow scripts to be fetched via CORS.
Header set Access-Control-Allow-Origin "*"
</FilesMatch>
...@@ -6,32 +6,28 @@ ...@@ -6,32 +6,28 @@
<script src="resources/profile-utils.js"></script> <script src="resources/profile-utils.js"></script>
<script src="resources/external-script.js"></script> <script id="external-script" src="resources/external-script.js"></script>
</head> </head>
<body> <body>
<script> <script>
const BASE_URL = `${window.location.origin}/js-self-profiling`;
promise_test(async t => { promise_test(async t => {
const trace = await ProfileUtils.profileFunction(function trampoline(sample) { const trace = await ProfileUtils.profileFunction(function trampoline(sample) {
externalScriptFunction(sample); externalScriptFunction(sample);
}); });
assert_true(ProfileUtils.containsResource(trace, const scriptUrl = document.querySelector('#external-script').src;
`${BASE_URL}/resources/external-script.js`, assert_true(ProfileUtils.containsResource(trace, scriptUrl),
), 'external resource is included'); 'external resource is included');
const expectedTrampolineFrame = { const expectedTrampolineFrame = {
name: 'trampoline', name: 'trampoline',
resourceId: trace.resources.indexOf( resourceId: trace.resources.indexOf(
`${BASE_URL}/external-script.html` location.href,
), ),
}; };
const expectedExternalFrame = { const expectedExternalFrame = {
name: 'externalScriptFunction', name: 'externalScriptFunction',
resourceId: trace.resources.indexOf( resourceId: trace.resources.indexOf(scriptUrl),
`${BASE_URL}/resources/external-script.js`,
),
line: EXTERNAL_SCRIPT_FUNCTION_LINE, line: EXTERNAL_SCRIPT_FUNCTION_LINE,
column: EXTERNAL_SCRIPT_FUNCTION_COLUMN, column: EXTERNAL_SCRIPT_FUNCTION_COLUMN,
}; };
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
<script src="resources/profile-utils.js"></script> <script src="resources/profile-utils.js"></script>
<script crossorigin src="http://127.0.0.1:8080/js-self-profiling/resources/external-script.js"></script> <script id="foreign-script" crossorigin src="http://{{hosts[][www1]}}:{{ports[http][0]}}/wpt_internal/js-self-profiling/resources/external-script.js"></script>
</head> </head>
<body> <body>
<script> <script>
...@@ -14,9 +14,10 @@ ...@@ -14,9 +14,10 @@
assert_not_equals(window.externalScriptFunction, undefined); assert_not_equals(window.externalScriptFunction, undefined);
const trace = await ProfileUtils.profileFunction(externalScriptFunction); const trace = await ProfileUtils.profileFunction(externalScriptFunction);
const foreignScriptUrl = document.querySelector('#foreign-script').src;
assert_true(ProfileUtils.containsFrame(trace, { assert_true(ProfileUtils.containsFrame(trace, {
name: 'externalScriptFunction', name: 'externalScriptFunction',
resourceId: trace.resources.indexOf('http://127.0.0.1:8080/js-self-profiling/resources/external-script.js'), resourceId: trace.resources.indexOf(foreignScriptUrl),
}), 'foreign frame is present'); }), 'foreign frame is present');
}, 'function from foreign-origin script with CORS is included in trace'); }, 'function from foreign-origin script with CORS is included in trace');
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
<script src="resources/profile-utils.js"></script> <script src="resources/profile-utils.js"></script>
<script src="http://127.0.0.1:8080/js-self-profiling/resources/external-script.js"></script> <script id="foreign-script" src="http://{{hosts[][www1]}}:{{ports[http][0]}}/wpt_internal/js-self-profiling/resources/external-script.js"></script>
</head> </head>
<body> <body>
<script> <script>
...@@ -18,13 +18,13 @@ ...@@ -18,13 +18,13 @@
name: 'externalScriptFunction', name: 'externalScriptFunction',
}), 'foreign function without CORS is omitted'); }), 'foreign function without CORS is omitted');
const foreignScriptUrl = document.querySelector('#foreign-script').src;
assert_false(ProfileUtils.containsFrame(trace, { assert_false(ProfileUtils.containsFrame(trace, {
resourceId: trace.resources.indexOf('http://127.0.0.1:8080/js-self-profiling/resources/external-script.js'), resourceId: trace.resources.indexOf(foreignScriptUrl),
}), 'no frame exists with non-CORS resource'); }), 'no frame exists with non-CORS resource');
assert_false(ProfileUtils.containsResource(trace, assert_false(ProfileUtils.containsResource(trace, foreignScriptUrl),
'http://127.0.0.1:8000/js-self-profiling/resources/external-script.js', 'foreign resource is omitted');
), 'foreign resource is omitted');
}, 'function from foreign-origin script without CORS is not included in trace'); }, 'function from foreign-origin script without CORS is not included in trace');
</script> </script>
......
...@@ -39,9 +39,9 @@ ...@@ -39,9 +39,9 @@
assert_true(ProfileUtils.containsFrame(trace, { name: 'parentCollectSample' }), assert_true(ProfileUtils.containsFrame(trace, { name: 'parentCollectSample' }),
'sampling wrapper function from own (parent) context included in trace'); 'sampling wrapper function from own (parent) context included in trace');
assert_true(ProfileUtils.containsResource(trace, const childUrl = iframe.location.href;
'http://127.0.0.1:8000/js-self-profiling/resources/child-frame.html', assert_true(ProfileUtils.containsResource(trace, childUrl),
), 'child resources are included'); 'child resources are included');
}, 'functions from child frame are included in profile created by parent frame'); }, 'functions from child frame are included in profile created by parent frame');
promise_test(async t => { promise_test(async t => {
......
...@@ -23,20 +23,19 @@ ...@@ -23,20 +23,19 @@
promise_test(async t => { promise_test(async t => {
const trace = await ProfileUtils.profileFunction(inlineScriptFunction); const trace = await ProfileUtils.profileFunction(inlineScriptFunction);
assert_true(ProfileUtils.containsResource(trace, assert_true(ProfileUtils.containsResource(trace, location.href),
'http://127.0.0.1:8000/js-self-profiling/inline-script.html', 'inline script resource is included');
), 'inline script resource is included');
assert_true(ProfileUtils.containsSubstack(trace, [ assert_true(ProfileUtils.containsSubstack(trace, [
{ {
name: 'nestedInlineScriptFunction', name: 'nestedInlineScriptFunction',
resourceId: trace.resources.indexOf('http://127.0.0.1:8000/js-self-profiling/inline-script.html'), resourceId: trace.resources.indexOf(location.href),
line: 13, line: 13,
column: 40, column: 40,
}, },
{ {
name: 'inlineScriptFunction', name: 'inlineScriptFunction',
resourceId: trace.resources.indexOf('http://127.0.0.1:8000/js-self-profiling/inline-script.html'), resourceId: trace.resources.indexOf(location.href),
line: 17, line: 17,
column: 34, column: 34,
}, },
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment