How an edge's source type reads a tab definition — the one place the handle
type (ScreenEdgeTaken), the target's origin (EdgeOrigin) and
the runtime's tabEntryIsPushed agree on what a tab entry is:
pushed — every source it can carry is an opening one (warm_start,
third_party_url, tabEntryIsPushed): the tab definition is pushed
over the screen in front;
tab-entry — no source it can carry is an opening one: the edge enters
the tab and lands on its root;
both — the source type is neither, because nothing pins it to a literal
(a computed or union source): the conservative union of both readings.
The handle type is the pushed handle or the tab root, and the origin is
kept (the pushed member's). Only the runtime's tabEntryIsPushed decides
for real, from the step the edge was taken with.
It is public because the public edge types it decides (ScreenEdgeTaken,
EdgeOrigin) name it in their declarations; it is the one rule they share.
How an edge's source type reads a tab definition — the one place the handle type (ScreenEdgeTaken), the target's origin (EdgeOrigin) and the runtime's
tabEntryIsPushedagree on what a tab entry is:pushed— every source it can carry is an opening one (warm_start,third_party_url, tabEntryIsPushed): the tab definition is pushed over the screen in front;tab-entry— no source it can carry is an opening one: the edge enters the tab and lands on its root;both— the source type is neither, because nothing pins it to a literal (a computed or union source): the conservative union of both readings. The handle type is the pushed handle or the tab root, and the origin is kept (the pushed member's). Only the runtime'stabEntryIsPusheddecides for real, from the step the edge was taken with.It is public because the public edge types it decides (
ScreenEdgeTaken,EdgeOrigin) name it in their declarations; it is the one rule they share.