Add @UsesReflection to FeatureFactory reflection usage

Ensure FeatureFactory implementations are kept using a @UsesReflection
annotation at the callsite where they are instantiated via reflection.

Bug: 272041779
Test: m + validate FeatureFactoryImpl is kept
Change-Id: Ia9b8c4fd2c438805f33561dcacd5c10ed49dee19
This commit is contained in:
Jared Duke
2023-05-16 23:39:17 +00:00
parent aeb630b1f5
commit 2278b3f952
2 changed files with 12 additions and 0 deletions

View File

@@ -51,6 +51,9 @@ import com.android.settings.vpn2.AdvancedVpnFeatureProvider;
import com.android.settings.wifi.WifiTrackerLibProvider;
import com.android.settings.wifi.factory.WifiFeatureProvider;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
import com.android.tools.r8.keepanno.annotations.KeepItemKind;
import com.android.tools.r8.keepanno.annotations.KeepTarget;
import com.android.tools.r8.keepanno.annotations.UsesReflection;
/**
* Abstract class for creating feature controllers. Allows OEM implementations to define their own
@@ -70,6 +73,14 @@ public abstract class FeatureFactory {
* already exist. Uses the value of {@link R.string#config_featureFactory} to instantiate
* a factory implementation.
*/
@UsesReflection(
description = "This method instantiates subclasses of FeatureFactory via reflection.",
value = {
@KeepTarget(
kind = KeepItemKind.CLASS_AND_MEMBERS,
extendsClassConstant = FeatureFactory.class,
methodName = "<init>")
})
public static FeatureFactory getFactory(Context context) {
if (sFactory != null) {
return sFactory;