Loading src/com/android/settings/applications/ApplicationFeatureProvider.java +8 −0 Original line number Diff line number Diff line Loading @@ -81,6 +81,14 @@ public interface ApplicationFeatureProvider { */ Set<String> 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. */ Loading src/com/android/settings/applications/ApplicationFeatureProviderImpl.java +1 −1 Original line number Diff line number Diff line Loading @@ -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; Loading src/com/android/settings/applications/appinfo/TimeSpentInAppPreferenceController.java +10 −1 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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) { Loading Loading @@ -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 Loading tests/robotests/src/com/android/settings/applications/appinfo/TimeSpentInAppPreferenceControllerTest.java +13 −0 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading @@ -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); Loading Loading @@ -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)); } } Loading
src/com/android/settings/applications/ApplicationFeatureProvider.java +8 −0 Original line number Diff line number Diff line Loading @@ -81,6 +81,14 @@ public interface ApplicationFeatureProvider { */ Set<String> 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. */ Loading
src/com/android/settings/applications/ApplicationFeatureProviderImpl.java +1 −1 Original line number Diff line number Diff line Loading @@ -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; Loading
src/com/android/settings/applications/appinfo/TimeSpentInAppPreferenceController.java +10 −1 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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) { Loading Loading @@ -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 Loading
tests/robotests/src/com/android/settings/applications/appinfo/TimeSpentInAppPreferenceControllerTest.java +13 −0 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading @@ -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); Loading Loading @@ -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)); } }