Fix item ordinals for default pinned apps Setting pin ordinals for default pinned apps creates an app item in the syncable app list service persistent/sync data. The items are created because app pin ordinals are preserved in app list sync items. Given that default pins may get created before default apps are actually installed, setting default pins may create sync items before an app AppServiceAppItem gets created (which initializes the app item ordinal in app list). The sync item for the pinned app is created with invalid (app list) item ordinal so it can be initialized when the app is installed. This doesn't work well if AppListSyncableService merges initial sync data between the time default pins are set and the time the app is installed (e.g. if session restarts before the pinned app installation completes). During initial merge, AppListSyncableService attempts to fix invalid item ordinals, which was needed to handle item data created before item ordinals were tracked in the app list sync data. This step would initialize the pinned item ordinal without handling all cases handled during app installation (e.g. setting default item ordinals). This CL marks default pinned apps without item ordinal set to be ignored while "fixing" item ordinals after initial sync data merge, as "invalid" string ordinal is intended behavior in that case (and not a result of sync data update from a device that does not support item ordinals). Alternative idea to delay pin ordinal initialization until the app is actually installed would require larger refactoring of how default pins are initialized - currently pin ordinals are calculated dynamically in one swoop by ensuring the default pins are ordered correctly and just positioned between chrome app and first app with pin already set. With multistep initialization, the algorithm would have to be adjusted not to assume that any shelf items with pin ordinal already set should can be ignored when adding set od default pins (i.e. we'd need a way of distinguishing default set pins from "explicitly" set pins). BUG=1306913 Change-Id: I4eceef700734a68c3628d51a9c62964206b52df6 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3580632 Reviewed-by: Xiyuan Xia <xiyuan@chromium.org> Commit-Queue: Toni Barzic <tbarzic@chromium.org> Cr-Commit-Position: refs/heads/main@{#992108}
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.