AppKit can fiddle with the visibleRect a *lot* and call renewGState a *lot* during autolayout. We need to wait until it's settled down to inform the WebProcess of the new visibleRect, especially because in some particular cases, waiting until autolayout is done means the visibleRect doesn't change *at all*, and we can skip tons and tons of work that we would previously have done.
Created attachment 201091 [details]
Comment on attachment 201091 [details]
View in context: https://bugs.webkit.org/attachment.cgi?id=201091&action=review
> + if (m_sendViewExposedRectChangedTimer.isActive())
> + m_sendViewExposedRectChangedTimer.stop();
Can't you unconditionally call stop?
> + WebCore::Timer<WebPageProxy> m_sendViewExposedRectChangedTimer;
Hard to parse this name. How about m_exposedRectChangedTimer?
> + WebCore::FloatRect m_lastSentViewExposedRect;