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

Commit 4c005528 authored by Alex Salo's avatar Alex Salo Committed by Android (Google) Code Review
Browse files

Merge "Don't start AttentionService if not configured"

parents 8c4b7ab8 7a6e3a63
Loading
Loading
Loading
Loading
+10 −3
Original line number Diff line number Diff line
@@ -113,6 +113,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) {
@@ -285,6 +290,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.
@@ -293,9 +302,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
@@ -1230,6 +1230,7 @@ public final class SystemServer {
            }

            startContentCaptureService(context);
            startAttentionService(context);

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

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

            traceBeginAndSlog("StartNetworkScoreService");
            mSystemServiceManager.startService(NetworkScoreService.Lifecycle.class);
            traceEnd();
@@ -2260,6 +2257,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++) {