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

Commit 92b7af32 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Mirror pending temp whitelist from AMS to ATMS (30/n)"

parents 8884cfc1 9de19446
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -978,7 +978,7 @@ public class ActivityManagerService extends IActivityManager.Stub
        }
    }
    final SparseArray<PendingTempWhitelist> mPendingTempWhitelist = new SparseArray<>();
    final PendingTempWhitelists mPendingTempWhitelist = new PendingTempWhitelists(this);
    /**
     * Information about and control over application operations
+1 −1
Original line number Diff line number Diff line
@@ -899,7 +899,7 @@ class ActivityStarter {
                    ? mService.mWindowManager.isAnyWindowVisibleForUid(targetUid)
                    : false;
            final String targetWhitelistTag = (targetUid != -1)
                    ? mService.mAm.getPendingTempWhitelistTagForUidLocked(targetUid)
                    ? mService.getPendingTempWhitelistTagForUidLocked(targetUid)
                    : null;

            mSupervisor.getActivityMetricsLogger().logActivityStart(intent, callerApp, r,
+26 −5
Original line number Diff line number Diff line
@@ -331,7 +331,6 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {
    final ActivityThread mSystemThread;
    H mH;
    UiHandler mUiHandler;
    ActivityManagerService mAm;
    ActivityManagerInternal mAmInternal;
    UriGrantsManagerInternal mUgmInternal;
    private PackageManagerInternal mPmInternal;
@@ -349,7 +348,8 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {
    private UserManagerService mUserManager;
    private AppOpsService mAppOpsService;
    /** All active uids in the system. */
    final SparseArray<Integer> mActiveUids = new SparseArray<>();
    private final SparseArray<Integer> mActiveUids = new SparseArray<>();
    private final SparseArray<String> mPendingTempWhitelist = new SparseArray<>();
    /** All processes currently running that might have a window organized by name. */
    final ProcessMap<WindowProcessController> mProcessNames = new ProcessMap<>();
    /** All processes we currently have running mapped by pid */
@@ -708,10 +708,9 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {
    }

    // TODO: Will be converted to WM lock once transition is complete.
    void setActivityManagerService(ActivityManagerService am, Looper looper,
    void setActivityManagerService(Object globalLock, Looper looper,
            IntentFirewall intentFirewall, PendingIntentController intentController) {
        mAm = am;
        mGlobalLock = mAm;
        mGlobalLock = globalLock;
        mH = new H(looper);
        mUiHandler = new UiHandler();
        mIntentFirewall = intentFirewall;
@@ -5462,6 +5461,14 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {
        return mActiveUids.get(uid, PROCESS_STATE_NONEXISTENT);
    }

    /**
     * @return whitelist tag for a uid from mPendingTempWhitelist, null if not currently on
     * the whitelist
     */
    String getPendingTempWhitelistTagForUidLocked(int uid) {
        return mPendingTempWhitelist.get(uid);
    }

    void logAppTooSlow(WindowProcessController app, long startTime, String msg) {
        if (true || Build.IS_USER) {
            return;
@@ -6667,5 +6674,19 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {
                }
            }
        }

        @Override
        public void onUidAddedToPendingTempWhitelist(int uid, String tag) {
            synchronized (mGlobalLock) {
                mPendingTempWhitelist.put(uid, tag);
            }
        }

        @Override
        public void onUidRemovedFromPendingTempWhitelist(int uid) {
            synchronized (mGlobalLock) {
                mPendingTempWhitelist.remove(uid);
            }
        }
    }
}
+59 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2018 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License
 */

package com.android.server.am;

import android.util.SparseArray;

/** Whitelists of uids to temporarily bypass Power Save mode. */
final class PendingTempWhitelists {

    private ActivityManagerService mService;

    private final SparseArray<ActivityManagerService.PendingTempWhitelist> mPendingTempWhitelist =
            new SparseArray<>();

    PendingTempWhitelists(ActivityManagerService service) {
        mService = service;
    }

    void put(int uid, ActivityManagerService.PendingTempWhitelist value) {
        mPendingTempWhitelist.put(uid, value);
        mService.mAtmInternal.onUidAddedToPendingTempWhitelist(uid, value.tag);
    }

    void removeAt(int index) {
        final int uid = mPendingTempWhitelist.keyAt(index);
        mPendingTempWhitelist.removeAt(index);
        mService.mAtmInternal.onUidRemovedFromPendingTempWhitelist(uid);
    }

    ActivityManagerService.PendingTempWhitelist get(int uid) {
        return mPendingTempWhitelist.get(uid);
    }

    int size() {
        return mPendingTempWhitelist.size();
    }

    ActivityManagerService.PendingTempWhitelist valueAt(int index) {
        return mPendingTempWhitelist.valueAt(index);
    }

    int indexOfKey(int key) {
        return mPendingTempWhitelist.indexOfKey(key);
    }
}
+3 −0
Original line number Diff line number Diff line
@@ -444,4 +444,7 @@ public abstract class ActivityTaskManagerInternal {
    public abstract void onUidInactive(int uid);
    public abstract void onActiveUidsCleared();
    public abstract void onUidProcStateChanged(int uid, int procState);

    public abstract void onUidAddedToPendingTempWhitelist(int uid, String tag);
    public abstract void onUidRemovedFromPendingTempWhitelist(int uid);
}
Loading