-
Notifications
You must be signed in to change notification settings - Fork 2k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Bug 1793725 [wpt PR 36277] - Reland "[bfcache] Add notRestoredReasons…
… field in PerformanceNavigationTiming", a=testonly Automatic update from web-platform-tests Reland "[bfcache] Add notRestoredReasons field in PerformanceNavigationTiming" This is a reland of commit e1af9facf232a11871b0c668b90ec17c5a5d5e16 To address the test failure, in this reland I added IsOutermostMainFrame() condition in web_view_impl.cc. Original change's description: > [bfcache] Add notRestoredReasons field in PerformanceNavigationTiming > > This CL adds back/forward cache not restored reasons in Performance > NavigationTiming API. > It's proposed here: > w3c/navigation-timing#171 > Explainer: https://github.com/rubberyuzu/bfcache-not-retored-reason/blob/main/NotRestoredReason.md > > This CL does two things: > - exposes not restored reasons to PerformanceNavigationTiming API > - adds WPT > > The WPT have to run on all platforms because this API is intended to > collect bfcache metrics from the wild, regardless of the platforms. > > LOW_COVERAGE_REASON=Adding coverage for new field. Just missing the tests for the existing fields > > Bug: 1349228 > Change-Id: I8dd96a60188bdff94a21c4e4e34cacf181a823db > Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3835534 > Reviewed-by: Daniel Cheng <[email protected]> > Reviewed-by: Kentaro Hara <[email protected]> > Reviewed-by: Weizhong Xia <[email protected]> > Commit-Queue: Yuzu Saijo <[email protected]> > Cr-Commit-Position: refs/heads/main@{#1054800} Bug: 1349228 Change-Id: I010009593e15dcb9da20cc9ee4982294e935f57a Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3934434 Reviewed-by: Kentaro Hara <[email protected]> Reviewed-by: Kent Tamura <[email protected]> Commit-Queue: Yuzu Saijo <[email protected]> Reviewed-by: Daniel Cheng <[email protected]> Cr-Commit-Position: refs/heads/main@{#1055140} -- wpt-commits: 8a56cdcecb36c38aed6a45654bd6f01b8f1095bf wpt-pr: 36277
- Loading branch information
1 parent
2221867
commit dd76298
Showing
5 changed files
with
255 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
31 changes: 31 additions & 0 deletions
31
...performance-timeline/not-restored-reasons/performance-navigation-timing-bfcache.window.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
// META: title=RemoteContextHelper navigation using BFCache | ||
// META: script=/common/dispatcher/dispatcher.js | ||
// META: script=/common/get-host-info.sub.js | ||
// META: script=/common/utils.js | ||
// META: script=/resources/testharness.js | ||
// META: script=/resources/testharnessreport.js | ||
// META: script=/html/browsers/browsing-the-web/remote-context-helper/resources/remote-context-helper.js | ||
// META: script=/html/browsers/browsing-the-web/remote-context-helper-tests/resources/test-helper.js | ||
|
||
'use strict'; | ||
|
||
// Ensure that notRestoredReasons is empty for successful BFCache restore. | ||
promise_test(async t => { | ||
const rcHelper = new RemoteContextHelper(); | ||
|
||
// Open a window with noopener so that BFCache will work. | ||
const rc1 = await rcHelper.addWindow( | ||
/*config=*/ null, /*options=*/ {features: 'noopener'}); | ||
|
||
// Navigate away. | ||
const rc2 = await rc1.navigateToNew(); | ||
|
||
// Navigate back. | ||
await rc2.historyBack(); | ||
|
||
// Verify that no reasons are recorded for successful restore. | ||
assert_true(await rc1.executeScript(() => { | ||
let reasons = performance.getEntriesByType('navigation')[0].notRestoredReasons; | ||
return reasons == null; | ||
})); | ||
}); |
70 changes: 70 additions & 0 deletions
70
...imeline/not-restored-reasons/performance-navigation-timing-cross-origin-bfcache.window.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,70 @@ | ||
// META: title=RemoteContextHelper navigation using BFCache | ||
// META: script=/common/dispatcher/dispatcher.js | ||
// META: script=/common/get-host-info.sub.js | ||
// META: script=/common/utils.js | ||
// META: script=/resources/testharness.js | ||
// META: script=/resources/testharnessreport.js | ||
// META: script=/html/browsers/browsing-the-web/remote-context-helper/resources/remote-context-helper.js | ||
// META: script=/html/browsers/browsing-the-web/remote-context-helper-tests/resources/test-helper.js | ||
// META: script=/websockets/constants.sub.js | ||
|
||
'use strict'; | ||
|
||
// Ensure that cross-origin subtree's reasons are not exposed to notRestoredReasons. | ||
promise_test(async t => { | ||
const rcHelper = new RemoteContextHelper(); | ||
// Open a window with noopener so that BFCache will work. | ||
const rc1 = await rcHelper.addWindow( | ||
/*config=*/ null, /*options=*/ {features: 'noopener'}); | ||
const rc1_url = await rc1.executeScript(() => { | ||
return location.href; | ||
}); | ||
// Add a cross-origin iframe and use BroadcastChannel. | ||
const rc1_child = await rc1.addIframe( | ||
/*extraConfig=*/ { | ||
origin: 'HTTP_REMOTE_ORIGIN', | ||
scripts: [], | ||
headers: [], | ||
}, | ||
/*attributes=*/ {id: 'test-id'}, | ||
); | ||
|
||
const domainPort = SCHEME_DOMAIN_PORT; | ||
await rc1_child.executeScript((domain) => { | ||
var ws = new WebSocket(domain + '/echo'); | ||
}, [domainPort]); | ||
|
||
const rc1_child_url = await rc1_child.executeScript(() => { | ||
return location.href; | ||
}); | ||
// Add a child to the iframe. | ||
const rc1_grand_child = await rc1_child.addIframe(); | ||
const rc1_grand_child_url = await rc1_grand_child.executeScript(() => { | ||
return location.href; | ||
}); | ||
|
||
// Navigate away. | ||
const rc2 = await rc1.navigateToNew(); | ||
|
||
// Navigate back. | ||
await rc2.historyBack(); | ||
|
||
// Check the reported reasons. | ||
await assertNotRestoredReasonsEquals( | ||
rc1, | ||
/*blocked=*/false, | ||
/*url=*/rc1_url, | ||
/*src=*/ "", | ||
/*id=*/"", | ||
/*name=*/"", | ||
/*reasons=*/[], | ||
/*children=*/[{ | ||
"blocked": true, | ||
"url": "", | ||
"src": "", | ||
"id": "", | ||
"name": "", | ||
"reasons": [], | ||
"children": [] | ||
}]); | ||
}); |
44 changes: 44 additions & 0 deletions
44
...rmance-timeline/not-restored-reasons/performance-navigation-timing-not-bfcached.window.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
// META: title=RemoteContextHelper navigation using BFCache | ||
// META: script=/common/dispatcher/dispatcher.js | ||
// META: script=/common/get-host-info.sub.js | ||
// META: script=/common/utils.js | ||
// META: script=/resources/testharness.js | ||
// META: script=/resources/testharnessreport.js | ||
// META: script=/html/browsers/browsing-the-web/remote-context-helper/resources/remote-context-helper.js | ||
// META: script=/html/browsers/browsing-the-web/remote-context-helper-tests/resources/test-helper.js | ||
// META: script=/websockets/constants.sub.js | ||
|
||
'use strict'; | ||
|
||
// Ensure that notRestoredReasons is populated when not restored. | ||
promise_test(async t => { | ||
const rcHelper = new RemoteContextHelper(); | ||
// Open a window with noopener so that BFCache will work. | ||
const rc1 = await rcHelper.addWindow( | ||
/*config=*/ null, /*options=*/ {features: 'noopener'}); | ||
|
||
const domainPort = SCHEME_DOMAIN_PORT; | ||
await rc1.executeScript((domain) => { | ||
var ws = new WebSocket(domain + '/echo'); | ||
}, [domainPort]); | ||
|
||
const rc1_url = await rc1.executeScript(() => { | ||
return location.href; | ||
}); | ||
|
||
// Navigate away. | ||
const rc2 = await rc1.navigateToNew(); | ||
|
||
// Navigate back. | ||
await rc2.historyBack(); | ||
// Check the reported reasons. | ||
await assertNotRestoredReasonsEquals( | ||
rc1, | ||
/*blocked=*/true, | ||
/*url=*/rc1_url, | ||
/*src=*/ "", | ||
/*id=*/"", | ||
/*name=*/"", | ||
/*reasons=*/["WebSocket"], | ||
/*children=*/[]); | ||
}); |
73 changes: 73 additions & 0 deletions
73
...timeline/not-restored-reasons/performance-navigation-timing-same-origin-bfcache.window.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,73 @@ | ||
// META: title=RemoteContextHelper navigation using BFCache | ||
// META: script=/common/dispatcher/dispatcher.js | ||
// META: script=/common/get-host-info.sub.js | ||
// META: script=/common/utils.js | ||
// META: script=/resources/testharness.js | ||
// META: script=/resources/testharnessreport.js | ||
// META: script=/html/browsers/browsing-the-web/remote-context-helper/resources/remote-context-helper.js | ||
// META: script=/html/browsers/browsing-the-web/remote-context-helper-tests/resources/test-helper.js | ||
// META: script=/websockets/constants.sub.js | ||
|
||
'use strict'; | ||
|
||
// Ensure that same-origin subtree's reasons are exposed to notRestoredReasons. | ||
promise_test(async t => { | ||
const rcHelper = new RemoteContextHelper(); | ||
// Open a window with noopener so that BFCache will work. | ||
const rc1 = await rcHelper.addWindow( | ||
/*config=*/ null, /*options=*/ {features: 'noopener'}); | ||
const rc1_url = await rc1.executeScript(() => { | ||
return location.href; | ||
}); | ||
// Add a same-origin iframe and use WebSocket. | ||
const rc1_child = await rc1.addIframe(/*extra_config=*/{}, /*attributes=*/ {id: 'test-id'}); | ||
|
||
const domainPort = SCHEME_DOMAIN_PORT; | ||
await rc1_child.executeScript((domain) => { | ||
var ws = new WebSocket(domain + '/echo'); | ||
}, [domainPort]); | ||
|
||
const rc1_child_url = await rc1_child.executeScript(() => { | ||
return location.href; | ||
}); | ||
// Add a child to the iframe. | ||
const rc1_grand_child = await rc1_child.addIframe(); | ||
const rc1_grand_child_url = await rc1_grand_child.executeScript(() => { | ||
return location.href; | ||
}); | ||
|
||
// Navigate away. | ||
const rc2 = await rc1.navigateToNew(); | ||
|
||
// Navigate back. | ||
await rc2.historyBack(); | ||
|
||
// Check the reported reasons. | ||
await assertNotRestoredReasonsEquals( | ||
rc1, | ||
/*blocked=*/false, | ||
/*url=*/rc1_url, | ||
/*src=*/ "", | ||
/*id=*/"", | ||
/*name=*/"", | ||
/*reasons=*/[], | ||
/*children=*/[{ | ||
"blocked": true, | ||
"url": rc1_child_url, | ||
"src": rc1_child_url, | ||
"id": "test-id", | ||
"name": "", | ||
"reasons": ["WebSocket"], | ||
"children": [ | ||
{ | ||
"blocked": false, | ||
"url": rc1_grand_child_url, | ||
"src": rc1_grand_child_url, | ||
"id": "", | ||
"name": "", | ||
"reasons": [], | ||
"children": [] | ||
} | ||
] | ||
}]); | ||
}); |