commit | c02e3852530f690b7a6645708d5fa0eb992d2685 | [log] [tgz] |
---|---|---|
author | Mark Cogan <marq@google.com> | Tue Aug 03 17:07:00 2021 |
committer | Chromium LUCI CQ <chromium-scoped@luci-project-accounts.iam.gserviceaccount.com> | Tue Aug 03 17:07:00 2021 |
tree | 9a3296ccbcc973e1e85c021d45ad1308f71a5eba | |
parent | 75ec0dc8b955ebc2b2152395d362a8d330d54ce2 [diff] |
[iOS] Remove TabModel This CL factors out the remaining responsibilities of TabModel and removes it. It introduces a functional change in how sessions are saved when scenes background. For the purposes of this code, "saving sessions" involves both updating the session store and writing out snapshots of the active web states. TabModels -- which were per-browser objects -- listed for the UIApplication lifecycle notifications to determine when to save sessions. This means that when the application backgrounds, all of the connected scenes save the sessions for the active webstates in their browsers. It also means that sessions are *not* saved when individual scenes background. (This is not the only trigger for saving sessions in Chrome, just the one determined by app/scene lifecycles). This CL changes this backgrounding logic, moving it to a scene state agent. This agent observes the scene state transitions, and now it saves sessions per-scene, whenever that scene backgrounds. The other responsibility of TabModel was to close all of the web states in a web state list when the owning Browser is shut down. This CL moves that responsibility to BrowserViewWrangler, which is the current owner of Browser lifecycles. Potentially it could be migrated to the BrowserImpl class in the future for even better encapsulation. Because there are some circumstances where the app may shut down without being backgrounded (if it is force-quit in the app switcher when no other apps are present, for example), this CL adds a check to the shutdown code in SceneController that asks the scene to save the session if needed. (Sessions are marked as needing saving if the scene has foregrounded since the previous save). Bug: 1045575, 1115611, 1110966, 783777 Change-Id: Ic70f4d1b839ab95757196a805ccac21c36b7dc83 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3063619 Commit-Queue: Mark Cogan <marq@chromium.org> Reviewed-by: Rohit Rao <rohitrao@chromium.org> Reviewed-by: Mohammad Refaat <mrefaat@chromium.org> Cr-Commit-Position: refs/heads/master@{#908028}
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.