Loading packages/SystemUI/screenshot/src/com/android/systemui/testing/screenshot/ViewScreenshotTestRule.kt +33 −4 Original line number Diff line number Diff line package com.android.systemui.testing.screenshot import android.app.Activity import android.app.Dialog import android.view.View import android.view.ViewGroup import android.view.ViewGroup.LayoutParams Loading @@ -23,20 +24,20 @@ class ViewScreenshotTestRule(testSpec: ScreenshotTestSpec) : TestRule { } /** * Compare the content of [view] with the golden image identified by [goldenIdentifier] in the * context of [testSpec]. * Compare the content of the view provided by [viewProvider] with the golden image identified * by [goldenIdentifier] in the context of [testSpec]. */ fun screenshotTest( goldenIdentifier: String, layoutParams: LayoutParams = LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT), view: (Activity) -> View, viewProvider: (Activity) -> View, ) { activityRule.scenario.onActivity { activity -> // Make sure that the activity draws full screen and fits the whole display instead of // the system bars. activity.window.setDecorFitsSystemWindows(false) activity.setContentView(view(activity), layoutParams) activity.setContentView(viewProvider(activity), layoutParams) } // We call onActivity again because it will make sure that our Activity is done measuring, Loading @@ -48,4 +49,32 @@ class ViewScreenshotTestRule(testSpec: ScreenshotTestSpec) : TestRule { screenshotRule.screenshotTest(goldenIdentifier, content.getChildAt(0)) } } /** * Compare the content of the dialog provided by [dialogProvider] with the golden image * identified by [goldenIdentifier] in the context of [testSpec]. */ fun dialogScreenshotTest( goldenIdentifier: String, dialogProvider: (Activity) -> Dialog, ) { var dialog: Dialog? = null activityRule.scenario.onActivity { activity -> // Make sure that the dialog draws full screen and fits the whole display instead of the // system bars. dialog = dialogProvider(activity).apply { window.setDecorFitsSystemWindows(false) show() } } // We call onActivity again because it will make sure that our Dialog is done measuring, // laying out and drawing its content (that we set in the previous onActivity lambda). activityRule.scenario.onActivity { // Check that the content is what we expected. val dialog = dialog ?: error("dialog is null") screenshotRule.screenshotTest(goldenIdentifier, dialog.window.decorView) } } } Loading
packages/SystemUI/screenshot/src/com/android/systemui/testing/screenshot/ViewScreenshotTestRule.kt +33 −4 Original line number Diff line number Diff line package com.android.systemui.testing.screenshot import android.app.Activity import android.app.Dialog import android.view.View import android.view.ViewGroup import android.view.ViewGroup.LayoutParams Loading @@ -23,20 +24,20 @@ class ViewScreenshotTestRule(testSpec: ScreenshotTestSpec) : TestRule { } /** * Compare the content of [view] with the golden image identified by [goldenIdentifier] in the * context of [testSpec]. * Compare the content of the view provided by [viewProvider] with the golden image identified * by [goldenIdentifier] in the context of [testSpec]. */ fun screenshotTest( goldenIdentifier: String, layoutParams: LayoutParams = LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT), view: (Activity) -> View, viewProvider: (Activity) -> View, ) { activityRule.scenario.onActivity { activity -> // Make sure that the activity draws full screen and fits the whole display instead of // the system bars. activity.window.setDecorFitsSystemWindows(false) activity.setContentView(view(activity), layoutParams) activity.setContentView(viewProvider(activity), layoutParams) } // We call onActivity again because it will make sure that our Activity is done measuring, Loading @@ -48,4 +49,32 @@ class ViewScreenshotTestRule(testSpec: ScreenshotTestSpec) : TestRule { screenshotRule.screenshotTest(goldenIdentifier, content.getChildAt(0)) } } /** * Compare the content of the dialog provided by [dialogProvider] with the golden image * identified by [goldenIdentifier] in the context of [testSpec]. */ fun dialogScreenshotTest( goldenIdentifier: String, dialogProvider: (Activity) -> Dialog, ) { var dialog: Dialog? = null activityRule.scenario.onActivity { activity -> // Make sure that the dialog draws full screen and fits the whole display instead of the // system bars. dialog = dialogProvider(activity).apply { window.setDecorFitsSystemWindows(false) show() } } // We call onActivity again because it will make sure that our Dialog is done measuring, // laying out and drawing its content (that we set in the previous onActivity lambda). activityRule.scenario.onActivity { // Check that the content is what we expected. val dialog = dialog ?: error("dialog is null") screenshotRule.screenshotTest(goldenIdentifier, dialog.window.decorView) } } }