REGRESSION (r168921): SVG elements may be unnecessarily rebuilt
https://bugs.webkit.org/show_bug.cgi?id=136373

Reviewed by David Kilzer.

Source/WebCore:

Fixes an issue where a SVG element may be unnecessarily rebuilt. In particular,
it is unnecessary to rebuild a SVG element that will be removed from the document.

Test: svg/custom/remove-subtree-including-use-with-child-textpath-that-references-earlier-path.html

* svg/SVGDocumentExtensions.cpp:
(WebCore::SVGDocumentExtensions::removeAllElementReferencesForTarget): Modified to remove a SVG element
from the list of elements to be rebuilt.

LayoutTests:

Add a test to ensure that we don't rebuild a SVG element that will be removed from the document.

* svg/custom/remove-subtree-including-use-with-child-textpath-that-references-earlier-path-expected.txt: Added.
* svg/custom/remove-subtree-including-use-with-child-textpath-that-references-earlier-path.html: Added.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@173738 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Text laid out with the SVG -> OTF font converter does not have the same metrics as with the SVG font code path
https://bugs.webkit.org/show_bug.cgi?id=136907

Reviewed by Darin Adler.

There are three things that are causing text laid out with the SVG -> OTF font converter to not have metrics that
measure our existing SVG codepath. They are:

1. Creating a font with a 0 ascent or descent makes OS X think that something is wrong with the font, and take
a different codepath when trying to parse ascent and descent information. This patch checks for this condition
and sets the ascent/descent to 1 FUnit instead (which is generally much smaller than a pixel).
2. Our SVG font codepath hardcodes a line gap of 1/10th of the font size for every font. This patch makes the
font converter obey this.
3. The converter was not allowing for default glyph advances as per the SVG font specification. This patch
does so.

No new tests yet, but they will come soon! I promise!

* svg/SVGToOTFFontConversion.cpp:
(WebCore::SVGToOTFFontConverter::appendHHEATable):
(WebCore::SVGToOTFFontConverter::SVGToOTFFontConverter):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@173739 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Expand the srcset demo to have 3x and 4x images.

Unreviewed.

* demos/srcset/image-1x.png:
* demos/srcset/image-2x.png:
* demos/srcset/image-3x.png: Added.
* demos/srcset/image-4x.png: Added.
* demos/srcset/index.html:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@173740 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Improve fullscreen video rotation animation.
https://bugs.webkit.org/show_bug.cgi?id=136870

Patch by Jeremy Jones <jeremyj@apple.com> on 2014-09-18
Reviewed by Simon Fraser.

Source/WebCore:

Instead of setting the frame on the video layer, set position and bounds separately. This allows the position to be synchronized with the rest of the animation.
When using a fencePort to synchronize animations, if the fence times out, pivoting around the center provides a better fallback.

* platform/ios/WebVideoFullscreenInterfaceAVKit.mm:
(-[WebAVVideoLayer setVideoSublayer:]): added
(-[WebAVVideoLayer videoSublayer]): added
(-[WebAVVideoLayer setBounds:]):  set position and bounds insted of frame.
(WebVideoFullscreenInterfaceAVKit::setupFullscreen): use setVideoSublayer
* platform/ios/WebVideoFullscreenModelVideoElement.mm:
(WebVideoFullscreenModelVideoElement::setVideoFullscreenLayer): set bounds and anchorPoint instead of frame
(WebVideoFullscreenModelVideoElement::setVideoLayerFrame): set bounds instead of frame.

Source/WebKit2:

Remove WKCAContext from LayerHostingContext and use a fencePort to synchronize animation between processes.

* Platform/mac/LayerHostingContext.h: add setFencePort. Remove WKCAContext.
* Platform/mac/LayerHostingContext.mm:
(WebKit::LayerHostingContext::createForPort): Remove WKCAContext.
(WebKit::LayerHostingContext::createForExternalHostingProcess): ditto
(WebKit::LayerHostingContext::setRootLayer): ditto
(WebKit::LayerHostingContext::rootLayer): ditto
(WebKit::LayerHostingContext::contextID): ditto
(WebKit::LayerHostingContext::invalidate): ditto
(WebKit::LayerHostingContext::setColorSpace): ditto
(WebKit::LayerHostingContext::colorSpace): ditto
(WebKit::LayerHostingContext::setFencePort): added
* UIProcess/ios/WebVideoFullscreenManagerProxy.mm:
(WebKit::WebVideoFullscreenManagerProxy::setVideoLayerFrame):
* WebProcess/ios/WebVideoFullscreenManager.h:
* WebProcess/ios/WebVideoFullscreenManager.messages.in: add fence port parameter
* WebProcess/ios/WebVideoFullscreenManager.mm: ditto
(WebKit::WebVideoFullscreenManager::didSetupFullscreen): ditto
(WebKit::WebVideoFullscreenManager::setVideoLayerFrameFenced): ditto

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