flutter-idea/testSrc/unit/io/flutter/perf/FlutterWidgetPerfTest.java [500:554]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    for (int frame = 1; frame <= 120; frame++) {
      final long startTime = 1000 + frame * 1000 * 1000 / 60;
      widgetPerfProvider.simulateWidgetPerfEvent(
        PerfReportKind.rebuild, "{\"startTime\":" +
                                startTime +
                                ",\"events\":[95,1,96,1,97,6,100,6,102,6,104,6,105,1,106,1]}");
    }
    final ArrayList<PerfMetric> lastFrameOnly = new ArrayList<>();
    lastFrameOnly.add(PerfMetric.lastFrame);
    final ArrayList<PerfMetric> metrics = new ArrayList<>();
    metrics.add(PerfMetric.lastFrame);
    metrics.add(PerfMetric.totalSinceEnteringCurrentScreen);

    ArrayList<SlidingWindowStatsSummary> stats = flutterWidgetPerf.getStatsForMetric(lastFrameOnly, PerfReportKind.repaint);
    // No repaint stats are provided.
    assertTrue(stats.isEmpty());

    stats = flutterWidgetPerf.getStatsForMetric(lastFrameOnly, PerfReportKind.rebuild);
    assertEquals(8, stats.size());

    for (SlidingWindowStatsSummary stat : stats) {
      assertTrue(stat.getValue(PerfMetric.lastFrame) > 0);
    }

    stats = flutterWidgetPerf.getStatsForMetric(metrics, PerfReportKind.rebuild);
    assertEquals(18, stats.size());
    for (SlidingWindowStatsSummary stat : stats) {
      assertTrue(stat.getValue(PerfMetric.lastFrame) > 0 ||
                 stat.getValue(PerfMetric.totalSinceEnteringCurrentScreen) > 0);
    }

    /// Test that the perfModel gets notified correctly when there are
    // events to draw a frame of the ui.
    assertEquals(perfModel.frameCount, 0);
    SwingUtilities.invokeLater(() -> {
      flutterWidgetPerf.requestRepaint(When.now);
    });

    while (perfModel.frameCount == 0) {
      try {
        //noinspection BusyWait
        Thread.sleep(1);
      }
      catch (InterruptedException e) {
        fail(e.toString());
      }
    }
    assertEquals(1, perfModel.frameCount);
    assertEquals(0, perfModel.idleCount);
    // Verify that an idle event occurs once we wait the idle time delay.
    Thread.sleep(IDLE_DELAY_MILISECONDS);
    assertEquals(1, perfModel.idleCount);

    flutterWidgetPerf.removePerfListener(perfModel);
    flutterWidgetPerf.dispose();
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



flutter-idea/testSrc/unit/io/flutter/perf/FlutterWidgetPerfTest.java [575:629]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    for (int frame = 1; frame <= 120; frame++) {
      final long startTime = 1000 + frame * 1000 * 1000 / 60;
      widgetPerfProvider.simulateWidgetPerfEvent(
        PerfReportKind.rebuild, "{\"startTime\":" +
                                startTime +
                                ",\"events\":[95,1,96,1,97,6,100,6,102,6,104,6,105,1,106,1]}");
    }
    final ArrayList<PerfMetric> lastFrameOnly = new ArrayList<>();
    lastFrameOnly.add(PerfMetric.lastFrame);
    final ArrayList<PerfMetric> metrics = new ArrayList<>();
    metrics.add(PerfMetric.lastFrame);
    metrics.add(PerfMetric.totalSinceEnteringCurrentScreen);

    ArrayList<SlidingWindowStatsSummary> stats = flutterWidgetPerf.getStatsForMetric(lastFrameOnly, PerfReportKind.repaint);
    // No repaint stats are provided.
    assertTrue(stats.isEmpty());

    stats = flutterWidgetPerf.getStatsForMetric(lastFrameOnly, PerfReportKind.rebuild);
    assertEquals(8, stats.size());

    for (SlidingWindowStatsSummary stat : stats) {
      assertTrue(stat.getValue(PerfMetric.lastFrame) > 0);
    }

    stats = flutterWidgetPerf.getStatsForMetric(metrics, PerfReportKind.rebuild);
    assertEquals(18, stats.size());
    for (SlidingWindowStatsSummary stat : stats) {
      assertTrue(stat.getValue(PerfMetric.lastFrame) > 0 ||
                 stat.getValue(PerfMetric.totalSinceEnteringCurrentScreen) > 0);
    }

    /// Test that the perfModel gets notified correctly when there are
    // events to draw a frame of the ui.
    assertEquals(perfModel.frameCount, 0);
    SwingUtilities.invokeLater(() -> {
      flutterWidgetPerf.requestRepaint(When.now);
    });

    while (perfModel.frameCount == 0) {
      try {
        //noinspection BusyWait
        Thread.sleep(1);
      }
      catch (InterruptedException e) {
        fail(e.toString());
      }
    }
    assertEquals(1, perfModel.frameCount);
    assertEquals(0, perfModel.idleCount);
    // Verify that an idle event occurs once we wait the idle time delay.
    Thread.sleep(IDLE_DELAY_MILISECONDS);
    assertEquals(1, perfModel.idleCount);

    flutterWidgetPerf.removePerfListener(perfModel);
    flutterWidgetPerf.dispose();
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



