Merge "Add an interface that returns time spent text for app." into qt-dev
am: 6e8c403360
Change-Id: I0e015174b752787eecba1be40937de42ebff19f9
This commit is contained in:
@@ -81,6 +81,14 @@ public interface ApplicationFeatureProvider {
|
|||||||
*/
|
*/
|
||||||
Set<String> getKeepEnabledPackages();
|
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.
|
* Callback that receives the number of packages installed on the device.
|
||||||
*/
|
*/
|
||||||
|
@@ -41,7 +41,7 @@ import java.util.Set;
|
|||||||
|
|
||||||
public class ApplicationFeatureProviderImpl implements ApplicationFeatureProvider {
|
public class ApplicationFeatureProviderImpl implements ApplicationFeatureProvider {
|
||||||
|
|
||||||
private final Context mContext;
|
protected final Context mContext;
|
||||||
private final PackageManager mPm;
|
private final PackageManager mPm;
|
||||||
private final IPackageManager mPms;
|
private final IPackageManager mPms;
|
||||||
private final DevicePolicyManager mDpm;
|
private final DevicePolicyManager mDpm;
|
||||||
|
@@ -28,7 +28,9 @@ import androidx.annotation.VisibleForTesting;
|
|||||||
import androidx.preference.Preference;
|
import androidx.preference.Preference;
|
||||||
import androidx.preference.PreferenceScreen;
|
import androidx.preference.PreferenceScreen;
|
||||||
|
|
||||||
|
import com.android.settings.applications.ApplicationFeatureProvider;
|
||||||
import com.android.settings.core.BasePreferenceController;
|
import com.android.settings.core.BasePreferenceController;
|
||||||
|
import com.android.settings.overlay.FeatureFactory;
|
||||||
|
|
||||||
import java.util.List;
|
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);
|
static final Intent SEE_TIME_IN_APP_TEMPLATE = new Intent(Settings.ACTION_APP_USAGE_SETTINGS);
|
||||||
|
|
||||||
private final PackageManager mPackageManager;
|
private final PackageManager mPackageManager;
|
||||||
|
private final ApplicationFeatureProvider mAppFeatureProvider;
|
||||||
private Intent mIntent;
|
private Intent mIntent;
|
||||||
private String mPackageName;
|
private String mPackageName;
|
||||||
|
|
||||||
public TimeSpentInAppPreferenceController(Context context, String preferenceKey) {
|
public TimeSpentInAppPreferenceController(Context context, String preferenceKey) {
|
||||||
super(context, preferenceKey);
|
super(context, preferenceKey);
|
||||||
mPackageManager = context.getPackageManager();
|
mPackageManager = context.getPackageManager();
|
||||||
|
mAppFeatureProvider = FeatureFactory.getFactory(context)
|
||||||
|
.getApplicationFeatureProvider(context);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setPackageName(String packageName) {
|
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) {
|
private boolean isSystemApp(ResolveInfo info) {
|
||||||
return info != null
|
return info != null
|
||||||
&& info.activityInfo != 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 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 static org.mockito.Mockito.when;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
@@ -32,6 +34,7 @@ import androidx.preference.Preference;
|
|||||||
import androidx.preference.PreferenceScreen;
|
import androidx.preference.PreferenceScreen;
|
||||||
|
|
||||||
import com.android.settings.core.BasePreferenceController;
|
import com.android.settings.core.BasePreferenceController;
|
||||||
|
import com.android.settings.testutils.FakeFeatureFactory;
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
@@ -58,10 +61,12 @@ public class TimeSpentInAppPreferenceControllerTest {
|
|||||||
private ShadowPackageManager mPackageManager;
|
private ShadowPackageManager mPackageManager;
|
||||||
private TimeSpentInAppPreferenceController mController;
|
private TimeSpentInAppPreferenceController mController;
|
||||||
private Preference mPreference;
|
private Preference mPreference;
|
||||||
|
private FakeFeatureFactory mFeatureFactory;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
MockitoAnnotations.initMocks(this);
|
MockitoAnnotations.initMocks(this);
|
||||||
|
mFeatureFactory = FakeFeatureFactory.setupForTest();
|
||||||
mContext = RuntimeEnvironment.application;
|
mContext = RuntimeEnvironment.application;
|
||||||
mPackageManager = Shadows.shadowOf(mContext.getPackageManager());
|
mPackageManager = Shadows.shadowOf(mContext.getPackageManager());
|
||||||
mController = new TimeSpentInAppPreferenceController(mContext, TEST_KEY);
|
mController = new TimeSpentInAppPreferenceController(mContext, TEST_KEY);
|
||||||
@@ -112,4 +117,12 @@ public class TimeSpentInAppPreferenceControllerTest {
|
|||||||
assertThat(intent.getStringExtra(EXTRA_PACKAGE_NAME))
|
assertThat(intent.getStringExtra(EXTRA_PACKAGE_NAME))
|
||||||
.isEqualTo(TEST_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