Kyle and myself talked about this in detail. Here's my understanding of what we're going to do (Kyle is working on a design doc):
ash will connect to the gpu/viz service to observe display related changes. The connection will be done in an implementation of NativeDisplayDelegate. ash will use a custom DisplayManager::Delegate to update the necessary state in ash as well informing mus of state that only ash knows about but mus needs to know as well (Kyle mentioned scale_factor as one).
Currently when displays are added/removed mus tells ash via the WindowManager interface. When a display is added mus creates the window and embeds ash in it. This will change so that ash can create windows corresponding to roots and tell mus about it.
Currently ash's DisplayManager::Delegate implementation is WindowTreeHostManager. We need to make WTHM work with both classic ash, and mushrome/mash.
Display settings change various display state. Display settings will talk to an ash specific interface that updates internal ash state and then updates mus.
Comment 1 by kylec...@chromium.org
, Mar 29 2017