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

Commit 5f66d308 authored by Pat Manning's avatar Pat Manning Committed by Android (Google) Code Review
Browse files

Merge "Create API to set taskbar to kids mode."

parents 2edc6b83 8ffa58cd
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -859,7 +859,11 @@ package android.app {
  public class StatusBarManager {
    method @NonNull @RequiresPermission(android.Manifest.permission.STATUS_BAR) public android.app.StatusBarManager.DisableInfo getDisableInfo();
    method @RequiresPermission(android.Manifest.permission.STATUS_BAR) public int getNavBarModeOverride();
    method @RequiresPermission(android.Manifest.permission.STATUS_BAR) public void setDisabledForSetup(boolean);
    method @RequiresPermission(android.Manifest.permission.STATUS_BAR) public void setNavBarModeOverride(int);
    field public static final int NAV_BAR_MODE_OVERRIDE_KIDS = 1; // 0x1
    field public static final int NAV_BAR_MODE_OVERRIDE_NONE = 0; // 0x0
  }
  public static final class StatusBarManager.DisableInfo {
+73 −0
Original line number Diff line number Diff line
@@ -282,6 +282,33 @@ public class StatusBarManager {
    @Retention(RetentionPolicy.SOURCE)
    public @interface RequestResult {}

    /**
     * Constant for {@link #setNavBarModeOverride(int)} indicating the default navbar mode.
     *
     * @hide
     */
    @SystemApi
    public static final int NAV_BAR_MODE_OVERRIDE_NONE = 0;

    /**
     * Constant for {@link #setNavBarModeOverride(int)} indicating kids navbar mode.
     *
     * <p>When used, back and home icons will change drawables and layout, recents will be hidden,
     * and the navbar will remain visible when apps are in immersive mode.
     *
     * @hide
     */
    @SystemApi
    public static final int NAV_BAR_MODE_OVERRIDE_KIDS = 1;

    /** @hide */
    @IntDef(prefix = {"NAV_BAR_MODE_OVERRIDE_"}, value = {
            NAV_BAR_MODE_OVERRIDE_NONE,
            NAV_BAR_MODE_OVERRIDE_KIDS
    })
    @Retention(RetentionPolicy.SOURCE)
    public @interface NavBarModeOverride {}

    @UnsupportedAppUsage
    private Context mContext;
    private IStatusBarService mService;
@@ -687,6 +714,52 @@ public class StatusBarManager {
        }
    }

    /**
     * Sets or removes the navigation bar mode override.
     *
     * @param navBarModeOverride the mode of the navigation bar override to be set.
     *
     * @hide
     */
    @SystemApi
    @RequiresPermission(android.Manifest.permission.STATUS_BAR)
    public void setNavBarModeOverride(@NavBarModeOverride int navBarModeOverride) {
        if (navBarModeOverride != NAV_BAR_MODE_OVERRIDE_NONE
                && navBarModeOverride != NAV_BAR_MODE_OVERRIDE_KIDS) {
            throw new UnsupportedOperationException(
                    "Supplied navBarModeOverride not supported: " + navBarModeOverride);
        }

        try {
            final IStatusBarService svc = getService();
            if (svc != null) {
                svc.setNavBarModeOverride(navBarModeOverride);
            }
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }
    }

    /**
     * Gets the navigation bar mode override. Returns default value if no override is set.
     *
     * @hide
     */
    @SystemApi
    @RequiresPermission(android.Manifest.permission.STATUS_BAR)
    public @NavBarModeOverride int getNavBarModeOverride() {
        int navBarModeOverride = NAV_BAR_MODE_OVERRIDE_NONE;
        try {
            final IStatusBarService svc = getService();
            if (svc != null) {
                navBarModeOverride = svc.getNavBarModeOverride();
            }
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }
        return navBarModeOverride;
    }

    /** @hide */
    public static String windowStateToString(int state) {
        if (state == WINDOW_STATE_HIDING) return "WINDOW_STATE_HIDING";
+8 −0
Original line number Diff line number Diff line
@@ -10118,6 +10118,14 @@ public final class Settings {
        public static final String THEME_CUSTOMIZATION_OVERLAY_PACKAGES =
                "theme_customization_overlay_packages";
        /**
         * Indicates whether the device is in kids nav mode.
         * <p>Type: int (0 for false, 1 for true)
         *
         * @hide
         */
        public static final String NAV_BAR_KIDS_MODE = "nav_bar_kids_mode";
        /**
         * Navigation bar mode.
         *  0 = 3 button
+16 −0
Original line number Diff line number Diff line
@@ -162,4 +162,20 @@ interface IStatusBarService

    void requestAddTile(in ComponentName componentName, in CharSequence label, in Icon icon, int userId, in IAddTileResultCallback callback);
    void cancelRequestAddTile(in String packageName);

    /**
    * Overrides the navigation bar mode.
    *
    * @param navBarModeOverride the mode of the navigation bar override to be set.
    *
    * @hide
    */
    void setNavBarModeOverride(int navBarModeOverride);

    /**
    * Gets the navigation bar mode override.
    *
    * @hide
    */
    int getNavBarModeOverride();
}
+2 −1
Original line number Diff line number Diff line
@@ -383,6 +383,7 @@ message SecureSettingsProto {

    optional SettingProto multi_press_timeout = 38 [ (android.privacy).dest = DEST_AUTOMATIC ];

    optional SettingProto nav_bar_kids_mode = 91 [ (android.privacy).dest = DEST_AUTOMATIC ];
    optional SettingProto navigation_mode = 76 [ (android.privacy).dest = DEST_AUTOMATIC ];

    message NfcPayment {
@@ -665,5 +666,5 @@ message SecureSettingsProto {

    // Please insert fields in alphabetical order and group them into messages
    // if possible (to avoid reaching the method limit).
    // Next tag = 91;
    // Next tag = 92;
}
Loading