[e2e] Revert performance tracker utilities (#2917)

(To be moved to flutter_test)
diff --git a/packages/e2e/CHANGELOG.md b/packages/e2e/CHANGELOG.md
index e48b95d..2ccf957 100644
--- a/packages/e2e/CHANGELOG.md
+++ b/packages/e2e/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 0.7.0
+
+* Move utilities for tracking frame performance in an e2e test to `flutter_test`.
+
 ## 0.6.3
 
 * Add customizable `flutter_driver` adaptor.
diff --git a/packages/e2e/lib/e2e_perf.dart b/packages/e2e/lib/e2e_perf.dart
deleted file mode 100644
index 1b2ddd7..0000000
--- a/packages/e2e/lib/e2e_perf.dart
+++ /dev/null
@@ -1,199 +0,0 @@
-// Copyright 2014 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import 'dart:async';
-import 'dart:ui';
-
-import 'package:flutter/scheduler.dart';
-import 'package:flutter_test/flutter_test.dart';
-import 'package:flutter/widgets.dart';
-
-import 'package:e2e/e2e.dart';
-
-/// The maximum amount of time considered safe to spend for a frame's build
-/// phase. Anything past that is in the danger of missing the frame as 60FPS.
-///
-/// Changing this doesn't re-evaluate existing summary.
-Duration kBuildBudget = const Duration(milliseconds: 16);
-// TODO(CareF): Automatically calculate the refresh budget (#61958)
-
-bool _firstRun = true;
-
-/// The warning message to show when a benchmark is performed with assert on.
-/// TODO(CareF) remove this and update pubspect when flutter/flutter#61509 is
-/// in released version.
-const String kDebugWarning = '''
-┏╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍┓
-┇ ⚠    THIS BENCHMARK IS BEING RUN IN DEBUG MODE     ⚠  ┇
-┡╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍┦
-│                                                       │
-│  Numbers obtained from a benchmark while asserts are  │
-│  enabled will not accurately reflect the performance  │
-│  that will be experienced by end users using release  ╎
-│  builds. Benchmarks should be run using this command  ╎
-│  line:  "flutter run --profile test.dart" or          ┊
-│  or "flutter drive --profile -t test.dart".           ┊
-│                                                       ┊
-└─────────────────────────────────────────────────╌┄┈  🐢
-''';
-
-/// watches the [FrameTiming] of `action` and report it to the e2e binding.
-Future<void> watchPerformance(
-  E2EWidgetsFlutterBinding binding,
-  Future<void> action(), {
-  String reportKey = 'performance',
-}) async {
-  assert(() {
-    if (_firstRun) {
-      debugPrint(kDebugWarning);
-      _firstRun = false;
-    }
-    return true;
-  }());
-  final List<FrameTiming> frameTimings = <FrameTiming>[];
-  final TimingsCallback watcher = frameTimings.addAll;
-  binding.addTimingsCallback(watcher);
-  await action();
-  binding.removeTimingsCallback(watcher);
-  final FrameTimingSummarizer frameTimes = FrameTimingSummarizer(frameTimings);
-  binding.reportData = <String, dynamic>{reportKey: frameTimes.summary};
-}
-
-/// This class and summarizes a list of [FrameTiming] for the performance
-/// metrics.
-class FrameTimingSummarizer {
-  /// Summarize `data` to frame build time and frame rasterizer time statistics.
-  ///
-  /// See [TimelineSummary.summaryJson] for detail.
-  factory FrameTimingSummarizer(List<FrameTiming> data) {
-    assert(data != null);
-    assert(data.isNotEmpty);
-    final List<Duration> frameBuildTime = List<Duration>.unmodifiable(
-      data.map<Duration>((FrameTiming datum) => datum.buildDuration),
-    );
-    final List<Duration> frameBuildTimeSorted =
-        List<Duration>.from(frameBuildTime)..sort();
-    final List<Duration> frameRasterizerTime = List<Duration>.unmodifiable(
-      data.map<Duration>((FrameTiming datum) => datum.rasterDuration),
-    );
-    final List<Duration> frameRasterizerTimeSorted =
-        List<Duration>.from(frameRasterizerTime)..sort();
-    final Duration Function(Duration, Duration) add =
-        (Duration a, Duration b) => a + b;
-    return FrameTimingSummarizer._(
-      frameBuildTime: frameBuildTime,
-      frameRasterizerTime: frameRasterizerTime,
-      // This avarage calculation is microsecond precision, which is fine
-      // because typical values of these times are milliseconds.
-      averageFrameBuildTime: frameBuildTime.reduce(add) ~/ data.length,
-      p90FrameBuildTime: _findPercentile(frameBuildTimeSorted, 0.90),
-      p99FrameBuildTime: _findPercentile(frameBuildTimeSorted, 0.99),
-      worstFrameBuildTime: frameBuildTimeSorted.last,
-      missedFrameBuildBudget: _countExceed(frameBuildTimeSorted, kBuildBudget),
-      averageFrameRasterizerTime:
-          frameRasterizerTime.reduce(add) ~/ data.length,
-      p90FrameRasterizerTime: _findPercentile(frameRasterizerTimeSorted, 0.90),
-      p99FrameRasterizerTime: _findPercentile(frameRasterizerTimeSorted, 0.99),
-      worstFrameRasterizerTime: frameRasterizerTimeSorted.last,
-      missedFrameRasterizerBudget:
-          _countExceed(frameRasterizerTimeSorted, kBuildBudget),
-    );
-  }
-
-  const FrameTimingSummarizer._({
-    @required this.frameBuildTime,
-    @required this.frameRasterizerTime,
-    @required this.averageFrameBuildTime,
-    @required this.p90FrameBuildTime,
-    @required this.p99FrameBuildTime,
-    @required this.worstFrameBuildTime,
-    @required this.missedFrameBuildBudget,
-    @required this.averageFrameRasterizerTime,
-    @required this.p90FrameRasterizerTime,
-    @required this.p99FrameRasterizerTime,
-    @required this.worstFrameRasterizerTime,
-    @required this.missedFrameRasterizerBudget,
-  });
-
-  /// List of frame build time in microseconds
-  final List<Duration> frameBuildTime;
-
-  /// List of frame rasterizer time in microseconds
-  final List<Duration> frameRasterizerTime;
-
-  /// The average value of [frameBuildTime] in milliseconds.
-  final Duration averageFrameBuildTime;
-
-  /// The 90-th percentile value of [frameBuildTime] in milliseconds
-  final Duration p90FrameBuildTime;
-
-  /// The 99-th percentile value of [frameBuildTime] in milliseconds
-  final Duration p99FrameBuildTime;
-
-  /// The largest value of [frameBuildTime] in milliseconds
-  final Duration worstFrameBuildTime;
-
-  /// Number of items in [frameBuildTime] that's greater than [kBuildBudget]
-  final int missedFrameBuildBudget;
-
-  /// The average value of [frameRasterizerTime] in milliseconds.
-  final Duration averageFrameRasterizerTime;
-
-  /// The 90-th percentile value of [frameRasterizerTime] in milliseconds.
-  final Duration p90FrameRasterizerTime;
-
-  /// The 99-th percentile value of [frameRasterizerTime] in milliseconds.
-  final Duration p99FrameRasterizerTime;
-
-  /// The largest value of [frameRasterizerTime] in milliseconds.
-  final Duration worstFrameRasterizerTime;
-
-  /// Number of items in [frameRasterizerTime] that's greater than [kBuildBudget]
-  final int missedFrameRasterizerBudget;
-
-  /// Convert the summary result to a json object.
-  ///
-  /// See [TimelineSummary.summaryJson] for detail.
-  Map<String, dynamic> get summary => <String, dynamic>{
-        'average_frame_build_time_millis':
-            averageFrameBuildTime.inMicroseconds / 1E3,
-        '90th_percentile_frame_build_time_millis':
-            p90FrameBuildTime.inMicroseconds / 1E3,
-        '99th_percentile_frame_build_time_millis':
-            p99FrameBuildTime.inMicroseconds / 1E3,
-        'worst_frame_build_time_millis':
-            worstFrameBuildTime.inMicroseconds / 1E3,
-        'missed_frame_build_budget_count': missedFrameBuildBudget,
-        'average_frame_rasterizer_time_millis':
-            averageFrameRasterizerTime.inMicroseconds / 1E3,
-        '90th_percentile_frame_rasterizer_time_millis':
-            p90FrameRasterizerTime.inMicroseconds / 1E3,
-        '99th_percentile_frame_rasterizer_time_millis':
-            p99FrameRasterizerTime.inMicroseconds / 1E3,
-        'worst_frame_rasterizer_time_millis':
-            worstFrameRasterizerTime.inMicroseconds / 1E3,
-        'missed_frame_rasterizer_budget_count': missedFrameRasterizerBudget,
-        'frame_count': frameBuildTime.length,
-        'frame_build_times': frameBuildTime
-            .map<int>((Duration datum) => datum.inMicroseconds)
-            .toList(),
-        'frame_rasterizer_times': frameRasterizerTime
-            .map<int>((Duration datum) => datum.inMicroseconds)
-            .toList(),
-      };
-}
-
-// The following helper functions require data sorted
-
-// return the 100*p-th percentile of the data
-T _findPercentile<T>(List<T> data, double p) {
-  assert(p >= 0 && p <= 1);
-  return data[((data.length - 1) * p).round()];
-}
-
-// return the number of items in data that > threshold
-int _countExceed<T extends Comparable<T>>(List<T> data, T threshold) {
-  return data.length -
-      data.indexWhere((T datum) => datum.compareTo(threshold) > 0);
-}
diff --git a/packages/e2e/pubspec.yaml b/packages/e2e/pubspec.yaml
index e4e476d..221dd3a 100644
--- a/packages/e2e/pubspec.yaml
+++ b/packages/e2e/pubspec.yaml
@@ -1,6 +1,6 @@
 name: e2e
 description: Runs tests that use the flutter_test API as integration tests.
-version: 0.6.3
+version: 0.7.0
 homepage: https://github.com/flutter/plugins/tree/master/packages/e2e
 
 environment:
diff --git a/packages/e2e/test/frame_timing_summarizer_test.dart b/packages/e2e/test/frame_timing_summarizer_test.dart
deleted file mode 100644
index f3a1285..0000000
--- a/packages/e2e/test/frame_timing_summarizer_test.dart
+++ /dev/null
@@ -1,35 +0,0 @@
-import 'dart:ui';
-
-import 'package:flutter_test/flutter_test.dart';
-
-import 'package:e2e/e2e_perf.dart';
-
-void main() {
-  test('Test FrameTimingSummarizer', () {
-    List<int> buildTimes = <int>[
-      for (int i = 1; i <= 100; i += 1) 1000 * i,
-    ];
-    buildTimes = buildTimes.reversed.toList();
-    List<int> rasterTimes = <int>[
-      for (int i = 1; i <= 100; i += 1) 1000 * i + 1000,
-    ];
-    rasterTimes = rasterTimes.reversed.toList();
-    List<FrameTiming> inputData = <FrameTiming>[
-      for (int i = 0; i < 100; i += 1)
-        FrameTiming(<int>[0, buildTimes[i], 500, rasterTimes[i]]),
-    ];
-    FrameTimingSummarizer summary = FrameTimingSummarizer(inputData);
-    expect(summary.averageFrameBuildTime.inMicroseconds, 50500);
-    expect(summary.p90FrameBuildTime.inMicroseconds, 90000);
-    expect(summary.p99FrameBuildTime.inMicroseconds, 99000);
-    expect(summary.worstFrameBuildTime.inMicroseconds, 100000);
-    expect(summary.missedFrameBuildBudget, 84);
-
-    expect(summary.averageFrameRasterizerTime.inMicroseconds, 51000);
-    expect(summary.p90FrameRasterizerTime.inMicroseconds, 90500);
-    expect(summary.p99FrameRasterizerTime.inMicroseconds, 99500);
-    expect(summary.worstFrameRasterizerTime.inMicroseconds, 100500);
-    expect(summary.missedFrameRasterizerBudget, 85);
-    expect(summary.frameBuildTime.length, 100);
-  });
-}