We're working on a proposal to avoid unnecessary Guest profile creations on startup, and our solution involves some non-trivial changes to startup. Below is a summary and a link to the design doc.
Looking forward to your comments and thoughts.
On startup, Chrome currently needs to create a Profile object since a few services require a profile for initialization in ChromeBrowserMain. However, Chrome doesn’t know which profile it’s going to use when Chrome displays the Profile Picker (former User Manager) on startup.
To work around the absence of a profile on startup, Chrome used to use a Guest profile to complete initialization in ChromeBrowserMain. It is a hack but it worked fine given that the User Manager was rarely shown on startup. However, since the Profile Picker launch, Chrome shows the profile picker to multi-profile users on startup by default, so it’s no longer a rare use case. This usage of a Guest profile on startup is responsible for errors in a wide set of metrics and is also associated with startup time and memory costs.
This document proposes to stop unnecessarily creating the Guest Profile when Chrome shows the Profile Picker on startup. To achieve that, we need to refactor the startup code so that Chrome can start without any profile.