From: Fan Zhang Date: Mon, 29 Apr 2019 17:21:18 +0000 (-0700) Subject: Add an interface that returns time spent text for app. X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=eb2e8dd22c43429e8925a178db43559b4c000f54;p=android-x86%2Fpackages-apps-Settings.git Add an interface that returns time spent text for app. Bug: 129266977 Test: robotest Change-Id: Iaa5b4c5504eccbe0290b1014bd8e25aa3d4c3dd8 --- diff --git a/src/com/android/settings/applications/ApplicationFeatureProvider.java b/src/com/android/settings/applications/ApplicationFeatureProvider.java index 3ffacb0bc1..e9f877e79b 100644 --- a/src/com/android/settings/applications/ApplicationFeatureProvider.java +++ b/src/com/android/settings/applications/ApplicationFeatureProvider.java @@ -82,6 +82,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. */ interface NumberOfAppsCallback { diff --git a/src/com/android/settings/applications/ApplicationFeatureProviderImpl.java b/src/com/android/settings/applications/ApplicationFeatureProviderImpl.java index 7027239f52..1fd79971c8 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 70ffcb3f8e..b1bbd06e9d 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 94d12288d2..e1da707e54 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)); + } }