summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2023-02-02 20:40:57 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2023-02-02 20:40:57 +0000
commit16cb9081ee0bcc6fc03c5fb05696bafaac49c831 (patch)
tree029ce82bfa2b7307c6a823c19d9155291d77e0fc
parent8e11ea226c6d3e3a92da7e2cde11e33868ebf0b7 (diff)
parentd740d754f373fb887115bcd35d83e898dc352ea1 (diff)
downloadcts-sparse-9556388-L61500000958499553.tar.gz
Merge "Merge cherrypicks of ['android-review.googlesource.com/2388225', 'android-review.googlesource.com/2391933', 'android-review.googlesource.com/2406112', 'android-review.googlesource.com/2404652', 'android-review.googlesource.com/2412813'] into sparse-9492874-L46600000958426283. SPARSE_CHANGE: I87e8a36e0f84a43d71926b9c21f1434c85dbea9e SPARSE_CHANGE: I217dfe39f1ac4032f3c52cc19618fec83516c9b8 SPARSE_CHANGE: I29ddee5affc7fe0a5f6ec5ecd776d39ff5e9c138 SPARSE_CHANGE: I7ab4c315f56a711e91b13f8ff8e7a4cbe8fcd989 SPARSE_CHANGE: I3d9b1e687f6b7ea797113385abbec56dd5d0ee60" into sparse-9492874-L46600000958426283sparse-9556388-L61500000958499553
-rw-r--r--[-rwxr-xr-x]hostsidetests/dumpsys/src/android/dumpsys/cts/BatteryStatsDumpsysTest.java16
-rw-r--r--[-rwxr-xr-x]hostsidetests/dumpsys/src/android/dumpsys/cts/GfxInfoDumpsysTest.java0
-rw-r--r--tests/app/src/android/app/cts/NotificationTemplateTest.kt163
-rw-r--r--tests/location/location_fine/src/android/location/cts/fine/LocationManagerFineTest.java3
-rw-r--r--tests/tests/media/codec/src/android/media/codec/cts/MediaCodecCapabilitiesTest.java10
-rw-r--r--tests/tests/notificationlegacy/notificationlegacy30/src/android/app/notification/legacy30/cts/NotificationTemplateApi30Test.kt68
6 files changed, 78 insertions, 182 deletions
diff --git a/hostsidetests/dumpsys/src/android/dumpsys/cts/BatteryStatsDumpsysTest.java b/hostsidetests/dumpsys/src/android/dumpsys/cts/BatteryStatsDumpsysTest.java
index 17cfca70b4b..518144a0ed0 100755..100644
--- a/hostsidetests/dumpsys/src/android/dumpsys/cts/BatteryStatsDumpsysTest.java
+++ b/hostsidetests/dumpsys/src/android/dumpsys/cts/BatteryStatsDumpsysTest.java
@@ -18,12 +18,9 @@ package android.dumpsys.cts;
import static com.google.common.truth.Truth.assertThat;
-import com.android.compatibility.common.tradefed.build.CompatibilityBuildHelper;
import com.android.tradefed.log.LogUtil.CLog;
import java.io.BufferedReader;
-import java.io.File;
-import java.io.IOException;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.HashSet;
@@ -166,6 +163,10 @@ public class BatteryStatsDumpsysTest extends BaseDumpsysTest {
checkNetwork(parts);
break;
case "ua":
+ if (parts.length == 9) {
+ checkUserActivityCompat(parts);
+ break;
+ }
checkUserActivity(parts);
break;
case "bt":
@@ -490,6 +491,15 @@ public class BatteryStatsDumpsysTest extends BaseDumpsysTest {
assertInteger(parts[10]); // deviceState
}
+ private void checkUserActivityCompat(String[] parts) {
+ assertEquals(9, parts.length);
+ assertInteger(parts[4]); // other
+ assertInteger(parts[5]); // button
+ assertInteger(parts[6]); // touch
+ assertInteger(parts[7]); // accessibility
+ assertInteger(parts[8]); // attention
+ }
+
private void checkBattery(String[] parts) {
assertEquals(16, parts.length);
if (!parts[4].equals("N/A")) {
diff --git a/hostsidetests/dumpsys/src/android/dumpsys/cts/GfxInfoDumpsysTest.java b/hostsidetests/dumpsys/src/android/dumpsys/cts/GfxInfoDumpsysTest.java
index 173a6dab9d0..173a6dab9d0 100755..100644
--- a/hostsidetests/dumpsys/src/android/dumpsys/cts/GfxInfoDumpsysTest.java
+++ b/hostsidetests/dumpsys/src/android/dumpsys/cts/GfxInfoDumpsysTest.java
diff --git a/tests/app/src/android/app/cts/NotificationTemplateTest.kt b/tests/app/src/android/app/cts/NotificationTemplateTest.kt
index ff8bf5629ba..f7edaf7da9a 100644
--- a/tests/app/src/android/app/cts/NotificationTemplateTest.kt
+++ b/tests/app/src/android/app/cts/NotificationTemplateTest.kt
@@ -16,7 +16,6 @@
package android.app.cts
import android.R
-import android.app.ActivityManager
import android.app.Notification
import android.app.PendingIntent
import android.app.Person
@@ -36,8 +35,8 @@ import androidx.annotation.ColorInt
import androidx.test.filters.SmallTest
import com.android.compatibility.common.util.CddTest
import com.google.common.truth.Truth.assertThat
-import kotlin.math.min
import kotlin.test.assertFailsWith
+import org.junit.Assume
class NotificationTemplateTest : NotificationTemplateTestBase() {
@@ -144,11 +143,7 @@ class NotificationTemplateTest : NotificationTemplateTestBase() {
}
fun testWideIcon_inBigPicture_cappedTo16By9() {
- if (isPlatformAutomotive()) {
- Log.i(TAG, "Skipping: testWideIcon_inBigPicture_cappedTo16By9" +
- " - BigPictureStyle is not supported in automotive.")
- return
- }
+ skipIfPlatformDoesNotSupportNotificationStyles()
val picture = createBitmap(40, 30)
val icon = createBitmap(200, 100)
val views = Notification.Builder(mContext, NOTIFICATION_CHANNEL_ID)
@@ -166,11 +161,7 @@ class NotificationTemplateTest : NotificationTemplateTestBase() {
}
fun testWideIcon_inBigPicture_canShowExact4By3() {
- if (isPlatformAutomotive()) {
- Log.i(TAG, "Skipping: testWideIcon_inBigPicture_canShowExact4By3" +
- " - BigPictureStyle is not supported in automotive.")
- return
- }
+ skipIfPlatformDoesNotSupportNotificationStyles()
val picture = createBitmap(40, 30)
val icon = createBitmap(400, 300)
val views = Notification.Builder(mContext, NOTIFICATION_CHANNEL_ID)
@@ -188,11 +179,7 @@ class NotificationTemplateTest : NotificationTemplateTestBase() {
}
fun testWideIcon_inBigPicture_neverNarrowerThanSquare() {
- if (isPlatformAutomotive()) {
- Log.i(TAG, "Skipping: testWideIcon_inBigPicture_neverNarrowerThanSquare" +
- " - BigPictureStyle is not supported in automotive.")
- return
- }
+ skipIfPlatformDoesNotSupportNotificationStyles()
val picture = createBitmap(40, 30)
val icon = createBitmap(200, 300)
val views = Notification.Builder(mContext, NOTIFICATION_CHANNEL_ID)
@@ -254,11 +241,7 @@ class NotificationTemplateTest : NotificationTemplateTestBase() {
}
fun testBigPictureStyle_populatesExtrasCompatibly() {
- if (isPlatformAutomotive()) {
- Log.i(TAG, "Skipping: testBigPictureStyle_populatesExtrasCompatibly" +
- " - BigPictureStyle is not supported in automotive.")
- return
- }
+ skipIfPlatformDoesNotSupportNotificationStyles()
val bitmap = createBitmap(40, 30)
val uri = Uri.parse("content://android.app.stubs.assets/picture_400_by_300.png")
val iconWithUri = Icon.createWithContentUri(uri)
@@ -272,7 +255,7 @@ class NotificationTemplateTest : NotificationTemplateTestBase() {
style.bigPicture(bitmap)
builder.build().let {
assertThat(it.extras.getParcelable<Bitmap>(Notification.EXTRA_PICTURE)
- !!.sameAs(bitmap)).isTrue()
+ !!.sameAs(bitmap)).isTrue()
assertThat(it.extras.get(Notification.EXTRA_PICTURE_ICON)).isNull()
}
@@ -286,18 +269,15 @@ class NotificationTemplateTest : NotificationTemplateTestBase() {
style.bigPicture(iconWithBitmap)
builder.build().let {
assertThat(it.extras.getParcelable<Bitmap>(Notification.EXTRA_PICTURE)
- !!.sameAs(bitmap)).isTrue()
+ !!.sameAs(bitmap)).isTrue()
assertThat(it.extras.get(Notification.EXTRA_PICTURE_ICON)).isNull()
}
}
@CddTest(requirement = "3.8.3.1/C-2-1")
fun testBigPictureStyle_bigPictureUriIcon() {
- if (isPlatformAutomotive()) {
- Log.i(TAG, "Skipping: testBigPictureStyle_bigPictureUriIcon" +
- " - BigPictureStyle is not supported in automotive.")
- return
- }
+ skipIfPlatformDoesNotSupportNotificationStyles()
+
val pictureUri = Uri.parse("content://android.app.stubs.assets/picture_400_by_300.png")
val pictureIcon = Icon.createWithContentUri(pictureUri)
val builder = Notification.Builder(mContext, NOTIFICATION_CHANNEL_ID)
@@ -307,28 +287,16 @@ class NotificationTemplateTest : NotificationTemplateTestBase() {
checkViews(builder.createBigContentView()) {
val pictureView = requireViewByIdName<ImageView>("big_picture")
assertThat(pictureView.visibility).isEqualTo(View.VISIBLE)
-
- var expectedWidth = min(400, bigPictureWidth())
- var expectedHeight = min(300, bigPictureWidth() * 3 / 4)
- // It's possible that big picture width is configured smaller than we expect here.
- // In that situation, we need to flip the expected size.
- if (bigPictureHeight() < expectedHeight) {
- expectedHeight = bigPictureHeight()
- expectedWidth = bigPictureHeight() * 4 / 3
- }
-
- assertThat(pictureView.drawable.intrinsicWidth).isEqualTo(expectedWidth)
- assertThat(pictureView.drawable.intrinsicHeight).isEqualTo(expectedHeight)
+ assertThat(pictureView.width.toFloat())
+ .isWithin(1f)
+ .of((pictureView.height * 4 / 3).toFloat())
+ assertThat(pictureView.scaleType).isEqualTo(ImageView.ScaleType.CENTER_CROP)
}
}
@CddTest(requirement = "3.8.3.1/C-2-1")
fun testPromoteBigPicture_withBigPictureUriIcon() {
- if (isPlatformAutomotive()) {
- Log.i(TAG, "Skipping: testPromoteBigPicture_withBigPictureUriIcon" +
- " - BigPictureStyle is not supported in automotive.")
- return
- }
+ skipIfPlatformDoesNotSupportNotificationStyles()
val pictureUri = Uri.parse("content://android.app.stubs.assets/picture_800_by_600.png")
val pictureIcon = Icon.createWithContentUri(pictureUri)
val builder = Notification.Builder(mContext, NOTIFICATION_CHANNEL_ID)
@@ -343,17 +311,13 @@ class NotificationTemplateTest : NotificationTemplateTestBase() {
assertThat(iconView.width.toFloat())
.isWithin(1f)
.of((iconView.height * 4 / 3).toFloat())
- assertThat(iconView.drawable.intrinsicWidth).isEqualTo(rightIconSize())
- assertThat(iconView.drawable.intrinsicHeight).isEqualTo(rightIconSize() * 3 / 4)
+ assertThat(iconView.scaleType).isEqualTo(ImageView.ScaleType.CENTER_CROP)
}
}
fun testPromoteBigPicture_withoutLargeIcon() {
- if (isPlatformAutomotive()) {
- Log.i(TAG, "Skipping: testPromoteBigPicture_withoutLargeIcon" +
- " - BigPictureStyle is not supported in automotive.")
- return
- }
+ skipIfPlatformDoesNotSupportNotificationStyles()
+
val picture = createBitmap(40, 30)
val builder = Notification.Builder(mContext, NOTIFICATION_CHANNEL_ID)
.setSmallIcon(R.drawable.ic_media_play)
@@ -367,8 +331,7 @@ class NotificationTemplateTest : NotificationTemplateTestBase() {
assertThat(iconView.width.toFloat())
.isWithin(1f)
.of((iconView.height * 4 / 3).toFloat())
- assertThat(iconView.drawable.intrinsicWidth).isEqualTo(40)
- assertThat(iconView.drawable.intrinsicHeight).isEqualTo(30)
+ assertThat(iconView.scaleType).isEqualTo(ImageView.ScaleType.CENTER_CROP)
}
checkIconView(builder.createBigContentView()) { iconView ->
assertThat(iconView.visibility).isEqualTo(View.GONE)
@@ -376,11 +339,8 @@ class NotificationTemplateTest : NotificationTemplateTestBase() {
}
fun testPromoteBigPicture_withLargeIcon() {
- if (isPlatformAutomotive()) {
- Log.i(TAG, "Skipping: testPromoteBigPicture_withLargeIcon" +
- " - BigPictureStyle is not supported in automotive.")
- return
- }
+ skipIfPlatformDoesNotSupportNotificationStyles()
+
val picture = createBitmap(40, 30)
val icon = createBitmap(80, 65)
val builder = Notification.Builder(mContext, NOTIFICATION_CHANNEL_ID)
@@ -392,37 +352,26 @@ class NotificationTemplateTest : NotificationTemplateTestBase() {
.showBigPictureWhenCollapsed(true)
)
- // At really high densities the size of rendered icon can dip below the
- // tested size - we allow rendering of smaller icon with the same
- // aspect ratio then.
- val expectedIconWidth = minOf(rightIconSize(), 80)
- val expectedIconHeight = minOf(rightIconSize() * 65 / 80, 65)
-
checkIconView(builder.createContentView()) { iconView ->
assertThat(iconView.visibility).isEqualTo(View.VISIBLE)
assertThat(iconView.width.toFloat())
.isWithin(1f)
.of((iconView.height * 4 / 3).toFloat())
- assertThat(iconView.drawable.intrinsicWidth).isEqualTo(40)
- assertThat(iconView.drawable.intrinsicHeight).isEqualTo(30)
+ assertThat(iconView.scaleType).isEqualTo(ImageView.ScaleType.CENTER_CROP)
}
checkIconView(builder.createBigContentView()) { iconView ->
assertThat(iconView.visibility).isEqualTo(View.VISIBLE)
assertThat(iconView.width.toFloat())
.isWithin(1f)
.of((iconView.height * 80 / 65).toFloat())
- assertThat(iconView.drawable.intrinsicWidth).isEqualTo(expectedIconWidth)
- assertThat(iconView.drawable.intrinsicHeight).isEqualTo(expectedIconHeight)
+ assertThat(iconView.scaleType).isEqualTo(ImageView.ScaleType.CENTER_CROP)
}
}
@CddTest(requirement = "3.8.3.1/C-2-1")
fun testPromoteBigPicture_withBigLargeIcon() {
- if (isPlatformAutomotive()) {
- Log.i(TAG, "Skipping: testPromoteBigPicture_withBigLargeIcon" +
- " - BigPictureStyle is not supported in automotive.")
- return
- }
+ skipIfPlatformDoesNotSupportNotificationStyles()
+
val picture = createBitmap(40, 30)
val inputWidth = 400
val inputHeight = 300
@@ -436,36 +385,28 @@ class NotificationTemplateTest : NotificationTemplateTestBase() {
.showBigPictureWhenCollapsed(true)
)
- val expectedIconWidth = minOf(rightIconSize(), inputWidth)
- val expectedIconHeight = minOf(rightIconSize() * inputHeight / inputWidth, inputHeight)
-
checkIconView(builder.createContentView()) { iconView ->
assertThat(iconView.visibility).isEqualTo(View.VISIBLE)
assertThat(iconView.width.toFloat())
.isWithin(1f)
.of((iconView.height * 4 / 3).toFloat())
- assertThat(iconView.drawable.intrinsicWidth).isEqualTo(40)
- assertThat(iconView.drawable.intrinsicHeight).isEqualTo(30)
+ assertThat(iconView.scaleType).isEqualTo(ImageView.ScaleType.CENTER_CROP)
}
checkIconView(builder.createBigContentView()) { iconView ->
assertThat(iconView.visibility).isEqualTo(View.VISIBLE)
assertThat(iconView.width.toFloat())
.isWithin(1f)
.of((iconView.height * 4 / 3).toFloat())
- assertThat(iconView.drawable.intrinsicWidth).isEqualTo(expectedIconWidth)
- assertThat(iconView.drawable.intrinsicHeight).isEqualTo(expectedIconHeight)
+ assertThat(iconView.scaleType).isEqualTo(ImageView.ScaleType.CENTER_CROP)
}
assertThat(builder.build().extras.getParcelable<Bitmap>(Notification.EXTRA_PICTURE)
- !!.sameAs(picture)).isTrue()
+ !!.sameAs(picture)).isTrue()
}
@CddTest(requirement = "3.8.3.1/C-2-1")
fun testBigPicture_withBigLargeIcon_withContentUri() {
- if (isPlatformAutomotive()) {
- Log.i(TAG, "Skipping: testBigPicture_withBigLargeIcon_withContentUri" +
- " - BigPictureStyle is not supported in automotive.")
- return
- }
+ skipIfPlatformDoesNotSupportNotificationStyles()
+
val iconUri = Uri.parse("content://android.app.stubs.assets/picture_800_by_600.png")
val icon = Icon.createWithContentUri(iconUri)
val builder = Notification.Builder(mContext, NOTIFICATION_CHANNEL_ID)
@@ -477,9 +418,7 @@ class NotificationTemplateTest : NotificationTemplateTestBase() {
assertThat(iconView.width.toFloat())
.isWithin(1f)
.of((iconView.height * 4 / 3).toFloat())
-
- assertThat(iconView.drawable.intrinsicWidth).isEqualTo(rightIconSize())
- assertThat(iconView.drawable.intrinsicHeight).isEqualTo(rightIconSize() * 3 / 4)
+ assertThat(iconView.scaleType).isEqualTo(ImageView.ScaleType.CENTER_CROP)
}
}
@@ -864,39 +803,15 @@ class NotificationTemplateTest : NotificationTemplateTestBase() {
PendingIntent.getBroadcast(mContext, 0, Intent("test"), PendingIntent.FLAG_IMMUTABLE)
}
- private fun rightIconSize(): Int {
- return mContext.resources.getDimensionPixelSize(getAndroidRDimen(
- if (isLowRamDevice()) {
- "notification_right_icon_size_low_ram"
- } else {
- "notification_right_icon_size"
- }))
- }
-
- private fun bigPictureWidth(): Int {
- return mContext.resources.getDimensionPixelSize(getAndroidRDimen(
- if (isLowRamDevice()) {
- "notification_big_picture_max_width_low_ram"
- } else {
- "notification_big_picture_max_width"
- }))
- }
-
- private fun bigPictureHeight(): Int {
- return mContext.resources.getDimensionPixelSize(getAndroidRDimen(
- if (isLowRamDevice()) {
- "notification_big_picture_max_width_low_ram"
- } else {
- "notification_big_picture_max_width"
- }))
- }
-
- private fun isLowRamDevice(): Boolean {
- return mContext.getSystemService(ActivityManager::class.java).isLowRamDevice()
- }
-
- private fun isPlatformAutomotive(): Boolean {
- return mContext.packageManager.hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE)
+ /**
+ * Assume that we're running on the platform that supports styled notifications.
+ *
+ * If the current platform does not support notification styles, skip this test without failure.
+ */
+ private fun skipIfPlatformDoesNotSupportNotificationStyles() {
+ Assume.assumeFalse("Current platform does not support notification styles.",
+ mContext.packageManager.hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE) ||
+ mContext.packageManager.hasSystemFeature(PackageManager.FEATURE_LEANBACK))
}
companion object {
diff --git a/tests/location/location_fine/src/android/location/cts/fine/LocationManagerFineTest.java b/tests/location/location_fine/src/android/location/cts/fine/LocationManagerFineTest.java
index b741a2e31b3..af807bf728c 100644
--- a/tests/location/location_fine/src/android/location/cts/fine/LocationManagerFineTest.java
+++ b/tests/location/location_fine/src/android/location/cts/fine/LocationManagerFineTest.java
@@ -754,6 +754,7 @@ public class LocationManagerFineTest {
}
@Test
+ @AppModeFull(reason = "Instant apps can't access ACTION_BATTERY_CHANGED intent")
public void testRequestLocationUpdates_BatterySaver_GpsDisabledScreenOff() throws Exception {
// battery saver is unsupported on auto and tv
assumeFalse(mContext.getPackageManager().hasSystemFeature(FEATURE_AUTOMOTIVE));
@@ -816,6 +817,7 @@ public class LocationManagerFineTest {
}
@Test
+ @AppModeFull(reason = "Instant apps can't access ACTION_BATTERY_CHANGED intent")
public void testRequestLocationUpdates_BatterySaver_AllDisabledScreenOff() throws Exception {
// battery saver is unsupported on auto and tv
assumeFalse(mContext.getPackageManager().hasSystemFeature(FEATURE_AUTOMOTIVE));
@@ -859,6 +861,7 @@ public class LocationManagerFineTest {
}
@Test
+ @AppModeFull(reason = "Instant apps can't access ACTION_BATTERY_CHANGED intent")
public void testRequestLocationUpdates_BatterySaver_ThrottleScreenOff() throws Exception {
// battery saver is unsupported on auto and tv
assumeFalse(mContext.getPackageManager().hasSystemFeature(FEATURE_AUTOMOTIVE));
diff --git a/tests/tests/media/codec/src/android/media/codec/cts/MediaCodecCapabilitiesTest.java b/tests/tests/media/codec/src/android/media/codec/cts/MediaCodecCapabilitiesTest.java
index 644ecc6aa9f..0c33f93a70d 100644
--- a/tests/tests/media/codec/src/android/media/codec/cts/MediaCodecCapabilitiesTest.java
+++ b/tests/tests/media/codec/src/android/media/codec/cts/MediaCodecCapabilitiesTest.java
@@ -750,15 +750,7 @@ public class MediaCodecCapabilitiesTest extends MediaPlayerTestBase {
int minFrameRate = Math.max(vcaps.getSupportedFrameRatesFor(minWidth, minHeight)
.getLower().intValue(), 1);
format = MediaFormat.createVideoFormat(mime, minWidth, minHeight);
- int colorFormat = caps.colorFormats[0];
- for (int i = 0; i < caps.colorFormats.length; ++i) {
- colorFormat = caps.colorFormats[i];
- // Avoid COLOR_FormatSurface as we will be configuring the codec without a surface.
- if (colorFormat != CodecCapabilities.COLOR_FormatSurface) {
- break;
- }
- }
- format.setInteger(MediaFormat.KEY_COLOR_FORMAT, colorFormat);
+ format.setInteger(MediaFormat.KEY_COLOR_FORMAT, caps.colorFormats[0]);
format.setInteger(MediaFormat.KEY_BIT_RATE, minBitrate);
format.setInteger(MediaFormat.KEY_FRAME_RATE, minFrameRate);
format.setInteger(MediaFormat.KEY_I_FRAME_INTERVAL, IFRAME_INTERVAL);
diff --git a/tests/tests/notificationlegacy/notificationlegacy30/src/android/app/notification/legacy30/cts/NotificationTemplateApi30Test.kt b/tests/tests/notificationlegacy/notificationlegacy30/src/android/app/notification/legacy30/cts/NotificationTemplateApi30Test.kt
index 29638bded5b..e0895ef03f9 100644
--- a/tests/tests/notificationlegacy/notificationlegacy30/src/android/app/notification/legacy30/cts/NotificationTemplateApi30Test.kt
+++ b/tests/tests/notificationlegacy/notificationlegacy30/src/android/app/notification/legacy30/cts/NotificationTemplateApi30Test.kt
@@ -19,11 +19,11 @@ import android.R
import android.app.Notification
import android.app.cts.NotificationTemplateTestBase
import android.content.pm.PackageManager
-import android.util.Log
import android.view.View
import android.widget.ImageView
import android.widget.TextView
import com.google.common.truth.Truth.assertThat
+import org.junit.Assume
class NotificationTemplateApi30Test : NotificationTemplateTestBase() {
@@ -58,11 +58,8 @@ class NotificationTemplateApi30Test : NotificationTemplateTestBase() {
}
fun testWideIcon_inBigPicture_isSquareForLegacyApps() {
- if (isPlatformAutomotive()) {
- Log.i(TAG, "Skipping: testWideIcon_inBigPicture_isSquareForLegacyApps" +
- " - BigPictureStyle is not supported in automotive.")
- return
- }
+ skipIfPlatformDoesNotSupportNotificationStyles()
+
val picture = createBitmap(40, 30)
val icon = createBitmap(200, 100)
val views = Notification.Builder(mContext, NOTIFICATION_CHANNEL_ID)
@@ -92,11 +89,8 @@ class NotificationTemplateApi30Test : NotificationTemplateTestBase() {
}
fun testPromoteBigPicture_withoutLargeIcon() {
- if (isPlatformAutomotive()) {
- Log.i(TAG, "Skipping: testPromoteBigPicture_withoutLargeIcon" +
- " - BigPictureStyle is not supported in automotive.")
- return
- }
+ skipIfPlatformDoesNotSupportNotificationStyles()
+
val picture = createBitmap(40, 30)
val builder = Notification.Builder(mContext, NOTIFICATION_CHANNEL_ID)
.setSmallIcon(R.drawable.ic_media_play)
@@ -121,11 +115,8 @@ class NotificationTemplateApi30Test : NotificationTemplateTestBase() {
}
fun testPromoteBigPicture_withLargeIcon() {
- if (isPlatformAutomotive()) {
- Log.i(TAG, "Skipping: testPromoteBigPicture_withLargeIcon" +
- " - BigPictureStyle is not supported in automotive.")
- return
- }
+ skipIfPlatformDoesNotSupportNotificationStyles()
+
val picture = createBitmap(40, 30)
val icon = createBitmap(80, 65)
val builder = Notification.Builder(mContext, NOTIFICATION_CHANNEL_ID)
@@ -137,36 +128,24 @@ class NotificationTemplateApi30Test : NotificationTemplateTestBase() {
.showBigPictureWhenCollapsed(true)
)
- // At really high densities the size of rendered icon can dip below the
- // tested size - we allow rendering of smaller icon with the same
- // aspect ratio then.
- val expectedIconWidth = minOf(rightIconSize(), 80)
- val expectedIconHeight = minOf(rightIconSize() * 65 / 80, 65)
-
// the promoted big picture is shown with enlarged aspect ratio
checkIconView(builder.createContentView()) { iconView ->
assertThat(iconView.visibility).isEqualTo(View.VISIBLE)
assertThat(iconView.width.toFloat())
.isWithin(1f)
.of((iconView.height * 4 / 3).toFloat())
- assertThat(iconView.drawable.intrinsicWidth).isEqualTo(40)
- assertThat(iconView.drawable.intrinsicHeight).isEqualTo(30)
}
// because it doesn't target S, the icon is still shown in a square
checkIconView(builder.createBigContentView()) { iconView ->
assertThat(iconView.visibility).isEqualTo(View.VISIBLE)
assertThat(iconView.width).isEqualTo(iconView.height)
- assertThat(iconView.drawable.intrinsicWidth).isEqualTo(expectedIconWidth)
- assertThat(iconView.drawable.intrinsicHeight).isEqualTo(expectedIconHeight)
+ assertThat(iconView.scaleType).isEqualTo(ImageView.ScaleType.CENTER_CROP)
}
}
fun testPromoteBigPicture_withBigLargeIcon() {
- if (isPlatformAutomotive()) {
- Log.i(TAG, "Skipping: testPromoteBigPicture_withBigLargeIcon" +
- " - BigPictureStyle is not supported in automotive.")
- return
- }
+ skipIfPlatformDoesNotSupportNotificationStyles()
+
val picture = createBitmap(40, 30)
val inputWidth = 400
val inputHeight = 300
@@ -180,24 +159,19 @@ class NotificationTemplateApi30Test : NotificationTemplateTestBase() {
.showBigPictureWhenCollapsed(true)
)
- val expectedIconWidth = minOf(rightIconSize(), inputWidth)
- val expectedIconHeight = minOf(rightIconSize() * inputHeight / inputWidth, inputHeight)
-
// the promoted big picture is shown with enlarged aspect ratio
checkIconView(builder.createContentView()) { iconView ->
assertThat(iconView.visibility).isEqualTo(View.VISIBLE)
assertThat(iconView.width.toFloat())
.isWithin(1f)
.of((iconView.height * 4 / 3).toFloat())
- assertThat(iconView.drawable.intrinsicWidth).isEqualTo(40)
- assertThat(iconView.drawable.intrinsicHeight).isEqualTo(30)
+ assertThat(iconView.scaleType).isEqualTo(ImageView.ScaleType.CENTER_CROP)
}
// because it doesn't target S, the icon is still shown in a square
checkIconView(builder.createBigContentView()) { iconView ->
assertThat(iconView.visibility).isEqualTo(View.VISIBLE)
assertThat(iconView.width).isEqualTo(iconView.height)
- assertThat(iconView.drawable.intrinsicWidth).isEqualTo(expectedIconWidth)
- assertThat(iconView.drawable.intrinsicHeight).isEqualTo(expectedIconHeight)
+ assertThat(iconView.scaleType).isEqualTo(ImageView.ScaleType.CENTER_CROP)
}
}
@@ -314,17 +288,19 @@ class NotificationTemplateApi30Test : NotificationTemplateTestBase() {
}
}
- private fun rightIconSize(): Int {
- return mContext.resources.getDimensionPixelSize(
- getAndroidRDimen("notification_right_icon_size"))
- }
-
- private fun isPlatformAutomotive(): Boolean {
- return mContext.packageManager.hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE)
+ /**
+ * Assume that we're running on the platform that supports styled notifications.
+ *
+ * If the current platform does not support notification styles, skip this test without failure.
+ */
+ private fun skipIfPlatformDoesNotSupportNotificationStyles() {
+ Assume.assumeFalse("Current platform does not support notification styles.",
+ mContext.packageManager.hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE) ||
+ mContext.packageManager.hasSystemFeature(PackageManager.FEATURE_LEANBACK))
}
companion object {
val TAG = NotificationTemplateApi30Test::class.java.simpleName
const val NOTIFICATION_CHANNEL_ID = "NotificationTemplateApi30Test"
}
-} \ No newline at end of file
+}