Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6e8c4033 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Add an interface that returns time spent text for app." into qt-dev

parents 11b68bc4 eb2e8dd2
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -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.
     */
+1 −1
Original line number Diff line number Diff line
@@ -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;
+10 −1
Original line number Diff line number Diff line
@@ -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
+13 −0
Original line number Diff line number Diff line
@@ -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));
    }
}