[iOS][WK2] Synchronize the dynamic viewport updates with their layer tree commit
https://bugs.webkit.org/show_bug.cgi?id=134965
Related to <rdar://problem/17082607>

Patch by Benjamin Poulain <bpoulain@apple.com> on 2014-07-16
Reviewed by Tim Horton.

Dynamic viewport update relies on the _resizeAnimationTransformAdjustments being applied
to the page at the new size during the transition.

Because of the races between the LayerTree Commit and DynamicViewportSizeUpdate, the transform
can be applied to the wrong set of tiles.
This is mostly a problem for unresponsive WebProcess or when the synchronization is done
immediately.

There is at least one more case that is not handled: if synchronizeDynamicViewportUpdate()
completely fails to get the new page, the UIProcess is in a somewhat messy state.
I will look into that separately than the layer tree synchronization.

* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _didCommitLayerTree:]):
(-[WKWebView _dynamicViewportUpdateChangedTargetToScale:position:nextValidLayerTreeTransactionID:]):
(-[WKWebView _dynamicViewportUpdateChangedTargetToScale:position:]): Deleted.
* UIProcess/API/Cocoa/WKWebViewInternal.h:
* UIProcess/PageClient.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::WebPageProxy):
(WebKit::WebPageProxy::resetState):
* UIProcess/WebPageProxy.h:
* UIProcess/ios/PageClientImplIOS.h:
* UIProcess/ios/PageClientImplIOS.mm:
(WebKit::PageClientImpl::dynamicViewportUpdateChangedTarget):
* UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::dynamicViewportSizeUpdate):
(WebKit::WebPageProxy::synchronizeDynamicViewportUpdate):
(WebKit::WebPageProxy::didCommitLayerTree):
(WebKit::WebPageProxy::dynamicViewportUpdateChangedTarget):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::WebPage):
(WebKit::WebPage::didCommitLoad):
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::synchronizeDynamicViewportUpdate):
(WebKit::WebPage::updateVisibleContentRects):
* WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.h:
(WebKit::RemoteLayerTreeDrawingArea::nextTransactionID):
(WebKit::RemoteLayerTreeDrawingArea::currentTransactionID): Deleted.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@171154 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Dispatch top content inset changes immediately if synchronously waiting for view state changes
​https://bugs.webkit.org/show_bug.cgi?id=134942
<rdar://problem/17666800>

Reviewed by Simon Fraser.

* UIProcess/API/mac/WKView.mm:
(-[WKView _dispatchSetTopContentInset]):
(-[WKView _setTopContentInset:]):
Move the check from _setTopContentInset: to _dispatchSetTopContentInset
that ensures that we only send the message if the top content inset changed.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@171155 268f45cc-cd09-0410-ab3c-d52691b4dbfc
<rdar://problem/17669097> REGRESSION (r170155): Sandbox violations using a wrong
CFNetwork cache path in WebContent process

Rubber-stamped by Sam Weinig.

Before r170155, we incorrectly checked usesNetworkProcess(), which always returns
false at this point in initialization sequence. But we did the right thing, as we
always need to set the cache path, even when network process is used for most loading.

* WebProcess/cocoa/WebProcessCocoa.mm: (WebKit::WebProcess::platformInitializeWebProcess):



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@171156 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[Mac] replace AVPlayerItem on the main thread
https://bugs.webkit.org/show_bug.cgi?id=134983

Reviewed by Jer Noble.

No new tests, this fixes a problem with a thread configuration not present in the
test environment.

* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
(WebCore::MediaPlayerPrivateAVFoundationObjC::setAVPlayerItem): New, when called off of
    the main thread, dispatch to the main thread before setting AVPlayerItem.
(WebCore::MediaPlayerPrivateAVFoundationObjC::createAVPlayer): Call setAVPlayerItem.
(WebCore::MediaPlayerPrivateAVFoundationObjC::createAVPlayerItem): Ditto.
(WebCore::MediaPlayerPrivateAVFoundationObjC::setShouldBufferData): Ditto.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@171157 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Captions container should not clip content.
https://bugs.webkit.org/show_bug.cgi?id=134840.
<rdar://problem/14553608>.

Reviewed by Simon Fraser.

Tests: media/track/track-in-band-subtitles-too-large.html
       media/track/track-long-word-container-sizing.html

* Modules/mediacontrols/mediaControlsApple.css:
(video::-webkit-media-text-track-container):
Set word break property of WebCTT cues to normal to make it consistent with in-band cues.
* html/track/TextTrackCueGeneric.cpp:
(WebCore::TextTrackCueGenericBoxElement::applyCSSProperties):
Set -webkit-min-content on min-width/min-height property of the text track display.
* html/track/VTTCue.cpp:
(WebCore::VTTCueBox::applyCSSProperties):
Do the same for WebVTT cues.

* media/track/track-cue-rendering-snap-to-lines-not-set-expected.txt: Rebaseline.
* media/track/captions-webvtt/long-word-small-track-display.vtt: Added.
* media/track/track-in-band-subtitles-too-large-expected.txt: Added.
* media/track/track-in-band-subtitles-too-large.html: Added.
* media/track/track-long-word-container-sizing-expected.txt: Added.
* media/track/track-long-word-container-sizing.html: Added.

We no longer break in the middle of a word, this test is no longer useful.
* media/track/captions-webvtt/long-word.vtt: Removed.
* media/track/track-word-breaking-expected.txt: Removed.
* media/track/track-word-breaking.html: Removed.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@171158 268f45cc-cd09-0410-ab3c-d52691b4dbfc
REGRESSION (iOS WebKit2): Cannot scroll while dragging a selection.
https://bugs.webkit.org/show_bug.cgi?id=134992
<rdar://problem/17528020>

Reviewed by Benjamin Poulain.

This patch exposes the scroller and the visible content rect so that
UIKit can implement autoscroll when dragging the selections.
It also changes that way we do hit testing to allow hit test outside
the clipping region and fixes the way we compute the selection rectangle
for the block selection, ensuring that we consider also non text elements
like images.

* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView scroller]):
(-[WKContentView visibleRect]):
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::selectionBoxForRange):
(WebKit::WebPage::rangeForWebSelectionAtPosition):
(WebKit::WebPage::rangeForBlockAtPoint):
(WebKit::WebPage::expandedRangeFromHandle):
(WebKit::WebPage::contractedRangeFromHandle):
(WebKit::WebPage::computeExpandAndShrinkThresholdsForHandle):
(WebKit::WebPage::changeBlockSelection):



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