There are multiple coordinators in which |-start| and |-stop| need to be idempotent, and they implement a self.started property to allow returning early to prevent code from being run multiple times. For example, if a coordinator needs to observe a KeyedService for its lifecycle, then attempting to remove itself as an observer in |-stop| twice would cause a crash. This is particularly likely since ChromeCoordinator calls |-stop| in |-dealloc|. ChromeCoordinator should be updated to track whether it's been started and early return appropriately in these selectors. Subclasses could then add functionality in |-willStart|, |-didStart|, |-willStop|, and |-didStop|.
Comment 1 by kkhorimoto@chromium.org
, Aug 23