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

Commit bac13378 authored by Filip Gruszczynski's avatar Filip Gruszczynski Committed by Android (Google) Code Review
Browse files

Merge "More granular reporting of size configurations."

parents 58a98c45 20aa0aed
Loading
Loading
Loading
Loading
+28 −26
Original line number Diff line number Diff line
@@ -2681,19 +2681,10 @@ public abstract class ActivityManagerNative extends Binder implements IActivityM
        case REPORT_SIZE_CONFIGURATIONS: {
            data.enforceInterface(IActivityManager.descriptor);
            IBinder token = data.readStrongBinder();
            int horizontalSize = data.readInt();
            int[] horizontal = null;
            if (horizontalSize > 0) {
                horizontal = new int[horizontalSize];
                data.readIntArray(horizontal);
            }
            int[] vertical = null;
            int verticalSize = data.readInt();
            if (verticalSize > 0) {
                vertical = new int[verticalSize];
                data.readIntArray(vertical);
            }
            reportSizeConfigurations(token, horizontal, vertical);
            int[] horizontal = readIntArray(data);
            int[] vertical = readIntArray(data);
            int[] smallest = readIntArray(data);
            reportSizeConfigurations(token, horizontal, vertical, smallest);
            return true;
        }
        case SUPPRESS_RESIZE_CONFIG_CHANGES_TRANSACTION: {
@@ -2715,6 +2706,16 @@ public abstract class ActivityManagerNative extends Binder implements IActivityM
        return super.onTransact(code, data, reply, flags);
    }

    private int[] readIntArray(Parcel data) {
        int[] smallest = null;
        int smallestSize = data.readInt();
        if (smallestSize > 0) {
            smallest = new int[smallestSize];
            data.readIntArray(smallest);
        }
        return smallest;
    }

    public IBinder asBinder() {
        return this;
    }
@@ -6241,29 +6242,30 @@ class ActivityManagerProxy implements IActivityManager

    @Override
    public void reportSizeConfigurations(IBinder token, int[] horizontalSizeConfiguration,
            int[] verticalSizeConfigurations) throws RemoteException {
            int[] verticalSizeConfigurations, int[] smallestSizeConfigurations)
            throws RemoteException {
        Parcel data = Parcel.obtain();
        Parcel reply = Parcel.obtain();
        data.writeInterfaceToken(IActivityManager.descriptor);
        data.writeStrongBinder(token);
        if (horizontalSizeConfiguration == null) {
            data.writeInt(0);
        } else {
            data.writeInt(horizontalSizeConfiguration.length);
            data.writeIntArray(horizontalSizeConfiguration);
        }
        if (verticalSizeConfigurations == null) {
            data.writeInt(0);
        } else {
            data.writeInt(verticalSizeConfigurations.length);
            data.writeIntArray(verticalSizeConfigurations);
        }
        writeIntArray(horizontalSizeConfiguration, data);
        writeIntArray(verticalSizeConfigurations, data);
        writeIntArray(smallestSizeConfigurations, data);
        mRemote.transact(REPORT_SIZE_CONFIGURATIONS, data, reply, 0);
        reply.readException();
        data.recycle();
        reply.recycle();
    }

    private static void writeIntArray(int[] array, Parcel data) {
        if (array == null) {
            data.writeInt(0);
        } else {
            data.writeInt(array.length);
            data.writeIntArray(array);
        }
    }

    @Override
    public void suppressResizeConfigChanges(boolean suppress) throws RemoteException {
        Parcel data = Parcel.obtain();
+9 −16
Original line number Diff line number Diff line
@@ -88,6 +88,7 @@ import android.util.LogPrinter;
import android.util.Pair;
import android.util.PrintWriterPrinter;
import android.util.Slog;
import android.util.SparseIntArray;
import android.util.SuperNotCalledException;
import android.view.Display;
import android.view.HardwareRenderer;
@@ -2638,32 +2639,24 @@ public final class ActivityThread {
        if (configurations == null) {
            return;
        }
        IntArray horizontal = new IntArray();
        IntArray vertical = new IntArray();
        SparseIntArray horizontal = new SparseIntArray();
        SparseIntArray vertical = new SparseIntArray();
        SparseIntArray smallest = new SparseIntArray();
        for (int i = configurations.length - 1; i >= 0; i--) {
            Configuration config = configurations[i];
            if (config.screenHeightDp != Configuration.SCREEN_HEIGHT_DP_UNDEFINED) {
                vertical.add(config.screenHeightDp);
                vertical.put(config.screenHeightDp, 0);
            }
            if (config.screenWidthDp != Configuration.SCREEN_WIDTH_DP_UNDEFINED) {
                horizontal.add(config.screenWidthDp);
                horizontal.put(config.screenWidthDp, 0);
            }
            if (config.smallestScreenWidthDp != Configuration.SMALLEST_SCREEN_WIDTH_DP_UNDEFINED) {
                vertical.add(config.smallestScreenWidthDp);
                horizontal.add(config.smallestScreenWidthDp);
                smallest.put(config.smallestScreenWidthDp, 0);
            }
        }
        int[] horizontalArray = null;
        if (horizontal.size() > 0) {
            horizontalArray = horizontal.toArray();
        }
        int[] verticalArray = null;
        if (vertical.size() > 0) {
            verticalArray = vertical.toArray();
        }
        try {
            ActivityManagerNative.getDefault().reportSizeConfigurations(r.token, horizontalArray,
                    verticalArray);
            ActivityManagerNative.getDefault().reportSizeConfigurations(r.token,
                    horizontal.copyKeys(), vertical.copyKeys(), smallest.copyKeys());
        } catch (RemoteException ex) {
        }

+2 −1
Original line number Diff line number Diff line
@@ -123,7 +123,8 @@ public interface IActivityManager extends IInterface {
    public void activitySlept(IBinder token) throws RemoteException;
    public void activityDestroyed(IBinder token) throws RemoteException;
    public void reportSizeConfigurations(IBinder token, int[] horizontalSizeConfiguration,
            int[] verticalSizeConfigurations) throws RemoteException;
            int[] verticalSizeConfigurations, int[] smallestWidthConfigurations)
            throws RemoteException;
    public String getCallingPackage(IBinder token) throws RemoteException;
    public ComponentName getCallingActivity(IBinder token) throws RemoteException;
    public List<IAppTask> getAppTasks(String callingPackage) throws RemoteException;
+14 −0
Original line number Diff line number Diff line
@@ -19,6 +19,8 @@ package android.util;
import com.android.internal.util.ArrayUtils;
import com.android.internal.util.GrowingArrayUtils;

import java.util.Arrays;

import libcore.util.EmptyArray;

/**
@@ -238,6 +240,18 @@ public class SparseIntArray implements Cloneable {
        mSize++;
    }

    /**
     * Provides a copy of keys.
     *
     * @hide
     * */
    public int[] copyKeys() {
        if (size() == 0) {
            return null;
        }
        return Arrays.copyOf(mKeys, size());
    }

    /**
     * {@inheritDoc}
     *
+2 −2
Original line number Diff line number Diff line
@@ -6527,7 +6527,7 @@ public final class ActivityManagerService extends ActivityManagerNative
    @Override
    public void reportSizeConfigurations(IBinder token, int[] horizontalSizeConfiguration,
            int[] verticalSizeConfigurations) {
            int[] verticalSizeConfigurations, int[] smallestSizeConfigurations) {
        if (DEBUG_CONFIGURATION) Slog.v(TAG, "Report configuration: " + token + " "
                + horizontalSizeConfiguration + " " + verticalSizeConfigurations);
        synchronized (this) {
@@ -6537,7 +6537,7 @@ public final class ActivityManagerService extends ActivityManagerNative
                        + "found for: " + token);
            }
            record.setSizeConfigurations(horizontalSizeConfiguration,
                    verticalSizeConfigurations);
                    verticalSizeConfigurations, smallestSizeConfigurations);
        }
    }
Loading