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

Commit 96653266 authored by Android Build Merger (Role)'s avatar Android Build Merger (Role) Committed by Android (Google) Code Review
Browse files

Merge "Merge "Add removeState method to StateMachine" am: 0310de11 am:...

Merge "Merge "Add removeState method to StateMachine" am: 0310de11 am: 01106c45 am: 1a8bdf8b am: a95fc5fe"
parents 1af72898 694aa924
Loading
Loading
Loading
Loading
+28 −0
Original line number Diff line number Diff line
@@ -1189,6 +1189,26 @@ public class StateMachine {
            return stateInfo;
        }

        /**
         * Remove a state from the state machine. Will not remove the state if it is currently
         * active or if it has any children in the hierarchy.
         * @param state the state to remove
         */
        private void removeState(State state) {
            StateInfo stateInfo = mStateInfo.get(state);
            if (stateInfo == null || stateInfo.active) {
                return;
            }
            boolean isParent = mStateInfo.values().stream()
                    .filter(si -> si.parentStateInfo == stateInfo)
                    .findAny()
                    .isPresent();
            if (isParent) {
                return;
            }
            mStateInfo.remove(state);
        }

        /**
         * Constructor
         *
@@ -1336,6 +1356,14 @@ public class StateMachine {
        mSmHandler.addState(state, null);
    }

    /**
     * Removes a state from the state machine, unless it is currently active or if it has children.
     * @param state state to remove
     */
    public final void removeState(State state) {
        mSmHandler.removeState(state);
    }

    /**
     * Set the initial state. This must be invoked before
     * and messages are sent to the state machine.