Add an interface that returns time spent text for app.
Bug: 129266977 Test: robotest Change-Id: Iaa5b4c5504eccbe0290b1014bd8e25aa3d4c3dd8
This commit is contained in:
@@ -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.
|
||||
*/
|
||||
|
@@ -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;
|
||||
|
@@ -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
|
||||
|
@@ -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));
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user