On Android, tab restore currently supports a concept of sync IDs, which is the mechanism sync uses to reassociate tabs (more precisely, placeholder tabs, i.e. ones without web contents) to the content in the sync model (e.g. directory).
The interface to expose local tabs to sync code, SyncedTabDelegate, in addition to supporting sync IDs, also supports tab session IDs, which historically have been ephemeral tab IDs used by session restore that must be invalidated across browser restarts (because they used to be recycled).
Recently, with crbug.com/823798, session IDs increase monotonically (i.e. are not reused across restarts) on all platforms. This means SyncedTabDelegate can now trivially guarantee that there will be no collisions across tabs (even across browser restarts) for tab IDs (exposed by SyncedTabDelegate::GetSessionId()).
In addition, tab restore on Android internally uses yet another tab IDs (Android IDs) that adhere to this monotonicity requirement, *AND* in addition get restored (i.e. a tab restored tab has the same ID as it did prior to the browser being closed).
This means, SyncedTabDelegate::GetSessionId() could trivially migrate to using Android tab IDs instead of actual session IDs. At this point, sync IDs would be unnecessary, because tab IDs themselves get restored and can be used to associate restored placeholder tabs with sync entities.
Comment 1 by bugdroid1@chromium.org
, Jun 14 2018