diff options
Diffstat (limited to 'adservices/tests/test-util/side-less/com/android/adservices/common')
16 files changed, 82 insertions, 17 deletions
diff --git a/adservices/tests/test-util/side-less/com/android/adservices/common/AbstractAdServicesFlagsSetterRule.java b/adservices/tests/test-util/side-less/com/android/adservices/common/AbstractAdServicesFlagsSetterRule.java index 6557027910..c0c704da18 100644 --- a/adservices/tests/test-util/side-less/com/android/adservices/common/AbstractAdServicesFlagsSetterRule.java +++ b/adservices/tests/test-util/side-less/com/android/adservices/common/AbstractAdServicesFlagsSetterRule.java @@ -267,6 +267,18 @@ abstract class AbstractAdServicesFlagsSetterRule<T extends AbstractAdServicesFla }); } + public T setDebugUxFlagsForRvcUx() { + return runOrCache( + "setDebugUxFlagsForRvcUx()", + () -> { + if (!isAtLeastS() && isAtLeastR()) { + setFlag(FlagsConstants.KEY_CONSENT_NOTIFICATION_ACTIVITY_DEBUG_MODE, true); + setFlag(FlagsConstants.KEY_DEBUG_UX, "RVC_UX"); + return; + } + }); + } + //////////////////////////////////////////////////////////////////////////////////////////////// // NOTE: DO NOT add new setXyz() methods, unless they need non-trivial logic. Instead, let // // your test call setFlags(flagName) (statically import FlagsConstant.flagName), which will // diff --git a/adservices/tests/test-util/side-less/com/android/adservices/common/AbstractFlagsSetterRule.java b/adservices/tests/test-util/side-less/com/android/adservices/common/AbstractFlagsSetterRule.java index 9d9fa631cb..8400a12eee 100644 --- a/adservices/tests/test-util/side-less/com/android/adservices/common/AbstractFlagsSetterRule.java +++ b/adservices/tests/test-util/side-less/com/android/adservices/common/AbstractFlagsSetterRule.java @@ -369,8 +369,12 @@ abstract class AbstractFlagsSetterRule<T extends AbstractFlagsSetterRule<T>> imp /** Gets the device's SDK level. */ protected abstract int getDeviceSdk(); + protected boolean isAtLeastR() { + return getDeviceSdk() >= 30; + } + protected boolean isAtLeastS() { - return getDeviceSdk() > 31; + return getDeviceSdk() >= 31; } protected boolean isAtLeastT() { @@ -385,7 +389,13 @@ abstract class AbstractFlagsSetterRule<T extends AbstractFlagsSetterRule<T>> imp // Set the annotated flags with the specified value for a particular test method. protected void setAnnotatedFlags(Description description) { - for (Annotation annotation : description.getAnnotations()) { + List<Annotation> annotations = getAllFlagAnnotations(description); + + // Apply the annotations in the reverse order. First apply from the super classes, test + // class and then test method. If same annotated flag is present in class and test + // method, test method takes higher priority. + for (int i = annotations.size() - 1; i >= 0; i--) { + Annotation annotation = annotations.get(i); if (annotation instanceof SetFlagEnabled) { setAnnotatedFlag((SetFlagEnabled) annotation); } else if (annotation instanceof SetFlagsEnabled) { @@ -416,7 +426,6 @@ abstract class AbstractFlagsSetterRule<T extends AbstractFlagsSetterRule<T>> imp setAnnotatedFlag((SetStringFlags) annotation); } } - // TODO(b/300146214) Add code to scan class / superclasses flag annotations. } private T setOrCacheFlag(String name, String value) { @@ -542,6 +551,50 @@ abstract class AbstractFlagsSetterRule<T extends AbstractFlagsSetterRule<T>> imp } } + private boolean isFlagAnnotationPresent(Annotation annotation) { + return (annotation instanceof SetFlagEnabled) + || (annotation instanceof SetFlagsEnabled) + || (annotation instanceof SetFlagDisabled) + || (annotation instanceof SetFlagsDisabled) + || (annotation instanceof SetIntegerFlag) + || (annotation instanceof SetIntegerFlags) + || (annotation instanceof SetLongFlag) + || (annotation instanceof SetLongFlags) + || (annotation instanceof SetFloatFlag) + || (annotation instanceof SetFloatFlags) + || (annotation instanceof SetDoubleFlag) + || (annotation instanceof SetDoubleFlags) + || (annotation instanceof SetStringFlag) + || (annotation instanceof SetStringFlags); + } + + private List<Annotation> getAllFlagAnnotations(Description description) { + // TODO(b/318893752): Move this to a helper function to scan test method, class and + // superclasses for annotations. + List<Annotation> result = new ArrayList<>(); + for (Annotation testMethodAnnotation : description.getAnnotations()) { + if (isFlagAnnotationPresent(testMethodAnnotation)) { + result.add(testMethodAnnotation); + } + } + + // Get all the flag based annotations from test class and super classes + Class<?> clazz = description.getTestClass(); + do { + Annotation[] classAnnotations = clazz.getAnnotations(); + if (classAnnotations != null) { + for (Annotation annotation : classAnnotations) { + if (isFlagAnnotationPresent(annotation)) { + result.add(annotation); + } + } + } + clazz = clazz.getSuperclass(); + } while (clazz != null); + + return result; + } + // Single SetFlagEnabled annotations present private void setAnnotatedFlag(SetFlagEnabled annotation) { setFlag(annotation.value(), true); diff --git a/adservices/tests/test-util/side-less/com/android/adservices/common/annotations/SetDoubleFlag.java b/adservices/tests/test-util/side-less/com/android/adservices/common/annotations/SetDoubleFlag.java index 4b24b84433..93988e09fb 100644 --- a/adservices/tests/test-util/side-less/com/android/adservices/common/annotations/SetDoubleFlag.java +++ b/adservices/tests/test-util/side-less/com/android/adservices/common/annotations/SetDoubleFlag.java @@ -28,7 +28,7 @@ import java.lang.annotation.Target; * <p>This should be used with {@code AdServicesFlagsSetterRule}. */ @Retention(RetentionPolicy.RUNTIME) -@Target({ElementType.METHOD}) +@Target({ElementType.METHOD, ElementType.TYPE}) @Repeatable(SetDoubleFlags.class) public @interface SetDoubleFlag { /** Name of the flag. */ diff --git a/adservices/tests/test-util/side-less/com/android/adservices/common/annotations/SetDoubleFlags.java b/adservices/tests/test-util/side-less/com/android/adservices/common/annotations/SetDoubleFlags.java index f152396800..7415bb1055 100644 --- a/adservices/tests/test-util/side-less/com/android/adservices/common/annotations/SetDoubleFlags.java +++ b/adservices/tests/test-util/side-less/com/android/adservices/common/annotations/SetDoubleFlags.java @@ -22,7 +22,7 @@ import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Retention(RetentionPolicy.RUNTIME) -@Target({ElementType.METHOD}) +@Target({ElementType.METHOD, ElementType.TYPE}) public @interface SetDoubleFlags { SetDoubleFlag[] value(); } diff --git a/adservices/tests/test-util/side-less/com/android/adservices/common/annotations/SetFlagDisabled.java b/adservices/tests/test-util/side-less/com/android/adservices/common/annotations/SetFlagDisabled.java index a62d8b0762..a8d3bddce2 100644 --- a/adservices/tests/test-util/side-less/com/android/adservices/common/annotations/SetFlagDisabled.java +++ b/adservices/tests/test-util/side-less/com/android/adservices/common/annotations/SetFlagDisabled.java @@ -29,7 +29,7 @@ import java.lang.annotation.Target; * in the test to false. */ @Retention(RetentionPolicy.RUNTIME) -@Target({ElementType.METHOD}) +@Target({ElementType.METHOD, ElementType.TYPE}) @Repeatable(SetFlagsDisabled.class) public @interface SetFlagDisabled { /** Name of the flag. */ diff --git a/adservices/tests/test-util/side-less/com/android/adservices/common/annotations/SetFlagEnabled.java b/adservices/tests/test-util/side-less/com/android/adservices/common/annotations/SetFlagEnabled.java index bdc0ae77db..ae041a7d00 100644 --- a/adservices/tests/test-util/side-less/com/android/adservices/common/annotations/SetFlagEnabled.java +++ b/adservices/tests/test-util/side-less/com/android/adservices/common/annotations/SetFlagEnabled.java @@ -29,7 +29,7 @@ import java.lang.annotation.Target; * in the test to true. */ @Retention(RetentionPolicy.RUNTIME) -@Target({ElementType.METHOD}) +@Target({ElementType.METHOD, ElementType.TYPE}) @Repeatable(SetFlagsEnabled.class) public @interface SetFlagEnabled { /** Name of the flag. */ diff --git a/adservices/tests/test-util/side-less/com/android/adservices/common/annotations/SetFlagsDisabled.java b/adservices/tests/test-util/side-less/com/android/adservices/common/annotations/SetFlagsDisabled.java index 2f470e2a34..361950b094 100644 --- a/adservices/tests/test-util/side-less/com/android/adservices/common/annotations/SetFlagsDisabled.java +++ b/adservices/tests/test-util/side-less/com/android/adservices/common/annotations/SetFlagsDisabled.java @@ -22,7 +22,7 @@ import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Retention(RetentionPolicy.RUNTIME) -@Target({ElementType.METHOD}) +@Target({ElementType.METHOD, ElementType.TYPE}) public @interface SetFlagsDisabled { SetFlagDisabled[] value(); } diff --git a/adservices/tests/test-util/side-less/com/android/adservices/common/annotations/SetFlagsEnabled.java b/adservices/tests/test-util/side-less/com/android/adservices/common/annotations/SetFlagsEnabled.java index bb67d1182b..7e197c8de5 100644 --- a/adservices/tests/test-util/side-less/com/android/adservices/common/annotations/SetFlagsEnabled.java +++ b/adservices/tests/test-util/side-less/com/android/adservices/common/annotations/SetFlagsEnabled.java @@ -22,7 +22,7 @@ import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Retention(RetentionPolicy.RUNTIME) -@Target({ElementType.METHOD}) +@Target({ElementType.METHOD, ElementType.TYPE}) public @interface SetFlagsEnabled { SetFlagEnabled[] value(); } diff --git a/adservices/tests/test-util/side-less/com/android/adservices/common/annotations/SetFloatFlag.java b/adservices/tests/test-util/side-less/com/android/adservices/common/annotations/SetFloatFlag.java index 4f404404d2..421f79cbb9 100644 --- a/adservices/tests/test-util/side-less/com/android/adservices/common/annotations/SetFloatFlag.java +++ b/adservices/tests/test-util/side-less/com/android/adservices/common/annotations/SetFloatFlag.java @@ -28,7 +28,7 @@ import java.lang.annotation.Target; * <p>This should be used with {@code AdServicesFlagsSetterRule}. */ @Retention(RetentionPolicy.RUNTIME) -@Target({ElementType.METHOD}) +@Target({ElementType.METHOD, ElementType.TYPE}) @Repeatable(SetFloatFlags.class) public @interface SetFloatFlag { /** Name of the flag. */ diff --git a/adservices/tests/test-util/side-less/com/android/adservices/common/annotations/SetFloatFlags.java b/adservices/tests/test-util/side-less/com/android/adservices/common/annotations/SetFloatFlags.java index 0e839c2abb..a15f4a5787 100644 --- a/adservices/tests/test-util/side-less/com/android/adservices/common/annotations/SetFloatFlags.java +++ b/adservices/tests/test-util/side-less/com/android/adservices/common/annotations/SetFloatFlags.java @@ -22,7 +22,7 @@ import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Retention(RetentionPolicy.RUNTIME) -@Target({ElementType.METHOD}) +@Target({ElementType.METHOD, ElementType.TYPE}) public @interface SetFloatFlags { SetFloatFlag[] value(); } diff --git a/adservices/tests/test-util/side-less/com/android/adservices/common/annotations/SetIntegerFlag.java b/adservices/tests/test-util/side-less/com/android/adservices/common/annotations/SetIntegerFlag.java index e02b72f794..c5895be1d5 100644 --- a/adservices/tests/test-util/side-less/com/android/adservices/common/annotations/SetIntegerFlag.java +++ b/adservices/tests/test-util/side-less/com/android/adservices/common/annotations/SetIntegerFlag.java @@ -28,7 +28,7 @@ import java.lang.annotation.Target; * <p>This should be used with {@code AdServicesFlagsSetterRule}. */ @Retention(RetentionPolicy.RUNTIME) -@Target({ElementType.METHOD}) +@Target({ElementType.METHOD, ElementType.TYPE}) @Repeatable(SetIntegerFlags.class) public @interface SetIntegerFlag { /** Name of the flag. */ diff --git a/adservices/tests/test-util/side-less/com/android/adservices/common/annotations/SetIntegerFlags.java b/adservices/tests/test-util/side-less/com/android/adservices/common/annotations/SetIntegerFlags.java index b8386707fb..cc76a947e1 100644 --- a/adservices/tests/test-util/side-less/com/android/adservices/common/annotations/SetIntegerFlags.java +++ b/adservices/tests/test-util/side-less/com/android/adservices/common/annotations/SetIntegerFlags.java @@ -22,7 +22,7 @@ import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Retention(RetentionPolicy.RUNTIME) -@Target({ElementType.METHOD}) +@Target({ElementType.METHOD, ElementType.TYPE}) public @interface SetIntegerFlags { SetIntegerFlag[] value(); } diff --git a/adservices/tests/test-util/side-less/com/android/adservices/common/annotations/SetLongFlag.java b/adservices/tests/test-util/side-less/com/android/adservices/common/annotations/SetLongFlag.java index 473758cd28..bee66b1427 100644 --- a/adservices/tests/test-util/side-less/com/android/adservices/common/annotations/SetLongFlag.java +++ b/adservices/tests/test-util/side-less/com/android/adservices/common/annotations/SetLongFlag.java @@ -28,7 +28,7 @@ import java.lang.annotation.Target; * <p>This should be used with {@code AdServicesFlagsSetterRule}. */ @Retention(RetentionPolicy.RUNTIME) -@Target({ElementType.METHOD}) +@Target({ElementType.METHOD, ElementType.TYPE}) @Repeatable(SetLongFlags.class) public @interface SetLongFlag { /** Name of the flag. */ diff --git a/adservices/tests/test-util/side-less/com/android/adservices/common/annotations/SetLongFlags.java b/adservices/tests/test-util/side-less/com/android/adservices/common/annotations/SetLongFlags.java index 46303a573b..38309e88dc 100644 --- a/adservices/tests/test-util/side-less/com/android/adservices/common/annotations/SetLongFlags.java +++ b/adservices/tests/test-util/side-less/com/android/adservices/common/annotations/SetLongFlags.java @@ -22,7 +22,7 @@ import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Retention(RetentionPolicy.RUNTIME) -@Target({ElementType.METHOD}) +@Target({ElementType.METHOD, ElementType.TYPE}) public @interface SetLongFlags { SetLongFlag[] value(); } diff --git a/adservices/tests/test-util/side-less/com/android/adservices/common/annotations/SetStringFlag.java b/adservices/tests/test-util/side-less/com/android/adservices/common/annotations/SetStringFlag.java index 1b46d431bd..bb3685892d 100644 --- a/adservices/tests/test-util/side-less/com/android/adservices/common/annotations/SetStringFlag.java +++ b/adservices/tests/test-util/side-less/com/android/adservices/common/annotations/SetStringFlag.java @@ -28,7 +28,7 @@ import java.lang.annotation.Target; * <p>This should be used with {@code AdServicesFlagsSetterRule}. */ @Retention(RetentionPolicy.RUNTIME) -@Target({ElementType.METHOD}) +@Target({ElementType.METHOD, ElementType.TYPE}) @Repeatable(SetStringFlags.class) public @interface SetStringFlag { /** Name of the flag. */ diff --git a/adservices/tests/test-util/side-less/com/android/adservices/common/annotations/SetStringFlags.java b/adservices/tests/test-util/side-less/com/android/adservices/common/annotations/SetStringFlags.java index bf39a4d609..f4bac410b1 100644 --- a/adservices/tests/test-util/side-less/com/android/adservices/common/annotations/SetStringFlags.java +++ b/adservices/tests/test-util/side-less/com/android/adservices/common/annotations/SetStringFlags.java @@ -22,7 +22,7 @@ import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Retention(RetentionPolicy.RUNTIME) -@Target({ElementType.METHOD}) +@Target({ElementType.METHOD, ElementType.TYPE}) public @interface SetStringFlags { SetStringFlag[] value(); } |