Optimize RenderElement::rendererForRootBackground() a bit
https://bugs.webkit.org/show_bug.cgi?id=139527

Reviewed by Andreas Kling.

Optimize RenderElement::rendererForRootBackground() a bit by not
calling Document::body(). We are only interested in the child element
with a <body> tag. However, Document::body() first checks if a
<frameset> child is present.

No new tests, no behavior change.

* rendering/RenderElement.cpp:
(WebCore::RenderElement::rendererForRootBackground):


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@177193 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Implement frag depth as a WebGL 1 extension.
https://bugs.webkit.org/show_bug.cgi?id=133635.
<rdar://problem/19195381>
Reviewed by Dean Jackson.
Test:
webgl/1.0.3/conformance/extensions/ext-frag-depth.html
Spec for this extension outlined here:
http://www.khronos.org/registry/webgl/extensions/EXT_frag_depth/
* CMakeLists.txt:
* DerivedSources.cpp:
* DerivedSources.make:
* WebCore.vcxproj/WebCore.vcxproj:
* WebCore.vcxproj/WebCore.vcxproj.filters:
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/JSWebGLRenderingContextCustom.cpp:
(WebCore::toJS):
* html/canvas/EXTFragDepth.cpp: Added.
(WebCore::EXTFragDepth::EXTFragDepth):
(WebCore::EXTFragDepth::~EXTFragDepth):
(WebCore::EXTFragDepth::getName):
* html/canvas/EXTFragDepth.h: Added.
* html/canvas/EXTFragDepth.idl: Added.
* html/canvas/WebGLExtension.h:
* html/canvas/WebGLRenderingContext.cpp:
(WebCore::WebGLRenderingContext::getExtension):
(WebCore::WebGLRenderingContext::getSupportedExtensions):
* html/canvas/WebGLRenderingContext.h:
* platform/graphics/opengl/Extensions3DOpenGL.cpp:
(WebCore::Extensions3DOpenGL::supportsExtension):
* platform/graphics/opengl/Extensions3DOpenGLCommon.cpp:
(WebCore::Extensions3DOpenGLCommon::ensureEnabled):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@177194 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Unreviewed. Fix to build fix in r177134.
* html/canvas/WebGLDrawBuffers.cpp: iOS should query the system for GL extension availability.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@177195 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Unreviewed, rolling out r177081.
https://bugs.webkit.org/show_bug.cgi?id=139569

broke iOS video playback (Requested by eric_carlson on
#webkit).

Reverted changeset:

"Fix iOS builders for 8.0"
https://bugs.webkit.org/show_bug.cgi?id=139495
http://trac.webkit.org/changeset/177081

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@177196 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[iOS] Normalize iOS DeviceOrientation beta/gamma per spec.
https://bugs.webkit.org/show_bug.cgi?id=137134
<radr://problem/9414459>

Patch by Rich Tibbett <rich.tibbett@gmail.com> on 2014-12-11
Reviewed by Benjamin Poulain.

Normalize DeviceOrientation beta and gamma on iOS to match the
conventions defined in the W3C DeviceOrientation Events specification.

beta values are returned in the range [-180, 180). gamma values are
returned in the range [-90, 90).

* platform/ios/WebCoreMotionManager.mm:


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@177198 268f45cc-cd09-0410-ab3c-d52691b4dbfc
WK1: Need new SPI for Webkit clients to override default immediate action
https://bugs.webkit.org/show_bug.cgi?id=139568
-and corresponding-
rdar://problem/19225448

Reviewed by Dan Bernstein.

Call SPI giving clients a chance to override the default behavior.
* WebView/WebImmediateActionController.mm:
(-[WebImmediateActionController _updateImmediateActionItem]):

New SPI.
* WebView/WebUIDelegatePrivate.h:



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@177199 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Transform-style should not kill position:fixed
https://bugs.webkit.org/show_bug.cgi?id=138122

Reviewed by Dean Jackson.

Source/WebCore:

Various bits of rendering code checked RenderObject::hasTransform() for various
reasons. Confusingly, this meant "has transform, or preserve-3d, or perspective".

This patch teases those behaviors apart to produce the following behavior:

1. "transform" acts as containing block for fixed position (no behavior change).
2. "transform" acts as containing block for absolute/relative position (no behavior change).
3. "perspective" does not act as containing block for fixed position (no behavior change).
4. "perspective" acts as containing block for absolute/relative position (no behavior change).
5. "preserve-3d" does not act as containing block for fixed position (behavior change).
6. "preserve-3d" acts as containing block for absolute/relative position. This is not a
behavior change, but seems like incorrect behavior (https://www.w3.org/Bugs/Public/show_bug.cgi?id=27566).
However, we may be forced to keep it for compatibility.

The gist of the change is to rename RenderObject::hasTransform() to RenderObject::hasTransformRelatedProperty(),
and add hasTransform() with the more restrictive meaning. All call sites of hasTransform() were examined
and fixed to produce the desired behaviors.

Tests: transforms/2d/perspective-not-fixed-container.html
       transforms/2d/preserve3d-not-fixed-container.html
       transforms/perspective-is-containing-block-for-absolute.html
       transforms/preserve3d-is-containing-block-for-absolute.html
       transforms/transform-is-containing-block-for-absolute.html

* css/CSSComputedStyleDeclaration.cpp:
(WebCore::computedTransform): Now we can just test hasTransform().
* rendering/LogicalSelectionOffsetCaches.h:
(WebCore::isContainingBlockCandidateForAbsolutelyPositionedObject): For now, this
can just use hasTransformRelatedProperty(), but if we change [6] above this will have
to change (as documented in the comment). Also FIXME comments about sharing code.
* rendering/RenderBox.cpp:
(WebCore::RenderBox::updateFromStyle):
(WebCore::RenderBox::mapLocalToContainer): Can just use hasTransform() now.
(WebCore::RenderBox::pushMappingToContainer): Ditto.
(WebCore::RenderBox::mapAbsoluteToLocalPoint): Ditto.
(WebCore::RenderBox::layoutOverflowRectForPropagation): Ditto.
* rendering/RenderBox.h: All transform-related properties create RenderLayers.
* rendering/RenderBoxModelObject.h: Ditto.
* rendering/RenderElement.cpp:
(WebCore::RenderElement::styleWillChange):
* rendering/RenderGeometryMap.cpp:
(WebCore::canMapBetweenRenderersViaLayers): Rename to clarify. We need to not map via
layers if we have a perspective (since we need to generate a perspective matrix). It's
OK with preserve-3d though.
(WebCore::RenderGeometryMap::pushMappingsToAncestor):
(WebCore::canMapBetweenRenderers): Deleted.
* rendering/RenderInline.cpp:
(WebCore::RenderInline::updateFromStyle):
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::updateTransform): Can just check hasTransform().
(WebCore::RenderLayer::updateLayerPosition): Avoid calling parent() and enclosingPositionedAncestor() twice.
(WebCore::RenderLayer::perspectiveTransform): Do the fast bit check hasTransformRelatedProperty() first.
(WebCore::RenderLayer::perspectiveOrigin): Ditto.
(WebCore::isContainerForPositioned): This code has to now have different behavior for absolute and fixed
position. Changed it to call existing functions, rather than having a 3rd place that has to know about
containing block rules.
(WebCore::RenderLayer::enclosingAncestorForPosition): Call isContainerForPositioned() now.
(WebCore::accumulateOffsetTowardsAncestor): Call enclosingAncestorForPosition().
(WebCore::RenderLayer::createLocalTransformState):
(WebCore::RenderLayer::calculateClipRects):
(WebCore::isPositionedContainer): Deleted.
(WebCore::isFixedPositionedContainer): Deleted.
(WebCore::RenderLayer::enclosingPositionedAncestor): Deleted.
* rendering/RenderLayer.h:
* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::updateGeometry):
* rendering/RenderLayerModelObject.cpp:
(WebCore::RenderLayerModelObject::styleDidChange):
* rendering/RenderObject.cpp:
(WebCore::RenderObject::shouldUseTransformFromContainer): Can just check hasTransform() now.
(WebCore::RenderObject::container):
* rendering/RenderObject.h:
(WebCore::RenderObject::hasTransformRelatedProperty):
(WebCore::RenderObject::hasTransform):
(WebCore::RenderObject::setHasTransformRelatedProperty):
(WebCore::RenderObject::RenderObjectBitfields::RenderObjectBitfields):
(WebCore::RenderObject::setHasTransform): Deleted.
* rendering/RenderTableRow.h:
* rendering/RenderView.cpp:
(WebCore::RenderView::mapLocalToContainer): nullptr goodness.
(WebCore::RenderView::pushMappingToContainer): Ditto.
(WebCore::RenderView::mapAbsoluteToLocalPoint): Ditto.

LayoutTests:

New tests and updated results:

* platform/mac/compositing/tiling/rotated-tiled-preserve3d-clamped-expected.txt: Progression, caused
by RenderLayerBacking::updateCompositedBounds() now allowing shouldClipCompositedBounds on
preserve-3d layers, since they are no longer considered to have a transform.
* platform/mac/compositing/visible-rect/3d-transform-style-expected.txt: Ditto.
* transforms/2d/perspective-not-fixed-container-expected.html: Added.
* transforms/2d/perspective-not-fixed-container.html: Added. Tests that
perspective does not act as containing block for fixed position (not a behavior change).
* transforms/2d/preserve3d-not-fixed-container-expected.html: Added.
* transforms/2d/preserve3d-not-fixed-container.html: Added. Tests that
preserve3d does not act as containing block for fixed position. This is a behavior change.
* transforms/perspective-is-containing-block-for-absolute-expected.html: Added.
* transforms/perspective-is-containing-block-for-absolute.html: Added. Tests that
perspective is a as containing block for absolute/relative position. This is not a behavior change.
* transforms/preserve3d-is-containing-block-for-absolute-expected.html: Added.
* transforms/preserve3d-is-containing-block-for-absolute.html: Added. Tests that
preserve3d is a as containing block for absolute/relative position. This is not a behavior change,
but seems like incorrect behavior for now.
* transforms/transform-is-containing-block-for-absolute-expected.html: Added.
* transforms/transform-is-containing-block-for-absolute.html: Added. Tests that
transform is a as containing block for absolute/relative position. This is not a behavior change.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@177200 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Fix a leak introduced in r177199.

Reviewed by Anders Carlsson.

* WebView/WebImmediateActionController.mm:
(-[WebImmediateActionController _updateImmediateActionItem]):



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@177201 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Web Inspector: Crash when trying to inspect LocalStorage
https://bugs.webkit.org/show_bug.cgi?id=139573

Reviewed by Anders Carlsson.

Move away from PageGroup::localStorage and instead to StorageNamespaceProvider.
This matches what DOMWindow::localStorage does to get the StorageArea for a document.

* inspector/InspectorDOMStorageAgent.cpp:
(WebCore::InspectorDOMStorageAgent::findStorageArea):

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