mirror of
https://github.com/dart-lang/sdk
synced 2024-11-02 12:24:24 +00:00
8fd83cb222
If parent is a param in the TimelineTask.withTaskId() constructor, we have the possibility of running into this situation: TimelineTaskA - id 0 TimelineTaskB - id 1 TimelineTaskC - id 2 - parentId 1 TimelineTaskD - id 0 - parentId 2 (this task created with TimelineTask.withTaskId(0, parent: C)) TimelineTaskE - id 3 - parentId 0 (now who is the parent of E? D or A?) If we do not allow the user to specify parent in the withTaskId() constructor, we remove the possibility of this clash. This clash happens because the user was able to inject an event with id 0 into an async tree defined by the parent parameter. By removing the parent parameter from the withTaskId() constructor, we can rely on different sources of truth for the different TimelineTask constructors. - If taskId is specified via TimelineTask.withTaskId(), then that is the source of truth for inferring the async event tree (events with the same async id are in the same async tree). - If parent is specified via TimelineTask(parent: parent), then that is the source of truth for inferring the async event tree. - If neither taskId nor parent are specified (e.g. TimelineTask()), we default to timestamp inference. Change-Id: I491a20cf1d1aaea744ab92e56602269390e73fb0 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/121680 Commit-Queue: Ben Konyi <bkonyi@google.com> Reviewed-by: Kenzie Schmoll <kenzieschmoll@google.com> |
||
---|---|---|
.. | ||
bin | ||
lib | ||
api_readme.md | ||
BUILD.gn |