While it makes sense to separate out the tracker logic I'm not sure that it is useful to be able to mock SurfaceTracker.
I'd be inclined to hoist the implementation from SessionSurfaceTracker and avoiding the constructor parameter for SessionMediator by just having a data member.
But I won't block on that as a mockable SurfaceTracker may be what is needed by the follow-up.
While it makes sense to separate out the tracker logic I'm not sure that it is useful to be able to mock SurfaceTracker.
I'd be inclined to hoist the implementation from SessionSurfaceT racker and avoiding the constructor parameter for SessionMediator by just having a data member.
But I won't block on that as a mockable SurfaceTracker may be what is needed by the follow-up.