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

Commit 25229368 authored by Alex Salo's avatar Alex Salo Committed by android-build-merger
Browse files

Merge "Remove the disableSelf() api" into qt-dev am: 575022f7

am: f9a18241

Change-Id: I36cb46bade077fc26d7a78e0a75c5749bd9ea2b4
parents bce81b1e f9a18241
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -6267,7 +6267,6 @@ package android.service.attention {
  public abstract class AttentionService extends android.app.Service {
    ctor public AttentionService();
    method public final void disableSelf();
    method @Nullable public final android.os.IBinder onBind(@NonNull android.content.Intent);
    method public abstract void onCancelAttentionCheck(@NonNull android.service.attention.AttentionService.AttentionCallback);
    method public abstract void onCheckAttention(@NonNull android.service.attention.AttentionService.AttentionCallback);
+0 −7
Original line number Diff line number Diff line
@@ -46,13 +46,6 @@ public abstract class AttentionManagerInternal {
     */
    public abstract void cancelAttentionCheck(AttentionCallbackInternal callback);

    /**
     * Disables the dependants.
     *
     * Example: called if the service does not have sufficient permissions to perform the task.
     */
    public abstract void disableSelf();

    /** Internal interface for attention callback. */
    public abstract static class AttentionCallbackInternal {
        /**
+0 −15
Original line number Diff line number Diff line
@@ -21,13 +21,11 @@ import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.SystemApi;
import android.app.Service;
import android.attention.AttentionManagerInternal;
import android.content.Intent;
import android.os.IBinder;
import android.os.RemoteException;

import com.android.internal.util.Preconditions;
import com.android.server.LocalServices;

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -131,19 +129,6 @@ public abstract class AttentionService extends Service {
        return null;
    }

    /**
     * Disables the dependants.
     *
     * Example: called if the service does not have sufficient permissions to perform the task.
     */
    public final void disableSelf() {
        AttentionManagerInternal attentionManager = LocalServices.getService(
                AttentionManagerInternal.class);
        if (attentionManager != null) {
            attentionManager.disableSelf();
        }
    }

    /**
     * Checks the user attention and calls into the provided callback.
     *
+0 −20
Original line number Diff line number Diff line
@@ -17,7 +17,6 @@
package com.android.server.attention;

import static android.provider.DeviceConfig.NAMESPACE_ATTENTION_MANAGER_SERVICE;
import static android.provider.Settings.System.ADAPTIVE_SLEEP;
import static android.service.attention.AttentionService.ATTENTION_FAILURE_CANCELLED;
import static android.service.attention.AttentionService.ATTENTION_FAILURE_UNKNOWN;

@@ -47,7 +46,6 @@ import android.os.RemoteException;
import android.os.SystemClock;
import android.os.UserHandle;
import android.provider.DeviceConfig;
import android.provider.Settings;
import android.service.attention.AttentionService;
import android.service.attention.AttentionService.AttentionFailureCodes;
import android.service.attention.AttentionService.AttentionSuccessCodes;
@@ -275,19 +273,6 @@ public class AttentionManagerService extends SystemService {
        }
    }

    /** Disables service dependants. */
    private void disableSelf() {
        final long identity = Binder.clearCallingIdentity();
        try {
            if (DEBUG) {
                Slog.d(LOG_TAG, "Disabling self.");
            }
            Settings.System.putInt(mContext.getContentResolver(), ADAPTIVE_SLEEP, 0);
        } finally {
            Binder.restoreCallingIdentity(identity);
        }
    }

    @GuardedBy("mLock")
    private void freeIfInactiveLocked() {
        // If we are called here, it means someone used the API again - reset the timer then.
@@ -418,11 +403,6 @@ public class AttentionManagerService extends SystemService {
        public void cancelAttentionCheck(AttentionCallbackInternal callbackInternal) {
            AttentionManagerService.this.cancelAttentionCheck(callbackInternal);
        }

        @Override
        public void disableSelf() {
            AttentionManagerService.this.disableSelf();
        }
    }

    private static final class AttentionCheckCache {
+30 −0
Original line number Diff line number Diff line
@@ -16,9 +16,14 @@

package com.android.server.power;

import static android.provider.Settings.System.ADAPTIVE_SLEEP;

import android.Manifest;
import android.attention.AttentionManagerInternal;
import android.attention.AttentionManagerInternal.AttentionCallbackInternal;
import android.content.ContentResolver;
import android.content.Context;
import android.content.pm.PackageManager;
import android.database.ContentObserver;
import android.os.Handler;
import android.os.PowerManager;
@@ -83,6 +88,12 @@ public class AttentionDetector {
    @VisibleForTesting
    protected AttentionManagerInternal mAttentionManager;

    @VisibleForTesting
    protected PackageManager mPackageManager;

    @VisibleForTesting
    protected ContentResolver mContentResolver;

    /**
     * Current wakefulness of the device. {@see PowerManagerInternal}
     */
@@ -137,6 +148,8 @@ public class AttentionDetector {

    public void systemReady(Context context) {
        updateEnabledFromSettings(context);
        mPackageManager = context.getPackageManager();
        mContentResolver = context.getContentResolver();
        mAttentionManager = LocalServices.getService(AttentionManagerInternal.class);
        mMaximumExtensionMillis = context.getResources().getInteger(
                com.android.internal.R.integer.config_attentionMaximumExtension);
@@ -162,6 +175,11 @@ public class AttentionDetector {
            return nextScreenDimming;
        }

        if (!serviceHasSufficientPermissions()) {
            Settings.System.putInt(mContentResolver, ADAPTIVE_SLEEP, 0);
            return nextScreenDimming;
        }

        final long now = SystemClock.uptimeMillis();
        final long whenToCheck = nextScreenDimming - getAttentionTimeout();
        final long whenToStopExtending = mLastUserActivityTime + mMaximumExtensionMillis;
@@ -263,6 +281,18 @@ public class AttentionDetector {
        return mAttentionManager != null && mAttentionManager.isAttentionServiceSupported();
    }

    /**
     * Returns {@code true} if the attention service has sufficient permissions, disables the
     * depending features otherwise.
     */
    @VisibleForTesting
    boolean serviceHasSufficientPermissions() {
        final String attentionPackage = mPackageManager.getAttentionServicePackageName();
        return attentionPackage != null && mPackageManager.checkPermission(
                Manifest.permission.CAMERA, attentionPackage)
                == PackageManager.PERMISSION_GRANTED;
    }

    public void dump(PrintWriter pw) {
        pw.print("AttentionDetector:");
        pw.print(" mMaximumExtensionMillis=" + mMaximumExtensionMillis);
Loading