Add support for Android Manifest <activity-alias> element

This commit is contained in:
Ed Minnix
2022-09-23 21:18:31 -04:00
parent 4c270fca91
commit b4f08f8b91

View File

@@ -131,6 +131,35 @@ class AndroidActivityXmlElement extends AndroidComponentXmlElement {
AndroidActivityXmlElement() { this.getName() = "activity" }
}
/**
* An `<activity-alias>` element in an Android manifest file.
*/
class AndroidActivityAliasXmlElement extends AndroidComponentXmlElement {
AndroidActivityAliasXmlElement() { this.getName() = "activity-alias" }
/**
* Get and resolve the name of the target activity from the `android:targetActivity` attribute.
*/
string getResolvedTargetActivityName() {
exists(AndroidXmlAttribute attr |
attr = this.getAnAttribute() and attr.getName() = "targetActivity"
|
result = getResolvedIdentifier(attr)
)
}
/**
* Gets the `<activity>` element referenced by the `android:targetActivity` attribute.
*/
AndroidActivityXmlElement getTarget() {
exists(AndroidActivityXmlElement activity |
activity.getResolvedComponentName() = this.getResolvedTargetActivityName()
|
result = activity
)
}
}
/**
* A `<service>` element in an Android manifest file.
*/
@@ -235,7 +264,7 @@ class AndroidPathPermissionXmlElement extends XmlElement {
class AndroidComponentXmlElement extends XmlElement {
AndroidComponentXmlElement() {
this.getParent() instanceof AndroidApplicationXmlElement and
this.getName().regexpMatch("(activity|service|receiver|provider)")
this.getName().regexpMatch("(activity|activity-alias|service|receiver|provider)")
}
/**