commit | 9ee8292331413ec4dc1d773780fdcd045a1bb703 | [log] [tgz] |
---|---|---|
author | Xinyi Ji <xinyiji@google.com> | Tue Jun 03 17:29:19 2025 |
committer | Chromium LUCI CQ <chromium-scoped@luci-project-accounts.iam.gserviceaccount.com> | Tue Jun 03 17:29:19 2025 |
tree | 904e54b20c9b610b9ad7c3c93a42db10e3cf6cef | |
parent | 7d26c17702efa610f74e99147e4ed324921c329f [diff] |
[NTP Customization] Add NTP Customization toolbar button (part 7) This CL adds the NTP Customization toolbar button next to the Home button by integrating it into ToolbarPhone. The timing of their appearance is shown below: 1. When the current page is the NTP: a. If the homepage is disabled or set to the NTP, only the NTP customization button will be shown. b. If the homepage is enabled and set to a different webpage, both the Home button and the NTP customization button will be displayed. 2. When the current page is not the NTP: a. The NTP customization button will not be shown. b. The Home button will be shown only if the homepage is enabled. As a result, there may be two buttons on the left side of the toolbar, which can appear or disappear depending on the context. Therefore, we deprecated the original Home button and replaced it with two list menu buttons to manage their individual behavior. These buttons are centrally managed by the HomePageButtonsCoordinator, which is created in the ToolbarManager and passed into ToolbarPhone. The coordinator updates the appearance of the two optional buttons based on changes such as the visual state of ToolbarPhone or homepage updates. The final behavior is shown below:https://drive.google.com/file/d/1fLqV27_lbo5gqWVqzTMI4_e9kmQXGaCI/view? usp=sharing&resourcekey=0-qctOPf4qXh0iNjlVVbP9UA To integrate the new home page buttons feature, which is controlled by a flag, I've introduced a HomeButtonDisplay interface. This interface helps encapsulate the logic for both the new buttons and the original home button. Both the new HomePageButtonsCoordinator and the original HomeButtonCoordinator implement this interface. The ToolbarManager is responsible for creating both coordinators. It checks the flag to determine which coordinator to use and then passes the selected one to ToolbarPhone as a HomeButtonDisplay object. This approach centralizes the feature flag logic, avoiding the need for checks throughout the codebase. Bug: 407554279 Change-Id: I4969b3d2ffa304d1b1db3d9c7b7bedf0a0783537 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6394955 Commit-Queue: Xinyi Ji <xinyiji@chromium.org> Reviewed-by: Patrick Noland <pnoland@chromium.org> Reviewed-by: Xi Han <hanxi@chromium.org> Cr-Commit-Position: refs/heads/main@{#1468821}
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.