commit | afd3c658f932029bb4953b1e2498a500799c6d7f | [log] [tgz] |
---|---|---|
author | Rakina Zata Amni <rakina@chromium.org> | Tue Nov 30 06:19:17 2021 |
committer | Chromium LUCI CQ <chromium-scoped@luci-project-accounts.iam.gserviceaccount.com> | Tue Nov 30 06:19:17 2021 |
tree | 2c8066ce9ea9c1c22cdda436c5d7457d04fdfaef | |
parent | 17a2bdda153bb1b59548793137a4a1c98ae1e2af [diff] |
Create initial NavigationEntry on FrameTree initialization Introduces the initial NavigationEntry, created on FrameTree initialization, which is not associated with any navigation. It will be replaced or lose its initial-ness when the first navigation in the main frame committed. With the initial NavigationEntry, we can always guarantee that a NavigationEntry always exists, even when no navigation has committed. This has many benefits, as outlined in the doc: https://docs.google.com/document/d/1H81oAG13f21fUf-IGHH8AnjNVJFtaThowl5Ki9hWw5E/edit#heading=h.sbcge7snrbj3 This CL introduces a few changes of behavior: - After initialization, a FrameTree/NavigationController will always have a NavigationEntry. This will be reflected in content/public functions such as GetLastCommittedEntry(), GetVisibleEntry(), GetActiveEntry(), GetEntryCount(), GetLastCommittedEntryIndex(), GetCurrentEntryIndex() - Navigations that are previously ignored because there is no committed entry to attach to or clone are now no longer ignored, except for the synchronous about:blank commit for window.open(). What this CL does not change: - This CL does not change the behavior of any navigation that wasn't previously ignored, including initial empty document replacements. - Web-platform-exposed behaviors, including history.length which will still start at 0 instead of 1 on a tab that hasn't navigated at all. - Behavior of WebView APIs. WebBackForwardList, which exposes the whole session history list, remove initial NavigationEntry. getOriginalURL() will continue to return null when there's no committed navigation. - Similarly, behavior of WebLayer APIs will not change. The values returned by APIs such as GetNavigationListCurrentIndex() and GetNavigationListSize() will continue to be what they were before (-1 and 0 respectively) even when the initial NavigationEntry exists, preserving their previous behaviors. This CL corresponds to Step 1 of the implementation plan in this doc: https://docs.google.com/document/d/1H81oAG13f21fUf-IGHH8AnjNVJFtaThowl5Ki9hWw5E/edit#heading=h.8n643ug2wk11 This CL also applies all the changes detailed in the audit doc, except for most of the "remove nullcheck" changes: https://docs.google.com/spreadsheets/d/1MJyLNd6T5b7QWCO-qsSdnzmyLhubCddns1Uu9X8mEIk/edit#gid=0 Bug: 524208, 1215096 Change-Id: I9dbc17feeb451ae32954a8544cc32bb39ec37150 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3237491 Reviewed-by: Charlie Reis <creis@chromium.org> Reviewed-by: Michael Thiessen <mthiesse@chromium.org> Reviewed-by: David Roger <droger@chromium.org> Reviewed-by: Nate Chapin <japhet@chromium.org> Reviewed-by: Clark DuVall <cduvall@chromium.org> Reviewed-by: Devlin Cronin <rdevlin.cronin@chromium.org> Reviewed-by: Richard Coles <torne@chromium.org> Reviewed-by: Kevin Marshall <kmarshall@chromium.org> Reviewed-by: Daniel Rubery <drubery@chromium.org> Owners-Override: Charlie Reis <creis@chromium.org> Commit-Queue: Rakina Zata Amni <rakina@chromium.org> Cr-Commit-Position: refs/heads/main@{#946343}
Chromium is an open-source browser project that aims to build a safer, faster, and more stable way for all users to experience the web.
The project's web site is https://www.chromium.org.
To check out the source code locally, don't use git clone
! Instead, follow the instructions on how to get the code.
Documentation in the source is rooted in docs/README.md.
Learn how to Get Around the Chromium Source Code Directory Structure .
For historical reasons, there are some small top level directories. Now the guidance is that new top level directories are for product (e.g. Chrome, Android WebView, Ash). Even if these products have multiple executables, the code should be in subdirectories of the product.
If you found a bug, please file it at https://crbug.com/new.