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

Commit 793c88f2 authored by Olivier Nshimiye's avatar Olivier Nshimiye Committed by Android (Google) Code Review
Browse files

Merge "Add support for LauncherUersInfo config" into main

parents ce71447c d34b2dab
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -12735,6 +12735,7 @@ package android.content.pm {
    method public abstract void onPackagesUnavailable(String[], android.os.UserHandle, boolean);
    method public void onPackagesUnsuspended(String[], android.os.UserHandle);
    method public void onShortcutsChanged(@NonNull String, @NonNull java.util.List<android.content.pm.ShortcutInfo>, @NonNull android.os.UserHandle);
    method @FlaggedApi("android.multiuser.add_launcher_user_config") public void onUserConfigChanged(@NonNull android.content.pm.LauncherUserInfo);
  }
  public static final class LauncherApps.PinItemRequest implements android.os.Parcelable {
@@ -12770,10 +12771,12 @@ package android.content.pm {
  @FlaggedApi("android.os.allow_private_profile") public final class LauncherUserInfo implements android.os.Parcelable {
    method @FlaggedApi("android.os.allow_private_profile") public int describeContents();
    method @FlaggedApi("android.multiuser.add_launcher_user_config") @NonNull public android.os.Bundle getUserConfig();
    method @FlaggedApi("android.os.allow_private_profile") public int getUserSerialNumber();
    method @FlaggedApi("android.os.allow_private_profile") @NonNull public String getUserType();
    method @FlaggedApi("android.os.allow_private_profile") public void writeToParcel(@NonNull android.os.Parcel, int);
    field @FlaggedApi("android.os.allow_private_profile") @NonNull public static final android.os.Parcelable.Creator<android.content.pm.LauncherUserInfo> CREATOR;
    field @FlaggedApi("android.multiuser.add_launcher_user_config") public static final String PRIVATE_SPACE_ENTRYPOINT_HIDDEN = "private_space_entrypoint_hidden";
  }
  public final class ModuleInfo implements android.os.Parcelable {
+2 −0
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package android.content.pm;

import android.content.pm.LauncherUserInfo;
import android.content.pm.ParceledListSlice;
import android.os.Bundle;
import android.os.UserHandle;
@@ -34,4 +35,5 @@ oneway interface IOnAppsChangedListener {
    void onPackagesUnsuspended(in UserHandle user, in String[] packageNames);
    void onShortcutChanged(in UserHandle user, String packageName, in ParceledListSlice shortcuts);
    void onPackageLoadingProgressChanged(in UserHandle user, String packageName, float progress);
    void onUserConfigChanged(in LauncherUserInfo launcherUserInfo);
}
+46 −0
Original line number Diff line number Diff line
@@ -182,6 +182,8 @@ public class LauncherApps {
     */
    public static final int FLAG_CACHE_PEOPLE_TILE_SHORTCUTS = 2;

    private static final String LAUNCHER_USER_INFO_EXTRA_KEY = "launcher_user_info";

    /** @hide */
    @IntDef(flag = false, prefix = { "FLAG_CACHE_" }, value = {
            FLAG_CACHE_NOTIFICATION_SHORTCUTS,
@@ -349,6 +351,19 @@ public class LauncherApps {
         */
        public void onPackageLoadingProgressChanged(@NonNull String packageName,
                @NonNull UserHandle user, float progress) {}

        /**
         * Indicates {@link LauncherUserInfo} configs for a user have changed. The new
         * {@link LauncherUserInfo} is given as a parameter.
         *
         * {@link LauncherUserInfo#getUserConfig} to get the updated user configs.
         *
         * @param launcherUserInfo The LauncherUserInfo of the user/profile whose configs have
         *                         changed.
         */
        @FlaggedApi(android.multiuser.Flags.FLAG_ADD_LAUNCHER_USER_CONFIG)
        public void onUserConfigChanged(@NonNull LauncherUserInfo launcherUserInfo) {
        }
    }

    /**
@@ -2168,6 +2183,21 @@ public class LauncherApps {
                }
            }
        }

        public void onUserConfigChanged(LauncherUserInfo launcherUserInfo) {
            if (DEBUG) {
                if (Flags.allowPrivateProfile()
                        && android.multiuser.Flags.addLauncherUserConfig()) {
                    Log.d(TAG, "OnUserConfigChanged for user type " + launcherUserInfo.getUserType()
                            + ", new userConfig: " + launcherUserInfo.getUserConfig());
                }
            }
            synchronized (LauncherApps.this) {
                for (CallbackMessageHandler callback : mCallbacks) {
                    callback.postOnUserConfigChanged(launcherUserInfo);
                }
            }
        }
    };

    /**
@@ -2224,6 +2254,7 @@ public class LauncherApps {
        private static final int MSG_UNSUSPENDED = 7;
        private static final int MSG_SHORTCUT_CHANGED = 8;
        private static final int MSG_LOADING_PROGRESS_CHANGED = 9;
        private static final int MSG_USER_CONFIG_CHANGED = 10;

        private final LauncherApps.Callback mCallback;

@@ -2278,6 +2309,14 @@ public class LauncherApps {
                    mCallback.onPackageLoadingProgressChanged(info.packageName, info.user,
                            info.mLoadingProgress);
                    break;
                case MSG_USER_CONFIG_CHANGED:
                    if (Flags.allowPrivateProfile()
                            && android.multiuser.Flags.addLauncherUserConfig()) {
                        mCallback.onUserConfigChanged(Objects.requireNonNull(
                                info.launcherExtras.getParcelable(LAUNCHER_USER_INFO_EXTRA_KEY,
                                        LauncherUserInfo.class)));
                    }
                    break;
            }
        }

@@ -2353,6 +2392,13 @@ public class LauncherApps {
            info.mLoadingProgress = progress;
            obtainMessage(MSG_LOADING_PROGRESS_CHANGED, info).sendToTarget();
        }

        public void postOnUserConfigChanged(LauncherUserInfo launcherUserInfo) {
            CallbackInfo info = new CallbackInfo();
            info.launcherExtras = new Bundle();
            info.launcherExtras.putParcelable(LAUNCHER_USER_INFO_EXTRA_KEY, launcherUserInfo);
            obtainMessage(MSG_USER_CONFIG_CHANGED, info).sendToTarget();
        }
    }

    /**
+44 −3
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package android.content.pm;

import android.annotation.FlaggedApi;
import android.annotation.NonNull;
import android.os.Bundle;
import android.os.Flags;
import android.os.Parcel;
import android.os.Parcelable;
@@ -31,11 +32,25 @@ import android.os.UserManager;
@FlaggedApi(Flags.FLAG_ALLOW_PRIVATE_PROFILE)
public final class LauncherUserInfo implements Parcelable {

    /**
     * A boolean extra indicating whether the private space entrypoint should be hidden when locked.
     *
     * @see #getUserConfig
     */
    @FlaggedApi(android.multiuser.Flags.FLAG_ADD_LAUNCHER_USER_CONFIG)
    public static final String PRIVATE_SPACE_ENTRYPOINT_HIDDEN =
            "private_space_entrypoint_hidden";

    private final String mUserType;

    // Serial number for the user, should be same as in the {@link UserInfo} object.
    private final int mUserSerialNumber;

    // Additional configs for the user, e.g., whether to hide the private space entrypoint when
    // locked.
    private final Bundle mUserConfig;


    /**
     * Returns type of the user as defined in {@link UserManager}. e.g.,
     * {@link UserManager.USER_TYPE_PROFILE_MANAGED} or {@link UserManager.USER_TYPE_PROFILE_ClONE}
@@ -49,6 +64,17 @@ public final class LauncherUserInfo implements Parcelable {
        return mUserType;
    }

    /**
     * Returns additional configs for this launcher user
     *
     * @see #PRIVATE_SPACE_ENTRYPOINT_HIDDEN
     */
    @FlaggedApi(android.multiuser.Flags.FLAG_ADD_LAUNCHER_USER_CONFIG)
    @NonNull
    public Bundle getUserConfig() {
        return mUserConfig;
    }

    /**
     * Returns serial number of user as returned by
     * {@link UserManager#getSerialNumberForUser(UserHandle)}
@@ -63,6 +89,7 @@ public final class LauncherUserInfo implements Parcelable {
    private LauncherUserInfo(@NonNull Parcel in) {
        mUserType = in.readString16NoHelper();
        mUserSerialNumber = in.readInt();
        mUserConfig = in.readBundle(Bundle.class.getClassLoader());
    }

    @Override
@@ -70,6 +97,7 @@ public final class LauncherUserInfo implements Parcelable {
    public void writeToParcel(@NonNull Parcel dest, int flags) {
        dest.writeString16NoHelper(mUserType);
        dest.writeInt(mUserSerialNumber);
        dest.writeBundle(mUserConfig);
    }

    @Override
@@ -99,23 +127,36 @@ public final class LauncherUserInfo implements Parcelable {
        private final String mUserType;

        private final int mUserSerialNumber;
        private final Bundle mUserConfig;


        @FlaggedApi(android.multiuser.Flags.FLAG_ADD_LAUNCHER_USER_CONFIG)
        public Builder(@NonNull String userType, int userSerialNumber, @NonNull Bundle config) {
            this.mUserType = userType;
            this.mUserSerialNumber = userSerialNumber;
            this.mUserConfig = config;
        }

        public Builder(@NonNull String userType, int userSerialNumber) {
            this.mUserType = userType;
            this.mUserSerialNumber = userSerialNumber;
            this.mUserConfig = new Bundle();
        }

        /**
         * Builds the LauncherUserInfo object
         */
        @NonNull public LauncherUserInfo build() {
            return new LauncherUserInfo(this.mUserType, this.mUserSerialNumber);
        @NonNull
        public LauncherUserInfo build() {
            return new LauncherUserInfo(this.mUserType, this.mUserSerialNumber, this.mUserConfig);
        }

    } // End builder

    private LauncherUserInfo(@NonNull  String userType, int userSerialNumber) {
    private LauncherUserInfo(@NonNull String userType, int userSerialNumber,
            @NonNull Bundle config) {
        this.mUserType = userType;
        this.mUserSerialNumber = userSerialNumber;
        this.mUserConfig = config;
    }
}
+7 −0
Original line number Diff line number Diff line
@@ -543,3 +543,10 @@ flag {
    purpose: PURPOSE_BUGFIX
  }
}

flag {
    name: "add_launcher_user_config"
    namespace: "profile_experiences"
    description: "Add support for LauncherUserInfo configs"
    bug: "346553745"
}
Loading