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

Commit 63f7b7a0 authored by Alan Stokes's avatar Alan Stokes Committed by android-build-merger
Browse files

Merge "If the ServiceRecord already has a ProcessRecord attached in...

Merge "If the ServiceRecord already has a ProcessRecord attached in startServiceLocked(), whitelist the process at that point (previously we'd just set the valiable to true, and not add the token)" into qt-dev am: 4167a1b2
am: 835c1dc7

Change-Id: I22fd19d0553bc9c77ebf39e6014ed25f2b827aa1
parents 41b67b75 835c1dc7
Loading
Loading
Loading
Loading
+1 −6
Original line number Diff line number Diff line
@@ -634,7 +634,7 @@ public final class ActiveServices {
        }

        if (allowBackgroundActivityStarts) {
            r.hasStartedWhitelistingBgActivityStarts = true;
            r.setHasStartedWhitelistingBgActivityStarts(true);
            scheduleCleanUpHasStartedWhitelistingBgActivityStartsLocked(r);
        }

@@ -761,11 +761,6 @@ public final class ActiveServices {
        }
        service.callStart = false;

        // the service will not necessarily be brought down, so only clear the whitelisting state
        // for start-based bg activity starts now, and drop any existing future cleanup callback
        service.setHasStartedWhitelistingBgActivityStarts(false);
        mAm.mHandler.removeCallbacks(service.startedWhitelistingBgActivityStartsCleanUp);

        bringDownServiceIfNeededLocked(service, false, false);
    }

+15 −14
Original line number Diff line number Diff line
@@ -131,10 +131,10 @@ final class ServiceRecord extends Binder implements ComponentName.WithComponentN
    int pendingConnectionImportance;   // To be filled in to ProcessRecord once it connects

    // any current binding to this service has BIND_ALLOW_BACKGROUND_ACTIVITY_STARTS flag?
    private boolean hasBindingWhitelistingBgActivityStarts;
    private boolean mHasBindingWhitelistingBgActivityStarts;
    // is this service currently whitelisted to start activities from background by providing
    // allowBackgroundActivityStarts=true to startServiceLocked()?
    boolean hasStartedWhitelistingBgActivityStarts;
    private boolean mHasStartedWhitelistingBgActivityStarts;
    // used to clean up the state of hasStartedWhitelistingBgActivityStarts after a timeout
    Runnable startedWhitelistingBgActivityStartsCleanUp;

@@ -384,13 +384,13 @@ final class ServiceRecord extends Binder implements ComponentName.WithComponentN
        if (whitelistManager) {
            pw.print(prefix); pw.print("whitelistManager="); pw.println(whitelistManager);
        }
        if (hasBindingWhitelistingBgActivityStarts) {
        if (mHasBindingWhitelistingBgActivityStarts) {
            pw.print(prefix); pw.print("hasBindingWhitelistingBgActivityStarts=");
            pw.println(hasBindingWhitelistingBgActivityStarts);
            pw.println(mHasBindingWhitelistingBgActivityStarts);
        }
        if (hasStartedWhitelistingBgActivityStarts) {
        if (mHasStartedWhitelistingBgActivityStarts) {
            pw.print(prefix); pw.print("hasStartedWhitelistingBgActivityStarts=");
            pw.println(hasStartedWhitelistingBgActivityStarts);
            pw.println(mHasStartedWhitelistingBgActivityStarts);
        }
        if (delayed) {
            pw.print(prefix); pw.print("delayed="); pw.println(delayed);
@@ -542,7 +542,8 @@ final class ServiceRecord extends Binder implements ComponentName.WithComponentN

    public void setProcess(ProcessRecord _proc) {
        if (_proc != null) {
            if (hasStartedWhitelistingBgActivityStarts || hasBindingWhitelistingBgActivityStarts) {
            if (mHasStartedWhitelistingBgActivityStarts
                    || mHasBindingWhitelistingBgActivityStarts) {
                _proc.addAllowBackgroundActivityStartsToken(this);
            } else {
                _proc.removeAllowBackgroundActivityStartsToken(this);
@@ -614,22 +615,22 @@ final class ServiceRecord extends Binder implements ComponentName.WithComponentN
                break;
            }
        }
        if (hasBindingWhitelistingBgActivityStarts != hasWhitelistingBinding) {
            hasBindingWhitelistingBgActivityStarts = hasWhitelistingBinding;
        if (mHasBindingWhitelistingBgActivityStarts != hasWhitelistingBinding) {
            mHasBindingWhitelistingBgActivityStarts = hasWhitelistingBinding;
            updateParentProcessBgActivityStartsWhitelistingToken();
        }
    }

    void setHasBindingWhitelistingBgActivityStarts(boolean newValue) {
        if (hasBindingWhitelistingBgActivityStarts != newValue) {
            hasBindingWhitelistingBgActivityStarts = newValue;
        if (mHasBindingWhitelistingBgActivityStarts != newValue) {
            mHasBindingWhitelistingBgActivityStarts = newValue;
            updateParentProcessBgActivityStartsWhitelistingToken();
        }
    }

    void setHasStartedWhitelistingBgActivityStarts(boolean newValue) {
        if (hasStartedWhitelistingBgActivityStarts != newValue) {
            hasStartedWhitelistingBgActivityStarts = newValue;
        if (mHasStartedWhitelistingBgActivityStarts != newValue) {
            mHasStartedWhitelistingBgActivityStarts = newValue;
            updateParentProcessBgActivityStartsWhitelistingToken();
        }
    }
@@ -647,7 +648,7 @@ final class ServiceRecord extends Binder implements ComponentName.WithComponentN
        if (app == null) {
            return;
        }
        if (hasStartedWhitelistingBgActivityStarts || hasBindingWhitelistingBgActivityStarts) {
        if (mHasStartedWhitelistingBgActivityStarts || mHasBindingWhitelistingBgActivityStarts) {
            // if the token is already there it's safe to "re-add it" - we're deadling with
            // a set of Binder objects
            app.addAllowBackgroundActivityStartsToken(this);