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

Commit ba3d8a9a authored by android-build-team Robot's avatar android-build-team Robot
Browse files

Snap for 6612494 from cc498f3e to rvc-release

Change-Id: I0ab1a754a748018b743b5239c9ff058976d38bc0
parents 2a44ce1d cc498f3e
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@ android_test {
    srcs: ["src/**/*.java"],
    static_libs: [
        "androidx.test.rules",
        "collector-device-lib-platform",
        "apct-perftests-utils",
    ],
    platform_apis: true,
+4 −0
Original line number Diff line number Diff line
@@ -17,12 +17,16 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.android.perftests.multiuser">

    <uses-sdk android:targetSdkVersion="28" />

    <uses-permission android:name="android.permission.CONTROL_KEYGUARD" />
    <uses-permission android:name="android.permission.MANAGE_USERS" />
    <uses-permission android:name="android.permission.INSTALL_PACKAGES" />
    <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS" />
    <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL" />
    <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.REAL_GET_TASKS" />

    <application>
        <uses-library android:name="android.test.runner" />
+3 −5
Original line number Diff line number Diff line
@@ -71,7 +71,7 @@ public interface AppStandbyInternal {
     */
    void postOneTimeCheckIdleStates();

    void reportEvent(UsageEvents.Event event, long elapsedRealtime, int userId);
    void reportEvent(UsageEvents.Event event, int userId);

    void setLastJobRunTime(String packageName, int userId, long elapsedRealtime);

@@ -150,9 +150,7 @@ public interface AppStandbyInternal {

    void clearCarrierPrivilegedApps();

    void flushToDisk(int userId);

    void flushDurationsToDisk();
    void flushToDisk();

    void initializeDefaultsForSystemApps(int userId);

@@ -162,7 +160,7 @@ public interface AppStandbyInternal {

    void postReportExemptedSyncStart(String packageName, int userId);

    void dumpUser(IndentingPrintWriter idpw, int userId, List<String> pkgs);
    void dumpUsers(IndentingPrintWriter idpw, int[] userIds, List<String> pkgs);

    void dumpState(String[] args, PrintWriter pw);

+20 −2
Original line number Diff line number Diff line
@@ -675,6 +675,14 @@ public class AppIdleHistory {
        return Long.parseLong(value);
    }


    public void writeAppIdleTimes() {
        final int size = mIdleHistory.size();
        for (int i = 0; i < size; i++) {
            writeAppIdleTimes(mIdleHistory.keyAt(i));
        }
    }

    public void writeAppIdleTimes(int userId) {
        FileOutputStream fos = null;
        AtomicFile appIdleFile = new AtomicFile(getUserFile(userId));
@@ -743,7 +751,17 @@ public class AppIdleHistory {
        }
    }

    public void dump(IndentingPrintWriter idpw, int userId, List<String> pkgs) {
    public void dumpUsers(IndentingPrintWriter idpw, int[] userIds, List<String> pkgs) {
        final int numUsers = userIds.length;
        for (int i = 0; i < numUsers; i++) {
            idpw.println();
            dumpUser(idpw, userIds[i], pkgs);
        }
    }

    private void dumpUser(IndentingPrintWriter idpw, int userId, List<String> pkgs) {
        idpw.print("User ");
        idpw.print(userId);
        idpw.println(" App Standby States:");
        idpw.increaseIndent();
        ArrayMap<String, AppUsageHistory> userHistory = mIdleHistory.get(userId);
+30 −14
Original line number Diff line number Diff line
@@ -90,6 +90,7 @@ import android.os.Process;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.os.SystemClock;
import android.os.Trace;
import android.os.UserHandle;
import android.provider.Settings.Global;
import android.telephony.TelephonyManager;
@@ -241,6 +242,14 @@ public class AppStandbyController implements AppStandbyInternal {

    private final CountDownLatch mAdminDataAvailableLatch = new CountDownLatch(1);

    // Cache the active network scorer queried from the network scorer service
    private volatile String mCachedNetworkScorer = null;
    // The last time the network scorer service was queried
    private volatile long mCachedNetworkScorerAtMillis = 0L;
    // How long before querying the network scorer again. During this time, subsequent queries will
    // get the cached value
    private static final long NETWORK_SCORER_CACHE_DURATION_MILLIS = 5000L;

    // Messages for the handler
    static final int MSG_INFORM_LISTENERS = 3;
    static final int MSG_FORCE_IDLE_STATE = 4;
@@ -857,7 +866,7 @@ public class AppStandbyController implements AppStandbyInternal {
    }

    @Override
    public void reportEvent(UsageEvents.Event event, long elapsedRealtime, int userId) {
    public void reportEvent(UsageEvents.Event event, int userId) {
        if (!mAppIdleEnabled) return;
        final int eventType = event.getEventType();
        if ((eventType == UsageEvents.Event.ACTIVITY_RESUMED
@@ -871,6 +880,7 @@ public class AppStandbyController implements AppStandbyInternal {
            final String pkg = event.getPackageName();
            final List<UserHandle> linkedProfiles = getCrossProfileTargets(pkg, userId);
            synchronized (mAppIdleLock) {
                final long elapsedRealtime = mInjector.elapsedRealtime();
                reportEventLocked(pkg, eventType, elapsedRealtime, userId);

                final int size = linkedProfiles.size();
@@ -1160,6 +1170,8 @@ public class AppStandbyController implements AppStandbyInternal {
            return new int[0];
        }

        Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "getIdleUidsForUser");

        final long elapsedRealtime = mInjector.elapsedRealtime();

        List<ApplicationInfo> apps;
@@ -1195,6 +1207,7 @@ public class AppStandbyController implements AppStandbyInternal {
                uidStates.setValueAt(index, value + 1 + (idle ? 1<<16 : 0));
            }
        }

        if (DEBUG) {
            Slog.d(TAG, "getIdleUids took " + (mInjector.elapsedRealtime() - elapsedRealtime));
        }
@@ -1216,6 +1229,8 @@ public class AppStandbyController implements AppStandbyInternal {
            }
        }

        Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER);

        return res;
    }

@@ -1582,8 +1597,16 @@ public class AppStandbyController implements AppStandbyInternal {
    }

    private boolean isActiveNetworkScorer(String packageName) {
        String activeScorer = mInjector.getActiveNetworkScorer();
        return packageName != null && packageName.equals(activeScorer);
        // Validity of network scorer cache is limited to a few seconds. Fetch it again
        // if longer since query.
        // This is a temporary optimization until there's a callback mechanism for changes to network scorer.
        final long now = SystemClock.elapsedRealtime();
        if (mCachedNetworkScorer == null
                || mCachedNetworkScorerAtMillis < now - NETWORK_SCORER_CACHE_DURATION_MILLIS) {
            mCachedNetworkScorer = mInjector.getActiveNetworkScorer();
            mCachedNetworkScorerAtMillis = now;
        }
        return packageName != null && packageName.equals(mCachedNetworkScorer);
    }

    private void informListeners(String packageName, int userId, int bucket, int reason,
@@ -1608,18 +1631,11 @@ public class AppStandbyController implements AppStandbyInternal {
        }
    }

    @Override
    public void flushToDisk(int userId) {
        synchronized (mAppIdleLock) {
            mAppIdleHistory.writeAppIdleTimes(userId);
        }
    }

    @Override
    public void flushDurationsToDisk() {
        // Persist elapsed and screen on time. If this fails for whatever reason, the apps will be
        // considered not-idle, which is the safest outcome in such an event.
    public void flushToDisk() {
        synchronized (mAppIdleLock) {
            mAppIdleHistory.writeAppIdleTimes();
            mAppIdleHistory.writeAppIdleDurations();
        }
    }
@@ -1796,9 +1812,9 @@ public class AppStandbyController implements AppStandbyInternal {
    }

    @Override
    public void dumpUser(IndentingPrintWriter idpw, int userId, List<String> pkgs) {
    public void dumpUsers(IndentingPrintWriter idpw, int[] userIds, List<String> pkgs) {
        synchronized (mAppIdleLock) {
            mAppIdleHistory.dump(idpw, userId, pkgs);
            mAppIdleHistory.dumpUsers(idpw, userIds, pkgs);
        }
    }

Loading