blob: d26499af296264fefbd703c1e4e43f023f2ab345 [file] [log] [blame]
package org.robolectric.annotation;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* A {@link org.robolectric.pluginapi.config.Configurer} annotation for controlling how
* Robolectric executes {@code PackageManager#getInstallerPackageName} method.
*
* 'getInstallerPackageName' method in PackageManager must throw IllegalArgumentException if the
* installer package is not present. The legacy robolectric behavior returns a null value for these
* cases.
*
* This annotation can be applied to tests to have Robolectric perform the legacy mechanism of
* not throwing IllegalArgumentException and instead return 'null', when installer package name is
* not found.
*
* This annotation will be deleted in a forthcoming Robolectric release.
*/
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.PACKAGE, ElementType.TYPE, ElementType.METHOD})
public @interface GetInstallerPackageNameMode {
/**
* Specifies the different {@code ShadowApplicationPackageManager#getInstallerPackageName} modes.
*/
enum Mode {
/**
* Robolectric's prior behavior when calling getInstallerPackageName method.
*/
LEGACY,
/**
* The new, real behavior when calling getInstallerPackageName method.
*/
REALISTIC,
}
Mode value();
/**
* Optional string for storing the issue / bug id tracking the fixing of the affected tests and
* thus removal of this annotation.
*/
String issueId() default "";
}