Coalesce WKView visibleRect changes
https://bugs.webkit.org/show_bug.cgi?id=115792
<rdar://problem/13776842>

Reviewed by Simon Fraser.

The system can call renewGState much more often than we actually want
to update the WebProcess' notion of the exposed rect. Most importantly,
within an autolayout pass it is called many times, and often sees
[WKView visibleRect] be an intermediate value which will never be
flushed to the screen. We only care about the final value, so we should
wait until AppKit has finished - with a zero-delay timer - to inform the
WebProcess of exposed rect changes.

* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::WebPageProxy):
Add exposedRectChangedTimer.
(WebKit::WebPageProxy::close):
Cancel exposedRectChangedTimer when tearing down the WebPageProxy.
* UIProcess/WebPageProxy.h:
(WebPageProxy):
Add exposedRectChangedTimerFired, the timer itself, and two rects:
the most recent exposed rect from the WKView, and the last one we actually
sent across to the WebProcess.
* UIProcess/mac/WebPageProxyMac.mm:
(WebKit::WebPageProxy::viewExposedRectChanged):
Instead of immediately sending exposed rect changes to the WebProcess,
start a zero-delay timer to do so.
(WebKit::WebPageProxy::exposedRectChangedTimerFired):
Once the zero-delay timer fires, send the new exposed rect to the WebProcess.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@149761 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Safari unexpectedly quits with invalid message from the web process with message ID 0x323002f (WebPageProxy.DecidePolicyForNavigationAction)
https://bugs.webkit.org/show_bug.cgi?id=115814
<rdar://problem/12331258>

Reviewed by Andreas Kling.

To ensure that any asynchronous messages are delivered to the UI process before
synchronous messages (except when doing so would lead to a deadlock), Call
setOnlySendMessagesAsDispatchWhenWaitingForSyncReplyWhenProcessingSuchAMessage on the UI process connections.

* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::initializeConnection):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@149762 268f45cc-cd09-0410-ab3c-d52691b4dbfc