migrate animated_placeholder_perf (#64478)

diff --git a/dev/benchmarks/macrobenchmarks/test/animated_placeholder_perf_e2e.dart b/dev/benchmarks/macrobenchmarks/test/animated_placeholder_perf_e2e.dart
new file mode 100644
index 0000000..9e5af92
--- /dev/null
+++ b/dev/benchmarks/macrobenchmarks/test/animated_placeholder_perf_e2e.dart
@@ -0,0 +1,16 @@
+// 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 'package:macrobenchmarks/common.dart';
+
+import 'util.dart';
+
+void main() {
+  macroPerfTestE2E(
+    'animated_placeholder_perf',
+    kAnimatedPlaceholderRouteName,
+    pageDelay: const Duration(seconds: 1),
+    duration: const Duration(seconds: 5),
+  );
+}
diff --git a/dev/devicelab/bin/tasks/animated_placeholder_perf__e2e_summary.dart b/dev/devicelab/bin/tasks/animated_placeholder_perf__e2e_summary.dart
new file mode 100644
index 0000000..357f21e
--- /dev/null
+++ b/dev/devicelab/bin/tasks/animated_placeholder_perf__e2e_summary.dart
@@ -0,0 +1,14 @@
+// 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 'package:flutter_devicelab/tasks/perf_tests.dart';
+import 'package:flutter_devicelab/framework/adb.dart';
+import 'package:flutter_devicelab/framework/framework.dart';
+
+Future<void> main() async {
+  deviceOperatingSystem = DeviceOperatingSystem.android;
+  await task(createAnimatedPlaceholderPerfE2ETest());
+}
diff --git a/dev/devicelab/lib/tasks/perf_tests.dart b/dev/devicelab/lib/tasks/perf_tests.dart
index b17614d..b4aa3eb 100644
--- a/dev/devicelab/lib/tasks/perf_tests.dart
+++ b/dev/devicelab/lib/tasks/perf_tests.dart
@@ -174,6 +174,13 @@
   ).run;
 }
 
+TaskFunction createAnimatedPlaceholderPerfE2ETest() {
+  return PerfTest.e2e(
+    '${flutterDirectory.path}/dev/benchmarks/macrobenchmarks',
+    'test/animated_placeholder_perf_e2e.dart',
+  ).run;
+}
+
 TaskFunction createPictureCachePerfTest() {
   return PerfTest(
     '${flutterDirectory.path}/dev/benchmarks/macrobenchmarks',
diff --git a/dev/devicelab/manifest.yaml b/dev/devicelab/manifest.yaml
index bfb481b..dc73e9f 100644
--- a/dev/devicelab/manifest.yaml
+++ b/dev/devicelab/manifest.yaml
@@ -891,6 +891,15 @@
     stage: devicelab
     required_agent_capabilities: ["linux/android"]
 
+  animated_placeholder_perf__e2e_summary:
+    description: >
+      Measures frame build and rasterizer times, as well as frame build counts
+      for a grid of images that uses FadeInImage with an animated gif as the
+      placeholder.
+    stage: devicelab
+    required_agent_capabilities: ["linux/android"]
+    flaky: true
+
   analyzer_benchmark:
     description: >
       Measures the speed of Dart analyzer.