Updates PagerBenchmark with new use cases

Before implementing the new prefetching strategies for Pager, this CL introduce new test cases for the Pager macrobenchmark so we can keep track of improvements introduced: go/pager-prefetching

Test: N/A

Change-Id: Id1b5135a5b1d59beace0f8f6f9e0ddf48d688670
diff --git a/compose/integration-tests/macrobenchmark-target/src/main/java/androidx/compose/integration/macrobenchmark/target/PagerActivity.kt b/compose/integration-tests/macrobenchmark-target/src/main/java/androidx/compose/integration/macrobenchmark/target/PagerActivity.kt
index 130f0a0..a32d2e7 100644
--- a/compose/integration-tests/macrobenchmark-target/src/main/java/androidx/compose/integration/macrobenchmark/target/PagerActivity.kt
+++ b/compose/integration-tests/macrobenchmark-target/src/main/java/androidx/compose/integration/macrobenchmark/target/PagerActivity.kt
@@ -17,42 +17,75 @@
 package androidx.compose.integration.macrobenchmark.target
 
 import android.os.Bundle
+import android.webkit.WebView
+import android.webkit.WebViewClient
 import androidx.activity.ComponentActivity
 import androidx.activity.compose.setContent
+import androidx.compose.foundation.Image
 import androidx.compose.foundation.background
 import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.Column
 import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.fillMaxWidth
 import androidx.compose.foundation.layout.height
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.size
+import androidx.compose.foundation.lazy.LazyColumn
+import androidx.compose.foundation.lazy.grid.GridCells
+import androidx.compose.foundation.lazy.grid.LazyVerticalGrid
 import androidx.compose.foundation.pager.HorizontalPager
 import androidx.compose.foundation.pager.PageSize
+import androidx.compose.foundation.pager.PagerScope
+import androidx.compose.foundation.pager.PagerState
 import androidx.compose.foundation.pager.rememberPagerState
-import androidx.compose.material.Text
+import androidx.compose.material3.Button
+import androidx.compose.material3.Card
+import androidx.compose.material3.Text
 import androidx.compose.runtime.Composable
+import androidx.compose.runtime.rememberCoroutineScope
 import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.graphics.Color
+import androidx.compose.ui.layout.ContentScale
+import androidx.compose.ui.res.painterResource
+import androidx.compose.ui.res.stringResource
 import androidx.compose.ui.semantics.contentDescription
 import androidx.compose.ui.semantics.semantics
 import androidx.compose.ui.unit.dp
+import androidx.compose.ui.viewinterop.AndroidView
+import kotlinx.coroutines.launch
 
 class PagerActivity : ComponentActivity() {
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
-
-        val itemCount = intent.getIntExtra(ExtraItemCount, 3000)
+        val benchmarkType = intent.getStringExtra(BenchmarkType.Key)
+        val enableTab = intent.getBooleanExtra(BenchmarkType.Tab, false)
 
         setContent {
-            val pagerState = rememberPagerState { itemCount }
-            Box(modifier = Modifier.fillMaxSize(), contentAlignment = Alignment.Center) {
-                HorizontalPager(
-                    modifier =
-                        Modifier.height(400.dp)
-                            .semantics { contentDescription = "Pager" }
-                            .background(Color.White),
-                    state = pagerState,
-                    pageSize = PageSize.Fill
-                ) {
-                    PagerItem(it)
+            val pagerState = rememberPagerState { ItemCount }
+
+            Column(modifier = Modifier.fillMaxSize()) {
+                if (enableTab) {
+                    val scope = rememberCoroutineScope()
+                    Button(
+                        modifier = Modifier.semantics { contentDescription = "Next" },
+                        onClick = {
+                            scope.launch {
+                                pagerState.animateScrollToPage(pagerState.currentPage + 1)
+                            }
+                        }
+                    ) {
+                        Text("Next Page")
+                    }
+                }
+                when (benchmarkType) {
+                    BenchmarkType.Grid -> BenchmarkPagerOfGrids(pagerState)
+                    BenchmarkType.List -> BenchmarkPagerOfLists(pagerState)
+                    BenchmarkType.WebView -> BenchmarkPagerOfWebViews(pagerState)
+                    BenchmarkType.FullScreenImage -> BenchmarkPagerOfFullScreenImages(pagerState)
+                    BenchmarkType.FixedSizeImage -> BenchmarkPagerOfFixedSizeImages(pagerState)
+                    BenchmarkType.ListOfPager -> BenchmarkListOfPager()
+                    else -> throw IllegalStateException("Benchmark Type not known ")
                 }
             }
         }
@@ -60,14 +93,139 @@
         launchIdlenessTracking()
     }
 
+    @Composable
+    fun BenchmarkPagerOfGrids(pagerState: PagerState) {
+        FullSizePager(pagerState) {
+            LazyVerticalGrid(GridCells.Fixed(4)) {
+                items(200) {
+                    Card(modifier = Modifier.fillMaxWidth().height(64.dp).padding(8.dp)) {
+                        Text(it.toString())
+                    }
+                }
+            }
+        }
+    }
+
+    @Composable
+    fun BenchmarkPagerOfLists(pagerState: PagerState) {
+        FullSizePager(pagerState) {
+            LazyColumn(modifier = Modifier.fillMaxWidth()) {
+                items(200) {
+                    Card(modifier = Modifier.fillMaxWidth().height(64.dp).padding(8.dp)) {
+                        Text(it.toString())
+                    }
+                }
+            }
+        }
+    }
+
+    @Composable
+    fun BenchmarkPagerOfWebViews(pagerState: PagerState) {
+        FullSizePager(pagerState) {
+            AndroidView(
+                modifier = Modifier.fillMaxSize(),
+                factory = { context ->
+                    WebView(context).apply {
+                        settings.javaScriptEnabled = true
+                        webViewClient = WebViewClient()
+
+                        settings.loadWithOverviewMode = true
+                        settings.useWideViewPort = true
+                        settings.setSupportZoom(true)
+                    }
+                },
+                update = { webView -> webView.loadUrl("https://www.google.com/") }
+            )
+        }
+    }
+
+    @Composable
+    fun BenchmarkPagerOfFullScreenImages(pagerState: PagerState) {
+        FullSizePager(pagerState) { page ->
+            val pageImage = Images[(page - ItemCount / 2).floorMod(5)]
+            Image(
+                contentScale = ContentScale.Crop,
+                modifier = Modifier.fillMaxSize(),
+                painter = painterResource(pageImage.second),
+                contentDescription = stringResource(pageImage.third)
+            )
+        }
+    }
+
+    @Composable
+    fun BenchmarkPagerOfFixedSizeImages(pagerState: PagerState) {
+        FixedSizePager(pagerState) { page ->
+            Box(modifier = Modifier.fillMaxSize(), contentAlignment = Alignment.Center) {
+                val pageImage = Images[(page - ItemCount / 2).floorMod(5)]
+                Image(
+                    contentScale = ContentScale.Crop,
+                    modifier = Modifier.height(200.dp).fillMaxWidth(),
+                    painter = painterResource(pageImage.second),
+                    contentDescription = stringResource(pageImage.third)
+                )
+            }
+        }
+    }
+
+    @Composable
+    fun FullSizePager(pagerState: PagerState, content: @Composable PagerScope.(Int) -> Unit) {
+        HorizontalPager(
+            modifier = Modifier.semantics { contentDescription = "Pager" }.background(Color.White),
+            state = pagerState,
+            pageSize = PageSize.Fill,
+            pageContent = content
+        )
+    }
+
+    @Composable
+    fun FixedSizePager(pagerState: PagerState, content: @Composable PagerScope.(Int) -> Unit) {
+        HorizontalPager(
+            modifier = Modifier.semantics { contentDescription = "Pager" }.background(Color.White),
+            state = pagerState,
+            pageSize = PageSize.Fixed(200.dp),
+            pageSpacing = 10.dp,
+            pageContent = content
+        )
+    }
+
+    @Composable
+    fun BenchmarkListOfPager() {
+        LazyColumn(Modifier.semantics { contentDescription = "List" }) {
+            items(ItemCount * ItemCount) {
+                FixedSizePager(rememberPagerState { ItemCount }) {
+                    Box(Modifier.size(200.dp)) { Text("Page ${it.toString()}") }
+                }
+            }
+        }
+    }
+
     companion object {
-        const val ExtraItemCount = "ITEM_COUNT"
+        const val ItemCount = 100
+
+        object BenchmarkType {
+            val Key = "BenchmarkType"
+            val Tab = "EnableTab"
+            val Grid = "Pager of Grids"
+            val List = "Pager of List"
+            val WebView = "Pager of WebViews"
+            val FullScreenImage = "Pager of Full Screen Images"
+            val FixedSizeImage = "Pager of Fixed Size Images"
+            val ListOfPager = "Pager Inside A List"
+        }
+
+        val Images =
+            listOf(
+                Triple(0, R.drawable.carousel_image_1, R.string.carousel_image_1_description),
+                Triple(1, R.drawable.carousel_image_2, R.string.carousel_image_2_description),
+                Triple(2, R.drawable.carousel_image_3, R.string.carousel_image_3_description),
+                Triple(3, R.drawable.carousel_image_4, R.string.carousel_image_4_description),
+                Triple(4, R.drawable.carousel_image_5, R.string.carousel_image_5_description),
+            )
     }
 }
 
-@Composable
-private fun PagerItem(index: Int) {
-    Box(modifier = Modifier.fillMaxSize().background(Color.Black)) {
-        Text(text = index.toString(), color = Color.White)
+private fun Int.floorMod(other: Int): Int =
+    when (other) {
+        0 -> this
+        else -> this - floorDiv(other) * other
     }
-}
diff --git a/compose/integration-tests/macrobenchmark-target/src/main/res/drawable-nodpi/carousel_image_1.jpg b/compose/integration-tests/macrobenchmark-target/src/main/res/drawable-nodpi/carousel_image_1.jpg
new file mode 100644
index 0000000..b02612e
--- /dev/null
+++ b/compose/integration-tests/macrobenchmark-target/src/main/res/drawable-nodpi/carousel_image_1.jpg
Binary files differ
diff --git a/compose/integration-tests/macrobenchmark-target/src/main/res/drawable-nodpi/carousel_image_2.jpg b/compose/integration-tests/macrobenchmark-target/src/main/res/drawable-nodpi/carousel_image_2.jpg
new file mode 100644
index 0000000..73162bb
--- /dev/null
+++ b/compose/integration-tests/macrobenchmark-target/src/main/res/drawable-nodpi/carousel_image_2.jpg
Binary files differ
diff --git a/compose/integration-tests/macrobenchmark-target/src/main/res/drawable-nodpi/carousel_image_3.jpg b/compose/integration-tests/macrobenchmark-target/src/main/res/drawable-nodpi/carousel_image_3.jpg
new file mode 100644
index 0000000..d31f632
--- /dev/null
+++ b/compose/integration-tests/macrobenchmark-target/src/main/res/drawable-nodpi/carousel_image_3.jpg
Binary files differ
diff --git a/compose/integration-tests/macrobenchmark-target/src/main/res/drawable-nodpi/carousel_image_4.jpg b/compose/integration-tests/macrobenchmark-target/src/main/res/drawable-nodpi/carousel_image_4.jpg
new file mode 100644
index 0000000..8362062
--- /dev/null
+++ b/compose/integration-tests/macrobenchmark-target/src/main/res/drawable-nodpi/carousel_image_4.jpg
Binary files differ
diff --git a/compose/integration-tests/macrobenchmark-target/src/main/res/drawable-nodpi/carousel_image_5.jpg b/compose/integration-tests/macrobenchmark-target/src/main/res/drawable-nodpi/carousel_image_5.jpg
new file mode 100644
index 0000000..f5eb364
--- /dev/null
+++ b/compose/integration-tests/macrobenchmark-target/src/main/res/drawable-nodpi/carousel_image_5.jpg
Binary files differ
diff --git a/compose/integration-tests/macrobenchmark-target/src/main/res/values/strings.xml b/compose/integration-tests/macrobenchmark-target/src/main/res/values/strings.xml
index 19b2ab5..88f7fac 100644
--- a/compose/integration-tests/macrobenchmark-target/src/main/res/values/strings.xml
+++ b/compose/integration-tests/macrobenchmark-target/src/main/res/values/strings.xml
@@ -26,4 +26,9 @@
     <string name="io_settings_tos" translation_description="Open link to terms of service.">Terms of service</string>
     <string name="io_settings_privacy_policy" translation_description="Open link to privacy policy.">Privacy policy</string>
     <string name="io_settings_oss_licenses" translation_description="Open link to open source licenses.">Open sources licenses</string>
+    <string name="carousel_image_1_description">A racecar</string>
+    <string name="carousel_image_2_description">Dotonburi, Osaka</string>
+    <string name="carousel_image_3_description">The Grand Canyon</string>
+    <string name="carousel_image_4_description">A rock structure with its reflection mirrored over the sea</string>
+    <string name="carousel_image_5_description">A car on a long stretch of desert road</string>
 </resources>
diff --git a/compose/integration-tests/macrobenchmark/src/main/java/androidx/compose/integration/macrobenchmark/PagerBenchmark.kt b/compose/integration-tests/macrobenchmark/src/main/java/androidx/compose/integration/macrobenchmark/PagerBenchmark.kt
index 35b7f99..3ca318e 100644
--- a/compose/integration-tests/macrobenchmark/src/main/java/androidx/compose/integration/macrobenchmark/PagerBenchmark.kt
+++ b/compose/integration-tests/macrobenchmark/src/main/java/androidx/compose/integration/macrobenchmark/PagerBenchmark.kt
@@ -14,10 +14,14 @@
  * limitations under the License.
  */
 
+@file:OptIn(ExperimentalMetricApi::class)
+
 package androidx.compose.integration.macrobenchmark
 
 import android.content.Intent
 import androidx.benchmark.macro.CompilationMode
+import androidx.benchmark.macro.ExperimentalMetricApi
+import androidx.benchmark.macro.FrameTimingGfxInfoMetric
 import androidx.benchmark.macro.FrameTimingMetric
 import androidx.benchmark.macro.junit4.MacrobenchmarkRule
 import androidx.test.filters.LargeTest
@@ -26,7 +30,6 @@
 import androidx.test.uiautomator.Direction
 import androidx.test.uiautomator.UiDevice
 import androidx.test.uiautomator.Until
-import androidx.testutils.createCompilationParams
 import org.junit.Before
 import org.junit.Rule
 import org.junit.Test
@@ -47,22 +50,167 @@
     }
 
     @Test
-    fun scroll() {
+    fun pager_of_grids_gesture_scroll() {
         benchmarkRule.measureRepeated(
             packageName = PackageName,
-            metrics = listOf(FrameTimingMetric()),
+            metrics = listOf(FrameTimingGfxInfoMetric()),
             compilationMode = compilationMode,
-            iterations = 10,
+            iterations = 5,
             setupBlock = {
                 val intent = Intent()
                 intent.action = Action
+                intent.putExtra(BenchmarkType.Key, BenchmarkType.Grid)
+                startActivityAndWait(intent)
+            }
+        ) {
+            val pager = device.findObject(By.desc(ContentDescription))
+            // Setting a gesture margin is important otherwise gesture nav is triggered.
+            pager.setGestureMargin(device.displayWidth / 5)
+            for (i in 1..EventRepeatCount) {
+                // From center we scroll 2/3 of it which is 1/3 of the screen.
+                pager.swipe(Direction.LEFT, 1.0f)
+                device.wait(Until.findObject(By.desc(ComposeIdle)), 3000)
+            }
+        }
+    }
+
+    @Test
+    fun pager_of_grids_animated_scroll() {
+        benchmarkRule.measureRepeated(
+            packageName = PackageName,
+            metrics = listOf(FrameTimingGfxInfoMetric()),
+            compilationMode = compilationMode,
+            iterations = 5,
+            setupBlock = {
+                val intent = Intent()
+                intent.action = Action
+                intent.putExtra(BenchmarkType.Key, BenchmarkType.Grid)
+                intent.putExtra(BenchmarkType.Tab, true)
+                startActivityAndWait(intent)
+            }
+        ) {
+            val nextButton = device.findObject(By.desc(NextDescription))
+            repeat(EventRepeatCount) {
+                nextButton.click()
+                device.wait(Until.findObject(By.desc(ComposeIdle)), 3000)
+            }
+        }
+    }
+
+    @Test
+    fun pager_of_lists_gesture_scroll() {
+        benchmarkRule.measureRepeated(
+            packageName = PackageName,
+            metrics = listOf(FrameTimingGfxInfoMetric()),
+            compilationMode = compilationMode,
+            iterations = 5,
+            setupBlock = {
+                val intent = Intent()
+                intent.action = Action
+                intent.putExtra(BenchmarkType.Key, BenchmarkType.List)
+                startActivityAndWait(intent)
+            }
+        ) {
+            val pager = device.findObject(By.desc(ContentDescription))
+            // Setting a gesture margin is important otherwise gesture nav is triggered.
+            pager.setGestureMargin(device.displayWidth / 5)
+            for (i in 1..EventRepeatCount) {
+                // From center we scroll 2/3 of it which is 1/3 of the screen.
+                pager.swipe(Direction.LEFT, 1.0f)
+                device.wait(Until.findObject(By.desc(ComposeIdle)), 3000)
+            }
+        }
+    }
+
+    @Test
+    fun pager_of_lists_animated_scroll() {
+        benchmarkRule.measureRepeated(
+            packageName = PackageName,
+            metrics = listOf(FrameTimingGfxInfoMetric()),
+            compilationMode = compilationMode,
+            iterations = 5,
+            setupBlock = {
+                val intent = Intent()
+                intent.action = Action
+                intent.putExtra(BenchmarkType.Key, BenchmarkType.List)
+                intent.putExtra(BenchmarkType.Tab, true)
+                startActivityAndWait(intent)
+            }
+        ) {
+            val nextButton = device.findObject(By.desc(NextDescription))
+            repeat(EventRepeatCount) {
+                nextButton.click()
+                device.wait(Until.findObject(By.desc(ComposeIdle)), 3000)
+            }
+        }
+    }
+
+    @Test
+    fun pager_of_webviews_gesture_scroll() {
+        benchmarkRule.measureRepeated(
+            packageName = PackageName,
+            metrics = listOf(FrameTimingGfxInfoMetric()),
+            compilationMode = compilationMode,
+            iterations = 5,
+            setupBlock = {
+                val intent = Intent()
+                intent.action = Action
+                intent.putExtra(BenchmarkType.Key, BenchmarkType.WebView)
+                startActivityAndWait(intent)
+            }
+        ) {
+            val pager = device.findObject(By.desc(ContentDescription))
+            // Setting a gesture margin is important otherwise gesture nav is triggered.
+            pager.setGestureMargin(device.displayWidth / 5)
+            for (i in 1..EventRepeatCount) {
+                // From center we scroll 2/3 of it which is 1/3 of the screen.
+                pager.swipe(Direction.LEFT, 1.0f)
+                device.wait(Until.findObject(By.desc(ComposeIdle)), 3000)
+            }
+        }
+    }
+
+    @Test
+    fun pager_of_webviews_animated_scroll() {
+        benchmarkRule.measureRepeated(
+            packageName = PackageName,
+            metrics = listOf(FrameTimingGfxInfoMetric()),
+            compilationMode = compilationMode,
+            iterations = 5,
+            setupBlock = {
+                val intent = Intent()
+                intent.action = Action
+                intent.putExtra(BenchmarkType.Key, BenchmarkType.WebView)
+                intent.putExtra(BenchmarkType.Tab, true)
+                startActivityAndWait(intent)
+            }
+        ) {
+            val nextButton = device.findObject(By.desc(NextDescription))
+            repeat(EventRepeatCount) {
+                nextButton.click()
+                device.wait(Until.findObject(By.desc(ComposeIdle)), 3000)
+            }
+        }
+    }
+
+    @Test
+    fun pager_of_images_full_page_gesture_scroll() {
+        benchmarkRule.measureRepeated(
+            packageName = PackageName,
+            metrics = listOf(FrameTimingGfxInfoMetric()),
+            compilationMode = compilationMode,
+            iterations = 5,
+            setupBlock = {
+                val intent = Intent()
+                intent.putExtra(BenchmarkType.Key, BenchmarkType.FullScreenImage)
+                intent.action = Action
                 startActivityAndWait(intent)
             }
         ) {
             val pager = device.findObject(By.desc(ContentDescription))
             // Setting a gesture margin is important otherwise gesture nav is triggered.
             pager.setGestureMargin(device.displayWidth / 5)
-            for (i in 1..10) {
+            for (i in 1..EventRepeatCount) {
                 // From center we scroll 2/3 of it which is 1/3 of the screen.
                 pager.swipe(Direction.LEFT, 1.0f)
                 device.wait(Until.findObject(By.desc(ComposeIdle)), 3000)
@@ -70,15 +218,124 @@
         }
     }
 
+    @Test
+    fun pager_of_images_full_page_animated_scroll() {
+        benchmarkRule.measureRepeated(
+            packageName = PackageName,
+            metrics = listOf(FrameTimingGfxInfoMetric()),
+            compilationMode = compilationMode,
+            iterations = 5,
+            setupBlock = {
+                val intent = Intent()
+                intent.putExtra(BenchmarkType.Key, BenchmarkType.FullScreenImage)
+                intent.putExtra(BenchmarkType.Tab, true)
+                intent.action = Action
+                startActivityAndWait(intent)
+            }
+        ) {
+            val nextButton = device.findObject(By.desc(NextDescription))
+            repeat(EventRepeatCount) {
+                nextButton.click()
+                device.wait(Until.findObject(By.desc(ComposeIdle)), 3000)
+            }
+        }
+    }
+
+    @Test
+    fun pager_of_images_fixed_size_page_gesture_scroll() {
+        benchmarkRule.measureRepeated(
+            packageName = PackageName,
+            metrics = listOf(FrameTimingMetric(), FrameTimingGfxInfoMetric()),
+            compilationMode = compilationMode,
+            iterations = 5,
+            setupBlock = {
+                val intent = Intent()
+                intent.action = Action
+                intent.putExtra(BenchmarkType.Key, BenchmarkType.FixedSizeImage)
+                startActivityAndWait(intent)
+            }
+        ) {
+            val pager = device.findObject(By.desc(ContentDescription))
+            // Setting a gesture margin is important otherwise gesture nav is triggered.
+            pager.setGestureMargin(device.displayWidth / 5)
+            for (i in 1..EventRepeatCount) {
+                // From center we scroll 2/3 of it which is 1/3 of the screen.
+                pager.swipe(Direction.LEFT, 1.0f)
+                device.wait(Until.findObject(By.desc(ComposeIdle)), 3000)
+            }
+        }
+    }
+
+    @Test
+    fun pager_of_images_fixed_size_page_animated_scroll() {
+        benchmarkRule.measureRepeated(
+            packageName = PackageName,
+            metrics = listOf(FrameTimingGfxInfoMetric()),
+            compilationMode = compilationMode,
+            iterations = 5,
+            setupBlock = {
+                val intent = Intent()
+                intent.action = Action
+                intent.putExtra(BenchmarkType.Key, BenchmarkType.FixedSizeImage)
+                intent.putExtra(BenchmarkType.Tab, true)
+                startActivityAndWait(intent)
+            }
+        ) {
+            val nextButton = device.findObject(By.desc(NextDescription))
+            repeat(EventRepeatCount) {
+                nextButton.click()
+                device.wait(Until.findObject(By.desc(ComposeIdle)), 3000)
+            }
+        }
+    }
+
+    @Test
+    fun list_of_pagers_gesture_scroll() {
+        benchmarkRule.measureRepeated(
+            packageName = PackageName,
+            metrics = listOf(FrameTimingGfxInfoMetric()),
+            compilationMode = compilationMode,
+            iterations = 5,
+            setupBlock = {
+                val intent = Intent()
+                intent.action = Action
+                intent.putExtra(BenchmarkType.Key, BenchmarkType.ListOfPager)
+                startActivityAndWait(intent)
+            }
+        ) {
+            val pager = device.findObject(By.desc("List"))
+            // Setting a gesture margin is important otherwise gesture nav is triggered.
+            pager.setGestureMargin(device.displayHeight / 5)
+            for (i in 1..EventRepeatCount) {
+                // From center we scroll 2/3 of it which is 1/3 of the screen.
+                pager.swipe(Direction.UP, 1.0f)
+                device.wait(Until.findObject(By.desc(ComposeIdle)), 3000)
+            }
+        }
+    }
+
     companion object {
         private const val PackageName = "androidx.compose.integration.macrobenchmark.target"
         private const val Action =
             "androidx.compose.integration.macrobenchmark.target.LAZY_PAGER_ACTIVITY"
         private const val ContentDescription = "Pager"
+        private const val NextDescription = "Next"
         private const val ComposeIdle = "COMPOSE-IDLE"
+        private const val EventRepeatCount = 10
+
+        object BenchmarkType {
+            val Key = "BenchmarkType"
+            val Tab = "EnableTab"
+            val Grid = "Pager of Grids"
+            val List = "Pager of List"
+            val WebView = "Pager of WebViews"
+            val FullScreenImage = "Pager of Full Screen Images"
+            val FixedSizeImage = "Pager of Fixed Size Images"
+            val ListOfPager = "Pager Inside A List"
+        }
 
         @Parameterized.Parameters(name = "compilation={0}")
         @JvmStatic
-        fun parameters() = createCompilationParams()
+        fun parameters() = listOf(arrayOf(CompilationMode.Full()))
     }
 }