WebKit-https.git
5 years agoAdapt inline SVG sizing behavior to Firefox and Blink
krit@webkit.org [Tue, 6 May 2014 06:06:28 +0000 (06:06 +0000)]
Adapt inline SVG sizing behavior to Firefox and Blink
https://bugs.webkit.org/show_bug.cgi?id=132569

Reviewed by Dean Jackson.

Source/WebCore:
This patch is ported from Blink CR 308992. Thanks to David Vest for helping
with back porting his Blink patch. From the commit message:

"The basis of this change is to map explicit width and height
attributes to CSS properties, essentially promoting them to
presentation attributes. Note that implicit "100%" width and height
are not mapped.

This enables us to remove the concept of "percentage intrinsic size"
and rely on normal CSS rules to resolve percentage values.

The change has been approved by the SVG WG and the spec is being
updated. Minutes here:

http://www.w3.org/2014/04/07-svg-minutes.html#item03"

The new model was indeed approved by the SVG WG and is basically following
the CSS 2.1 model for replaced elements.

With this patch WebKit, Firefox and Blink have the same behavior for inline SVG.
This is the first successful approach to unify the sizing behavior of SVG
across UAs.

Tests: svg/as-object/sizing/svg-in-object-placeholder-height-auto.html
       svg/as-object/sizing/svg-in-object-placeholder-height-fixed.html
       svg/as-object/sizing/svg-in-object-placeholder-height-percentage.html
       svg/in-html/sizing/svg-inline.html

* css/svg.css: Root SVG elements still need to be sized with height: 100% and
    width: 100%. This is necessary since width and height are presentation
    attributes now.
(svg:root):
* rendering/RenderBox.h:
(WebCore::RenderBox::computeIntrinsicRatioInformation): Remove all special
    behavior for intrinsic and percentage based sizes in SVG. This simplifies and
    unifies the code a lot. Most of the logic that is used is in RenderBox and
    RenderReplaced now. RenderSVGRoot was cleaned up a lot and is much lighter.
    And so it SVGSVGElement.
* rendering/RenderBoxModelObject.cpp:
(WebCore::RenderBoxModelObject::hasAutoHeightOrContainingBlockWithAutoHeight):
(WebCore::RenderBoxModelObject::calculateImageIntrinsicDimensions):
* rendering/RenderImage.cpp:
(WebCore::RenderImage::computeIntrinsicRatioInformation):
* rendering/RenderImage.h:
* rendering/RenderReplaced.cpp:
(WebCore::RenderReplaced::computeAspectRatioInformationForRenderBox):
(WebCore::RenderReplaced::computeIntrinsicRatioInformation):
(WebCore::RenderReplaced::computeReplacedLogicalWidth):
(WebCore::RenderReplaced::computeReplacedLogicalHeight):
(WebCore::RenderReplaced::computePreferredLogicalWidths):
* rendering/RenderReplaced.h:
* rendering/svg/RenderSVGRoot.cpp:
(WebCore::RenderSVGRoot::computeIntrinsicRatioInformation):
(WebCore::RenderSVGRoot::computeReplacedLogicalWidth):
(WebCore::RenderSVGRoot::computeReplacedLogicalHeight):
(WebCore::RenderSVGRoot::hasRelativeDimensions):
(WebCore::RenderSVGRoot::hasRelativeIntrinsicLogicalWidth): Deleted.
(WebCore::RenderSVGRoot::hasRelativeLogicalHeight): Deleted.
* rendering/svg/RenderSVGRoot.h:
* svg/SVGElement.h:
(WebCore::SVGElement::invalidateSVGPresentationAttributeStyle):
* svg/SVGSVGElement.cpp:
(WebCore::SVGSVGElement::isPresentationAttribute):
(WebCore::SVGSVGElement::collectStyleForPresentationAttribute):
(WebCore::SVGSVGElement::svgAttributeChanged):
(WebCore::SVGSVGElement::currentViewportSize):
(WebCore::SVGSVGElement::hasIntrinsicWidth):
(WebCore::SVGSVGElement::hasIntrinsicHeight):
(WebCore::SVGSVGElement::intrinsicWidth):
(WebCore::SVGSVGElement::intrinsicHeight):
(WebCore::SVGSVGElement::widthAttributeEstablishesViewport): Deleted.
(WebCore::SVGSVGElement::heightAttributeEstablishesViewport): Deleted.
* svg/SVGSVGElement.h:
* svg/graphics/SVGImage.cpp:
(WebCore::SVGImage::containerSize):
* xml/XMLErrors.cpp: If an error occurs in a stand alone SVG file, we create
    an XHTML document with the error message and append the SVG file.
    This SVG file now follows the CSS sizing behavior as inline SVG.
    Therefore, we need to set width and height to 100% explicitly.
(WebCore::XMLErrors::insertErrorMessageBlock):

LayoutTests:
The new sizing behavior for inline SVG causes different DRT outputs for about 40 test cases.
This is expected but for most tests an improvement since the SVGs fit into the documents
and scrollbars disappear or the general size gets smaller.
Some tests needed to be updated. The size was either not set at all or not properly.

svg-in-object.js and svg-inline.js contain dozens of new tests to check the correct sizing
behavior.

The tests were written by David Vest from Opera as part of CR 308992.

Many of the -expected updates are caused by SVG size changes in turn
affecting where line breaks are inserted.

* TestExpectations:
* accessibility/svg-image-expected.txt:
* css3/flexbox/flexitem.html:
* fast/css/infinite-floating-value-expected.txt:
* fast/css/remove-fixed-resizer-crash-expected.txt:
* fast/css3-text/css3-word-spacing-percentage/word-spacing-crash-expected.txt:
* fast/repaint/moving-shadow-on-container.html:
* fast/repaint/moving-shadow-on-path.html:
* fast/repaint/svg-layout-root-style-attr-update.html:
* fast/shapes/shape-outside-floats/shape-outside-relative-size-svg-expected.html:
* fast/shapes/shape-outside-floats/shape-outside-relative-size-svg.html:
* http/tests/xmlviewer/dumpAsText/svg-expected.txt:
* platform/mac/svg/batik/filters/feTile-expected.txt:
* platform/mac/svg/batik/masking/maskRegions-expected.txt:
* platform/mac/svg/batik/paints/patternRegions-positioned-objects-expected.txt:
* platform/mac/svg/batik/text/longTextOnPath-expected.txt:
* platform/mac/svg/batik/text/textDecoration-expected.txt:
* platform/mac/svg/batik/text/textEffect-expected.txt:
* platform/mac/svg/batik/text/textLength-expected.txt:
* platform/mac/svg/batik/text/textOnPath-expected.txt:
* platform/mac/svg/batik/text/textPosition-expected.txt:
* platform/mac/svg/batik/text/verticalText-expected.txt:
* platform/mac/svg/batik/text/verticalTextOnPath-expected.txt:
* platform/mac/svg/custom/bug45331-expected.txt:
* platform/mac/svg/custom/junk-data-expected.txt:
* platform/mac/svg/custom/missing-xlink-expected.txt:
* platform/mac/svg/custom/object-sizing-height-50p-on-target-svg-absolute-expected.png: Removed.
* platform/mac/svg/custom/object-sizing-height-50p-on-target-svg-expected.png: Removed.
* platform/mac/svg/custom/object-sizing-width-50p-height-50p-on-target-svg-absolute-expected.png: Removed.
* platform/mac/svg/custom/object-sizing-width-50p-height-50p-on-target-svg-expected.png: Removed.
* platform/mac/svg/custom/object-sizing-width-50p-height-75p-on-target-svg-absolute-expected.png: Removed.
* platform/mac/svg/custom/object-sizing-width-50p-height-75p-on-target-svg-absolute-expected.txt: Removed.
* platform/mac/svg/custom/object-sizing-width-50p-height-75p-on-target-svg-expected.png: Removed.
* platform/mac/svg/custom/object-sizing-width-50p-height-75p-on-target-svg-expected.txt: Removed.
* platform/mac/svg/custom/object-sizing-width-50p-on-target-svg-absolute-expected.png: Removed.
* platform/mac/svg/custom/object-sizing-width-50p-on-target-svg-expected.png: Removed.
* platform/mac/svg/custom/object-sizing-width-75p-height-50p-on-target-svg-absolute-expected.png: Removed.
* platform/mac/svg/custom/object-sizing-width-75p-height-50p-on-target-svg-expected.png: Removed.
* platform/mac/svg/custom/object-sizing-width-75p-height-50p-on-target-svg-expected.txt: Removed.
* platform/mac/svg/custom/path-bad-data-expected.txt:
* platform/mac/svg/custom/svg-fonts-in-html-expected.txt:
* platform/mac/svg/custom/use-font-face-crash-expected.txt:
* platform/mac/svg/foreignObject/svg-document-in-html-document-expected.txt:
* platform/mac/svg/hixie/error/012-expected.txt:
* platform/mac/svg/hixie/intrinsic/001-expected.png: Removed.
* platform/mac/svg/hixie/intrinsic/001-expected.txt: Removed.
* platform/mac/svg/hixie/intrinsic/002-expected.png: Removed.
* platform/mac/svg/hixie/intrinsic/002-expected.txt: Removed.
* platform/mac/svg/in-html/circle-expected.txt:
* platform/mac/svg/text/non-bmp-positioning-lists-expected.txt:
* platform/mac/svg/transforms/animated-path-inside-transformed-html-expected.txt:
* platform/mac/svg/transforms/text-with-pattern-inside-transformed-html-expected.txt:
* platform/mac/svg/wicd/rightsizing-grid-expected.txt:
* platform/mac/svg/wicd/test-rightsizing-b-expected.txt:
* platform/mac/svg/zoom/page/zoom-background-image-tiled-expected.txt:
* platform/mac/svg/zoom/page/zoom-background-images-expected.txt:
* platform/mac/svg/zoom/page/zoom-foreignObject-expected.txt:
* platform/mac/svg/zoom/page/zoom-img-preserveAspectRatio-support-1-expected.txt:
* platform/mac/svg/zoom/page/zoom-svg-as-relative-image-expected.txt:
* platform/mac/svg/zoom/page/zoom-svg-float-border-padding-expected.txt:
* platform/mac/svg/zoom/page/zoom-svg-through-object-with-absolute-size-2-expected.txt:
* platform/mac/svg/zoom/page/zoom-svg-through-object-with-absolute-size-expected.txt:
* platform/mac/svg/zoom/page/zoom-svg-through-object-with-auto-size-expected.txt:
* platform/mac/svg/zoom/page/zoom-svg-through-object-with-override-size-expected.txt:
* platform/mac/svg/zoom/page/zoom-svg-through-object-with-percentage-size-expected.txt:
* platform/mac/svg/zoom/page/zoom-zoom-coords-expected.txt:
* platform/mac/svg/zoom/text/zoom-foreignObject-expected.txt:
* svg/animations/animate-css-xml-attributeType-expected.txt:
* svg/as-image/image-respects-deviceScaleFactor.html:
* svg/as-image/image-respects-pageScaleFactor.html:
* svg/as-image/svg-as-image-with-relative-size-expected.html:
* svg/as-image/svg-as-relative-image.html:
* svg/as-object/sizing/svg-in-object-placeholder-height-auto-expected.txt: Added.
* svg/as-object/sizing/svg-in-object-placeholder-height-auto.html: Added.
* svg/as-object/sizing/svg-in-object-placeholder-height-fixed-expected.txt: Added.
* svg/as-object/sizing/svg-in-object-placeholder-height-fixed.html: Added.
* svg/as-object/sizing/svg-in-object-placeholder-height-percentage-expected.txt: Added.
* svg/as-object/sizing/svg-in-object-placeholder-height-percentage.html: Added.
* svg/as-object/sizing/svg-in-object.js: Added.
(.):
(.addAttr):
(.generateSVGURI):
(buildDemo):
(.doCombinationTestRecursive):
(doCombinationTest):
(debugHint):
(.debugHint):
(testSVGInObjectWithPlaceholderHeightAttr.):
(testSVGInObjectWithPlaceholderHeightAttr):
* svg/css/composite-shadow-example.html:
* svg/css/composite-shadow-with-opacity.html:
* svg/css/max-width-2.html:
* svg/css/stars-with-shadow.html:
* svg/custom/absolute-sized-content-with-resources.xhtml:
* svg/custom/altglyph.svg:
* svg/custom/document-all-includes-svg-expected.txt:
* svg/custom/external-paintserver-reference-expected.txt:
* svg/custom/external-paintserver-reference.svg:
* svg/custom/get-text-element-transform-crash-expected.txt:
* svg/custom/linking-base-external-reference-expected.txt:
* svg/custom/linking-base-external-reference.xhtml:
* svg/custom/object-sizing-height-50p-on-target-svg-absolute-expected.txt: Removed.
* svg/custom/object-sizing-height-50p-on-target-svg-absolute.xhtml: Removed.
* svg/custom/object-sizing-height-50p-on-target-svg-expected.txt: Removed.
* svg/custom/object-sizing-height-50p-on-target-svg.xhtml: Removed.
* svg/custom/object-sizing-width-50p-height-50p-on-target-svg-absolute-expected.txt: Removed.
* svg/custom/object-sizing-width-50p-height-50p-on-target-svg-absolute.xhtml: Removed.
* svg/custom/object-sizing-width-50p-height-50p-on-target-svg-expected.txt: Removed.
* svg/custom/object-sizing-width-50p-height-50p-on-target-svg.xhtml: Removed.
* svg/custom/object-sizing-width-50p-height-75p-on-target-svg-absolute-expected.txt: Removed.
* svg/custom/object-sizing-width-50p-height-75p-on-target-svg-absolute.xhtml: Removed.
* svg/custom/object-sizing-width-50p-height-75p-on-target-svg-expected.txt: Removed.
* svg/custom/object-sizing-width-50p-height-75p-on-target-svg.xhtml: Removed.
* svg/custom/object-sizing-width-50p-on-target-svg-absolute-expected.txt: Removed.
* svg/custom/object-sizing-width-50p-on-target-svg-absolute.xhtml: Removed.
* svg/custom/object-sizing-width-50p-on-target-svg-expected.txt: Removed.
* svg/custom/object-sizing-width-50p-on-target-svg.xhtml: Removed.
* svg/custom/object-sizing-width-75p-height-50p-on-target-svg-absolute-expected.txt: Removed.
* svg/custom/object-sizing-width-75p-height-50p-on-target-svg-absolute.xhtml: Removed.
* svg/custom/object-sizing-width-75p-height-50p-on-target-svg-expected.txt: Removed.
* svg/custom/object-sizing-width-75p-height-50p-on-target-svg.xhtml: Removed.
* svg/custom/pending-resource-after-removal.xhtml:
* svg/custom/percentage-of-html-parent.xhtml:
* svg/custom/relative-sized-content-with-resources.xhtml:
* svg/custom/relative-sized-content.xhtml:
* svg/custom/relative-sized-deep-shadow-tree-content.xhtml:
* svg/custom/relative-sized-image.xhtml:
* svg/custom/relative-sized-inner-svg.xhtml:
* svg/custom/relative-sized-shadow-tree-content-with-symbol.xhtml:
* svg/custom/relative-sized-shadow-tree-content.xhtml:
* svg/custom/relative-sized-use-on-symbol.xhtml:
* svg/custom/relative-sized-use-without-attributes-on-symbol.xhtml:
* svg/custom/tref-with-progress-tag-setpseudo-assert-expected.txt:
* svg/custom/unicode-in-tspan-multi-svg-crash-expected.txt:
* svg/custom/use-invalid-html-expected.txt:
* svg/custom/window-named-item-lookup-expected.txt:
* svg/dom/SVGViewSpec-invalid-ref-crash-expected.txt:
* svg/dom/parent-view-layout-crash-expected.txt:
* svg/dom/stylesheet-candidate-node-crash-main-expected.txt:
* svg/dom/svg-root-lengths.html:
* svg/foreignObject/absolute-position-foreign-object-child-crash-expected.txt:
* svg/hixie/intrinsic/001-expected.png: Removed.
* svg/hixie/intrinsic/001-expected.txt: Removed.
* svg/hixie/intrinsic/001.html: Removed.
* svg/hixie/intrinsic/002-expected.png: Removed.
* svg/hixie/intrinsic/002-expected.txt: Removed.
* svg/hixie/intrinsic/002.html: Removed.
* svg/hixie/intrinsic/resources/001.svg: Removed.
* svg/hixie/intrinsic/resources/002.svg: Removed.
* svg/in-html/sizing/svg-inline-expected.txt: Added.
* svg/in-html/sizing/svg-inline.html: Added.
* svg/in-html/sizing/svg-inline.js: Added.
(.):
(setupSVGElement):
(buildDemo):
(.doCombinationTestRecursive):
(doCombinationTest):
(debugHint):
(.debugHint):
* svg/path-arc-invalid-expected.txt:
* svg/repaint/repaint-webkit-svg-shadow-container-expected.txt:
* svg/text/append-text-node-to-tspan.html:
* svg/text/kerning.svg:
* svg/text/modify-text-node-in-tspan.html:
* svg/text/multichar-glyph.svg:
* svg/text/remove-text-node-from-tspan.html:
* svg/text/remove-tspan-from-text.html:
* svg/text/svg-rtl-text-crash-expected.txt:
* svg/text/text-block-child-crash-expected.txt:
* svg/transforms/animated-path-inside-transformed-html.xhtml:
* svg/transforms/svg-css-transforms-clip-path.xhtml:
* svg/transforms/transform-origin-css-property.xhtml:
* svg/zoom/page/zoom-foreignObject.svg:
* svg/zoom/page/zoom-svg-as-relative-image.html:
* svg/zoom/text/zoom-foreignObject.svg:

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

5 years ago[CSS Blending] Add tests using blending and isolation for body and html elements.
commit-queue@webkit.org [Tue, 6 May 2014 06:04:28 +0000 (06:04 +0000)]
[CSS Blending] Add tests using blending and isolation for body and html elements.
https://bugs.webkit.org/show_bug.cgi?id=132325

Patch by Ion Rosca <rosca@adobe.com> on 2014-05-05
Reviewed by Dirk Schulze.

* css3/compositing/blend-mode-body-child-background-color-expected.html: Added.
* css3/compositing/blend-mode-body-child-background-color.html: Added.
* css3/compositing/blend-mode-body-child-expected.html: Added.
* css3/compositing/blend-mode-body-child-isolate-background-color-expected.html: Added.
* css3/compositing/blend-mode-body-child-isolate-background-color.html: Added.
* css3/compositing/blend-mode-body-child-isolate-html-background-color-expected.html: Added.
* css3/compositing/blend-mode-body-child-isolate-html-background-color.html: Added.
* css3/compositing/blend-mode-body-child.html: Added.
* css3/compositing/blend-mode-body-element-expected.html: Added.
* css3/compositing/blend-mode-body-element.html: Added.
* css3/compositing/blend-mode-html-element-screen-expected.html: Added.
* css3/compositing/blend-mode-html-element-screen.html: Added.

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

5 years agoRetainPtr: Use adoptCF function instead of AdoptCF constructor argument
darin@apple.com [Tue, 6 May 2014 03:12:54 +0000 (03:12 +0000)]
RetainPtr: Use adoptCF function instead of AdoptCF constructor argument
https://bugs.webkit.org/show_bug.cgi?id=80222

Reviewed by Alexey Proskuryakov.

Source/WTF:
All the clients are gone, so we can now remove AdoptCF and AdoptNS.

* wtf/RetainPtr.h: Removed the public constructors that let you specify AdoptCF
and AdoptNS. Instead, made the adoptCF and adoptNS functions be friends and use
a private constructor that takes an Adopt argument.
(WTF::adoptCF): Moved the Objective-C class check in here.
(WTF::adoptNS): Moved the code to deal with the CFRetain for garbage collection
in here; it used to be spread across the constructor and adoptNSReference.

Tools:
* DumpRenderTree/mac/TestRunnerMac.mm:
(-[APITestDelegateIPhone initWithTestRunner:utf8Data:baseURL:]): Updated to
do more work here so we don't use RetainPtr local variables.
(-[APITestDelegateIPhone dealloc]): Added.
(-[APITestDelegateIPhone run]): Added an early exit if the web view is already
created. Updated for changes to member names and types.
(-[APITestDelegateIPhone _cleanUp]): Added code to set webView to nil and
updated for changes to member names and types. Changed to two word spelling.
(-[APITestDelegateIPhone webView:didFailLoadWithError:forFrame:]): Updated
name of _cleanUp method.
(-[APITestDelegateIPhone webView:didFailProvisionalLoadWithError:forFrame:]):
Ditto.
(-[APITestDelegateIPhone webView:didFinishLoadForFrame:]): Ditto.

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

5 years agoUnreviewed, rolling out r168334.
akling@apple.com [Tue, 6 May 2014 02:54:26 +0000 (02:54 +0000)]
Unreviewed, rolling out r168334.

Broke builds.

Reverted changeset:

"Put WebKitPluginHost.app in WebKitLegacy.framework"
https://bugs.webkit.org/show_bug.cgi?id=132592
http://trac.webkit.org/changeset/168334

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

5 years agohttps://bugs.webkit.org/show_bug.cgi?id=132593
dino@apple.com [Tue, 6 May 2014 02:49:41 +0000 (02:49 +0000)]
https://bugs.webkit.org/show_bug.cgi?id=132593

Update WebKitSystemInterface to allow animated focus rings.

* WebKitSystemInterface.h:
* libWebKitSystemInterfaceMavericks.a:
* libWebKitSystemInterfaceMountainLion.a:

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

5 years ago[EFL] REGRESSION(167145): JavaScript media controls are broken
ryuan.choi@samsung.com [Tue, 6 May 2014 02:08:38 +0000 (02:08 +0000)]
[EFL] REGRESSION(167145): JavaScript media controls are broken
https://bugs.webkit.org/show_bug.cgi?id=131573

Reviewed by Brent Fulgham.

* PlatformEfl.cmake: Add the localized strings file to the list of user agent scripts.
* platform/efl/RenderThemeEfl.cpp:
(WebCore::RenderThemeEfl::mediaControlsScript): Include the localized strings file in the script body.

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

5 years agoImplement scan backward and forward in video fullscreen.
commit-queue@webkit.org [Tue, 6 May 2014 01:49:29 +0000 (01:49 +0000)]
Implement scan backward and forward in video fullscreen.
https://bugs.webkit.org/show_bug.cgi?id=132517

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

Source/WebCore:
Implement scanning forward and backward. This implements methods in
WebAVPlayerController and forwards them through WebVideoFullscreenModelMediaElement
and on to HTMLMediaElement.

* WebCore.exp.in: necessary exports.
* platform/ios/WebVideoFullscreenInterfaceAVKit.mm:
(-[WebAVPlayerController seekToTime:]):
Use fastSeek in this case.
(-[WebAVPlayerController canScanForward]): If you can play, you can scan.
(+[WebAVPlayerController keyPathsForValuesAffectingCanScanForward]): ditto
(-[WebAVPlayerController beginScanningForward:]): ditto
(-[WebAVPlayerController endScanningForward:]): ditto
(-[WebAVPlayerController canScanBackward]): If you can play, you can scan.
(+[WebAVPlayerController keyPathsForValuesAffectingCanScanBackward]): ditto
(-[WebAVPlayerController beginScanningBackward:]): ditto
(-[WebAVPlayerController endScanningBackward:]): ditto
(-[WebAVPlayerController canSeekToBeginning]):
This looks at seekableRanges to determine if any seeking is possible.
(+[WebAVPlayerController keyPathsForValuesAffectingCanSeekToBeginning]):
depends on seekableRanges.
(-[WebAVPlayerController seekToBeginning:]): seek to -ininity
(-[WebAVPlayerController canSeekToEnd]):
This looks at seekableRanges to determine if any seeking is possible.
(+[WebAVPlayerController keyPathsForValuesAffectingCanSeekToEnd]):
depends on seekableRanges.
(-[WebAVPlayerController seekToEnd:]): seek to INFINITY.
* platform/ios/WebVideoFullscreenModel.h:
Add 4 new functions.
* platform/ios/WebVideoFullscreenModelMediaElement.h:
ditto
* platform/ios/WebVideoFullscreenModelMediaElement.mm:
(WebVideoFullscreenModelMediaElement::fastSeek): forwards to HTMLMediaEelement
(WebVideoFullscreenModelMediaElement::beginScanningForward): forwards to HTMLMediaEelement
(WebVideoFullscreenModelMediaElement::beginScanningBackward): forwards to HTMLMediaEelement
(WebVideoFullscreenModelMediaElement::endScanning): forwards to HTMLMediaEelement

Source/WebKit2:
Plumb through scanning/seeking functions.

* UIProcess/ios/WebVideoFullscreenManagerProxy.h:
* UIProcess/ios/WebVideoFullscreenManagerProxy.mm:
(WebKit::WebVideoFullscreenManagerProxy::fastSeek):
(WebKit::WebVideoFullscreenManagerProxy::beginScanningForward):
(WebKit::WebVideoFullscreenManagerProxy::beginScanningBackward):
(WebKit::WebVideoFullscreenManagerProxy::endScanning):
* WebProcess/ios/WebVideoFullscreenManager.messages.in:

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

5 years agoFix debug build.
akling@apple.com [Tue, 6 May 2014 01:22:02 +0000 (01:22 +0000)]
Fix debug build.

* runtime/JSCellInlines.h:
(JSC::JSCell::fastGetOwnProperty):

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

5 years ago[iOS][WK2] Prefetch DNS hostnames on tap highlight
benjamin@webkit.org [Tue, 6 May 2014 01:14:02 +0000 (01:14 +0000)]
[iOS][WK2] Prefetch DNS hostnames on tap highlight
https://bugs.webkit.org/show_bug.cgi?id=132509

Patch by Benjamin Poulain <bpoulain@apple.com> on 2014-05-05
Reviewed by Alexey Proskuryakov.

Source/WebCore:
* WebCore.exp.in:
* dom/Element.cpp:
* dom/Element.h:
(WebCore::Element::absoluteLinkURL()):

Source/WebKit2:
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::tapHighlightAtPosition):

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

5 years ago[iOS WK2] Flickery scrolling inside overflow-scrolling: touch
simon.fraser@apple.com [Tue, 6 May 2014 01:10:30 +0000 (01:10 +0000)]
[iOS WK2] Flickery scrolling inside overflow-scrolling: touch
https://bugs.webkit.org/show_bug.cgi?id=132591
<rdar://problem/16760466>

Reviewed by Tim Horton.

Source/WebCore:

Avoid triggering layer tree commits that touch the layer's boundsOrigin
while the user is scrolling in the UI process.

Fix the WKOverflowScrollViewDelegate to pass along an "inUserInteration"
flag to the ScrollingTree to say that we're in the middle of a user interaction
(and also to send a final non-interactive update). That gets passed along
to the web process, and turned into "SyncScrollingLayerPosition" update.
AsyncScrollingCoordinator::updateScrollPositionAfterAsyncScroll() consults
this, and uses it to set a flag on the ScrollableArea to say that the scroll
is a user scroll.

RenderLayerBacking then makes use of this (in existing code, shared with WK1)
to avoid triggering layer bounds setting. Instead, it now just calls syncBoundsOrigin(),
which updates the GraphicsLayer without touching platform layers. This is necessary
so that GraphicsLayer geometry is up-to-date (used for tiled layer visibility
computations).

Finally, a hack in GraphicsLayerCA::computeVisibleRect() is conditionalized
for WebKit1 by checking the type of platform layer.

* WebCore.exp.in:
* page/scrolling/AsyncScrollingCoordinator.cpp:
(WebCore::AsyncScrollingCoordinator::updateScrollPositionAfterAsyncScroll):
* page/scrolling/ScrollingTree.cpp:
(WebCore::ScrollingTree::scrollPositionChangedViaDelegatedScrolling):
* page/scrolling/ScrollingTree.h:
* platform/graphics/GraphicsLayer.h:
(WebCore::GraphicsLayer::syncBoundsOrigin):
* platform/graphics/ca/GraphicsLayerCA.cpp:
(WebCore::GraphicsLayerCA::computeVisibleRect):
* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::updateGraphicsLayerGeometry):

Source/WebKit2:

Avoid triggering layer tree commits that touch the layer's boundsOrigin
while the user is scrolling in the UI process.

Fix the WKOverflowScrollViewDelegate to pass along an "inUserInteration"
flag to the ScrollingTree to say that we're in the middle of a user interaction
(and also to send a final non-interactive update). That gets passed along
to the web process, and turned into "SyncScrollingLayerPosition" update.
AsyncScrollingCoordinator::updateScrollPositionAfterAsyncScroll() consults
this, and uses it to set a flag on the ScrollableArea to say that the scroll
is a user scroll.

RenderLayerBacking then makes use of this (in existing code, shared with WK1)
to avoid triggering layer bounds setting. Instead, it now just calls syncBoundsOrigin(),
which updates the GraphicsLayer without touching platform layers. This is necessary
so that GraphicsLayer geometry is up-to-date (used for tiled layer visibility
computations).

Finally, a hack in GraphicsLayerCA::computeVisibleRect() is conditionalized
for WebKit1 by checking the type of platform layer.

* UIProcess/Scrolling/RemoteScrollingCoordinatorProxy.cpp:
(WebKit::RemoteScrollingCoordinatorProxy::rootScrollingNodeID):
(WebKit::RemoteScrollingCoordinatorProxy::isPointInNonFastScrollableRegion):
(WebKit::RemoteScrollingCoordinatorProxy::viewportChangedViaDelegatedScrolling):
(WebKit::RemoteScrollingCoordinatorProxy::scrollingTreeNodeDidScroll):
* UIProcess/Scrolling/RemoteScrollingCoordinatorProxy.h:
* UIProcess/Scrolling/RemoteScrollingTree.cpp:
(WebKit::RemoteScrollingTree::scrollingTreeNodeDidScroll):
* UIProcess/Scrolling/ios/ScrollingTreeOverflowScrollingNodeIOS.h:
* UIProcess/Scrolling/ios/ScrollingTreeOverflowScrollingNodeIOS.mm:
(-[WKOverflowScrollViewDelegate scrollViewDidScroll:]):
(-[WKOverflowScrollViewDelegate scrollViewDidEndDragging:willDecelerate:]):
(-[WKOverflowScrollViewDelegate scrollViewDidEndDecelerating:]):
(WebKit::ScrollingTreeOverflowScrollingNodeIOS::scrollViewDidScroll):
* WebProcess/Scrolling/RemoteScrollingCoordinator.h:
* WebProcess/Scrolling/RemoteScrollingCoordinator.messages.in:
* WebProcess/Scrolling/RemoteScrollingCoordinator.mm:
(WebKit::RemoteScrollingCoordinator::scrollPositionChangedForNode):

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

5 years agoMark http/tests/media/hls/video-controls-live-stream.html as WontFix on Mountain...
akling@apple.com [Tue, 6 May 2014 01:03:26 +0000 (01:03 +0000)]
Mark http/tests/media/hls/video-controls-live-stream.html as WontFix on Mountain Lion.
<https://webkit.org/b/132491>

* platform/mac/TestExpectations:

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

5 years agoOptimize GetByVal when subscript is a rope string.
akling@apple.com [Tue, 6 May 2014 00:53:29 +0000 (00:53 +0000)]
Optimize GetByVal when subscript is a rope string.
<https://webkit.org/b/132590>

Use JSString::toIdentifier() in the various GetByVal implementations
to try and avoid allocating extra strings.

Added canUseFastGetOwnProperty() and wrap calls to fastGetOwnProperty()
in that, to avoid calling JSString::value() which always resolves ropes
into new strings and de-optimizes subsequent toIdentifier() calls.

My iMac says ~9% progression on Dromaeo/dom-attr.html

Reviewed by Phil Pizlo.

* dfg/DFGOperations.cpp:
* jit/JITOperations.cpp:
(JSC::getByVal):
* llint/LLIntSlowPaths.cpp:
(JSC::LLInt::getByVal):
* runtime/JSCell.h:
* runtime/JSCellInlines.h:
(JSC::JSCell::fastGetOwnProperty):
(JSC::JSCell::canUseFastGetOwnProperty):

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

5 years agoPut WebKitPluginHost.app in WebKitLegacy.framework
andersca@apple.com [Tue, 6 May 2014 00:47:33 +0000 (00:47 +0000)]
Put WebKitPluginHost.app in WebKitLegacy.framework
https://bugs.webkit.org/show_bug.cgi?id=132592
<rdar://problem/15920046>

Reviewed by Dan Bernstein.

Source/WebKit:
* WebKit.xcodeproj/project.pbxproj:

Source/WebKit/mac:
* Plugins/Hosted/NetscapePluginHostManager.mm:
(WebKit::NetscapePluginHostManager::spawnPluginHost):

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

5 years agoStop using BlobData on client side
ap@apple.com [Tue, 6 May 2014 00:42:52 +0000 (00:42 +0000)]
Stop using BlobData on client side
https://bugs.webkit.org/show_bug.cgi?id=132582

Reviewed by Sam Weinig.

Source/WebCore:
Blob registration now uses either a single file path, or a vector of much simpler
BlobPart objects, not an array with arbitrarily sliced blobs or files, which can't happen.

* Modules/websockets/WebSocket.cpp:(WebCore::WebSocket::didReceiveBinaryData):
Use a new simpler Blob constructor.

* WebCore.xcodeproj/project.pbxproj: Added BlobPart, removed BlobRegistrationData.

* bindings/js/JSBlobCustom.cpp: (WebCore::JSBlobConstructor::constructJSBlob):
Use Vector<BlobPart> instead of BlobData (1 line of code instead of 5).

* dom/DataTransfer.cpp: (WebCore::DataTransfer::hasFileOfType): Updated for
File::contentTypeFromFilePathOrName rename.

* fileapi/Blob.cpp: (WebCore::Blob::Blob):
* fileapi/Blob.h:
(WebCore::Blob::create):
(WebCore::Blob::deserialize):
* fileapi/File.cpp:
(WebCore::File::File):
(WebCore::File::contentTypeFromFilePathOrName):
(WebCore::createBlobDataForFileWithType): Deleted.
(WebCore::createBlobDataForFile): Deleted.
(WebCore::createBlobDataForFileWithName): Deleted.
(WebCore::File::contentTypeFromFilePath): Deleted.
* fileapi/File.h: (WebCore::File::deserialize): Deleted.
Added and updated constructors to not use BlobData. Changed special case constructors
to use name tags instead of non-enforced comments.

* fileapi/ThreadableBlobRegistry.h:
* fileapi/ThreadableBlobRegistry.cpp:
(WebCore::BlobRegistryContext::BlobRegistryContext): Updated with new data members
that were split out of BlobData.
(WebCore::ThreadableBlobRegistry::registerFileBlobURL): Added.
(WebCore::ThreadableBlobRegistry::registerBlobURL): Updated to pass Content-Type
explicitly, as it's no longer hidden in BlobData.

* fileapi/WebKitBlobBuilder.h:
* fileapi/WebKitBlobBuilder.cpp:
(WebCore::BlobBuilder::append):
(WebCore::BlobBuilder::finalize):
(WebCore::BlobBuilder::appendBytesData): Deleted.
Updated to use BlobPart. There is no longer any need to special case Files,
the registry takes care of that.

* platform/network/BlobData.h:
* platform/network/BlobData.cpp:
(WebCore::BlobDataItem::detachFromCurrentThread): Deleted.
(WebCore::BlobData::detachFromCurrentThread): Deleted.
BlobData will only be used on main thread by the registry.

* platform/network/BlobPart.h: Added. A new class to encapsulate a list of blobs
that are combined into a new blob, as exposed to JS via Blob constructor.

* platform/network/BlobRegistry.h:
* platform/network/BlobRegistryImpl.cpp:
(WebCore::BlobRegistryImpl::registerFileBlobURL):
(WebCore::BlobRegistryImpl::registerBlobURL):
* platform/network/BlobRegistryImpl.h:
Updated for the new registration methods. We no longer have arbitrary BlobDatas
coming in.

* platform/network/FormData.cpp: Don't include BlobData for now (but really,
BlobStorageData is the same thing, and they will be merged soon).
Unfortunately, FormData is used by both client and registry side, and there is
no clear delimitation at the time.

* xml/XMLHttpRequest.cpp: (WebCore::XMLHttpRequest::responseBlob): Use the new simpler
way to create a Blob.

Source/WebKit2:
Update for WebCore changes.

* CMakeLists.txt:
* NetworkProcess/FileAPI/NetworkBlobRegistry.cpp:
(WebKit::NetworkBlobRegistry::registerFileBlobURL):
(WebKit::NetworkBlobRegistry::registerBlobURL):
* NetworkProcess/FileAPI/NetworkBlobRegistry.h:
* NetworkProcess/NetworkConnectionToWebProcess.cpp:
(WebKit::NetworkConnectionToWebProcess::registerFileBlobURL):
(WebKit::NetworkConnectionToWebProcess::registerBlobURL):
* NetworkProcess/NetworkConnectionToWebProcess.h:
* NetworkProcess/NetworkConnectionToWebProcess.messages.in:
* Shared/FileAPI/BlobRegistrationData.cpp: Removed.
* Shared/FileAPI/BlobRegistrationData.h: Removed.
* Shared/WebCoreArgumentCoders.cpp:
(IPC::ArgumentCoder<BlobPart>::encode):
(IPC::ArgumentCoder<BlobPart>::decode):
* Shared/WebCoreArgumentCoders.h:
* WebKit2.xcodeproj/project.pbxproj:
* WebProcess/FileAPI/BlobRegistryProxy.cpp:
(WebKit::BlobRegistryProxy::registerFileBlobURL):
(WebKit::BlobRegistryProxy::registerBlobURL):
* WebProcess/FileAPI/BlobRegistryProxy.h:

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

5 years agoREGRESSION (r168256): ASSERTION FAILED: (buffer + m_length) == position loading vanit...
akling@apple.com [Mon, 5 May 2014 23:39:04 +0000 (23:39 +0000)]
REGRESSION (r168256): ASSERTION FAILED: (buffer + m_length) == position loading vanityfair.com article.
<https://webkit.org/b/168256>
<rdar://problem/16816316>

Source/JavaScriptCore:
Make resolveRopeSlowCase8() behave like its 16-bit counterpart and not
clear the fibers. The caller takes care of this.

Test: fast/dom/getElementById-with-rope-string-arg.html

Reviewed by Geoffrey Garen.

* runtime/JSString.cpp:
(JSC::JSRopeString::resolveRopeSlowCase8):

LayoutTests:
Reviewed by Geoffrey Garen.

* fast/dom/getElementById-with-rope-string-arg-expected.txt: Added.
* fast/dom/getElementById-with-rope-string-arg.html: Added.

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

5 years agoClean up Image Document and tweak the layout and viewport
benjamin@webkit.org [Mon, 5 May 2014 23:35:38 +0000 (23:35 +0000)]
Clean up Image Document and tweak the layout and viewport
https://bugs.webkit.org/show_bug.cgi?id=132552

Source/WebCore:
Reviewed by Sam Weinig.

The #ifdef in every function was making quite a mess. A lot of that code does
not make sense on iOS.

This patch make a clean split between mouse related stuff and iOS.

Also:
-Change the viewport to be only width based, and avoid scaling in portrait.
-Center the image horizontally in the view.

* html/ImageDocument.cpp:
(WebCore::ImageDocument::ImageDocument):
(WebCore::ImageDocument::createDocumentStructure):
(WebCore::ImageDocument::imageUpdated):
(WebCore::ImageDocument::scale):
(WebCore::ImageDocument::resizeImageToFit):
(WebCore::ImageDocument::imageFitsInWindow):
(WebCore::ImageDocument::windowSizeChanged):
(WebCore::ImageDocument::imageClicked):
* html/ImageDocument.h:

Tools:
Reviewed by Anders Carlsson.

* DumpRenderTree/mac/DumpRenderTree.mm:
(resetWebPreferencesToConsistentValues):
Update the default settings to have something consistent with WebKit2.

LayoutTests:
Reviewed by Anders Carlsson.

* svg/custom/anchor-on-use-expected.svg:

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

5 years agoNeed a delegate that informs the UI process when the page's pin state changes
bdakin@apple.com [Mon, 5 May 2014 23:14:43 +0000 (23:14 +0000)]
Need a delegate that informs the UI process when the page's pin state changes
https://bugs.webkit.org/show_bug.cgi?id=132583
-and corresponding-
<rdar://problem/16806231>

Reviewed by Anders Carlsson.

Source/WebCore:
We should default all of these pin-state value to true.
* page/scrolling/ScrollingTree.cpp:
(WebCore::ScrollingTree::ScrollingTree):

Source/WebKit2:
New UIClient function pinnedStateDidChange.

* UIProcess/API/APIUIClient.h:
(API::UIClient::pinnedStateDidChange):

Create WKPageUIClientV3 to add this function.
* UIProcess/API/C/WKPage.cpp:
(WKPageSetPageUIClient):
* UIProcess/API/C/WKPageUIClient.h:

Change default initialization to true instead of false, which makes more sense for
this API.
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::WebPageProxy):
(WebKit::WebPageProxy::didCommitLoadForFrame):
(WebKit::WebPageProxy::resetState):
(WebKit::WebPageProxy::didChangeScrollOffsetPinningForMainFrame):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::WebPage):

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

5 years agoAdd SPI to provide the WebCrypto master key
andersca@apple.com [Mon, 5 May 2014 23:09:58 +0000 (23:09 +0000)]
Add SPI to provide the WebCrypto master key
https://bugs.webkit.org/show_bug.cgi?id=132586
<rdar://problem/16091460>

Reviewed by Dan Bernstein.

* UIProcess/API/APILoaderClient.h:
(API::LoaderClient::webCryptoMasterKey):
* UIProcess/API/C/WKPage.cpp:
(WKPageSetPageLoaderClient):
* UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h:
* UIProcess/Cocoa/NavigationState.h:
* UIProcess/Cocoa/NavigationState.mm:
(WebKit::NavigationState::setNavigationDelegate):
(WebKit::NavigationState::LoaderClient::webCryptoMasterKey):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::wrapCryptoKey):

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

5 years agohttps://bugs.webkit.org/show_bug.cgi?id=132522
barraclough@apple.com [Mon, 5 May 2014 23:06:52 +0000 (23:06 +0000)]
https://bugs.webkit.org/show_bug.cgi?id=132522
Clean up ProcessThrottler

Unreviewed: bad build fix. Will work out what the right include is asap.

* UIProcess/ios/WebProcessProxyIOS.mm:

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

5 years agoNamed element cache can become invalid during HTMLCollection::updateNamedElementCache()
ch.dumez@samsung.com [Mon, 5 May 2014 22:50:33 +0000 (22:50 +0000)]
Named element cache can become invalid during HTMLCollection::updateNamedElementCache()
https://bugs.webkit.org/show_bug.cgi?id=132575

Reviewed by Ryosuke Niwa.

Source/WebCore:
Make sure the named element cache object stays valid in
HTMLCollection::updateNamedElementCache() while it is populating it.

The method was previously creating and setting the cache first, and then start
traversing the DOM tree to populate it. As a consequence, hasNamedElementCache()
would start returning true before the cache is actually populated.
The issue is that finding matches in the DOM tree can cause
HTMLCollection::invalidateCache() to be called under certain circumstances and
thus the named element cache object can become invalid while
updateNamedElementCache() is populating it.

To avoid the issue, this patch updates updateNamedElementCache() so that the
named element cache map is set *after* traversing the DOM tree. This way,
hasNamedElementCache() returns false while the cache is being populated and
there is no chance of it being invalidated too early.

Test: fast/dom/htmlcollection-selectedOptions-namedItem-crash.html

* html/HTMLCollection.cpp:
(WebCore::HTMLCollection::updateNamedElementCache):
* html/HTMLCollection.h:
(WebCore::HTMLCollection::setNameItemCache):
(WebCore::HTMLCollection::createNameItemCache): Deleted.
* html/HTMLFormControlsCollection.cpp:
(WebCore::HTMLFormControlsCollection::updateNamedElementCache):

LayoutTests:
Add layout test to verify that HTMLCollection::updateNamedElementCache() is no longer
crashing for collections of selected options.

* fast/dom/htmlcollection-selectedOptions-namedItem-crash-expected.txt: Added.
* fast/dom/htmlcollection-selectedOptions-namedItem-crash.html: Added.

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

5 years ago[WIN] Enhance auto-version.sh to handle all-caps or mixed-case build environment...
bfulgham@apple.com [Mon, 5 May 2014 22:11:57 +0000 (22:11 +0000)]
[WIN] Enhance auto-version.sh to handle all-caps or mixed-case build environment variable
https://bugs.webkit.org/show_bug.cgi?id=132580
<rdar://problem/16811179>

Reviewed by Dean Jackson.

* win/tools/scripts/auto-version.sh: Incorporate Mark's revised syntax.

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

5 years ago[WIN] Enhance auto-version.sh to handle all-caps or mixed-case build environment...
bfulgham@apple.com [Mon, 5 May 2014 22:09:36 +0000 (22:09 +0000)]
[WIN] Enhance auto-version.sh to handle all-caps or mixed-case build environment variable
https://bugs.webkit.org/show_bug.cgi?id=132580
<rdar://problem/16811179>

Reviewed by Dean Jackson.

* win/tools/scripts/auto-version.sh: Fall back to all-caps version
of environment variable if mixed-case version is not present.

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

5 years agoREGRESSION: RELEASE_ASSERT in CodeBlock::baselineVersion @ cnn.com
msaboff@apple.com [Mon, 5 May 2014 22:09:00 +0000 (22:09 +0000)]
REGRESSION: RELEASE_ASSERT in CodeBlock::baselineVersion @ cnn.com
https://bugs.webkit.org/show_bug.cgi?id=132581

Reviewed by Filip Pizlo.

* dfg/DFGPlan.cpp:
(JSC::DFG::Plan::isStillValid): Check that the alternative codeBlock we
started compiling for is still the same at the end of compilation.
Also did some minor restructuring.

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

5 years ago[Cocoa WebKit2] Add SPI to clear all visited links in a VisitedLinkProvider
commit-queue@webkit.org [Mon, 5 May 2014 21:23:37 +0000 (21:23 +0000)]
[Cocoa WebKit2] Add SPI to clear all visited links in a VisitedLinkProvider
https://bugs.webkit.org/show_bug.cgi?id=132573

Patch by Sam Weinig <sam@webkit.org> on 2014-05-05
Reviewed by Dan Bernstein.

* Shared/VisitedLinkTable.cpp:
(WebKit::VisitedLinkTable::VisitedLinkTable):
(WebKit::VisitedLinkTable::clear):
* Shared/VisitedLinkTable.h:
Add functions to clear the visited link table.

* UIProcess/API/Cocoa/_WKVisitedLinkProvider.h:
* UIProcess/API/Cocoa/_WKVisitedLinkProvider.mm:
(-[_WKVisitedLinkProvider removeAll]):
Add SPI.

* UIProcess/VisitedLinkProvider.cpp:
(WebKit::VisitedLinkProvider::removeAll):
* UIProcess/VisitedLinkProvider.h:
A remove all resets the provider and notifies all the attached processes.

* WebProcess/WebPage/VisitedLinkTableController.cpp:
(WebKit::VisitedLinkTableController::removeAllVisitedLinks):
* WebProcess/WebPage/VisitedLinkTableController.h:
* WebProcess/WebPage/VisitedLinkTableController.messages.in:
Add message to clear the visited links for a process.

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

5 years ago[iOS][WK2] Special case ViewGestureGeometryCollector::collectGeometryForSmartMagnific...
benjamin@webkit.org [Mon, 5 May 2014 21:13:22 +0000 (21:13 +0000)]
[iOS][WK2] Special case ViewGestureGeometryCollector::collectGeometryForSmartMagnificationGesture() for image documents
https://bugs.webkit.org/show_bug.cgi?id=132553

Reviewed by Tim Horton.

Source/WebCore:
* WebCore.exp.in:
* WebCore.xcodeproj/project.pbxproj:
* html/ImageDocument.cpp:
(WebCore::ImageDocument::imageElement):
* html/ImageDocument.h:

Source/WebKit2:
When collecting the geometry for the smart magnification gesture, always return the image of an image document
on iOS. On iOS, it does not make much sense to return the whole document rect when the gesture is not over the image.

* WebProcess/WebPage/ViewGestureGeometryCollector.cpp:
(WebKit::ViewGestureGeometryCollector::collectGeometryForSmartMagnificationGesture):

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

5 years ago[CSS Blending] Webkit-blend-mode fails for accelerated parent with overflow:hidden
commit-queue@webkit.org [Mon, 5 May 2014 21:08:25 +0000 (21:08 +0000)]
[CSS Blending] Webkit-blend-mode fails for accelerated parent with overflow:hidden
https://bugs.webkit.org/show_bug.cgi?id=126160

Source/WebCore:
When the isolating layer has overflow:hidden, it will create a descendant clipping layer
(m_childContainmentLayer), which will restrict the bleding layer to reading the backdrop
from the isolating layer.
The solution in this patch is to forbid the isolating layer to create a descendant clipping
layer and make all the children to get their own ancestor clipping layers instead.

Patch by Ion Rosca <rosca@adobe.com> on 2014-05-05
Reviewed by Dean Jackson.

Tests: css3/compositing/blend-mode-accelerated-parent-overflow-hidden.html
       css3/compositing/blend-mode-clip-accelerated-blending-canvas.html
       css3/compositing/blend-mode-clip-accelerated-blending-child.html
       css3/compositing/blend-mode-clip-accelerated-blending-double.html
       css3/compositing/blend-mode-clip-accelerated-blending-with-siblings.html
       css3/compositing/blend-mode-clip-accelerated-transformed-blending.html
       css3/compositing/blend-mode-clip-rect-accelerated-blending.html

* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::updateGraphicsLayerGeometry):
when the compositing ancestor isolates blending we take it into account for computing
the clipping rect for this layer, because it was not allowed to create the descendant
clipping layer.
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::clippedByAncestor):
when the compositing ancestor isolates blending we decide if a layer is clipped by ancestor
by computing the clipping rect taking into account all the ancestors up to and including
the compositing ancestor.
(WebCore::RenderLayerCompositor::clipsCompositingDescendants):
if a layer isolates blending, it is not allowed to create a descendant clipping layer.

LayoutTests:
Patch by Ion Rosca <rosca@adobe.com> on 2014-05-05
Reviewed by Dean Jackson.

* css3/compositing/blend-mode-accelerated-parent-overflow-hidden-expected.html: Added.
* css3/compositing/blend-mode-accelerated-parent-overflow-hidden.html: Added.
* css3/compositing/blend-mode-clip-accelerated-blending-canvas-expected.txt: Added.
* css3/compositing/blend-mode-clip-accelerated-blending-canvas.html: Added.
* css3/compositing/blend-mode-clip-accelerated-blending-child-expected.html: Added.
* css3/compositing/blend-mode-clip-accelerated-blending-child.html: Added.
* css3/compositing/blend-mode-clip-accelerated-blending-double-expected.html: Added.
* css3/compositing/blend-mode-clip-accelerated-blending-double.html: Added.
* css3/compositing/blend-mode-clip-accelerated-blending-with-siblings-expected.html: Added.
* css3/compositing/blend-mode-clip-accelerated-blending-with-siblings.html: Added.
* css3/compositing/blend-mode-clip-accelerated-transformed-blending-expected.html: Added.
* css3/compositing/blend-mode-clip-accelerated-transformed-blending.html: Added.
* css3/compositing/blend-mode-clip-rect-accelerated-blending.html: Added.
* css3/compositing/blend-mode-clip-rect-accelerated-blending-expected.html: Added.
* css3/compositing/blend-mode-isolation-accelerated-overflow-hidden-expected.txt:

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

5 years agoAX: tabindex support in SVG2
krit@webkit.org [Mon, 5 May 2014 20:31:29 +0000 (20:31 +0000)]
AX: tabindex support in SVG2
https://bugs.webkit.org/show_bug.cgi?id=130212

Reviewed by Chris Fleizach.

Source/WebCore:
The patch is mainly based on a patch for Blink by Erik Dahlström.
https://src.chromium.org/viewvc/blink?revision=172964&view=revision

It adds support for tabindex to SVG by reusing the HTML code.

Spec: https://svgwg.org/svg2-draft/interact.html#sequential-focus-navigation-and-the-tabindex-attribute
IDL attribute: https://svgwg.org/svg2-draft/types.html#__svg__SVGElement__tabIndex

Test: svg/custom/tabindex-order.html

* dom/Element.cpp:
(WebCore::Element::setTabIndex): Moved from HTMLElement and shared with all elements.
* dom/Element.h:
* html/HTMLAnchorElement.cpp: Remove outdated comment.
(WebCore::HTMLAnchorElement::canStartSelection):
* html/HTMLElement.cpp:
(WebCore::HTMLElement::setTabIndex): Deleted.
* html/HTMLElement.h:
* svg/SVGAElement.cpp: Uses the same logic as HTMLAnchorElement now.
(WebCore::SVGAElement::tabIndex):
(WebCore::SVGAElement::supportsFocus):
(WebCore::SVGAElement::isMouseFocusable):
(WebCore::SVGAElement::isKeyboardFocusable):
(WebCore::SVGAElement::canStartSelection):
* svg/SVGAElement.h:
* svg/SVGCircleElement.h:
* svg/SVGClipPathElement.h:
* svg/SVGDefsElement.h:
* svg/SVGElement.cpp:
(WebCore::SVGElement::tabIndex): Return -1 if element can not be focused.
(WebCore::SVGElement::parseAttribute):
(WebCore::SVGElement::isMouseFocusable):
(WebCore::SVGElement::isKeyboardFocusable): Deleted. Use function on Element.
* svg/SVGElement.h:
* svg/SVGElement.idl:
* svg/SVGEllipseElement.h:
* svg/SVGGElement.h:
* svg/SVGGraphicsElement.h: Remove supportsFocus() from inheriting functions.
    Don't just return true. SVG elements should not be focusable by default.
    Instead check if tabindex was set explicitly.
* svg/SVGImageElement.h:
* svg/SVGLineElement.h:
* svg/SVGPathElement.h:
* svg/SVGPolyElement.h:
* svg/SVGRectElement.h:
* svg/SVGSVGElement.h:
* svg/SVGSwitchElement.h:
* svg/SVGSymbolElement.h:
* svg/SVGTextElement.h:

LayoutTests:
Add test for tabindex on various SVG elements. Negative tests included.

Test is based upon a test from Erik Dahlström. Modified to test all SVGGraphicsElements.

* svg/custom/tabindex-order-expected.txt: Added.
* svg/custom/tabindex-order.html: Added.
* accessibility/svg-group-element-with-title.html: Give group element a role.
* platform/gtk/svg/custom/linking-uri-01-b-expected.txt:
* platform/ios-sim/svg/custom/linking-uri-01-b-expected.txt:
* platform/mac/svg/custom/linking-uri-01-b-expected.txt:

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

5 years agohttps://bugs.webkit.org/show_bug.cgi?id=132522
barraclough@apple.com [Mon, 5 May 2014 20:14:11 +0000 (20:14 +0000)]
https://bugs.webkit.org/show_bug.cgi?id=132522
Clean up ProcessThrottler

Reviewed by Geoffrey Garen.

The initial implementation of ProcessThrottler relied on the reply from the
SetViewState message to ensure the page visibility notifications have a chance
to be delivered. This resulted in:
    - unnecessarily complicated interface to ProcessThrottler (in VisibilityState class)
    - complexity bleeding out into WebPageProxy (handling 'hiding' state).
    - for cases other than view hiding, no suspension notification in the WebContent.

To fix these issues add an explicit handshake from the ProcessThrottler to the WebPage.
This gives us two things:
    - All previously posted messages (e.g. SetViewState) will be processed before suspension.
    - WebContent is always (bar timeout) notified before suspension.

Since this interlock ensures the SetViewState message will be processed, the WKContentView no
longer needs to request a reply from SetViewState, and WebPageProxy can lose all the 'hiding'
state tracking. In turn, we can simplify VisibilityToken to a couple of simpler types, without
the interface to change state - just acquire/release to keep the process runnable or permit
suspension.

* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _snapshotRect:intoImageOfWidth:completionHandler:]):
    - VisibilityToken -> BackgroundActivityToken
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::WebPageProxy):
    - m_visibilityToken -> m_activityToken, remove m_pendingViewStateUpdates
      updateVisibilityToken -> updateActivityToken
(WebKit::WebPageProxy::reattachToWebProcess):
    - updateVisibilityToken -> updateActivityToken
(WebKit::WebPageProxy::viewStateDidChange):
    - remove m_pendingViewStateUpdates, updateActivityToken after sending SetViewState
(WebKit::WebPageProxy::updateActivityToken):
    - m_visibilityToken -> m_activityToken, no need to handle 'hiding' state.
(WebKit::WebPageProxy::updateVisibilityToken): Deleted.
    - renamed to updateActivityToken
(WebKit::WebPageProxy::didUpdateViewState): Deleted.
    - implementation moved back into header.
* UIProcess/WebPageProxy.h:
(WebKit::WebPageProxy::didUpdateViewState):
    - implementation moved back into header.
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::WebProcessProxy):
    - ProcessThrottler constructor now passed WebProcessProxy.
* UIProcess/WebProcessProxy.h:
    - added ProcessWillSuspend/ProcessReadyToSuspend
* UIProcess/WebProcessProxy.messages.in:
    - added ProcessWillSuspend/ProcessReadyToSuspend
* UIProcess/ios/ProcessAssertion.h:
(WebKit::ProcessAssertion::state):
    - accessor
* UIProcess/ios/ProcessThrottler.h:
(WebKit::ProcessThrottler::VisibilityToken::visibility): Deleted.
(WebKit::ProcessThrottler::VisibilityToken::setVisibility): Deleted.
    - removed VisibilityToken class, replaced with ForegroundActivityToken/BackgroundActivityToken.
(WebKit::ProcessThrottler::ProcessThrottler): Deleted.
(WebKit::ProcessThrottler::visibilityToken): Deleted.
(WebKit::ProcessThrottler::didConnnectToProcess): Deleted.
(WebKit::ProcessThrottler::assertionState): Deleted.
(WebKit::ProcessThrottler::updateAssertion): Deleted.
    - moved implementations to .mm.
* UIProcess/ios/ProcessThrottler.mm:
(WebKit::ProcessThrottler::ForegroundActivityToken::ForegroundActivityToken):
(WebKit::ProcessThrottler::ForegroundActivityToken::~ForegroundActivityToken):
(WebKit::ProcessThrottler::BackgroundActivityToken::BackgroundActivityToken):
(WebKit::ProcessThrottler::BackgroundActivityToken::~BackgroundActivityToken):
    - new, simpler replacement for VisibilityToken. Instantiate to keep a processes running, release to suspend.
(WebKit::ProcessThrottler::ProcessThrottler):
    - constructor, now initializes WebProcessProxy pointer & timer mechanism
(WebKit::ProcessThrottler::assertionState):
    - select the appropriate AssertionState give current ActivityTokens.
(WebKit::ProcessThrottler::updateAssertionNow):
    - update the current ProcessAssertion.
(WebKit::ProcessThrottler::updateAssertion):
    - update the current ProcessAssertion, delay running->suspended transitions to give the process a chance to clean up.
(WebKit::ProcessThrottler::didConnnectToProcess):
    - moved from header.
(WebKit::ProcessThrottler::suspendTimerFired):
    - timeout to prevent processes from running in the background for too long.
(WebKit::ProcessThrottler::processReadyToSuspend):
    - handshake from the WebContent process to acknowledge it is ready to suspend.
(WebKit::ProcessThrottler::VisibilityToken::VisibilityToken): Deleted.
(WebKit::ProcessThrottler::VisibilityToken::~VisibilityToken): Deleted.
(WebKit::ProcessThrottler::VisibilityToken::hideTimerFired): Deleted.
(WebKit::ProcessThrottler::VisibilityToken::setVisibilityInternal): Deleted.
    - removed VisibilityToken class, replaced with ForegroundActivityToken/BackgroundActivityToken.
* UIProcess/ios/WKContentView.mm:
(-[WKContentView didMoveToWindow]):
    - no longer necessary to request a response from SetViewState; this interlock is now managed by the ProcessThrottler.
* UIProcess/ios/WebProcessProxyIOS.mm:
(WebKit::WebProcessProxy::sendProcessWillSuspend):
(WebKit::WebProcessProxy::processReadyToSuspend):
    - added ProcessWillSuspend/ProcessReadyToSuspend
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::processWillSuspend):
    - notification from the WebContent process that we will be suspended; for now just send back an ack.
* WebProcess/WebProcess.h:
    - added ProcessWillSuspend/ProcessReadyToSuspend
* WebProcess/WebProcess.messages.in:
    - added ProcessWillSuspend/ProcessReadyToSuspend

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

5 years agoImplement beginScrubbing and endScrubbing for video fullscreen.
commit-queue@webkit.org [Mon, 5 May 2014 20:02:56 +0000 (20:02 +0000)]
Implement beginScrubbing and endScrubbing for video fullscreen.
https://bugs.webkit.org/show_bug.cgi?id=132520

Patch by Jeremy Jones <jeremyj@apple.com> on 2014-05-05
Reviewed by Eric Carlson.

Source/WebCore:
Plumb through beginScrubbing and endScrubbing from AVKit down to HTMLMediaElement.
This keeps the playback state consistent while scrubbing and allows playback state
to return to the original state when scrubbing is complete.

* WebCore.exp.in:
* platform/ios/WebVideoFullscreenInterfaceAVKit.mm:
(-[WebAVPlayerController beginScrubbing:]):
(-[WebAVPlayerController endScrubbing:]):
* platform/ios/WebVideoFullscreenModel.h:
* platform/ios/WebVideoFullscreenModelMediaElement.h:
* platform/ios/WebVideoFullscreenModelMediaElement.mm:
(WebVideoFullscreenModelMediaElement::beginScrubbing):
(WebVideoFullscreenModelMediaElement::endScrubbing):

Source/WebKit2:
Plumb through beginScrubbing and endScrubbing.

* UIProcess/ios/WebVideoFullscreenManagerProxy.h:
* UIProcess/ios/WebVideoFullscreenManagerProxy.mm:
(WebKit::WebVideoFullscreenManagerProxy::beginScrubbing):
(WebKit::WebVideoFullscreenManagerProxy::endScrubbing):
* WebProcess/ios/WebVideoFullscreenManager.messages.in:

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

5 years agoREGRESSION (r168244): compositing/visibility/visibility-image-layers-dynamic.html
bdakin@apple.com [Mon, 5 May 2014 19:46:30 +0000 (19:46 +0000)]
REGRESSION (r168244): compositing/visibility/visibility-image-layers-dynamic.html
failing.
https://bugs.webkit.org/show_bug.cgi?id=132551

Reviewed by Tim Horton.

This just needed a re-baseline after all. The bounds have increased in size
because the size of the layer tree dump effects the bounds! So now that we are
printing out anchor points, the bound increase by 15 pixels for every new anchor
point print-out.

Should not longer be marked failing.
* TestExpectations:

Added comment to the test.
* compositing/visibility/visibility-image-layers-dynamic.html:

Re-baseline.
* platform/mac/compositing/visibility/visibility-image-layers-dynamic-expected.txt:

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

5 years ago[CSS Blending] Move fast/repaint tests to css3/compositing/repaint
commit-queue@webkit.org [Mon, 5 May 2014 19:43:12 +0000 (19:43 +0000)]
[CSS Blending] Move fast/repaint tests to css3/compositing/repaint
https://bugs.webkit.org/show_bug.cgi?id=132567

Patch by Ion Rosca <rosca@adobe.com> on 2014-05-05
Reviewed by Mihnea Ovidenie.

* css3/compositing/repaint/blend-mode-isolate-stacking-context-expected.txt: Renamed from LayoutTests/fast/repaint/blend-mode-isolate-stacking-context-expected.txt.
* css3/compositing/repaint/blend-mode-isolate-stacking-context.html: Renamed from LayoutTests/fast/repaint/blend-mode-isolate-stacking-context.html.
* platform/efl-wk2/TestExpectations:
* platform/efl/TestExpectations:
* platform/gtk/TestExpectations:

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

5 years agoMore long hangs under IOSurfacePool::evict
timothy_horton@apple.com [Mon, 5 May 2014 18:59:23 +0000 (18:59 +0000)]
More long hangs under IOSurfacePool::evict
https://bugs.webkit.org/show_bug.cgi?id=132576
<rdar://problem/16769469>

Reviewed by Simon Fraser.

* platform/graphics/cg/IOSurfacePool.cpp:
(WebCore::IOSurfacePool::evict):
If the pool is too full, we should be evicting in-use surfaces
even if the size of the in-use surfaces has dropped below maximumInUseBytes,
otherwise we can get stuck in an infinite loop with 0 cached surfaces
and 1+ in-use surfaces.

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

5 years ago[CSS Regions] Remove regionLayoutUpdate event
stavila@adobe.com [Mon, 5 May 2014 18:49:54 +0000 (18:49 +0000)]
[CSS Regions] Remove regionLayoutUpdate event
https://bugs.webkit.org/show_bug.cgi?id=132564

Reviewed by Simon Fraser.

Source/WebCore:
The regionLayoutUpdate event was removed from the regions spec and was replaced by two other events:
regionOversetChange and regionFragmentChange.

No new tests needed, this patch removes a feature.

* dom/EventNames.h:
* dom/WebKitNamedFlow.cpp:
(WebCore::WebKitNamedFlow::dispatchRegionLayoutUpdateEvent): Deleted.
* dom/WebKitNamedFlow.h:
* inspector/InspectorCSSAgent.cpp:
(WebCore::InspectorCSSAgent::resetNonPersistentData):
(WebCore::InspectorCSSAgent::willRemoveNamedFlow):
(WebCore::UpdateRegionLayoutTask::UpdateRegionLayoutTask): Deleted.
(WebCore::UpdateRegionLayoutTask::scheduleFor): Deleted.
(WebCore::UpdateRegionLayoutTask::unschedule): Deleted.
(WebCore::UpdateRegionLayoutTask::reset): Deleted.
(WebCore::UpdateRegionLayoutTask::timerFired): Deleted.
(WebCore::InspectorCSSAgent::didUpdateRegionLayout): Deleted.
(WebCore::InspectorCSSAgent::regionLayoutUpdated): Deleted.
* inspector/InspectorCSSAgent.h:
* inspector/InspectorInstrumentation.cpp:
(WebCore::InspectorInstrumentation::didUpdateRegionLayoutImpl): Deleted.
* inspector/InspectorInstrumentation.h:
(WebCore::InspectorInstrumentation::didUpdateRegionLayout): Deleted.
* inspector/protocol/CSS.json:
* rendering/RenderNamedFlowFragment.cpp:
(WebCore::RenderNamedFlowFragment::updateOversetState):
* rendering/RenderNamedFlowThread.cpp:
(WebCore::RenderNamedFlowThread::RenderNamedFlowThread):
(WebCore::RenderNamedFlowThread::removeRegionFromThread):
(WebCore::RenderNamedFlowThread::layout):
(WebCore::RenderNamedFlowThread::dispatchRegionLayoutUpdateEventIfNeeded): Deleted.
(WebCore::RenderNamedFlowThread::regionLayoutUpdateEventTimerFired): Deleted.
* rendering/RenderNamedFlowThread.h:

Source/WebInspectorUI:
The regionLayoutUpdate event was removed from the regions spec and was replaced by two other events:
regionOversetChange and regionFragmentChange.

* UserInterface/Controllers/DOMTreeManager.js:
(WebInspector.DOMTreeManager.prototype.get regionLayoutUpdated): Deleted.
* UserInterface/Models/ScriptTimelineRecord.js:
* UserInterface/Protocol/CSSObserver.js:
(WebInspector.CSSObserver.prototype.regionLayoutUpdated): Deleted.
* UserInterface/Protocol/Legacy/7.0/InspectorWebBackendCommands.js:
* Versions/Inspector-iOS-7.0.json:

LayoutTests:
Removed test for regionLayoutUpdate event.

* fast/regions/auto-size/autoheight-regionlayoutupdate-multipletimes-expected.txt: Removed.
* fast/regions/auto-size/autoheight-regionlayoutupdate-multipletimes.html: Removed.

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

5 years ago[GTK][CMake] Unable to do make install
mrobinson@webkit.org [Mon, 5 May 2014 18:38:05 +0000 (18:38 +0000)]
[GTK][CMake] Unable to do make install
https://bugs.webkit.org/show_bug.cgi?id=130188

Reviewed by Carlos Garcia Campos.

.:
Only try to install the HTML documentation if the build is configured to generate it via
the new ENABLE_GTKDOC option. We cannot conditionally install something, so this allows us
to keep the HTML documentation directory as an installation source.

* Source/PlatformGTK.cmake: The gtkdoc target now always builds HTML documentation, but
is only added to the default target when ENABLE_GTKDOC is turned on. gtkdoc-no-html is
never added to the default target, but will be triggered by build-webkit, so that
when ENABLE_GTKDOC is off and build-webkit isn't used, documentation isn't built at all.
* Source/cmake/OptionsGTK.cmake: Add an ENABLE_GTKDOC option to the build.

Tools:
* Scripts/webkitdirs.pm:
(buildCMakeGeneratedProject): Always build gtkdoc-no-html for WebKitGTK+. This
will give an early signal that a change has broken the documentation.

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

5 years agoEnhance IDL compiler so it supports unrestricted float and double
cabanier@adobe.com [Mon, 5 May 2014 18:31:30 +0000 (18:31 +0000)]
Enhance IDL compiler so it supports unrestricted float and double
https://bugs.webkit.org/show_bug.cgi?id=132460

Reviewed by Dirk Schulze.

Source/WebCore:
Updated IDL compiler so it supports unrestricted types.
Also updated the IDL files so they use unrestricted float and
double.

Tests:
* canvas/philip/tests/2d.gradient.linear.nonfinite.html:
* canvas/philip/tests/2d.gradient.object.invalidoffset.html:
* canvas/philip/tests/2d.gradient.radial.nonfinite.html:
* canvas/philip/tests/2d.imageData.get.nonfinite.html:
* canvas/philip/tests/2d.imageData.put.nonfinite.html:
* canvas/philip/tests/2d.missingargs.html:
* fast/canvas/canvas-getImageData-invalid-expected.txt:
* fast/canvas/canvas-putImageData-expected.txt:
* fast/canvas/canvas-putImageData.js:

* Modules/battery/BatteryManager.idl:
* Modules/gamepad/Gamepad.idl:
* Modules/geolocation/Coordinates.idl:
* Modules/mediasource/MediaSource.idl:
* Modules/mediasource/SourceBuffer.idl:
* Modules/mediasource/VideoPlaybackQuality.idl:
* Modules/mediastream/MediaSourceStates.idl:
* Modules/proximity/DeviceProximityEvent.idl:
* Modules/speech/SpeechGrammar.idl:
* Modules/speech/SpeechGrammarList.idl:
* Modules/speech/SpeechRecognitionAlternative.idl:
* Modules/speech/SpeechSynthesisEvent.idl:
* Modules/speech/SpeechSynthesisUtterance.idl:
* Modules/webaudio/AnalyserNode.idl:
* Modules/webaudio/AudioBuffer.idl:
* Modules/webaudio/AudioBufferSourceNode.idl:
* Modules/webaudio/AudioContext.idl:
* Modules/webaudio/AudioListener.idl:
* Modules/webaudio/AudioParam.idl:
* Modules/webaudio/AudioProcessingEvent.idl:
* Modules/webaudio/OfflineAudioContext.idl:
* Modules/webaudio/OscillatorNode.idl:
* Modules/webaudio/PannerNode.idl:
* bindings/scripts/CodeGenerator.pm:
* bindings/scripts/CodeGeneratorGObject.pm:
(GetGValueTypeName):
(GetGlibTypeName):
* bindings/scripts/CodeGeneratorJS.pm:
(GenerateImplementation):
(GenerateParametersCheck):
(JSValueToNative):
* bindings/scripts/CodeGeneratorObjC.pm:
(GetObjCType):
(GenerateHeader):
* bindings/scripts/test/TestObj.idl:
* bindings/scripts/test/TestTypedefs.idl:
* css/CSSPrimitiveValue.idl:
* css/WebKitCSSMatrix.idl:
* dom/ClientRect.idl:
* dom/DeviceMotionEvent.idl:
* dom/DeviceOrientationEvent.idl:
* dom/Document.idl:
* dom/RequestAnimationFrameCallback.idl:
* dom/Touch.idl:
* dom/TransitionEvent.idl:
* dom/WebKitAnimationEvent.idl:
* dom/WebKitTransitionEvent.idl:
* dom/WheelEvent.idl:
* html/HTMLInputElement.idl:
* html/HTMLMediaElement.idl:
* html/HTMLMeterElement.idl:
* html/HTMLProgressElement.idl:
* html/MediaController.idl:
* html/TextMetrics.idl:
* html/TimeRanges.idl:
* html/canvas/CanvasRenderingContext2D.idl:
* html/canvas/WebGLRenderingContext.idl:
* html/track/DataCue.idl:
* html/track/TextTrackCue.idl:
* html/track/VTTCue.idl:
* html/track/VTTRegion.idl:
* inspector/InspectorFrontendHost.idl:
* inspector/ScriptProfile.idl:
* inspector/ScriptProfileNode.idl:
* page/DOMWindow.idl:
* page/Performance.idl:
* page/PerformanceEntry.idl:
* page/PerformanceResourceTiming.idl:
* page/SpeechInputResult.idl:
* page/WebKitPoint.idl:
* svg/SVGAngle.idl:
* svg/SVGAnimatedNumber.idl:
* svg/SVGAnimationElement.idl:
* svg/SVGFEDropShadowElement.idl:
* svg/SVGFEGaussianBlurElement.idl:
* svg/SVGFEMorphologyElement.idl:
* svg/SVGGlyphRefElement.idl:
* svg/SVGLength.idl:
* svg/SVGMatrix.idl:
* svg/SVGNumber.idl:
* svg/SVGPathElement.idl:
* svg/SVGPathSegArcAbs.idl:
* svg/SVGPathSegArcRel.idl:
* svg/SVGPathSegCurvetoCubicAbs.idl:
* svg/SVGPathSegCurvetoCubicRel.idl:
* svg/SVGPathSegCurvetoCubicSmoothAbs.idl:
* svg/SVGPathSegCurvetoCubicSmoothRel.idl:
* svg/SVGPathSegCurvetoQuadraticAbs.idl:
* svg/SVGPathSegCurvetoQuadraticRel.idl:
* svg/SVGPathSegCurvetoQuadraticSmoothAbs.idl:
* svg/SVGPathSegCurvetoQuadraticSmoothRel.idl:
* svg/SVGPathSegLinetoAbs.idl:
* svg/SVGPathSegLinetoHorizontalAbs.idl:
* svg/SVGPathSegLinetoHorizontalRel.idl:
* svg/SVGPathSegLinetoRel.idl:
* svg/SVGPathSegLinetoVerticalAbs.idl:
* svg/SVGPathSegLinetoVerticalRel.idl:
* svg/SVGPathSegMovetoAbs.idl:
* svg/SVGPathSegMovetoRel.idl:
* svg/SVGPoint.idl:
* svg/SVGRect.idl:
* svg/SVGSVGElement.idl:
* svg/SVGTextContentElement.idl:
* svg/SVGTransform.idl:
* svg/SVGZoomEvent.idl:
* testing/InternalSettings.idl:
* testing/Internals.idl:
* xml/XPathResult.idl:

LayoutTests:
* canvas/philip/tests/2d.gradient.linear.nonfinite.html:
* canvas/philip/tests/2d.gradient.object.invalidoffset.html:
* canvas/philip/tests/2d.gradient.radial.nonfinite.html:
* canvas/philip/tests/2d.imageData.get.nonfinite.html:
* canvas/philip/tests/2d.imageData.put.nonfinite.html:
* canvas/philip/tests/2d.missingargs-expected.txt:
* canvas/philip/tests/2d.missingargs.html:
* fast/canvas/canvas-getImageData-invalid-expected.txt:
* fast/canvas/canvas-putImageData-expected.txt:
* fast/canvas/canvas-putImageData.js:
* fast/canvas/linearGradient-infinite-values-expected.txt:
* fast/canvas/radialGradient-infinite-values-expected.txt:
* fast/canvas/script-tests/canvas-getImageData-invalid.js:
* fast/canvas/script-tests/linearGradient-infinite-values.js:
* fast/canvas/script-tests/radialGradient-infinite-values.js:
* platform/mac/canvas/philip/tests/2d.missingargs-expected.txt:

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

5 years agoUse a layer delegate instead of web_disableAllActions wherever possible
timothy_horton@apple.com [Mon, 5 May 2014 18:30:02 +0000 (18:30 +0000)]
Use a layer delegate instead of web_disableAllActions wherever possible
https://bugs.webkit.org/show_bug.cgi?id=132560
<rdar://problem/16459284>

Reviewed by Simon Fraser.

* WebCore.exp.in:
* WebCore.xcodeproj/project.pbxproj:
* platform/graphics/ca/mac/PlatformCALayerMac.mm:
(PlatformCALayerMac::commonInit):
If we own the platform layer, set its delegate to the action-disabling WebActionDisablingCALayerDelegate.
If we don't, its actual owner might want to control the delegate, so continue using web_disableAllActions.

* platform/graphics/cocoa/WebActionDisablingCALayerDelegate.h: Added.
* platform/graphics/cocoa/WebActionDisablingCALayerDelegate.mm: Added.
(+[WebActionDisablingCALayerDelegate shared]):
(-[WebActionDisablingCALayerDelegate actionForLayer:forKey:]):
Add a class that can act as the delegate of a CALayer, and disables all actions.

* platform/graphics/cocoa/WebCoreCALayerExtras.h: Renamed from Source/WebCore/platform/graphics/mac/WebCoreCALayerExtras.h.
* platform/graphics/cocoa/WebCoreCALayerExtras.mm: Renamed from Source/WebCore/platform/graphics/mac/WebCoreCALayerExtras.mm.
(-[CALayer web_disableAllActions]):
Move WebCoreCALayerExtras from mac/ to cocoa/.

* UIProcess/API/mac/WKView.mm:
(-[WKView _setAcceleratedCompositingModeRootLayer:]):
* UIProcess/ios/RemoteLayerTreeHostIOS.mm:
(WebKit::RemoteLayerTreeHost::createLayer):
* UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.mm:
(WebKit::RemoteLayerTreeDrawingAreaProxy::showDebugIndicator):
* UIProcess/mac/RemoteLayerTreeHost.mm:
(WebKit::RemoteLayerTreeHost::createLayer):
* UIProcess/mac/ViewGestureControllerMac.mm:
(WebKit::ViewGestureController::beginSwipeGesture):
Make use of WebActionDisablingCALayerDelegate where possible.
Also, UIKit disables actions for us, so don't bother doing anything on iOS.

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

5 years agoOptimize PutByVal when subscript is a rope string.
akling@apple.com [Mon, 5 May 2014 18:08:25 +0000 (18:08 +0000)]
Optimize PutByVal when subscript is a rope string.
<https://webkit.org/b/132572>

Add a JSString::toIdentifier() that is smarter when the JSString is
really a rope string. Use this in baseline & DFG's PutByVal to avoid
allocating new StringImpls that we immediately deduplicate anyway.

Reviewed by Antti Koivisto.

* dfg/DFGOperations.cpp:
(JSC::DFG::operationPutByValInternal):
* jit/JITOperations.cpp:
* runtime/JSString.h:
(JSC::JSString::toIdentifier):

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

5 years agoUpdate framework locations in package-root
psolanki@apple.com [Mon, 5 May 2014 17:50:06 +0000 (17:50 +0000)]
Update framework locations in package-root
https://bugs.webkit.org/show_bug.cgi?id=132571

Reviewed by Simon Fraser.

* Scripts/package-root:

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

5 years agoSession-aware plugin autostart data
mhock@apple.com [Mon, 5 May 2014 16:49:33 +0000 (16:49 +0000)]
Session-aware plugin autostart data
https://bugs.webkit.org/show_bug.cgi?id=131758
<rdar://problem/15906540>

Reviewed by Alexey Proskuryakov.

Source/WebCore:
* html/HTMLPlugInImageElement.cpp:
(WebCore::HTMLPlugInImageElement::userDidClickSnapshot):
* page/PlugInClient.h:

Source/WebKit2:
* Shared/WebProcessCreationParameters.cpp:
* Shared/WebProcessCreationParameters.h:
* UIProcess/Plugins/PlugInAutoStartProvider.cpp:
(WebKit::PlugInAutoStartProvider::PlugInAutoStartProvider):
(WebKit::PlugInAutoStartProvider::addAutoStartOriginHash):
(WebKit::PlugInAutoStartProvider::autoStartOriginHashesCopy):
(WebKit::PlugInAutoStartProvider::autoStartOriginsTableCopy):
(WebKit::PlugInAutoStartProvider::setAutoStartOriginsTableWithItemsPassingTest):
(WebKit::PlugInAutoStartProvider::setAutoStartOriginsArray):
(WebKit::PlugInAutoStartProvider::didReceiveUserInteraction):
* UIProcess/Plugins/PlugInAutoStartProvider.h:
* UIProcess/WebContext.cpp:
(WebKit::WebContext::addPlugInAutoStartOriginHash):
(WebKit::WebContext::plugInDidReceiveUserInteraction):
* UIProcess/WebContext.h:
* UIProcess/WebContext.messages.in:
* WebProcess/Plugins/PluginView.cpp:
(WebKit::PluginView::pluginDidReceiveUserInteraction):
* WebProcess/WebCoreSupport/WebPlugInClient.cpp:
(WebKit::WebPlugInClient::didStartFromOrigin):
* WebProcess/WebCoreSupport/WebPlugInClient.h:
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::WebProcess):
(WebKit::WebProcess::isPlugInAutoStartOriginHash):
(WebKit::WebProcess::shouldPlugInAutoStartFromOrigin):
(WebKit::WebProcess::plugInDidStartFromOrigin):
(WebKit::WebProcess::didAddPlugInAutoStartOriginHash):
(WebKit::WebProcess::resetPlugInAutoStartOriginDefaultHashes):
(WebKit::WebProcess::resetPlugInAutoStartOriginHashes):
(WebKit::WebProcess::plugInDidReceiveUserInteraction):
* WebProcess/WebProcess.h:
* WebProcess/WebProcess.messages.in:

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

5 years agoAnother iOS build fix after r168260.
aestes@apple.com [Mon, 5 May 2014 16:28:49 +0000 (16:28 +0000)]
Another iOS build fix after r168260.

Removed an unnecessary 'using namespace WebCore'.

* UIProcess/ios/WebMemoryPressureHandlerIOS.cpp:

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

5 years ago[CSS Regions] Elements with overflow:auto are not painted inside regions when followi...
stavila@adobe.com [Mon, 5 May 2014 16:14:47 +0000 (16:14 +0000)]
[CSS Regions] Elements with overflow:auto are not painted inside regions when following a float
https://bugs.webkit.org/show_bug.cgi?id=131161

Reviewed by David Hyatt.

Source/WebCore:
When a float-avoiding element (such as overflow:auto) is flowed into a flow thread after a float, its
logical left is not set on its frameRect or its layer's topLeft, but is instead kept in its RenderBoxRegionInfo
structure. In some situation, this causes paint rejection to kick-in because intersecting the layer's rect
(which DOESN'T contain the logical left from the region info object) with the computed background rect
(which contains the logical left from the region info object) results in an empty rect.

Test: fast/regions/overflow-auto-after-float.html

* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::calculateClipRects):

LayoutTests:
Added test for an overflow:auto element being flowed after a float.

* fast/regions/overflow-auto-after-float-expected.html: Added.
* fast/regions/overflow-auto-after-float.html: Added.

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

5 years ago[CSSRegions] Slider displayed wrong in regions
abucur@adobe.com [Mon, 5 May 2014 14:47:33 +0000 (14:47 +0000)]
[CSSRegions] Slider displayed wrong in regions
https://bugs.webkit.org/show_bug.cgi?id=132243

Reviewed by Mihnea Ovidenie.

Source/WebCore:
In case a box didn't have a range, getRegionRangeForBox was searching for
the top-most unplittable ancestor. This is not correct in every case. It's
possible to have a box with range that has children without ranges (e.g. an
absolutely positioned inline box with shadow descendants).

I've modified getRegionRangeForBox to search for the first ancestor that
has a cached range and use that instead of looking for an unsplittable box.
The range of the box is the region at the top of the box, clamped by the
range of the ancestor. This will be correct all the time once all the layout
systems are region range aware and are able to cache it.

Test: fast/regions/positioned-slider-in-regions.html

* rendering/RenderFlowThread.cpp:
(WebCore::RenderFlowThread::hasRegionRangeForBox):
(WebCore::RenderFlowThread::getRegionRangeForBox):
* rendering/RenderFlowThread.h:

LayoutTests:
Tests that the thumb of positioned slider inside regions is correctly painted.

* fast/regions/positioned-slider-in-regions-expected.html: Added.
* fast/regions/positioned-slider-in-regions.html: Added.

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

5 years agoFix the iOS build.
timothy_horton@apple.com [Mon, 5 May 2014 10:58:00 +0000 (10:58 +0000)]
Fix the iOS build.

* UIProcess/API/Cocoa/WKWebView.mm:

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

5 years agoUnreviewed. New GTK baseline for media/media-controls-clone.html.
calvaris@igalia.com [Mon, 5 May 2014 10:54:20 +0000 (10:54 +0000)]
Unreviewed. New GTK baseline for media/media-controls-clone.html.

* platform/gtk/TestExpectations: Removed from the expectations.
* platform/gtk/media/media-controls-clone-expected.png:
* platform/gtk/media/media-controls-clone-expected.txt: New
baseline.

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

5 years agoRemove two now-incorrect assertions after r168256.
akling@apple.com [Mon, 5 May 2014 08:19:01 +0000 (08:19 +0000)]
Remove two now-incorrect assertions after r168256.

* runtime/JSString.cpp:
(JSC::JSRopeString::resolveRopeSlowCase8):
(JSC::JSRopeString::resolveRopeSlowCase):

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

5 years ago[EFL][WK2] Refactor favicon database APIs
ryuan.choi@samsung.com [Mon, 5 May 2014 08:08:28 +0000 (08:08 +0000)]
[EFL][WK2] Refactor favicon database APIs
https://bugs.webkit.org/show_bug.cgi?id=132519

Reviewed by Gyuyoung Kim.

Source/WebKit2:
ewebkit2 has two options to get favicon.

The first option is ewk_view_favicon_get with "favicon,changed" signal.
It's simple to use but it always adds the callback to EwkView although applications does not use favicon.

The other option is ewk_favicon_database_icon_get with ewk_favicon_database_icon_change_callback_add API.
But the callback doesn't have information about Ewk_Favicon_Database to call ewk_favicon_database_icon_get.

This patch removed ewk_view_favicon_get and "favicon,changed" signal.
In addition, improved ewk_favicon_database_icon_change_callback.

* UIProcess/API/efl/EwkView.cpp: Remove ewk_favicon_database related code.
(EwkView::EwkView):
(EwkView::~EwkView):
(EwkView::informURLChange):
(EwkView::handleFaviconChanged):
(EwkView::createFavicon): Deleted.
* UIProcess/API/efl/EwkViewCallbacks.h:
* UIProcess/API/efl/ewk_favicon_database.cpp:
(EwkFaviconDatabase::iconDataReadyForPageURL):
(EwkFaviconDatabase::didChangeIconForPageURL): Deleted. dead code.
* UIProcess/API/efl/ewk_favicon_database.h:
Refactor Ewk_Favicon_Database_Icon_Change_Cb and improve doxygen.
* UIProcess/API/efl/ewk_favicon_database_private.h:
* UIProcess/API/efl/ewk_view.cpp:
(ewk_view_favicon_get): Deleted.
* UIProcess/API/efl/ewk_view.h:
* UIProcess/API/efl/tests/test_ewk2_favicon_database.cpp:
(EWK2FaviconDatabaseTest::requestFaviconData):
(TEST_F):

Tools:
* MiniBrowser/efl/main.c: Use ewk_favicon_database_icon_get instead of ewk_view_favicon_get.
(update_view_favicon):
(on_icon_changed_cb):
(window_free):
(on_url_changed):
(window_create):
(on_view_favicon_changed): Deleted.

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

5 years ago[CSS Regions] ASSERT when hovering over region
abucur@adobe.com [Mon, 5 May 2014 08:01:13 +0000 (08:01 +0000)]
[CSS Regions] ASSERT when hovering over region
https://bugs.webkit.org/show_bug.cgi?id=128809

Reviewed by Mihnea Ovidenie.

Source/WebCore:
There's no point in hit-testing a box for a region if it's not contained inside
that region.

Test: fast/regions/hit-test-box-non-containing-region.html

* rendering/RenderBox.cpp:
(WebCore::RenderBox::nodeAtPoint):

LayoutTests:
Add a test verifying we're not trying to hit-test a box inside a region
where it's not contained.

* fast/regions/hit-test-box-non-containing-region-expected.txt: Added.
* fast/regions/hit-test-box-non-containing-region.html: Added.

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

5 years ago[iOS WebKit2] Swipe snapshots should be taken asynchronously
timothy_horton@apple.com [Mon, 5 May 2014 07:37:35 +0000 (07:37 +0000)]
[iOS WebKit2] Swipe snapshots should be taken asynchronously
https://bugs.webkit.org/show_bug.cgi?id=132417
<rdar://problem/16535921>

Reviewed by Anders Carlsson.

Reorganize takeViewSnapshot to return a ViewSnaphot with the image
filled in (the other properties are filled in by ViewSnapshotStore).

Make ViewSnapshotStore use a fixed size instead of count for the snapshot cache.
iOS doesn't use purgeable snapshots, so make the cache much smaller there.

Use CARenderServerCaptureLayerWithTransform to achieve async snapshotting.

Rename WebKit::ViewSnapshotStore::Snapshot to WebKit::ViewSnapshot so that
it can be forward-declared in a bunch of places.

* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _takeViewSnapshot:]):
Use CARenderServerCaptureLayerWithTransform.

* UIProcess/API/Cocoa/WKWebViewInternal.h:
* UIProcess/API/mac/WKView.mm:
(createIOSurfaceFromImage):
(-[WKView _takeViewSnapshot:]):
Adjust to the new push model.

* UIProcess/API/mac/WKViewInternal.h:
* UIProcess/PageClient.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::takeViewSnapshot):
* UIProcess/WebPageProxy.h:
* UIProcess/ios/PageClientImplIOS.h:
* UIProcess/ios/PageClientImplIOS.mm:
(WebKit::PageClientImpl::takeViewSnapshot):
* UIProcess/mac/PageClientImpl.h:
* UIProcess/mac/PageClientImpl.mm:
(WebKit::PageClientImpl::takeViewSnapshot):
Plumbing.

* UIProcess/ios/ViewGestureControllerIOS.mm:
(WebKit::ViewGestureController::beginSwipeGesture):
(WebKit::ViewGestureController::endSwipeGesture):
Realize an object that can be used as the layer contents from the slot ID.

* UIProcess/ios/WebMemoryPressureHandlerIOS.cpp:
(WebKit::WebMemoryPressureHandler::sharedHandler):
(WebKit::WebMemoryPressureHandler::WebMemoryPressureHandler):
* UIProcess/WebMemoryPressureHandlerIOS.h:
Add a memory pressure handler for the UI process. This does not use
WebCore's platform independent memory pressure handler because that
mechanism only allows for one handler per process, and we don't want to
stomp on any handlers installed by WebKit1 in a process where the WebKits coexist.

* UIProcess/ios/WKContentView.h:
* UIProcess/ios/WKContentView.mm:
(-[WKContentView _takeViewSnapshot]): Deleted.
Get rid of an unnecessary bounce through WKContentView.

* UIProcess/mac/ViewGestureControllerMac.mm:
(WebKit::ViewGestureController::retrieveSnapshotForItem):
(WebKit::ViewGestureController::endSwipeGesture):
Use the new name, ViewSnapshot.

* UIProcess/mac/ViewSnapshotStore.h:
(WebKit::ViewSnapshot::ViewSnapshot):
* UIProcess/mac/ViewSnapshotStore.mm:
(WebKit::ViewSnapshotStore::ViewSnapshotStore):
(WebKit::ViewSnapshotStore::~ViewSnapshotStore):
(WebKit::ViewSnapshotStore::snapshottingContext):
Use a custom CAContext for snapshotting so that snapshots don't
disappear when the main context is destroyed on hibernation.

(WebKit::ViewSnapshotStore::removeSnapshotImage):
(WebKit::ViewSnapshotStore::pruneSnapshots):
(WebKit::ViewSnapshotStore::recordSnapshot):
(WebKit::ViewSnapshotStore::getSnapshot):
(WebKit::ViewSnapshotStore::discardSnapshots):
(WebKit::ViewSnapshot::clearImage):
(WebKit::ViewSnapshot::hasImage):
(WebKit::createIOSurfaceFromImage): Deleted.
(WebKit::ViewSnapshotStore::Snapshot::clearImage): Deleted.
(WebKit::ViewSnapshotStore::Snapshot::hasImage): Deleted.
Cache by image size instead of counts.

* WebKit2.xcodeproj/project.pbxproj:

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

5 years agoOptimize JSRopeString for resolving directly to AtomicString.
akling@apple.com [Mon, 5 May 2014 06:24:44 +0000 (06:24 +0000)]
Optimize JSRopeString for resolving directly to AtomicString.
<https://webkit.org/b/132548>

Source/JavaScriptCore:
If we know that the JSRopeString we are resolving is going to be used
as an AtomicString, we can try to avoid creating a new string.

We do this by first resolving the rope into a stack buffer, and using
that buffer as a key into the AtomicString table. If there is already
an AtomicString with the same characters, we reuse that instead of
constructing a new StringImpl.

JSString gains these two public functions:

- AtomicString toAtomicString()

    Returns an AtomicString, tries to avoid allocating a new string
    if possible.

- AtomicStringImpl* toExistingAtomicString()

    Returns a non-null AtomicStringImpl* if one already exists in the
    AtomicString table. If none is found, the rope is left unresolved.

Reviewed by Filip Pizlo.

* runtime/JSString.cpp:
(JSC::JSRopeString::resolveRopeInternal8):
(JSC::JSRopeString::resolveRopeInternal16):
(JSC::JSRopeString::resolveRopeToAtomicString):
(JSC::JSRopeString::clearFibers):
(JSC::JSRopeString::resolveRopeToExistingAtomicString):
(JSC::JSRopeString::resolveRope):
(JSC::JSRopeString::outOfMemory):
* runtime/JSString.h:
(JSC::JSString::toAtomicString):
(JSC::JSString::toExistingAtomicString):

Source/WebCore:
Add two bindings generator attributes for parameters to influence
the way that JS rope strings are resolved:

- AtomicString

    Generates code that avoids allocating a new StringImpl if there
    is already an existing AtomicString we can reuse.

- RequiresExistingAtomicString

    Generates code that fails immediately if the provided string
    is not found in the AtomicString table. This is now used for
    document.getElementById(), and works because any existing ID
    is guaranteed to be in the table.

Reviewed by Filip Pizlo.

* bindings/scripts/CodeGeneratorJS.pm:
(GenerateParametersCheck):
(JSValueToNative):
* bindings/scripts/IDLAttributes.txt:
* dom/Document.idl:

Source/WTF:
Add AtomicString::find([LU]Char*, unsigned length) helpers for finding
an existing AtomicString without a StringImpl on hand.

Reviewed by Filip Pizlo.

* wtf/text/AtomicString.h:
* wtf/text/AtomicString.cpp:
(WTF::AtomicString::find):

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

5 years agoUnreviewed, rolling out r168254.
akling@apple.com [Mon, 5 May 2014 06:10:03 +0000 (06:10 +0000)]
Unreviewed, rolling out r168254.

Very crashy on debug JSC tests.

Reverted changeset:

"jsSubstring() should be lazy"
https://bugs.webkit.org/show_bug.cgi?id=132556
http://trac.webkit.org/changeset/168254

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

5 years agojsSubstring() should be lazy
fpizlo@apple.com [Mon, 5 May 2014 04:54:19 +0000 (04:54 +0000)]
jsSubstring() should be lazy
https://bugs.webkit.org/show_bug.cgi?id=132556

Reviewed by Andreas Kling.

Source/JavaScriptCore:
jsSubstring() is now lazy by using a special rope that is a substring instead of a
concatenation. To make this patch super simple, we require that a substring's base is
never a rope. Hence, when resolving a rope, we either go down a non-recursive substring
path, or we go down a concatenation path which may see exactly one level of substrings in
its fibers.

This is up to a 50% speed-up on microbenchmarks and a 10% speed-up on Octane/regexp.

* heap/MarkedBlock.cpp:
(JSC::MarkedBlock::specializedSweep):
* runtime/JSString.cpp:
(JSC::JSRopeString::visitFibers):
(JSC::JSRopeString::resolveRope):
(JSC::JSRopeString::resolveRopeSlowCase8):
(JSC::JSRopeString::resolveRopeSlowCase):
(JSC::JSRopeString::outOfMemory):
* runtime/JSString.h:
(JSC::JSRopeString::finishCreation):
(JSC::JSRopeString::append):
(JSC::JSRopeString::create):
(JSC::JSRopeString::offsetOfFibers):
(JSC::JSRopeString::fiber):
(JSC::JSRopeString::substringBase):
(JSC::JSRopeString::substringOffset):
(JSC::JSRopeString::substringSentinel):
(JSC::JSRopeString::isSubstring):
(JSC::jsSubstring):
* runtime/RegExpMatchesArray.cpp:
(JSC::RegExpMatchesArray::reifyAllProperties):
* runtime/StringPrototype.cpp:
(JSC::stringProtoFuncSubstring):

LayoutTests:
These tests get 35-50% faster.

* js/regress/script-tests/substring-concat-weird.js: Added.
(foo):
* js/regress/script-tests/substring-concat.js: Added.
(foo):
* js/regress/script-tests/substring.js: Added.
(foo):
* js/regress/substring-concat-expected.txt: Added.
* js/regress/substring-concat-weird-expected.txt: Added.
* js/regress/substring-concat-weird.html: Added.
* js/regress/substring-concat.html: Added.
* js/regress/substring-expected.txt: Added.
* js/regress/substring.html: Added.

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

5 years ago[iOS WK2] Compositing layers in iframes are misplaced
simon.fraser@apple.com [Mon, 5 May 2014 03:49:08 +0000 (03:49 +0000)]
[iOS WK2] Compositing layers in iframes are misplaced
https://bugs.webkit.org/show_bug.cgi?id=132554
<rdar://problem/16203027>

Reviewed by Benjamin Poulain.

Have requiresScrollLayer() only consider frameView.delegatesScrolling()
for the main frame, so that iframes get scroll layers (even though they
will never scroll), so that the rest of geometry code works as on other
platforms.

* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::requiresScrollLayer):

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

5 years agoUse std::unique_ptr in m_taskTimer of Notification class
gyuyoung.kim@samsung.com [Mon, 5 May 2014 01:16:18 +0000 (01:16 +0000)]
Use std::unique_ptr in m_taskTimer of Notification class
https://bugs.webkit.org/show_bug.cgi?id=132544

Reviewed by Andreas Kling.

No new tests, no behavior change.

* Modules/notifications/Notification.cpp:
(WebCore::Notification::Notification):
* Modules/notifications/Notification.h: Use std::unique_ptr instead of OwnPtr.

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

5 years agoMark compositing/visibility/visibility-image-layers-dynamic.html as failing after...
akling@apple.com [Mon, 5 May 2014 00:43:22 +0000 (00:43 +0000)]
Mark compositing/visibility/visibility-image-layers-dynamic.html as failing after r168244.

* TestExpectations:

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

5 years agoReduce calls to CFURLCacheCopySharedURLCache
psolanki@apple.com [Mon, 5 May 2014 00:42:20 +0000 (00:42 +0000)]
Reduce calls to CFURLCacheCopySharedURLCache
https://bugs.webkit.org/show_bug.cgi?id=132464
<rdar://problem/16806694>

Address review comments by collapsing multi-line code into a single ASSERT.

* NetworkProcess/mac/NetworkResourceLoaderMac.mm:
(WebKit::NetworkResourceLoader::tryGetShareableHandleFromSharedBuffer):

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

5 years agoLong hangs under IOSurfacePool::evict
timothy_horton@apple.com [Mon, 5 May 2014 00:21:32 +0000 (00:21 +0000)]
Long hangs under IOSurfacePool::evict
https://bugs.webkit.org/show_bug.cgi?id=132549
<rdar://problem/16769469>

Reviewed by Simon Fraser.

* platform/graphics/cg/IOSurfacePool.cpp:
(WebCore::IOSurfacePool::willAddSurface):
Run eviction before adding the new surface to m_bytesCached/m_inUseBytesCached.
We use the additionalSize parameter to make space for the new surface.

(WebCore::IOSurfacePool::evict):
If we want to free up the entire pool, we can do so by throwing away everything.
This also avoids an underflow if additionalSize is larger than the maximum pool size.

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

5 years agoShortcircuit shouldUseCredentialStorage callback
psolanki@apple.com [Sun, 4 May 2014 22:53:41 +0000 (22:53 +0000)]
Shortcircuit shouldUseCredentialStorage callback
https://bugs.webkit.org/show_bug.cgi?id=132308
<rdar://problem/16806708>

Reviewed by Alexey Proskuryakov.

If we are going to return true from the shouldUseCredentialStorage callback then we don't
really need to have CFNetwork/Foundation call us. We can just disable the callback and
CFNetwork will assume true. Add a separate subclass that implements this callback when we
need to return false. We can also eliminate the corresponding async callbacks. This avoids
pingponging between dispatch queue and main thread in the common case.

No new tests because no change in functionality.

Source/WebCore:
* WebCore.exp.in:
* platform/network/ResourceHandle.cpp:
* platform/network/ResourceHandle.h:
* platform/network/ResourceHandleClient.cpp:
* platform/network/ResourceHandleClient.h:
* platform/network/cf/ResourceHandleCFNet.cpp:
(WebCore::ResourceHandle::createCFURLConnection):
(WebCore::ResourceHandle::shouldUseCredentialStorage):
* platform/network/cf/ResourceHandleCFURLConnectionDelegate.h:
* platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.cpp:
(WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::shouldUseCredentialStorage):
* platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.h:
* platform/network/cf/SynchronousResourceHandleCFURLConnectionDelegate.cpp:
* platform/network/cf/SynchronousResourceHandleCFURLConnectionDelegate.h:
* platform/network/mac/ResourceHandleMac.mm:
(WebCore::ResourceHandle::start):
(WebCore::ResourceHandle::makeDelegate):
(WebCore::ResourceHandle::delegate):
(WebCore::ResourceHandle::platformLoadResourceSynchronously):
(WebCore::ResourceHandle::shouldUseCredentialStorage):
* platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.h:
* platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm:
(-[WebCoreResourceHandleWithCredentialStorageAsOperationQueueDelegate connectionShouldUseCredentialStorage:]):
* platform/network/soup/ResourceHandleSoup.cpp:

Source/WebKit2:
* NetworkProcess/NetworkResourceLoader.cpp: Remove shouldUseCredentialStorageAsync() callbacks.
* NetworkProcess/NetworkResourceLoader.h:

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

5 years agoEven more re-baselining for anchor point after
bdakin@apple.com [Sun, 4 May 2014 22:39:29 +0000 (22:39 +0000)]
Even more re-baselining for anchor point after
http://trac.webkit.org/changeset/168244

* platform/mac-mountainlion/compositing/contents-opaque/control-layer-expected.txt:
* platform/mac/compositing/contents-opaque/control-layer-expected.txt:

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

5 years agoAdditional re-baselining for anchor point after
bdakin@apple.com [Sun, 4 May 2014 21:16:56 +0000 (21:16 +0000)]
Additional re-baselining for anchor point after
http://trac.webkit.org/changeset/168244

* compositing/contents-opaque/control-layer-expected.txt:
* css3/compositing/blend-mode-accelerated-with-multiple-stacking-contexts-expected.txt:
* css3/compositing/blend-mode-ancestor-clipping-layer-expected.txt:
* css3/compositing/blend-mode-blended-element-overlapping-composited-sibling-should-have-compositing-layer-expected.txt:
* css3/compositing/blend-mode-parent-of-composited-blended-has-layer-expected.txt:
* css3/compositing/blend-mode-with-accelerated-sibling-expected.txt:
* css3/compositing/blend-mode-with-composited-descendant-should-have-layer-expected.txt:
* css3/filters/filtered-compositing-descendant-expected.txt:

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

5 years ago[iOS] deviceScaleFactor is being double-applied when rendering captions in full scree...
bfulgham@apple.com [Sun, 4 May 2014 21:01:23 +0000 (21:01 +0000)]
[iOS] deviceScaleFactor is being double-applied when rendering captions in full screen mode
https://bugs.webkit.org/show_bug.cgi?id=132481
<rdar://problem/16507482>

Reviewed by Jer Noble.

Add a new 'syncTextTrackBounds' method (and relaying functions) to keep the text track container in sync
with changes to the video player's display layer.

* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::syncTextTrackBounds: Added.
* html/HTMLMediaElement.h:
* html/shadow/MediaControlElements.cpp:
(WebCore::MediaControlTextTrackContainerElement::updateDisplay): Don't set the platform scale factor here. It is already
being accounted for in the createTextTrackRepresentationImage method.
(WebCore::MediaControlTextTrackContainerElement::updateSizes): Synchronize the text track representation
with any new video layer changes.
* platform/graphics/MediaPlayer.cpp:
(WebCore::MediaPlayer::syncTextTrackBounds): Added.
* platform/graphics/MediaPlayer.h:
* platform/graphics/MediaPlayerPrivate.h:
(WebCore::MediaPlayerPrivateInterface::syncTextTrackBounds): Added.
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
(WebCore::MediaPlayerPrivateAVFoundationObjC::setVideoFullscreenLayer): Use new sync function.
(WebCore::MediaPlayerPrivateAVFoundationObjC::setVideoFullscreenFrame): Ditto.
(WebCore::MediaPlayerPrivateAVFoundationObjC::syncTextTrackBounds): Added. Keep the text track layer size in sync with
the current video layer size. This may change during animations, rotations, etc.
(WebCore::MediaPlayerPrivateAVFoundationObjC::setTextTrackRepresentation): Use new sync function.

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

5 years agoTop content inset: Margin tiles should not display in the inset area when pinned
bdakin@apple.com [Sun, 4 May 2014 20:40:40 +0000 (20:40 +0000)]
Top content inset: Margin tiles should not display in the inset area when pinned
to the top of the page
https://bugs.webkit.org/show_bug.cgi?id=132535
-and corresponding-
<rdar://problem/16613039>

Reviewed by Simon Fraser.

Source/WebCore:
Prior to this change, topContentInset was implemented by positioning
RenderLayerCompositor’s m_rootContentLayer based on the inset value. In order to
ensure that no content is displayed in the inset area when we are pinned to the
top of the page, we’ll have to take a different approach. In this patch, when you
are pinned to the top of the page, the m_rootContentLayer is positioned at (0,0),
much like it would be without an inset, but the m_clip layer IS positioned at (0,
topContentInset). Then for all y-scroll values between 0 and topContentInset, the
positions of the clip layer and the contents layer are adjusted so that the clip
layer approaches a position of (0,0), and the root layer approaches a position of
(0, topContentInset). This makes sure that any content above the top the document
is aways clipped out of the inset area.

In order to achieve this, the scrolling thread needs to know about the
topContentInset, the clip layer, and the root contents layer.

AsyncScrollingCoordinator::updateScrollingNode() now takes an additional parameter
for the clip layer. Also export the topContentInset symbol for UI-side
compositing.
* WebCore.exp.in:

Here is the new computation. Implemented in one spot that can be called from the
scrolling thread, AsyncScrollingCoordinator and RenderLayerCompositor.
* page/FrameView.cpp:
(WebCore::FrameView::yPositionForInsetClipLayer):
(WebCore::FrameView::yPositionForRootContentLayer):
* page/FrameView.h:

Set the topContentInset, the insetClipLayer, and the scrolledContentsLayer when
appropriate.
* page/scrolling/AsyncScrollingCoordinator.cpp:
(WebCore::AsyncScrollingCoordinator::frameViewLayoutUpdated):
(WebCore::AsyncScrollingCoordinator::frameViewRootLayerDidChange):

Set or sync the positions for the inset layer and the contents layer.
(WebCore::AsyncScrollingCoordinator::updateScrollPositionAfterAsyncScroll):
(WebCore::AsyncScrollingCoordinator::updateScrollingNode):
* page/scrolling/AsyncScrollingCoordinator.h:

Convenience functions for getting the clipLayer() and the rootContentLayer() from
the RenderLayerCompositor.
* page/scrolling/ScrollingCoordinator.cpp:
(WebCore::ScrollingCoordinator::insetClipLayerForFrameView):
(WebCore::ScrollingCoordinator::rootContentLayerForFrameView):
* page/scrolling/ScrollingCoordinator.h:
(WebCore::ScrollingCoordinator::updateScrollingNode):

ScrollingStateScrolling nodes have two new members now. m_insetClipLayer and
m_topContentInset. We can use m_scrolledContentsLayer for the rootContentsLayer
since previously that member was not used for FrameViews; it was only used for
accelerated overflow:scroll nodes.
* page/scrolling/ScrollingStateScrollingNode.cpp:
(WebCore::ScrollingStateScrollingNode::ScrollingStateScrollingNode):
(WebCore::ScrollingStateScrollingNode::setTopContentInset):
(WebCore::ScrollingStateScrollingNode::setInsetClipLayer):
* page/scrolling/ScrollingStateScrollingNode.h:

Similarly, ScrollingTreeScrollingNode has two new members for m_topContentInset
and m_clipLayer.
* page/scrolling/ScrollingTreeScrollingNode.cpp:
(WebCore::ScrollingTreeScrollingNode::ScrollingTreeScrollingNode):
(WebCore::ScrollingTreeScrollingNode::updateBeforeChildren):
* page/scrolling/ScrollingTreeScrollingNode.h:
(WebCore::ScrollingTreeScrollingNode::topContentInset):
* page/scrolling/mac/ScrollingTreeScrollingNodeMac.h:
* page/scrolling/mac/ScrollingTreeScrollingNodeMac.mm:
(WebCore::ScrollingTreeScrollingNodeMac::updateBeforeChildren):

Compute positions for the two new layers.
(WebCore::ScrollingTreeScrollingNodeMac::setScrollLayerPosition):

Now use the static FrameView functions to compute the positions for these layers.
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::frameViewDidChangeSize):
(WebCore::RenderLayerCompositor::positionForClipLayer):
(WebCore::RenderLayerCompositor::clipLayer):
(WebCore::RenderLayerCompositor::rootContentLayer):
(WebCore::RenderLayerCompositor::updateRootLayerPosition):
(WebCore::RenderLayerCompositor::updateOverflowControlsLayers):
(WebCore::RenderLayerCompositor::ensureRootLayer):
(WebCore::RenderLayerCompositor::updateScrollCoordinatedLayer):
* rendering/RenderLayerCompositor.h:

Source/WebKit2:
Encode and decode the ScrollingStateScrollingNode’s m_topContentInset even though
we don’t use it for anything yet. Since the headerLayer and footerLayer are not
encoded or decoded yet, I did not encode/decode the insetClipLayer yet, which,
like the header and footer layers, would not yet be used.
* Shared/Scrolling/RemoteScrollingCoordinatorTransaction.cpp:
(ArgumentCoder<ScrollingStateScrollingNode>::encode):
(ArgumentCoder<ScrollingStateScrollingNode>::decode):

LayoutTests:
Anchor point!

* compositing/absolute-inside-out-of-view-fixed-expected.txt:
* compositing/animation/filling-animation-overlap-at-end-expected.txt:
* compositing/animation/filling-animation-overlap-expected.txt:
* compositing/animation/layer-for-filling-animation-expected.txt:
* compositing/backing/backface-visibility-in-3dtransformed-expected.txt:
* compositing/backing/no-backing-for-clip-expected.txt:
* compositing/backing/no-backing-for-clip-overhang-expected.txt:
* compositing/backing/no-backing-for-clip-overlap-expected.txt:
* compositing/backing/no-backing-for-perspective-expected.txt:
* compositing/bounds-in-flipped-writing-mode-expected.txt:
* compositing/clip-child-by-non-stacking-ancestor-expected.txt:
* compositing/columns/ancestor-clipped-in-paginated-expected.txt:
* compositing/columns/clipped-in-paginated-expected.txt:
* compositing/columns/composited-columns-expected.txt:
* compositing/columns/composited-columns-vertical-rl-expected.txt:
* compositing/columns/composited-in-paginated-expected.txt:
* compositing/columns/composited-in-paginated-rl-expected.txt:
* compositing/columns/composited-in-paginated-writing-mode-rl-expected.txt:
* compositing/columns/composited-lr-paginated-repaint-expected.txt:
* compositing/columns/composited-nested-columns-expected.txt:
* compositing/columns/composited-rl-paginated-repaint-expected.txt:
* compositing/columns/hittest-composited-in-paginated-expected.txt:
* compositing/columns/rotated-in-paginated-expected.txt:
* compositing/columns/untransformed-composited-in-paginated-expected.txt:
* compositing/contents-opaque/background-clip-expected.txt:
* compositing/contents-opaque/background-color-expected.txt:
* compositing/contents-opaque/body-background-painted-expected.txt:
* compositing/contents-opaque/body-background-skipped-expected.txt:
* compositing/contents-opaque/filter-expected.txt:
* compositing/contents-opaque/hidden-with-visible-child-expected.txt:
* compositing/contents-opaque/hidden-with-visible-text-expected.txt:
* compositing/contents-opaque/layer-opacity-expected.txt:
* compositing/contents-opaque/layer-transform-expected.txt:
* compositing/contents-opaque/overflow-hidden-child-layers-expected.txt:
* compositing/contents-opaque/visibility-hidden-expected.txt:
* compositing/contents-scale/animating-expected.txt:
* compositing/contents-scale/rounded-contents-scale-expected.txt:
* compositing/contents-scale/scaled-ancestor-expected.txt:
* compositing/contents-scale/simple-scale-expected.txt:
* compositing/contents-scale/z-translate-expected.txt:
* compositing/filters/sw-layer-overlaps-hw-shadow-expected.txt:
* compositing/filters/sw-nested-shadow-overlaps-hw-nested-shadow-expected.txt:
* compositing/filters/sw-shadow-overlaps-hw-layer-expected.txt:
* compositing/filters/sw-shadow-overlaps-hw-shadow-expected.txt:
* compositing/geometry/ancestor-overflow-change-expected.txt:
* compositing/geometry/bounds-clipped-composited-child-expected.txt:
* compositing/geometry/bounds-ignores-hidden-composited-descendant-expected.txt:
* compositing/geometry/bounds-ignores-hidden-dynamic-expected.txt:
* compositing/geometry/bounds-ignores-hidden-dynamic-negzindex-expected.txt:
* compositing/geometry/bounds-ignores-hidden-expected.txt:
* compositing/geometry/clip-expected.txt:
* compositing/geometry/clip-inside-expected.txt:
* compositing/geometry/composited-in-columns-expected.txt:
* compositing/geometry/fixed-position-flipped-writing-mode-expected.txt:
* compositing/geometry/flipped-writing-mode-expected.txt:
* compositing/geometry/foreground-layer-expected.txt:
* compositing/geometry/layer-due-to-layer-children-deep-switch-expected.txt:
* compositing/geometry/layer-due-to-layer-children-switch-expected.txt:
* compositing/geometry/limit-layer-bounds-clipping-ancestor-expected.txt:
* compositing/geometry/limit-layer-bounds-fixed-expected.txt:
* compositing/geometry/limit-layer-bounds-fixed-positioned-expected.txt:
* compositing/geometry/limit-layer-bounds-opacity-transition-expected.txt:
* compositing/geometry/limit-layer-bounds-overflow-root-expected.txt:
* compositing/geometry/limit-layer-bounds-positioned-expected.txt:
* compositing/geometry/limit-layer-bounds-positioned-transition-expected.txt:
* compositing/geometry/limit-layer-bounds-transformed-expected.txt:
* compositing/geometry/limit-layer-bounds-transformed-overflow-expected.txt:
* compositing/geometry/negative-text-indent-with-overflow-hidden-layer-expected.txt:
* compositing/geometry/preserve-3d-switching-expected.txt:
* compositing/iframes/become-composited-nested-iframes-expected.txt:
* compositing/iframes/become-overlapped-iframe-expected.txt:
* compositing/iframes/composited-parent-iframe-expected.txt:
* compositing/iframes/connect-compositing-iframe-delayed-expected.txt:
* compositing/iframes/connect-compositing-iframe-expected.txt:
* compositing/iframes/connect-compositing-iframe2-expected.txt:
* compositing/iframes/connect-compositing-iframe3-expected.txt:
* compositing/iframes/enter-compositing-iframe-expected.txt:
* compositing/iframes/iframe-resize-expected.txt:
* compositing/iframes/iframe-size-from-zero-expected.txt:
* compositing/iframes/invisible-nested-iframe-hide-expected.txt:
* compositing/iframes/overlapped-iframe-expected.txt:
* compositing/iframes/overlapped-iframe-iframe-expected.txt:
* compositing/iframes/overlapped-nested-iframes-expected.txt:
* compositing/iframes/page-cache-layer-tree-expected.txt:
* compositing/iframes/scrolling-iframe-expected.txt:
* compositing/images/clip-on-directly-composited-image-expected.txt:
* compositing/layer-creation/animation-overlap-with-children-expected.txt:
* compositing/layer-creation/fixed-position-and-transform-expected.txt:
* compositing/layer-creation/fixed-position-change-out-of-view-in-view-expected.txt:
* compositing/layer-creation/fixed-position-out-of-view-expected.txt:
* compositing/layer-creation/fixed-position-out-of-view-scaled-expected.txt:
* compositing/layer-creation/fixed-position-out-of-view-scaled-scroll-expected.txt:
* compositing/layer-creation/fixed-position-transformed-into-view-expected.txt:
* compositing/layer-creation/fixed-position-under-transform-expected.txt:
* compositing/layer-creation/no-compositing-for-fixed-position-under-transform-expected.txt:
* compositing/layer-creation/no-compositing-for-preserve-3d-expected.txt:
* compositing/layer-creation/overflow-scroll-overlap-expected.txt:
* compositing/layer-creation/overlap-animation-clipping-expected.txt:
* compositing/layer-creation/overlap-animation-expected.txt:
* compositing/layer-creation/overlap-child-layer-expected.txt:
* compositing/layer-creation/overlap-clipping-expected.txt:
* compositing/layer-creation/overlap-transformed-3d-expected.txt:
* compositing/layer-creation/overlap-transformed-and-clipped-expected.txt:
* compositing/layer-creation/overlap-transformed-layer-expected.txt:
* compositing/layer-creation/overlap-transformed-preserved-3d-expected.txt:
* compositing/layer-creation/overlap-transforms-expected.txt:
* compositing/layer-creation/rotate3d-overlap-expected.txt:
* compositing/layer-creation/scroll-partial-update-expected.txt:
* compositing/layer-creation/spanOverlapsCanvas-expected.txt:
* compositing/layer-creation/stacking-context-overlap-expected.txt:
* compositing/layer-creation/stacking-context-overlap-nested-expected.txt:
* compositing/layer-creation/translatez-overlap-expected.txt:
* compositing/masks/mask-layer-size-expected.txt:
* compositing/overflow-trumps-transform-style-expected.txt:
* compositing/overflow/clip-descendents-expected.txt:
* compositing/overflow/content-gains-scrollbars-expected.txt:
* compositing/overflow/content-loses-scrollbars-expected.txt:
* compositing/overflow/overflow-scrollbar-layer-positions-expected.txt:
* compositing/overflow/overflow-scrollbar-layers-expected.txt:
* compositing/overflow/resize-painting-expected.txt:
* compositing/plugins/no-backing-store-expected.txt:
* compositing/plugins/small-to-large-composited-plugin-expected.txt:
* compositing/regions/fixed-in-named-flow-clip-descendant-expected.txt:
* compositing/regions/fixed-in-named-flow-expected.txt:
* compositing/regions/fixed-in-named-flow-from-abs-in-named-flow-expected.txt:
* compositing/regions/fixed-in-named-flow-from-outflow-expected.txt:
* compositing/regions/fixed-in-named-flow-got-transformed-parent-expected.txt:
* compositing/regions/fixed-in-named-flow-lost-transformed-parent-expected.txt:
* compositing/regions/fixed-in-named-flow-overlap-composited-expected.txt:
* compositing/regions/fixed-in-named-flow-transformed-parent-expected.txt:
* compositing/regions/fixed-transformed-in-named-flow-expected.txt:
* compositing/repaint/absolute-painted-into-composited-ancestor-expected.txt:
* compositing/repaint/fixed-background-scroll-expected.txt:
* compositing/repaint/positioned-movement-expected.txt:
* compositing/repaint/repaint-on-layer-grouping-change-expected.txt:
* compositing/repaint/resize-repaint-expected.txt:
* compositing/rtl/rtl-absolute-expected.txt:
* compositing/rtl/rtl-absolute-overflow-expected.txt:
* compositing/rtl/rtl-absolute-overflow-scrolled-expected.txt:
* compositing/rtl/rtl-fixed-expected.txt:
* compositing/rtl/rtl-fixed-overflow-expected.txt:
* compositing/rtl/rtl-fixed-overflow-scrolled-expected.txt:
* compositing/rtl/rtl-relative-expected.txt:
* compositing/tiled-layers-hidpi-expected.txt:
* compositing/visibility/layer-visible-content-expected.txt:
* platform/mac-wk2/compositing/contents-opaque/body-background-painted-expected.txt:
* platform/mac-wk2/compositing/contents-opaque/body-background-skipped-expected.txt:
* platform/mac-wk2/compositing/repaint/fixed-background-scroll-expected.txt:
* platform/mac-wk2/compositing/rtl/rtl-absolute-expected.txt:
* platform/mac-wk2/compositing/rtl/rtl-absolute-overflow-expected.txt:
* platform/mac-wk2/compositing/rtl/rtl-absolute-overflow-scrolled-expected.txt:
* platform/mac-wk2/compositing/rtl/rtl-fixed-expected.txt:
* platform/mac-wk2/compositing/rtl/rtl-fixed-overflow-expected.txt:
* platform/mac-wk2/compositing/tiling/rotated-tiled-clamped-expected.txt:
* platform/mac-wk2/compositing/tiling/rotated-tiled-preserve3d-clamped-expected.txt:
* platform/mac-wk2/compositing/tiling/tile-cache-zoomed-expected.txt:
* platform/mac-wk2/compositing/tiling/tiled-layer-resize-expected.txt:
* platform/mac-wk2/compositing/visible-rect/iframe-no-layers-expected.txt:
* platform/mac-wk2/tiled-drawing/fast-scroll-div-latched-div-expected.txt:
* platform/mac-wk2/tiled-drawing/fast-scroll-div-latched-div-with-handler-expected.txt:
* platform/mac-wk2/tiled-drawing/fast-scroll-div-latched-mainframe-expected.txt:
* platform/mac-wk2/tiled-drawing/fast-scroll-div-latched-mainframe-with-handler-expected.txt:
* platform/mac-wk2/tiled-drawing/fast-scroll-iframe-latched-iframe-expected.txt:
* platform/mac-wk2/tiled-drawing/fast-scroll-iframe-latched-iframe-with-handler-expected.txt:
* platform/mac-wk2/tiled-drawing/fast-scroll-iframe-latched-mainframe-expected.txt:
* platform/mac-wk2/tiled-drawing/fast-scroll-iframe-latched-mainframe-with-handler-expected.txt:
* platform/mac-wk2/tiled-drawing/fast-scroll-select-latched-mainframe-expected.txt:
* platform/mac-wk2/tiled-drawing/fast-scroll-select-latched-mainframe-with-handler-expected.txt:
* platform/mac-wk2/tiled-drawing/fast-scroll-select-latched-select-expected.txt:
* platform/mac-wk2/tiled-drawing/fast-scroll-select-latched-select-with-handler-expected.txt:
* platform/mac-wk2/tiled-drawing/fixed-background/fixed-background-no-image-expected.txt:
* platform/mac-wk2/tiled-drawing/fixed-background/fixed-body-background-body-layer-expected.txt:
* platform/mac-wk2/tiled-drawing/fixed-background/fixed-body-background-expected.txt:
* platform/mac-wk2/tiled-drawing/fixed-background/fixed-body-background-opacity-html-expected.txt:
* platform/mac-wk2/tiled-drawing/fixed-background/fixed-body-background-positioned-expected.txt:
* platform/mac-wk2/tiled-drawing/fixed-background/fixed-body-background-transformed-html-expected.txt:
* platform/mac-wk2/tiled-drawing/fixed-background/fixed-body-background-zoomed-expected.txt:
* platform/mac-wk2/tiled-drawing/fixed-background/fixed-html-background-expected.txt:
* platform/mac-wk2/tiled-drawing/fixed-background/fixed-non-propagated-body-background-expected.txt:
* platform/mac-wk2/tiled-drawing/simple-document-with-margin-tiles-expected.txt:
* platform/mac-wk2/tiled-drawing/sticky/sticky-layers-expected.txt:
* platform/mac-wk2/tiled-drawing/tile-coverage-after-scroll-expected.txt:
* platform/mac-wk2/tiled-drawing/tile-coverage-after-scroll-speculative-expected.txt:
* platform/mac-wk2/tiled-drawing/tile-coverage-scroll-to-bottom-expected.txt:
* platform/mac-wk2/tiled-drawing/tile-coverage-slow-scrolling-expected.txt:
* platform/mac-wk2/tiled-drawing/tile-coverage-speculative-expected.txt:
* platform/mac-wk2/tiled-drawing/tile-size-slow-zoomed-expected.txt:
* platform/mac-wk2/tiled-drawing/tiled-drawing-scroll-position-page-cache-restoration-expected.txt:
* platform/mac-wk2/tiled-drawing/tiled-drawing-zoom-expected.txt:
* platform/mac-wk2/tiled-drawing/tiled-drawing-zoom-scrolled-expected.txt:
* platform/mac-wk2/tiled-drawing/use-tiled-drawing-expected.txt:
* platform/mac/compositing/canvas/accelerated-canvas-compositing-expected.txt:
* platform/mac/compositing/geometry/fixed-position-composited-switch-expected.txt:
* platform/mac/compositing/iframes/invisible-nested-iframe-show-expected.txt:
* platform/mac/compositing/iframes/resizer-expected.txt:
* platform/mac/compositing/images/direct-image-object-fit-expected.txt:
* platform/mac/compositing/layer-creation/overlap-animation-container-expected.txt:
* platform/mac/compositing/overflow/clipping-behaviour-change-is-not-propagated-to-descendants-expected.txt:
* platform/mac/compositing/overflow/clipping-behaviour-change-is-not-propagated-to-descendants2-expected.txt:
* platform/mac/compositing/overflow/composited-scrolling-creates-a-stacking-container-expected.txt:
* platform/mac/compositing/overflow/composited-scrolling-paint-phases-expected.txt:
* platform/mac/compositing/reflections/direct-image-object-fit-reflected-expected.txt:
* platform/mac/compositing/repaint/invalidations-on-composited-layers-expected.txt:
* platform/mac/compositing/tiling/backface-preserve-3d-tiled-expected.txt:
* platform/mac/compositing/tiling/crash-reparent-tiled-layer-expected.txt:
* platform/mac/compositing/tiling/huge-layer-add-remove-child-expected.txt:
* platform/mac/compositing/tiling/huge-layer-img-expected.txt:
* platform/mac/compositing/tiling/huge-layer-with-layer-children-expected.txt:
* platform/mac/compositing/tiling/huge-layer-with-layer-children-resize-expected.txt:
* platform/mac/compositing/tiling/rotated-tiled-clamped-expected.txt:
* platform/mac/compositing/tiling/rotated-tiled-preserve3d-clamped-expected.txt:
* platform/mac/compositing/tiling/tile-cache-zoomed-expected.txt:
* platform/mac/compositing/tiling/tiled-layer-resize-expected.txt:
* platform/mac/compositing/video/video-object-fit-expected.txt:
* platform/mac/compositing/visible-rect/2d-transformed-expected.txt:
* platform/mac/compositing/visible-rect/3d-transform-style-expected.txt:
* platform/mac/compositing/visible-rect/3d-transformed-expected.txt:
* platform/mac/compositing/visible-rect/animated-expected.txt:
* platform/mac/compositing/visible-rect/animated-from-none-expected.txt:
* platform/mac/compositing/visible-rect/clipped-by-viewport-expected.txt:
* platform/mac/compositing/visible-rect/clipped-visible-rect-expected.txt:
* platform/mac/compositing/visible-rect/flipped-preserve-3d-expected.txt:
* platform/mac/compositing/visible-rect/iframe-and-layers-expected.txt:
* platform/mac/compositing/visible-rect/iframe-no-layers-expected.txt:
* platform/mac/compositing/visible-rect/nested-transform-expected.txt:
* platform/mac/compositing/visible-rect/scrolled-expected.txt:

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

5 years agoClear the Selector Query caches on memory pressure
benjamin@webkit.org [Sun, 4 May 2014 19:44:51 +0000 (19:44 +0000)]
Clear the Selector Query caches on memory pressure
https://bugs.webkit.org/show_bug.cgi?id=132545

Reviewed by Andreas Kling.

The Selector Query Cache can use quite a bit of memory if many
complex selectors are compiled. This patch makes sure the cache gets
cleared on memory pressure.

* dom/Document.cpp:
(WebCore::Document::clearSelectorQueryCache):
(WebCore::Document::setCompatibilityMode):
(WebCore::Document::updateBaseURL):
* dom/Document.h:
* dom/SelectorQuery.cpp:
(WebCore::SelectorQueryCache::invalidate): Deleted.
* dom/SelectorQuery.h:
* platform/MemoryPressureHandler.cpp:
(WebCore::MemoryPressureHandler::releaseMemory):

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

5 years agoConvert OwnPtr to std::unique_ptr in CDM
gyuyoung.kim@samsung.com [Sun, 4 May 2014 09:04:28 +0000 (09:04 +0000)]
Convert OwnPtr to std::unique_ptr in CDM
https://bugs.webkit.org/show_bug.cgi?id=132467

Reviewed by Andreas Kling.

Use std::unique_ptr in CDM class.

No new tests, no behavior change.

* Modules/encryptedmedia/CDM.cpp:
(WebCore::CDM::create):
(WebCore::CDM::CDM):
* Modules/encryptedmedia/CDM.h:
* Modules/encryptedmedia/CDMPrivateMediaPlayer.h:
(WebCore::CDMPrivateMediaPlayer::CDMPrivateMediaPlayer):
(WebCore::CDMPrivateMediaPlayer::create):
* Modules/encryptedmedia/MediaKeys.cpp:
(WebCore::MediaKeys::create):
(WebCore::MediaKeys::MediaKeys):
* Modules/encryptedmedia/MediaKeys.h:
* WebCore.exp.in:

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

5 years agoUnreviewed, rolling out r168232.
commit-queue@webkit.org [Sun, 4 May 2014 06:26:39 +0000 (06:26 +0000)]
Unreviewed, rolling out r168232.
https://bugs.webkit.org/show_bug.cgi?id=132543

broke ~15 tests on WK2 debug (Requested by kling on #webkit).

Reverted changeset:

"Shortcircuit shouldUseCredentialStorage callback"
https://bugs.webkit.org/show_bug.cgi?id=132308
http://trac.webkit.org/changeset/168232

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

5 years agoRenderSVGResourcePattern should deal in RenderElement&.
akling@apple.com [Sun, 4 May 2014 03:43:19 +0000 (03:43 +0000)]
RenderSVGResourcePattern should deal in RenderElement&.
<https://webkit.org/b/132536>

Tweak buildPattern() and buildTileImageTransform() to take RenderElement&
instead of RenderObject* since we know that these functions will always
be called with non-null RenderElement subclasses.

Reviewed by Sam Weinig.

* rendering/svg/RenderSVGResourceContainer.cpp:
(WebCore::RenderSVGResourceContainer::shouldTransformOnTextPainting):
* rendering/svg/RenderSVGResourceContainer.h:
* rendering/svg/RenderSVGResourceGradient.cpp:
(WebCore::RenderSVGResourceGradient::applyResource):
* rendering/svg/RenderSVGResourcePattern.cpp:
(WebCore::RenderSVGResourcePattern::buildPattern):
(WebCore::RenderSVGResourcePattern::applyResource):
(WebCore::RenderSVGResourcePattern::buildTileImageTransform):
* rendering/svg/RenderSVGResourcePattern.h:

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

5 years agoCSS JIT: optimize direct / indirect adjacent's traversal backtracking
benjamin@webkit.org [Sun, 4 May 2014 03:25:56 +0000 (03:25 +0000)]
CSS JIT: optimize direct / indirect adjacent's traversal backtracking
https://bugs.webkit.org/show_bug.cgi?id=132319

Patch by Yusuke Suzuki <utatane.tea@gmail.com> on 2014-05-03
Reviewed by Benjamin Poulain.

Source/WebCore:
Since adjacent backtracking stack reference is pre-allocated
in prologue in http://trac.webkit.org/changeset/166834,
clearing stack phase is not needed. So we can drop
JumpToClearAdjacentTail from backtracking action and simplify
backtracking handling.
And optimize direct / indirect adjacent's traversal backtracking by
using appropriate backtracking height.

When solving adjacent traversal backtracking action,
1) When there's no descendant relation on the right, traversal
failure becomes global failure.
2) When `tagNameMatchedBacktrackingStartHeightFromDescendant` ==
`heightFromDescendant` + 1, the descendant backtracking starts with
the parent of the current element. So we can use the current element
and the backtracking action is JumpToDescendantTreeWalkerEntryPoint.
3) Otherwise, currently we take the conservative approach,
JumpToDescendantTail.

NOTE:
And if `hasDescendantRelationOnTheRight` is true and there's no child
fragment on the right, the backtracking element register is not
effective. So we should ensure that fragment doesn't use the
backtracking element register. Such a fragment fulfills the following
conditions. 1. tagNameMatchedBacktrackingStartHeightFromDescendant is
always 1 (tagNames.size(), that contains only descendant fragment) 2.
heightFromDescendant is always 0 (-- See
computeBacktrackingHeightFromDescendant implementation) Therefore such
a fragment's action always becomes
JumpToDescendantTreeWalkerEntryPoint. So we can ensure that the
backtracking element register is not used.

Test: fast/selectors/backtracking-adjacent.html

* cssjit/SelectorCompiler.cpp:
(WebCore::SelectorCompiler::solveDescendantBacktrackingActionForChild):
(WebCore::SelectorCompiler::solveAdjacentTraversalBacktrackingAction):
(WebCore::SelectorCompiler::solveBacktrackingAction):
(WebCore::SelectorCompiler::SelectorCodeGenerator::computeBacktrackingInformation):
(WebCore::SelectorCompiler::SelectorCodeGenerator::linkFailures):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateAdjacentBacktrackingTail):
(WebCore::SelectorCompiler::isAfterChildRelation): Deleted.

LayoutTests:
* fast/selectors/backtracking-adjacent-expected.txt: Added.
* fast/selectors/backtracking-adjacent.html: Added.

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

5 years agoClear the JSString cache when under memory pressure.
akling@apple.com [Sun, 4 May 2014 03:22:04 +0000 (03:22 +0000)]
Clear the JSString cache when under memory pressure.
<https://webkit.org/b/132539>

The WeakGCMap used for fast mapping from StringImpl* to JSString*
can actually get pretty big, and if we find ourselves under memory
pressure, it's entirely inessential.

1.1 MB progression on Membuster3.

Reviewed by Sam Weinig.

* platform/MemoryPressureHandler.cpp:
(WebCore::MemoryPressureHandler::releaseMemory):

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

5 years ago[iOS] REGRESSION (WebKit2): Page isn't clipped properly during back/forward swipe
timothy_horton@apple.com [Sun, 4 May 2014 01:55:18 +0000 (01:55 +0000)]
[iOS] REGRESSION (WebKit2): Page isn't clipped properly during back/forward swipe
https://bugs.webkit.org/show_bug.cgi?id=132538
<rdar://problem/16266027>

Reviewed by Simon Fraser.

* UIProcess/ios/ViewGestureControllerIOS.mm:
(WebKit::ViewGestureController::beginSwipeGesture):
(WebKit::ViewGestureController::endSwipeGesture):
* UIProcess/mac/ViewGestureController.h:
Add a clipping layer above the live swipe layer, which explicitly clips to bounds.

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

5 years ago[iOS][WK2] Support disabling speculative tiling
benjamin@webkit.org [Sun, 4 May 2014 01:48:37 +0000 (01:48 +0000)]
[iOS][WK2] Support disabling speculative tiling
https://bugs.webkit.org/show_bug.cgi?id=132512

Reviewed by Tim Horton.

Move ScrollView::setScrollVelocity() and ScrollView::computeCoverageRect() to FrameView.
When speculative tiling is disabled, return an unmodified exposed rect.

Time/velocity adjusments are completely unnecessary at the moment since speculative tiling
is enabled as soon as the view scrolls.

* WebCore.exp.in:
* page/FrameView.cpp:
(WebCore::FrameView::setScrollVelocity):
(WebCore::FrameView::computeCoverageRect):
* page/FrameView.h:
* platform/ScrollView.h:
* platform/ios/ScrollViewIOS.mm:
(WebCore::ScrollView::setScrollVelocity): Deleted.
(WebCore::ScrollView::computeCoverageRect): Deleted.

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

5 years agoShortcircuit shouldUseCredentialStorage callback
psolanki@apple.com [Sun, 4 May 2014 00:17:11 +0000 (00:17 +0000)]
Shortcircuit shouldUseCredentialStorage callback
https://bugs.webkit.org/show_bug.cgi?id=132308
<rdar://problem/16806708>

Reviewed by Alexey Proskuryakov.

If we are going to return true from the shouldUseCredentialStorage callback then we don't
really need to have CFNetwork/Foundation call us. We can just disable the callback and
CFNetwork will assume true. Add a separate subclass that implements this callback when we
need to return false. We can also eliminate the corresponding async callbacks. This avoids
pingponging between dispatch queue and main thread in the common case.

No new tests because no change in functionality.

Source/WebCore:
* WebCore.exp.in:
* platform/network/ResourceHandle.cpp:
* platform/network/ResourceHandle.h:
* platform/network/ResourceHandleClient.cpp:
* platform/network/ResourceHandleClient.h:
* platform/network/cf/ResourceHandleCFNet.cpp:
(WebCore::ResourceHandle::createCFURLConnection):
(WebCore::ResourceHandle::shouldUseCredentialStorage):
* platform/network/cf/ResourceHandleCFURLConnectionDelegate.h:
* platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.cpp:
(WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::shouldUseCredentialStorage):
* platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.h:
* platform/network/cf/SynchronousResourceHandleCFURLConnectionDelegate.cpp:
* platform/network/cf/SynchronousResourceHandleCFURLConnectionDelegate.h:
* platform/network/mac/ResourceHandleMac.mm:
(WebCore::ResourceHandle::start):
(WebCore::ResourceHandle::makeDelegate):
(WebCore::ResourceHandle::delegate):
(WebCore::ResourceHandle::platformLoadResourceSynchronously):
(WebCore::ResourceHandle::shouldUseCredentialStorage):
* platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.h:
* platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm:
(-[WebCoreResourceHandleWithCredentialStorageAsOperationQueueDelegate connectionShouldUseCredentialStorage:]):
* platform/network/soup/ResourceHandleSoup.cpp:

Source/WebKit2:
* NetworkProcess/NetworkResourceLoader.cpp: Remove shouldUseCredentialStorageAsync() callbacks.
* NetworkProcess/NetworkResourceLoader.h:

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

5 years agoReduce calls to CFURLCacheCopySharedURLCache
psolanki@apple.com [Sun, 4 May 2014 00:13:11 +0000 (00:13 +0000)]
Reduce calls to CFURLCacheCopySharedURLCache
https://bugs.webkit.org/show_bug.cgi?id=132464
<rdar://problem/16806694>

Reviewed by Alexey Proskuryakov.

CFURLCacheCopySharedURLCache grabs a mutex and can sometimes block. Avoid that by stashing
the cache reference in a static.

* NetworkProcess/NetworkResourceLoader.h: Coalesce ifdef'd code.
* NetworkProcess/mac/NetworkResourceLoaderMac.mm:
(WebKit::NetworkResourceLoader::tryGetShareableHandleFromSharedBuffer):
(WebKit::NetworkResourceLoader::willCacheResponseAsync): Use more correct ifdef for
Foundation based callback.

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

5 years agoInvalidate scrollbars when custom scrollbar style changes dynamically.
akling@apple.com [Sat, 3 May 2014 22:16:53 +0000 (22:16 +0000)]
Invalidate scrollbars when custom scrollbar style changes dynamically.
<https://webkit.org/b/132529>

Source/WebCore:
Add a ScrollView::styleDidChange() and call that from RenderView::styleDidChange()
so that the scrollbars are sure to get repainted with potentially different style.

Reviewed by Antti Koivisto.

Test: fast/css/scrollbar-dynamic-style-change.html

* platform/ScrollView.cpp:
(WebCore::ScrollView::styleDidChange):
* platform/ScrollView.h:
* rendering/RenderView.cpp:
(WebCore::RenderView::styleDidChange):

LayoutTests:
Reviewed by Antti Koivisto.

* fast/css/scrollbar-dynamic-style-change-expected.html: Added.
* fast/css/scrollbar-dynamic-style-change.html: Added.

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

5 years ago[Cocoa WebKit2] Add basic _WKWebsiteDataStore implementation
weinig@apple.com [Sat, 3 May 2014 20:46:50 +0000 (20:46 +0000)]
[Cocoa WebKit2] Add basic _WKWebsiteDataStore implementation
https://bugs.webkit.org/show_bug.cgi?id=132526

Reviewed by Anders Carlsson.

- Renames WKSession to _WKWebsiteDataStore to better reflect its intended use (renaming
  the implementation object will come later).
- Makes _WKWebsiteDataStore work as a wrapped Objective-C object.
- Adds the ability to set a _WKWebsiteDataStore on the WKWebViewConfiguration.

* Shared/Cocoa/APIObject.mm:
(API::Object::newObject):
* UIProcess/API/Cocoa/WKSession.h:
* UIProcess/API/Cocoa/WKSession.mm:
(-[WKSession dealloc]): Deleted.
(-[WKSession ephemeral]): Deleted.
(-[WKSession API::]): Deleted.
* UIProcess/API/Cocoa/WKSessionInternal.h:
(WebKit::wrapper): Deleted.
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView initWithFrame:configuration:]):
* UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
(-[WKWebViewConfiguration copyWithZone:]):
(-[WKWebViewConfiguration _websiteDataStore]):
(-[WKWebViewConfiguration _setWebsiteDataStore:]):
* UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
* UIProcess/API/Cocoa/_WKWebsiteDataStore.h: Copied from Source/WebKit2/UIProcess/API/Cocoa/WKSession.h.
* UIProcess/API/Cocoa/_WKWebsiteDataStore.mm: Copied from Source/WebKit2/UIProcess/API/Cocoa/WKSession.mm.
(+[_WKWebsiteDataStore nonPersistentDataStore]):
(-[_WKWebsiteDataStore isNonPersistentDataStore]):
(-[WKSession ephemeral]): Deleted.
* UIProcess/API/Cocoa/_WKWebsiteDataStoreInternal.h: Copied from Source/WebKit2/UIProcess/API/Cocoa/WKSessionInternal.h.
* WebKit2.xcodeproj/project.pbxproj:

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

5 years ago[UI-side compositing] Assertion in PlatformCAFilters::setFiltersOnLayer with animated...
simon.fraser@apple.com [Sat, 3 May 2014 20:32:31 +0000 (20:32 +0000)]
[UI-side compositing] Assertion in PlatformCAFilters::setFiltersOnLayer with animated reference filter
https://bugs.webkit.org/show_bug.cgi?id=132528
<rdar://problem/16671660>

Reviewed by Tim Horton.

Source/WebKit2:
Allow PASSTHROUGH filters to be encoded and sent to the UI process; they can be set
on layers as the result of a filter animation using a reference filter, and just get
ignored anyway, but encoding them maintains consistency of the filters list.

* Shared/WebCoreArgumentCoders.cpp:
(IPC::ArgumentCoder<FilterOperation>::encode): Assert during encoding if
we try to encode a NONE or REFERENCE filter (to match the decoding assertions).
(IPC::decodeFilterOperation): Allow decoding of PASSTHROUGH filters. Have
trying to decode a NONE or REFERENCE filter mark the message as invalid.
(IPC::ArgumentCoder<IDBKeyData>::decode): Mark the message invalid when receiving
unexpected key types.
* Shared/mac/RemoteLayerTreeTransaction.mm:
(WebKit::RemoteLayerTreeTextStream::operator<<): Have the logging not crash if
a filter is null (should never happen).

LayoutTests:
Make the animation duration a little longer to cause bug 132528 to reproduce more
reliably. The test does notifyDone() from an animation start event, so this doesn't
increase test duration.

* css3/filters/crash-filter-animation-invalid-url.html:

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

5 years agoVery fuzzy layers under non-decompasable matrices
simon.fraser@apple.com [Sat, 3 May 2014 20:32:24 +0000 (20:32 +0000)]
Very fuzzy layers under non-decompasable matrices
https://bugs.webkit.org/show_bug.cgi?id=132516
<rdar://problem/16717478>

Reviewed by Sam Weinig.

Source/WebCore:
r155977 added code to modify layer contentsScale based on a root-relative
scale, so that scaled-up layers remained sharp. It does this by decomposing
an accumulated matrix, but failed to test whether the decomposition
succeeded. This would result in contentsScale of 0, which is clamped to 0.1,
resulting in very fuzzy layers.

Fix by testing for success of decomposition.

Test: compositing/contents-scale/non-decomposable-matrix.html

* platform/graphics/ca/GraphicsLayerCA.cpp:
(WebCore::maxScaleFromTransform):
* platform/graphics/transforms/TransformationMatrix.cpp:
(WebCore::TransformationMatrix::decompose2): Return early for identity matrices,
with fix for m11 and m22.
(WebCore::TransformationMatrix::decompose4): Return early for identity matrices.
* platform/graphics/transforms/TransformationMatrix.h:
Make Decomposed2Type and Decomposed4Type into C++ structs.
(WebCore::TransformationMatrix::Decomposed2Type::operator==): Added to make it easier
to write code that asserts that decomposition is correct.
(WebCore::TransformationMatrix::Decomposed4Type::operator==): Ditto.

LayoutTests:
Compare scaling under non-decomposable and decomposable matrices.

* compositing/contents-scale/non-decomposable-matrix-expected.html: Added.
* compositing/contents-scale/non-decomposable-matrix.html: Added.

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

5 years agoFix crash in WebKit client app when zooming
simon.fraser@apple.com [Sat, 3 May 2014 19:13:56 +0000 (19:13 +0000)]
Fix crash in WebKit client app when zooming
https://bugs.webkit.org/show_bug.cgi?id=132475
<rdar://problem/16703405>

Reviewed by Tim Horton.

It's possible for a WebTiledBackingLayer CALayer to remain in the CALayer
hierarchy after we've called -invalidate on it, which clears the _tileController.
Project the getters against null derefs to handle this.

* platform/graphics/ca/mac/WebTiledBackingLayer.mm:
(-[WebTiledBackingLayer isOpaque]):
(-[WebTiledBackingLayer acceleratesDrawing]):
(-[WebTiledBackingLayer contentsScale]):

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

5 years ago[CMake] Define SHOULD_INSTALL_JS_SHELL before including ports Options files.
rakuco@webkit.org [Sat, 3 May 2014 18:52:45 +0000 (18:52 +0000)]
[CMake] Define SHOULD_INSTALL_JS_SHELL before including ports Options files.
https://bugs.webkit.org/show_bug.cgi?id=132525

Reviewed by Martin Robinson.

* CMakeLists.txt: If OPTION() is called after Options${PORT}.cmake is included, it will
override whatever value a port may have set for it. The GTK+ port, for example, tries to set
it to SHOULD_INSTALL_JS_SHELL to ON by default, even though it did not happen before.

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

5 years agoSubpixel rendering: Add hidpi fieldset/legend test case to check fieldset's cliprect...
zalan@apple.com [Sat, 3 May 2014 17:36:45 +0000 (17:36 +0000)]
Subpixel rendering: Add hidpi fieldset/legend test case to check fieldset's cliprect when legend text is present.
https://bugs.webkit.org/show_bug.cgi?id=132524

Reviewed by Simon Fraser.

This is the hidpi test for r168221. (Fieldset legend has a horizontal line
through, when the fieldset is painted on odd device pixel position.)

* fast/forms/hidpi-fieldset-on-subpixel-position-when-legend-is-present-expected.html: Added.
* fast/forms/hidpi-fieldset-on-subpixel-position-when-legend-is-present.html: Added.

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

5 years agoUnreviewed. Fix GTK+ build after r168209.
carlosgc@webkit.org [Sat, 3 May 2014 10:37:13 +0000 (10:37 +0000)]
Unreviewed. Fix GTK+ build after r168209.

* platform/leveldb/LevelDBDatabase.cpp:
(WebCore::LevelDBDatabase::write):

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

5 years agoSubpixel rendering: Fieldset legend has a horizontal line through, when the fieldset...
zalan@apple.com [Sat, 3 May 2014 07:47:38 +0000 (07:47 +0000)]
Subpixel rendering: Fieldset legend has a horizontal line through, when the fieldset is painted on odd device pixel position.
https://bugs.webkit.org/show_bug.cgi?id=132521
<rdar://problem/16803305>

Reviewed by Simon Fraser.

Use device pixel snapping when the fieldset's border gets clipped out for the legend's text. It ensures that
the device pixel snapped border gets properly clipped out.

Existing fieldset tests cover it.

* rendering/RenderFieldset.cpp:
(WebCore::RenderFieldset::paintBoxDecorations):

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

5 years ago[Mac] Unreviewed gardening.
zalan@apple.com [Sat, 3 May 2014 04:09:37 +0000 (04:09 +0000)]
[Mac] Unreviewed gardening.

Cliprect does not cover textarea properly on certain subpixel positions.

* platform/mac/TestExpectations:

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

5 years agoCodeCleanup: Remove *MaintainsPixelAlignment from GraphicsLayer*.
zalan@apple.com [Sat, 3 May 2014 01:16:00 +0000 (01:16 +0000)]
CodeCleanup: Remove *MaintainsPixelAlignment from GraphicsLayer*.
https://bugs.webkit.org/show_bug.cgi?id=132501

Reviewed by Simon Fraser.

* WebCore.exp.in:
* platform/graphics/GraphicsLayer.cpp:
(WebCore::GraphicsLayer::GraphicsLayer):
* platform/graphics/GraphicsLayer.h:
(WebCore::GraphicsLayer::setMaintainsPixelAlignment): Deleted.
(WebCore::GraphicsLayer::maintainsPixelAlignment): Deleted.
(WebCore::GraphicsLayer::pixelAlignmentOffset): Deleted.
* platform/graphics/ca/GraphicsLayerCA.cpp:
(WebCore::GraphicsLayerCA::updateGeometry):
(WebCore::GraphicsLayerCA::computePixelAlignment):
(WebCore::GraphicsLayerCA::setMaintainsPixelAlignment): Deleted.
* platform/graphics/ca/GraphicsLayerCA.h:
* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::createGraphicsLayer):
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::keepLayersPixelAligned): Deleted.
* rendering/RenderLayerCompositor.h:

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

5 years ago<https://webkit.org/b/132505> Make it possible to tell copy-webkitlibraries-to-produc...
mrowe@apple.com [Sat, 3 May 2014 01:15:47 +0000 (01:15 +0000)]
<https://webkit.org/b/132505> Make it possible to tell copy-webkitlibraries-to-product-directory which OS X version to copy for

Reviewed by Dan Bernstein.

* Scripts/copy-webkitlibraries-to-product-directory: Add an --osx-version argument and use the passed value
when determining which LLVM archive to extract.

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

5 years ago[iOS WK2] Tiled layer content missing on pages with animated tiled layers
simon.fraser@apple.com [Sat, 3 May 2014 01:15:07 +0000 (01:15 +0000)]
[iOS WK2] Tiled layer content missing on pages with animated tiled layers
https://bugs.webkit.org/show_bug.cgi?id=132507
<rdar://problem/16765740>

Reviewed by Tim Horton.

Updating the tiling area of content TileControllers while
CSS animations are running depends on GraphicsLayerUpdater
triggering repeated layer flushes. With UI-side compositing, those
flushes were happening, but nothing triggered RemoteLayerTreeDrawingArea
to flush changes to the UI process.

Fix by having RenderLayerCompositor schedule a flush, rather
than just doing a flush, in response to GraphicsLayerUpdater.

Also change the name of the GraphicsLayerUpdaterClient function
to indicate that it suggests that a flush is required soon, rather than
that the flushing has to be synchronous.

* platform/graphics/GraphicsLayerUpdater.cpp:
(WebCore::GraphicsLayerUpdater::displayRefreshFired):
* platform/graphics/GraphicsLayerUpdater.h:
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::flushLayersSoon):
(WebCore::RenderLayerCompositor::flushLayers): Deleted.
* rendering/RenderLayerCompositor.h:

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

5 years agoUse displayNameForTrack instead of textTrack->label() for captions.
commit-queue@webkit.org [Sat, 3 May 2014 01:13:40 +0000 (01:13 +0000)]
Use displayNameForTrack instead of textTrack->label() for captions.
https://bugs.webkit.org/show_bug.cgi?id=131311

Patch by Jeremy Jones <jeremyj@apple.com> on 2014-05-02
Reviewed by Darin Adler.

Use the same mechanism as the desktop to build the captions list so it has the correct
names in the correct order including none and automatic.

* platform/ios/WebVideoFullscreenModelMediaElement.h:
* platform/ios/WebVideoFullscreenModelMediaElement.mm:
(WebVideoFullscreenModelMediaElement::setMediaElement):
move legible track code into updateLegibleOptions()

(WebVideoFullscreenModelMediaElement::handleEvent):
updateLegibleOptions on addTrack and removeTrack

(WebVideoFullscreenModelMediaElement::selectLegibleMediaOption):
select the corresponding TextTrack on HTMLMediaElement.

(WebVideoFullscreenModelMediaElement::updateLegibleOptions):
use the same mechanism as desktop to build the captions menu.

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

5 years agoCSS-based Media Controls Show Different times content longer than 1 hour.
commit-queue@webkit.org [Sat, 3 May 2014 01:12:27 +0000 (01:12 +0000)]
CSS-based Media Controls Show Different times content longer than 1 hour.
https://bugs.webkit.org/show_bug.cgi?id=132443

Patch by Jeremy Jones <jeremyj@apple.com> on 2014-05-02
Reviewed by Jer Noble.

* Modules/mediacontrols/mediaControlsApple.css:
(audio::-webkit-media-controls-timeline-container .hour-long-time):
This class has a wider width for longer duration times.

* Modules/mediacontrols/mediaControlsApple.js:
(Controller.prototype.updateDuration):
Apply .hour-long-time class as appropriate.

(Controller.prototype.formatTime):
More robust formatting to handle hours.

* Modules/mediacontrols/mediaControlsiOS.css:
(audio::-webkit-media-controls-timeline-container .hour-long-time):
This class has a wider width for longer duration times.

* Modules/mediacontrols/mediaControlsiOS.js:
(ControllerIOS.prototype.formatTime):
More robust formatting to handle hours.

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

5 years ago[MSE][Mac] AVAssetTrack returns incorrect track size
jer.noble@apple.com [Sat, 3 May 2014 01:09:49 +0000 (01:09 +0000)]
[MSE][Mac] AVAssetTrack returns incorrect track size
https://bugs.webkit.org/show_bug.cgi?id=132469

Reviewed by Brent Fulgham.

* platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.h:
* platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:
(WebCore::SourceBufferPrivateAVFObjC::didParseStreamDataAsAsset):  Remove the sizeChanged() notification.
(WebCore::SourceBufferPrivateAVFObjC::processCodedFrame): Cache the last parsed video frame size.
(WebCore::SourceBufferPrivateAVFObjC::naturalSize): Return the cached value.

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

5 years ago[Cocoa] Remove unused WKErrorRecoveryAttempting
mitz@apple.com [Sat, 3 May 2014 00:19:20 +0000 (00:19 +0000)]
[Cocoa] Remove unused WKErrorRecoveryAttempting
https://bugs.webkit.org/show_bug.cgi?id=132503

Reviewed by Anders Carlsson.

* UIProcess/API/Cocoa/WKBrowsingContextController.mm:
(didFailProvisionalLoadWithErrorForFrame):
(didFailLoadWithErrorForFrame):
(createErrorWithRecoveryAttempter): Deleted.
(-[WKBrowsingContextController attemptRecoveryFromError:]): Deleted.
* UIProcess/API/Cocoa/WKErrorRecoveryAttempting.m: Removed.
* UIProcess/API/Cocoa/_WKFormDelegate.h:
* WebKit2.xcodeproj/project.pbxproj:

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

5 years agoSubpixel rendering[iOS]: Use pixelSnappedRoundedRectForPainting() to clip text area...
zalan@apple.com [Sat, 3 May 2014 00:02:23 +0000 (00:02 +0000)]
Subpixel rendering[iOS]: Use pixelSnappedRoundedRectForPainting() to clip text area rect.
https://bugs.webkit.org/show_bug.cgi?id=132499
<rdar://problem/16631050>

Reviewed by Simon Fraser.

Snap to device pixels properly instead of relying on float arithmetics while converting from RoundedRect
to FloatRoundedRect. This is the second, cleanup part of the text-area decoration is off-by-one painting issue.

Currently not testable.

* rendering/RenderThemeIOS.mm:
(WebCore::RenderThemeIOS::paintTextFieldDecorations):

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

5 years agoREGRESSION (WebKit2) Need to support reanalyze button for Chinese Traditional.
enrica@apple.com [Sat, 3 May 2014 00:00:58 +0000 (00:00 +0000)]
REGRESSION (WebKit2) Need to support reanalyze button for Chinese Traditional.
https://bugs.webkit.org/show_bug.cgi?id=132504
<rdar://problem/16778862>

Reviewed by Benjamin Poulain.

For traditional Chinese we support reanalyzing of the text to perform
transformations on the text based on the selected language and keyboard.
This is done by pressing the Reanalyze button on the system
menu. This patch adds the necessary code to canPerformAction to enable
the button when appropriate as well as the implementation of the action
itself.

* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _reanalyze:]):
(-[WKContentView canPerformAction:withSender:]):

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

5 years agoRemove HistogramSupport.
akling@apple.com [Fri, 2 May 2014 23:57:54 +0000 (23:57 +0000)]
Remove HistogramSupport.
<https://webkit.org/b/132354>

Prune some leftover Chromium gunk that no other ports ever used.

Reviewed by Simon Fraser.

* CMakeLists.txt:
* Modules/indexeddb/IDBDatabase.cpp:
(WebCore::IDBDatabase::createObjectStore):
(WebCore::IDBDatabase::deleteObjectStore):
(WebCore::IDBDatabase::transaction):
* Modules/indexeddb/IDBFactory.cpp:
(WebCore::IDBFactory::openInternal):
(WebCore::IDBFactory::deleteDatabase):
* Modules/indexeddb/IDBHistograms.h: Removed.
* Modules/indexeddb/leveldb/IDBBackingStoreLevelDB.cpp:
(WebCore::IDBBackingStoreLevelDB::open):
(WebCore::IDBBackingStoreLevelDB::openInMemory):
(WebCore::recordInternalError): Deleted.
* Modules/indexeddb/leveldb/IDBBackingStoreTransactionLevelDB.cpp:
* WebCore.vcxproj/WebCore.vcxproj:
* WebCore.vcxproj/WebCore.vcxproj.filters:
* WebCore.xcodeproj/project.pbxproj:
* css/CSSParser.cpp:
(WebCore::cssPropertyID):
* dom/Document.cpp:
(WebCore::Document::~Document):
(WebCore::histogramMutationEventUsage): Deleted.
* dom/ShadowRoot.cpp:
* fileapi/Blob.cpp:
* fileapi/WebKitBlobBuilder.cpp:
(WebCore::BlobBuilder::append):
* history/PageCache.cpp:
(WebCore::logCanCacheFrameDecision):
(WebCore::logCanCachePageDecision):
* platform/HistogramSupport.cpp: Removed.
* platform/HistogramSupport.h: Removed.
* platform/leveldb/LevelDBDatabase.cpp:
(WebCore::LevelDBDatabase::open):
(WebCore::histogramLevelDBError): Deleted.
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::updateNeedsCompositedScrolling):
* xml/XMLHttpRequest.cpp:
(WebCore::XMLHttpRequest::send):

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

5 years agoStop flipping the ImageControlsButton
beidson@apple.com [Fri, 2 May 2014 23:38:30 +0000 (23:38 +0000)]
Stop flipping the ImageControlsButton
<rdar://problem/16773238> and https://bugs.webkit.org/show_bug.cgi?id=132502

Reviewed by Tim Horton.

* rendering/RenderThemeMac.mm:
(WebCore::RenderThemeMac::paintImageControlsButton):

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

5 years agoREGRESSION (WebKit2) Need to support transliterate chinese button (简⇄繁) for Tradition...
enrica@apple.com [Fri, 2 May 2014 23:36:23 +0000 (23:36 +0000)]
REGRESSION (WebKit2) Need to support transliterate chinese button (简⇄繁) for Traditional Chinese.
https://bugs.webkit.org/show_bug.cgi?id=132500
<rdar://problem/16778870>

Reviewed by Benjamin Poulain.

For traditional Chinese we support the transliterate to simplified Chinese.
This is done by pressing the 简⇄繁 button on the system
menu. This patch adds the necessary code to canPerformAction to enable
the button when appropriate as well as the implementation of the action
itself.

* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _transliterateChinese:]):
(-[WKContentView canPerformAction:withSender:]):

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

5 years agoFullscreen UI does not appear after WebProcess has crashed
commit-queue@webkit.org [Fri, 2 May 2014 23:11:14 +0000 (23:11 +0000)]
Fullscreen UI does not appear after WebProcess has crashed
https://bugs.webkit.org/show_bug.cgi?id=132442

Patch by Jeremy Jones <jeremyj@apple.com> on 2014-05-02
Reviewed by Darin Adler.

Source/WebCore:
Clean up immediately when there is a WebProcess crash.

* WebCore.exp.in:
* platform/ios/WebVideoFullscreenInterfaceAVKit.h:
* platform/ios/WebVideoFullscreenInterfaceAVKit.mm:
(WebVideoFullscreenInterfaceAVKit::invalidate):
Clean-up resources immediately.

Source/WebKit2:
Cleanup WebVideoFullscreenManagerProxy after a WebProcess crash.

* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::reattachToWebProcess):
recreate WebVideoFullscreenManagerProxy after a WebProcess crash.

(WebKit::WebPageProxy::resetState):
invalidate and release WebVideoFullscreenManagerProxy on crash.

* UIProcess/ios/WebVideoFullscreenManagerProxy.h:
* UIProcess/ios/WebVideoFullscreenManagerProxy.mm:
(WebKit::WebVideoFullscreenManagerProxy::~WebVideoFullscreenManagerProxy):
don't assume m_page is valid.

(WebKit::WebVideoFullscreenManagerProxy::invalidate):
do cleanup invalidation in reponse to a WebProcess crash.

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

5 years agoUnreviewed, rolling out r168192.
commit-queue@webkit.org [Fri, 2 May 2014 22:56:56 +0000 (22:56 +0000)]
Unreviewed, rolling out r168192.
https://bugs.webkit.org/show_bug.cgi?id=132498

Was not the correct fix (blurry!) (Requested by bfulgham_ on
#webkit).

Reverted changeset:

"[iOS] deviceScaleFactor is being double-applied when
rendering captions in full screen mode"
https://bugs.webkit.org/show_bug.cgi?id=132481
http://trac.webkit.org/changeset/168192

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

5 years ago[iOS][WK2] More animation madness for when the extendedBackground is modified in...
benjamin@webkit.org [Fri, 2 May 2014 22:54:27 +0000 (22:54 +0000)]
[iOS][WK2] More animation madness for when the extendedBackground is modified in an animation block
https://bugs.webkit.org/show_bug.cgi?id=132497

Patch by Benjamin Poulain <bpoulain@apple.com> on 2014-05-02
Reviewed by Beth Dakin.

* UIProcess/API/Cocoa/WKWebView.mm:
(updateTopAndBottomExtendedBackgroundExclusionIfNecessary):
Do not early return when _extendedBackgroundExclusionInsets.left is empty. That way, if executed in an animation block,
the top of bottom view will animate from their current size to an empty width.

When creating the layer, set up their height without animation. Otherwise it is possible to see the height animating
while the left inset is animating.

(-[WKWebView _setExtendedBackgroundExclusionInsets:]):
When replacing the scrollview, make sure the frame and color are not animated. Otherwise the transition between
scrollView and _mainExtendedBackgroundView can be visible if _setExtendedBackgroundExclusionInsets: is invoked
in an animation block.

(-[WKWebView _endAnimatedResize]):
Nuke the top and bottom insets when possible. [WKWebView _endAnimatedResize] is unfrequent, so it is a good opportunity
to free the memory.

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

5 years agoAdd Jeremy Jones as a committer. https://bugs.webkit.org/show_bug.cgi?id=132492
jeremyj-wk@apple.com [Fri, 2 May 2014 22:47:38 +0000 (22:47 +0000)]
Add Jeremy Jones as a committer. https://bugs.webkit.org/show_bug.cgi?id=132492

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

5 years agoRemove Blob contentDisposition handling
ap@apple.com [Fri, 2 May 2014 22:41:24 +0000 (22:41 +0000)]
Remove Blob contentDisposition handling
https://bugs.webkit.org/show_bug.cgi?id=132490

Reviewed by Sam Weinig.

Source/WebCore:
Dead code.

* platform/network/BlobData.h:
(WebCore::BlobData::contentDisposition): Deleted.
(WebCore::BlobData::setContentDisposition): Deleted.
* platform/network/BlobRegistryImpl.cpp:
(WebCore::BlobRegistryImpl::registerBlobURL):
(WebCore::BlobRegistryImpl::registerBlobURLForSlice):
* platform/network/BlobResourceHandle.cpp:
(WebCore::BlobResourceHandle::notifyResponseOnSuccess):
* platform/network/BlobStorageData.h:
(WebCore::BlobStorageData::create):
(WebCore::BlobStorageData::contentType):
(WebCore::BlobStorageData::BlobStorageData):
(WebCore::BlobStorageData::contentDisposition): Deleted.

Source/WebKit2:
* Shared/FileAPI/BlobRegistrationData.cpp:
(WebKit::BlobRegistrationData::encode):
(WebKit::BlobRegistrationData::decode):

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

5 years agoImplement FormData decoding using KeyedDecoder
andersca@apple.com [Fri, 2 May 2014 22:38:47 +0000 (22:38 +0000)]
Implement FormData decoding using KeyedDecoder
https://bugs.webkit.org/show_bug.cgi?id=132494

Reviewed by Tim Horton.

* platform/KeyedCoding.h:
(WebCore::KeyedDecoder::decodeEnum):
* platform/network/FormData.cpp:
(WebCore::decodeElement):
(WebCore::FormData::decode):
* platform/network/FormData.h:

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

5 years agoAdd Jeremy as a committer.
commit-queue@webkit.org [Fri, 2 May 2014 22:37:07 +0000 (22:37 +0000)]
Add Jeremy as a committer.
https://bugs.webkit.org/show_bug.cgi?id=132492

Patch by Jeremy Jones <jeremyj@apple.com> on 2014-05-02
Reviewed by Jer Noble.

Add Jeremy Jones to the committers file.

* Scripts/webkitpy/common/config/contributors.json:

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