From a944496aa916ca8038f2e2abd1f1c5a95cfbaea5 Mon Sep 17 00:00:00 2001 From: "Ming Lyu (CareF)" Date: Wed, 5 Aug 2020 14:43:23 -0400 Subject: [PATCH 1/4] add named constructor to FrameTiming --- lib/ui/window.dart | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/lib/ui/window.dart b/lib/ui/window.dart index 9b562ba8c882f..e40758e95108f 100644 --- a/lib/ui/window.dart +++ b/lib/ui/window.dart @@ -92,6 +92,18 @@ class FrameTiming { FrameTiming(List timestamps) : assert(timestamps.length == FramePhase.values.length), _timestamps = timestamps; + /// Construct [FrameTiming] with given timestamp in micrseconds. + /// + /// TODO(CareF): This is part of #20229. Remove back to default constructor + /// after #20229 lands and corresponding framwork PRs land. + FrameTiming.fromTimeStamps({ + int? vsyncStart, + required int buildStart, + required int buildFinish, + required int rasterStart, + required int rasterFinish + }) : _timestamps = [buildStart, buildFinish, rasterStart, rasterFinish]; + /// This is a raw timestamp in microseconds from some epoch. The epoch in all /// [FrameTiming] is the same, but it may not match [DateTime]'s epoch. int timestampInMicroseconds(FramePhase phase) => _timestamps[phase.index]; From 330676f2ff249a7d71ad6a5a642e2d0388c7aa06 Mon Sep 17 00:00:00 2001 From: "Ming Lyu (CareF)" Date: Wed, 5 Aug 2020 14:54:57 -0400 Subject: [PATCH 2/4] add to web_ui --- lib/web_ui/lib/src/ui/window.dart | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/lib/web_ui/lib/src/ui/window.dart b/lib/web_ui/lib/src/ui/window.dart index ac4d936e4041a..18bf7f27dd226 100644 --- a/lib/web_ui/lib/src/ui/window.dart +++ b/lib/web_ui/lib/src/ui/window.dart @@ -1033,6 +1033,18 @@ class FrameTiming { : assert(timestamps.length == FramePhase.values.length), _timestamps = timestamps; + /// Construct [FrameTiming] with given timestamp in micrseconds. + /// + /// TODO(CareF): This is part of #20229. Remove back to default constructor + /// after #20229 lands and corresponding framwork PRs land. + FrameTiming.fromTimeStamps({ + int? vsyncStart, + required int buildStart, + required int buildFinish, + required int rasterStart, + required int rasterFinish + }) : _timestamps = [buildStart, buildFinish, rasterStart, rasterFinish]; + /// This is a raw timestamp in microseconds from some epoch. The epoch in all /// [FrameTiming] is the same, but it may not match [DateTime]'s epoch. int timestampInMicroseconds(FramePhase phase) => _timestamps[phase.index]; From 62ecf7f8105d6625a7792a384c11f78d84185aa1 Mon Sep 17 00:00:00 2001 From: "Ming Lyu (CareF)" Date: Wed, 5 Aug 2020 15:48:42 -0400 Subject: [PATCH 3/4] modify according to liyuqian@ --- lib/ui/window.dart | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/lib/ui/window.dart b/lib/ui/window.dart index e40758e95108f..82bc1d9ccd2fe 100644 --- a/lib/ui/window.dart +++ b/lib/ui/window.dart @@ -94,15 +94,25 @@ class FrameTiming { /// Construct [FrameTiming] with given timestamp in micrseconds. /// + /// This constructor is used for unit test only. Real [FrameTiming]s should + /// be retrieved from [Window.onReportTimings]. + /// /// TODO(CareF): This is part of #20229. Remove back to default constructor /// after #20229 lands and corresponding framwork PRs land. - FrameTiming.fromTimeStamps({ + factory FrameTiming.fromTimeStamps({ int? vsyncStart, required int buildStart, required int buildFinish, required int rasterStart, required int rasterFinish - }) : _timestamps = [buildStart, buildFinish, rasterStart, rasterFinish]; + }) { + return FrameTiming([ + buildStart, + buildFinish, + rasterStart, + rasterFinish + ]); + } /// This is a raw timestamp in microseconds from some epoch. The epoch in all /// [FrameTiming] is the same, but it may not match [DateTime]'s epoch. From fb48bec97bc150f8b474644d3e76289a7d066690 Mon Sep 17 00:00:00 2001 From: "Ming Lyu (CareF)" Date: Wed, 5 Aug 2020 18:08:51 -0400 Subject: [PATCH 4/4] update web_ui comments --- lib/web_ui/lib/src/ui/window.dart | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/web_ui/lib/src/ui/window.dart b/lib/web_ui/lib/src/ui/window.dart index 18bf7f27dd226..135544bb299f1 100644 --- a/lib/web_ui/lib/src/ui/window.dart +++ b/lib/web_ui/lib/src/ui/window.dart @@ -1035,6 +1035,9 @@ class FrameTiming { /// Construct [FrameTiming] with given timestamp in micrseconds. /// + /// This constructor is used for unit test only. Real [FrameTiming]s should + /// be retrieved from [Window.onReportTimings]. + /// /// TODO(CareF): This is part of #20229. Remove back to default constructor /// after #20229 lands and corresponding framwork PRs land. FrameTiming.fromTimeStamps({