
org.robolectric.manifest.ActivityData Maven / Gradle / Ivy
package org.robolectric.manifest;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class ActivityData {
private static final String ALLOW_TASK_REPARENTING = "allowTaskReparenting";
private static final String ALWAYS_RETAIN_TASK_STATE = "alwaysRetainTaskState";
private static final String CLEAR_TASK_ON_LAUNCH = "clearTaskOnLaunch";
private static final String CONFIG_CHANGES = "configChanges";
private static final String ENABLED = "enabled";
private static final String EXCLUDE_FROM_RECENTS = "excludeFromRecents";
private static final String EXPORTED = "exported";
private static final String FINISH_ON_TASK_LAUNCH = "finishOnTaskLaunch";
private static final String HARDWARE_ACCELERATED = "hardwareAccelerated";
private static final String LABEL = "label";
private static final String LAUNCH_MODE = "launchMode";
private static final String MULTIPROCESS = "multiprocess";
private static final String NAME = "name";
private static final String NO_HISTORY = "noHistory";
private static final String PARENT_ACTIVITY_NAME = "parentActivityName";
private static final String PERMISSION = "permission";
private static final String PROCESS = "process";
private static final String SCREEN_ORIENTATION = "screenOrientation";
private static final String STATE_NOT_NEEDED = "stateNotNeeded";
private static final String TARGET_ACTIVITY = "targetActivity";
private static final String TASK_AFFINITY = "taskAffinity";
private static final String THEME = "theme";
private static final String UI_OPTIONS = "uiOptions";
private static final String WINDOW_SOFT_INPUT_MODE = "windowSoftInputMode";
private final List intentFilters;
private final HashMap attrs;
// Non-null only for activity-alias'es.
private final ActivityData targetActivity;
/** XML Namespace used for android. */
private final String xmlns;
private final MetaData metaData;
public ActivityData(Map attrMap, List intentFilters) {
this("android", attrMap, intentFilters);
}
public ActivityData(
String xmlns, Map attrMap, List intentFilters) {
this(xmlns, attrMap, intentFilters, null, null);
}
public ActivityData(
String xmlns,
Map attrMap,
List intentFilters,
ActivityData targetActivity,
MetaData metaData) {
this.xmlns = xmlns;
attrs = new HashMap<>();
attrs.putAll(attrMap);
this.intentFilters = new ArrayList<>(intentFilters);
this.targetActivity = targetActivity;
this.metaData = metaData;
}
public boolean isAllowTaskReparenting() {
return getBooleanAttr(withXMLNS(ALLOW_TASK_REPARENTING), false);
}
public boolean isAlwaysRetainTaskState() {
return getBooleanAttr(withXMLNS(ALWAYS_RETAIN_TASK_STATE), false);
}
public boolean isClearTaskOnLaungh() {
return getBooleanAttr(withXMLNS(CLEAR_TASK_ON_LAUNCH), false);
}
public String getConfigChanges() {
return attrs.get(withXMLNS(CONFIG_CHANGES));
}
public boolean isEnabled() {
return getBooleanAttr(withXMLNS(ENABLED), true);
}
public boolean isExcludedFromRecents() {
return getBooleanAttr(withXMLNS(EXCLUDE_FROM_RECENTS), false);
}
public boolean isExported() {
boolean defaultValue = !intentFilters.isEmpty();
return getBooleanAttr(withXMLNS(EXPORTED), defaultValue);
}
public boolean isFinishOnTaskLaunch() {
return getBooleanAttr(withXMLNS(FINISH_ON_TASK_LAUNCH), false);
}
public boolean isHardwareAccelerated() {
return getBooleanAttr(withXMLNS(HARDWARE_ACCELERATED), false);
}
/* TODO: public boolean getIcon() {} */
public String getLabel() {
return attrs.get(withXMLNS(LABEL));
}
public String getLaunchMode() {
return attrs.get(withXMLNS(LAUNCH_MODE));
}
public boolean isMultiprocess() {
return getBooleanAttr(withXMLNS(MULTIPROCESS), false);
}
public String getName() {
return attrs.get(withXMLNS(NAME));
}
public boolean isNoHistory() {
return getBooleanAttr(withXMLNS(NO_HISTORY), false);
}
public String getParentActivityName() {
return attrs.get(withXMLNS(PARENT_ACTIVITY_NAME));
}
public String getPermission() {
return attrs.get(withXMLNS(PERMISSION));
}
public String getProcess() {
return attrs.get(withXMLNS(PROCESS));
}
public String getScreenOrientation() {
return attrs.get(withXMLNS(SCREEN_ORIENTATION));
}
public boolean isStateNotNeeded() {
return getBooleanAttr(withXMLNS(STATE_NOT_NEEDED), false);
}
public String getTargetActivityName() {
return attrs.get(withXMLNS(TARGET_ACTIVITY));
}
public String getTaskAffinity() {
return attrs.get(withXMLNS(TASK_AFFINITY));
}
/**
* Convenience accessor for value of android:THEME attribute.
*
* @return The theme attribute.
*/
public String getThemeRef() {
return attrs.get(withXMLNS(THEME));
}
public String getUIOptions() {
return attrs.get(withXMLNS(UI_OPTIONS));
}
public String getWindowSoftInputMode() {
return attrs.get(withXMLNS(WINDOW_SOFT_INPUT_MODE));
}
private boolean getBooleanAttr(String n, boolean defaultValue) {
return (attrs.containsKey(n) ? Boolean.parseBoolean(attrs.get(n)) : defaultValue);
}
private String withXMLNS(String attr) {
return withXMLNS(xmlns, attr);
}
/**
* Get the map for all attributes defined for the activity XML.
*
* @return map of attributes names to values from the manifest. Not null.
*/
public Map getAllAttributes() {
return attrs;
}
/**
* Get the intent filters defined for activity.
*
* @return A list of intent filters. Not null.
*/
public List getIntentFilters() {
return intentFilters;
}
public MetaData getMetaData() {
return metaData;
}
public ActivityData getTargetActivity() {
return targetActivity;
}
private static String withXMLNS(String xmlns, String attr) {
return String.format("%s:%s", xmlns, attr);
}
public static String getNameAttr(String xmlns) {
return withXMLNS(xmlns, NAME);
}
public static String getTargetAttr(String xmlns) {
return withXMLNS("android", TARGET_ACTIVITY);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy