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

Commit 7a6e3a63 authored by Alex Salo's avatar Alex Salo
Browse files

Don't start AttentionService if not configured

Bug: 126472143, 111939367
Test: manually

Change-Id: Iffbda6c38a3aca88599bc544c079cc8b6e39f2ff
parent 18c3f0c4
Loading
Loading
Loading
Loading
+10 −3
Original line number Diff line number Diff line
@@ -111,6 +111,11 @@ public class AttentionManagerService extends SystemService {
        cancelAndUnbindLocked(peekUserStateLocked(userId));
    }

    /** Returns {@code true} if attention service is configured on this device. */
    public static boolean isServiceConfigured(Context context) {
        return !TextUtils.isEmpty(getServiceConfig(context));
    }

    /** Resolves and sets up the attention service if it had not been done yet. */
    private boolean isServiceAvailable() {
        if (mComponentName == null) {
@@ -283,6 +288,10 @@ public class AttentionManagerService extends SystemService {
        return mUserStates.get(userId);
    }

    private static String getServiceConfig(Context context) {
        return context.getString(R.string.config_defaultAttentionService);
    }

    /**
     * Provides attention service component name at runtime, making sure it's provided by the
     * system.
@@ -291,9 +300,7 @@ public class AttentionManagerService extends SystemService {
        final String flag = DeviceConfig.getProperty(NAMESPACE_ATTENTION_MANAGER_SERVICE,
                COMPONENT_NAME);

        final String componentNameString = flag != null ? flag : context.getString(
                R.string.config_defaultAttentionService);

        final String componentNameString = flag != null ? flag : getServiceConfig(context);
        if (TextUtils.isEmpty(componentNameString)) {
            return null;
        }
+1 −1
Original line number Diff line number Diff line
@@ -269,7 +269,7 @@ public class AttentionDetector {
     */
    @VisibleForTesting
    boolean isAttentionServiceSupported() {
        return mAttentionManager.isAttentionServiceSupported();
        return mAttentionManager != null && mAttentionManager.isAttentionServiceSupported();
    }

    public void dump(PrintWriter pw) {
+12 −4
Original line number Diff line number Diff line
@@ -1231,6 +1231,7 @@ public final class SystemServer {
            }

            startContentCaptureService(context);
            startAttentionService(context);

            // App prediction manager service
            traceBeginAndSlog("StartAppPredictionService");
@@ -1285,10 +1286,6 @@ public final class SystemServer {
                traceEnd();
            }

            traceBeginAndSlog("StartAttentionManagerService");
            mSystemServiceManager.startService(AttentionManagerService.class);
            traceEnd();

            traceBeginAndSlog("StartNetworkScoreService");
            mSystemServiceManager.startService(NetworkScoreService.Lifecycle.class);
            traceEnd();
@@ -2261,6 +2258,17 @@ public final class SystemServer {
        traceEnd();
    }

    private void startAttentionService(@NonNull Context context) {
        if (!AttentionManagerService.isServiceConfigured(context)) {
            Slog.d(TAG, "AttentionService is not configured on this device");
            return;
        }

        traceBeginAndSlog("StartAttentionManagerService");
        mSystemServiceManager.startService(AttentionManagerService.class);
        traceEnd();
    }

    static final void startSystemUi(Context context, WindowManagerService windowManager) {
        Intent intent = new Intent();
        intent.setComponent(new ComponentName("com.android.systemui",
+7 −0
Original line number Diff line number Diff line
@@ -104,6 +104,13 @@ public class AttentionDetectorTest extends AndroidTestCase {
        assertThat(mNextDimming).isEqualTo(when);
    }

    @Test
    public void testOnUserActivity_doesntCrashIfNoAttentionService() {
        mAttentionManagerInternal = null;
        registerAttention();
        // Does not crash.
    }

    @Test
    public void onUserActivity_ignoresWhiteListedActivityTypes() {
        for (int i = 0; i < NUM_USER_ACTIVITY_TYPES; i++) {