diff --git a/src/com/android/settings/applications/ApplicationFeatureProvider.java b/src/com/android/settings/applications/ApplicationFeatureProvider.java index 3ffacb0bc16..e9f877e79bf 100644 --- a/src/com/android/settings/applications/ApplicationFeatureProvider.java +++ b/src/com/android/settings/applications/ApplicationFeatureProvider.java @@ -81,6 +81,14 @@ public interface ApplicationFeatureProvider { */ Set getKeepEnabledPackages(); + /** + * Returns a user readable text explaining how much time user has spent in an app at a + * pre-specified duration. + */ + default CharSequence getTimeSpentInApp(String packageName) { + return null; + } + /** * Callback that receives the number of packages installed on the device. */ diff --git a/src/com/android/settings/applications/ApplicationFeatureProviderImpl.java b/src/com/android/settings/applications/ApplicationFeatureProviderImpl.java index 7027239f52e..1fd79971c80 100644 --- a/src/com/android/settings/applications/ApplicationFeatureProviderImpl.java +++ b/src/com/android/settings/applications/ApplicationFeatureProviderImpl.java @@ -41,7 +41,7 @@ import java.util.Set; public class ApplicationFeatureProviderImpl implements ApplicationFeatureProvider { - private final Context mContext; + protected final Context mContext; private final PackageManager mPm; private final IPackageManager mPms; private final DevicePolicyManager mDpm; diff --git a/src/com/android/settings/applications/appinfo/TimeSpentInAppPreferenceController.java b/src/com/android/settings/applications/appinfo/TimeSpentInAppPreferenceController.java index 70ffcb3f8e5..b1bbd06e9d6 100644 --- a/src/com/android/settings/applications/appinfo/TimeSpentInAppPreferenceController.java +++ b/src/com/android/settings/applications/appinfo/TimeSpentInAppPreferenceController.java @@ -28,7 +28,9 @@ import androidx.annotation.VisibleForTesting; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; +import com.android.settings.applications.ApplicationFeatureProvider; import com.android.settings.core.BasePreferenceController; +import com.android.settings.overlay.FeatureFactory; import java.util.List; @@ -38,13 +40,15 @@ public class TimeSpentInAppPreferenceController extends BasePreferenceController static final Intent SEE_TIME_IN_APP_TEMPLATE = new Intent(Settings.ACTION_APP_USAGE_SETTINGS); private final PackageManager mPackageManager; - + private final ApplicationFeatureProvider mAppFeatureProvider; private Intent mIntent; private String mPackageName; public TimeSpentInAppPreferenceController(Context context, String preferenceKey) { super(context, preferenceKey); mPackageManager = context.getPackageManager(); + mAppFeatureProvider = FeatureFactory.getFactory(context) + .getApplicationFeatureProvider(context); } public void setPackageName(String packageName) { @@ -80,6 +84,11 @@ public class TimeSpentInAppPreferenceController extends BasePreferenceController } } + @Override + public CharSequence getSummary() { + return mAppFeatureProvider.getTimeSpentInApp(mPackageName); + } + private boolean isSystemApp(ResolveInfo info) { return info != null && info.activityInfo != null diff --git a/tests/robotests/src/com/android/settings/applications/appinfo/TimeSpentInAppPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/applications/appinfo/TimeSpentInAppPreferenceControllerTest.java index 94d12288d28..e1da707e543 100644 --- a/tests/robotests/src/com/android/settings/applications/appinfo/TimeSpentInAppPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/applications/appinfo/TimeSpentInAppPreferenceControllerTest.java @@ -20,6 +20,8 @@ import static android.content.Intent.EXTRA_PACKAGE_NAME; import static com.google.common.truth.Truth.assertThat; +import static org.mockito.ArgumentMatchers.nullable; +import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.content.Context; @@ -32,6 +34,7 @@ import androidx.preference.Preference; import androidx.preference.PreferenceScreen; import com.android.settings.core.BasePreferenceController; +import com.android.settings.testutils.FakeFeatureFactory; import org.junit.Before; import org.junit.Test; @@ -58,10 +61,12 @@ public class TimeSpentInAppPreferenceControllerTest { private ShadowPackageManager mPackageManager; private TimeSpentInAppPreferenceController mController; private Preference mPreference; + private FakeFeatureFactory mFeatureFactory; @Before public void setUp() { MockitoAnnotations.initMocks(this); + mFeatureFactory = FakeFeatureFactory.setupForTest(); mContext = RuntimeEnvironment.application; mPackageManager = Shadows.shadowOf(mContext.getPackageManager()); mController = new TimeSpentInAppPreferenceController(mContext, TEST_KEY); @@ -112,4 +117,12 @@ public class TimeSpentInAppPreferenceControllerTest { assertThat(intent.getStringExtra(EXTRA_PACKAGE_NAME)) .isEqualTo(TEST_INTENT.getStringExtra(EXTRA_PACKAGE_NAME)); } + + @Test + public void getSummary_shouldQueryAppFeatureProvider() { + mController.getSummary(); + + verify(mFeatureFactory.applicationFeatureProvider).getTimeSpentInApp( + nullable(String.class)); + } }