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

Commit db139a6a authored by Fan Zhang's avatar Fan Zhang Committed by android-build-merger
Browse files

Merge "Check time-spent-in-app intent must come from system app." into pi-dev am: 8e88874e

am: 06a25558

Change-Id: Ia28178fe8aa5b034bc988506dabb163352dfe3ff
parents 30056604 06a25558
Loading
Loading
Loading
Loading
+14 −1
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.settings.applications.appinfo;

import android.content.Context;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.support.annotation.VisibleForTesting;
@@ -61,8 +62,13 @@ public class TimeSpentInAppPreferenceController extends BasePreferenceController
        if (resolved == null || resolved.isEmpty()) {
            return DISABLED_UNSUPPORTED;
        }
        for (ResolveInfo info : resolved) {
            if (isSystemApp(info)) {
                return AVAILABLE;
            }
        }
        return DISABLED_UNSUPPORTED;
    }

    @Override
    public void displayPreference(PreferenceScreen screen) {
@@ -72,4 +78,11 @@ public class TimeSpentInAppPreferenceController extends BasePreferenceController
            pref.setIntent(mIntent);
        }
    }

    private boolean isSystemApp(ResolveInfo info) {
        return info != null
                && info.activityInfo != null
                && info.activityInfo.applicationInfo != null
                && (info.activityInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0;
    }
}
+17 −2
Original line number Diff line number Diff line
@@ -22,6 +22,8 @@ import static org.mockito.Mockito.when;

import android.content.Context;
import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.content.pm.ApplicationInfo;
import android.content.pm.ResolveInfo;
import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceScreen;
@@ -81,13 +83,26 @@ public class TimeSpentInAppPreferenceControllerTest {
    }

    @Test
    public void hasIntentHandler_shouldBeAvailable() {
    public void hasIntentHandler_notSystemApp_shouldBeDisabled() {
        mPackageManager.addResolveInfoForIntent(TEST_INTENT, new ResolveInfo());
        mController.setPackageName(TEST_INTENT.getStringExtra(EXTRA_PACKAGE_NAME));

        assertThat(mController.getAvailabilityStatus())
                .isEqualTo(BasePreferenceController.AVAILABLE);
                .isEqualTo(BasePreferenceController.DISABLED_UNSUPPORTED);

    }

    @Test
    public void hasIntentHandler_resolvedToSystemApp_shouldBeAvailable() {
        final ResolveInfo info = new ResolveInfo();
        info.activityInfo = new ActivityInfo();
        info.activityInfo.applicationInfo = new ApplicationInfo();
        info.activityInfo.applicationInfo.flags = ApplicationInfo.FLAG_SYSTEM;
        mPackageManager.addResolveInfoForIntent(TEST_INTENT, info);
        mController.setPackageName(TEST_INTENT.getStringExtra(EXTRA_PACKAGE_NAME));

        assertThat(mController.getAvailabilityStatus())
                .isEqualTo(BasePreferenceController.AVAILABLE);
        mController.displayPreference(mScreen);

        final Intent intent = mPreference.getIntent();