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

Commit a95fc5fe authored by Hall Liu's avatar Hall Liu Committed by android-build-merger
Browse files

Merge "Add removeState method to StateMachine" am: 0310de11 am: 01106c45

am: 1a8bdf8b

Change-Id: I54cbb26c9f68edb07aca4e8054750c665a33098f
parents fbeca51b 1a8bdf8b
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.