[Mac, iOS] Stop buffering media when on an inactive tab. 
https://bugs.webkit.org/show_bug.cgi?id=132077

Reviewed by Eric Carlson.

* html/HTMLMediaElement.cpp: Rename 'm_isDisplaySleepDisablingSuspended'
to 'm_elementIsHidden'.
(WebCore::HTMLMediaElement::HTMLMediaElement):
(WebCore::HTMLMediaElement::visibilityStatusChanged): Notify the
media session that the element is (or is not) hidden.
(WebCore::HTMLMediaElement::setShouldBufferData): Added.
* html/HTMLMediaElement.h:
* platform/audio/MediaSession.cpp:
(WebCore::MediaSession::clientWillBeginPlayback): Tell media to
buffer if not hidden or playing.
(WebCore::MediaSession::clientWillPausePlayback): Ditto.
(WebCore::MediaSession::visibilityChanged): Added. Client API, just relays call
to updateClientDataBuffering.
(WebCore::MediaSession::updateClientDataBuffering): Tell client it should only
buffer data if it's currently playing, or not hidden.
* platform/audio/MediaSession.h:
* platform/graphics/MediaPlayer.cpp:
(WebCore::MediaPlayer::setShouldBufferData): Added: Just relays to
MediaPlayerPrivate object.
* platform/graphics/MediaPlayer.h:
* platform/graphics/MediaPlayerPrivate.h:
(WebCore::MediaPlayerPrivateInterface::setShouldBufferData):
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
(WebCore::MediaPlayerPrivateAVFoundationObjC::MediaPlayerPrivateAVFoundationObjC):
(WebCore::MediaPlayerPrivateAVFoundationObjC::setShouldBufferData): Added.
Detach the player item from the player if we don't want to continue
buffering or other background tasks.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@167734 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[iOS][WK2] Fix a few mistakes affecting the initial layout and the initial unobscured rect
https://bugs.webkit.org/show_bug.cgi?id=132093

Source/WebCore: 

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

Change the minimum layout size to float point values to account for size defined on retina displays.
The minimum layout size supports half-pixels, the value is rounded later when computing the layout size
in document coordinates.

* WebCore.exp.in:
* page/ViewportConfiguration.cpp:
(WebCore::ViewportConfiguration::ViewportConfiguration):
Setting the initial content size is incorrect. The layout size computation already take into account
empty size for the first layout.

Setting the content size upfront make the first computation incorrect when the viewport arguments specify
the initial scale.

(WebCore::ViewportConfiguration::setMinimumLayoutSize):
* page/ViewportConfiguration.h:
(WebCore::ViewportConfiguration::minimumLayoutSize):

Source/WebKit2: 
<rdar://problem/16703237>

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

The user of WKWebView can setup a size on device pixels, which can add half a point to the minimum
layout size. By rounding this up before applying the page scale, we ended up with rounding errors
on the layout size and the transitory unobscured content rect.

This patch fixes changes the minimal layout size to float point values to reduce the rounding problems.

* UIProcess/API/Cocoa/WKWebView.mm:
(setViewportConfigurationMinimumLayoutSize):
(-[WKWebView _setMinimumLayoutSizeOverrideForMinimalUI:]):
(-[WKWebView _beginAnimatedResizeWithUpdates:]):
* UIProcess/WebPageProxy.h:
* UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::dynamicViewportSizeUpdate):
(WebKit::WebPageProxy::setViewportConfigurationMinimumLayoutSize):
(WebKit::WebPageProxy::setMinimumLayoutSizeForMinimalUI):

* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::didCommitLoad):
Defaulting the content size to the minimum layout size only works if the initial-scale is 1.
ViewportConfiguration knows exactly what to do before the first layout.

* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::setViewportConfigurationMinimumLayoutSize):
(WebKit::WebPage::setMinimumLayoutSizeForMinimalUI):
(WebKit::WebPage::dynamicViewportSizeUpdate):
A few fixes here:
-setZoomedOutPageScaleFactor() was incorrectly using the initial scale. 99% of the time, initial scale
 and minimum scale are equal, but the page can specify something different with the viewport meta tag.
-Use floating point for manipulating the minimum layout sizes, then round the value.
-minimumLayoutSizeInDocumentCoordinate was scaled the wrong way around.

(WebKit::WebPage::viewportConfigurationChanged):


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@167735 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Try to fix iOS build.

* DumpRenderTree/mac/DumpRenderTree.mm:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@167736 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[EFL][WK1] Add *const* keyword to _get() APIs
https://bugs.webkit.org/show_bug.cgi?id=132094

Patch by Hyowon Kim <hw1008.kim@samsung.com> on 2014-04-23
Reviewed by Gyuyoung Kim.

Some _get() EFL APIs don't have *const* keyword though the _get() APIs don't modify passed argument.
We need to add *const* keyword to those APIs.

* ewk/ewk_history.cpp:
(ewk_history_limit_get):
* ewk/ewk_history.h:
* ewk/ewk_js.cpp:
(ewk_js_object_type_get):
* ewk/ewk_js.h:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@167737 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[iOS][WK2] Image and text documents sometime gets the webpage viewport configuration
https://bugs.webkit.org/show_bug.cgi?id=132099

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

When didReceiveMobileDocType(), if the doctype was not XHTML mobile, we were setting
the viewport configuration to webpageParameters(). This is obviously not correct for
Image and Text documents.

This patch moves the code deciding the default configuration out of WebPage::didCommitLoad()
and use it from WebPage::didCommitLoad() and WebPage::didReceiveMobileDocType().

* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::didCommitLoad):
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::didReceiveMobileDocType):
(WebKit::WebPage::resetViewportDefaultConfiguration):


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@167738 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Nonopaque layers double-paint with UI-side compositing
https://bugs.webkit.org/show_bug.cgi?id=132101

Reviewed by Tim Horton.

The non-IOSurface code path was failing to clear the backing store
before painting.

* Shared/mac/RemoteLayerBackingStore.mm:
(WebKit::RemoteLayerBackingStore::display):
(WebKit::RemoteLayerBackingStore::drawInContext):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@167739 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[iOS WK2] Make -webkit-overflow-scrolling:touch work
https://bugs.webkit.org/show_bug.cgi?id=132097

Reviewed by Tim Horton.

Scrolling of UIScrollViews in content (for -webkit-overflow-scrolling:touch)
depends on them getting hit-tested correctly. UIKit hit testing assumes
that subviews are enclosed by their ancestors, but this is not true of
web content. In addition, we had a root layer that was zero sized.

Fix by overriding hitTest:withEvent: on our content WKViews to hit
test subviews even if they are not enclosed.

* UIProcess/ios/RemoteLayerTreeHostIOS.mm:
(-[UIView _recursiveFindDescendantViewAtPoint:withEvent:]):
(-[UIView _findDescendantViewAtPoint:withEvent:]):
(-[WKCompositingView hitTest:withEvent:]):
(-[WKTransformView hitTest:withEvent:]):
(-[WKRemoteView hitTest:withEvent:]):
(WebKit::RemoteLayerTreeHost::createLayer):
* WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm:
(WebKit::RemoteLayerTreeDrawingArea::updatePreferences):
Update debug borders on the root layer.
(WebKit::RemoteLayerTreeDrawingArea::mainFrameContentSizeChanged):
Size the root layer to the contents size. This isn't strictly necessary
given the hit testing overrides, but seems sensible to do anyway.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@167740 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Canvas cache of clean URLs can grow without bounds.
<https://webkit.org/b/132091>
<rdar://problem/16695665>

Remove a silly "optimization" that kept a cache of clean URLs
that can be drawn into a canvas without tainting it, all to avoid
the "expensive" checks to determine whether it would taint.

Reviewed by Benjamin Poulain.

* html/canvas/CanvasRenderingContext.cpp:
(WebCore::CanvasRenderingContext::wouldTaintOrigin):
* html/canvas/CanvasRenderingContext.h:


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