Although THEOplayer has some good built-in heuristics to infer which API calls must have come from a user activation event (e.g. calling play() while unmuted, or setting muted = false while playing), there might still be cases where the heuristic fails.
In the Open Video UI, we know that when we call play() from our <theoplayer-play-button>, that this call originated from a click event, and so we should call prepareWithUserAction() to ensure the player knows that we're currently in a user activation event. (Our legacy UI also does this.)