[iOS][WK2] The page scale factor randomly resets to initial scale when editing
https://bugs.webkit.org/show_bug.cgi?id=133244

Patch by Benjamin Poulain <bpoulain@apple.com> on 2014-05-23
Reviewed by Enrica Casucci.

We were never telling the WebProcess that zoom is used triggered. As a result, the ViewportConfiguration was free
to reset the scale whenever it felt like it. The fix is to call willStartUserTriggeredZoom before changing the scale.

This patch also split _willStartUserTriggeredScrollingOrZooming from willStartUserTriggeredZoom
and rename it to willStartPanOrPinchGesture. This is just a tiny cleanup since the only thing left in _willStartUserTriggeredScrollingOrZooming
was gesture related.

* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _zoomToFocusRect:WebCore::selectionRect:WebCore::fontSize:minimumScale:maximumScale:allowScaling:forceScroll:]):
(-[WKWebView scrollViewWillBeginZooming:withView:]):
(-[WKWebView scrollViewWillBeginDragging:]):
* UIProcess/API/Cocoa/WKWebViewInternal.h:
* UIProcess/API/ios/WKViewIOS.mm:
(-[WKView scrollViewWillBeginDragging:]):
* UIProcess/ios/WKContentView.h:
* UIProcess/ios/WKContentView.mm:
(-[WKContentView willStartUserTriggeredZoom]):
(-[WKContentView willStartUserTriggeredScroll]): Deleted.
* UIProcess/ios/WKContentViewInteraction.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView willStartPanOrPinchGesture]):
(-[WKContentView _willStartUserTriggeredScrollingOrZooming]): Deleted.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@169300 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[iOS][WK2] Avoid updating the view from the viewport configuration unnecessarily
https://bugs.webkit.org/show_bug.cgi?id=133255
<rdar://problem/16890926>

Patch by Benjamin Poulain <bpoulain@apple.com> on 2014-05-23
Reviewed by Simon Fraser.

All the updates were mostly harmless since they are pretty cheap, but they can be
very annoying for debugging.

This patch skips viewportUpdates in the trivial cases.

* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _setMinimumLayoutSizeOverride:]):
(-[WKWebView _setMinimumLayoutSizeOverrideForMinimalUI:]):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::mainFrameDidLayout):
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::viewportPropertiesDidChange):


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@169302 268f45cc-cd09-0410-ab3c-d52691b4dbfc
REGRESSION: Rubberbanding out jumps to top left corner on google.com
https://bugs.webkit.org/show_bug.cgi?id=133253
<rdar://problem/17025664>

Patch by Ian Henderson <ianh@apple.com> on 2014-05-23
Reviewed by Benjamin Poulain.

* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView scrollViewWillEndDragging:withVelocity:targetContentOffset:]):
Avoid deceleration during zooming to work around a UIKit bug.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@169304 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Use size variants and glyph assembly from the MATH data.
https://bugs.webkit.org/show_bug.cgi?id=130322

Reviewed by Chris Fleizach.

Source/WebCore:
This patch modifies the RenderMathMLOperator code to use the MATH table
when one is provided in the current font on the <math> tag. More
precisely, the MathVariants table is used to draw a size variant or
a glyph assembly. The displaystyle attribute is not supported yet, so
for now large operators are always assumed to be in display style. The
MATH support does not work well with all platforms+fonts, so at the
moment the default font-family on the <math> is not changed.

Tests: mathml/opentype/large-operators-LatinModern.html
       mathml/opentype/opentype-stretchy.html
       mathml/opentype/vertical-LatinModern.html

* css/mathml.css: We only specify the default font-family on the math root, so that people can easily style the mathematics.
For now, old fonts without the MATH table are still used as the default.
(math):
(math, mfenced > *): Deleted.
(mo, mfenced): Deleted.
* platform/graphics/SimpleFontData.cpp: don't return the math data if the font is loading.
(WebCore::SimpleFontData::mathData):
* platform/graphics/opentype/OpenTypeMathData.cpp: update #ifdef so that disabling ENABLE_OPENTYPE_MATH won't lead to errors with unused parameters.
(WebCore::OpenTypeMathData::OpenTypeMathData):
(WebCore::OpenTypeMathData::getMathConstant):
(WebCore::OpenTypeMathData::getItalicCorrection):
(WebCore::OpenTypeMathData::getMathVariants):
* rendering/mathml/RenderMathMLOperator.cpp:
(WebCore::RenderMathMLOperator::boundsForGlyph):
(WebCore::RenderMathMLOperator::heightForGlyph):
(WebCore::RenderMathMLOperator::advanceForGlyph):
(WebCore::RenderMathMLOperator::computePreferredLogicalWidths): We handle preferred width of size variants.
(WebCore::RenderMathMLOperator::shouldAllowStretching): This function now only returns whether the operator will stretch and no longer has side effect.
(WebCore::RenderMathMLOperator::getGlyphAssemblyFallBack): We add a function to convert from the MathVariant table data to the format supported by RenderMathMLOperator.
(WebCore::RenderMathMLOperator::getDisplayStyleLargeOperator): We add a function to get the glyph that will be used for large operators in display style.
(WebCore::RenderMathMLOperator::findStretchyData): We make this function handle size variants.
(WebCore::RenderMathMLOperator::updateStyle): We handle size variants.
(WebCore::RenderMathMLOperator::paint): We handle size variants.
* rendering/mathml/RenderMathMLOperator.h:

LayoutTests:
This adds some pixel tests for large operators and vertical stretchy operators.

* mathml/opentype/LICENSE-LatinModern.txt: Added.
* mathml/opentype/large-operators-LatinModern.html: Added.
* mathml/opentype/latinmodern-math.woff: Added.
* mathml/opentype/opentype-stretchy.html: Added.
* mathml/opentype/stretchy.woff: Added.
* mathml/opentype/vertical-LatinModern.html: Added.
* platform/efl/mathml/opentype/large-operators-LatinModern-expected.png: Added.
* platform/efl/mathml/opentype/large-operators-LatinModern-expected.txt: Added.
* platform/efl/mathml/opentype/opentype-stretchy-expected.png: Added.
* platform/efl/mathml/opentype/opentype-stretchy-expected.txt: Added.
* platform/efl/mathml/opentype/vertical-LatinModern-expected.png: Added.
* platform/efl/mathml/opentype/vertical-LatinModern-expected.txt: Added.
* platform/gtk/mathml/opentype/large-operators-LatinModern-expected.png: Added.
* platform/gtk/mathml/opentype/large-operators-LatinModern-expected.txt: Added.
* platform/gtk/mathml/opentype/opentype-stretchy-expected.png: Added.
* platform/gtk/mathml/opentype/opentype-stretchy-expected.txt: Added.
* platform/gtk/mathml/opentype/vertical-LatinModern-expected.png: Added.
* platform/gtk/mathml/opentype/vertical-LatinModern-expected.txt: Added.
* platform/gtk/mathml/presentation/mo-stretch-expected.png: update reference due to change in mathml.css
* platform/gtk/mathml/presentation/mo-stretch-expected.txt: ditto
* platform/mac/mathml/opentype/large-operators-LatinModern-expected.txt: Added.
* platform/mac/mathml/opentype/opentype-stretchy-expected.txt: Added.
* platform/mac/mathml/opentype/vertical-LatinModern-expected.txt: Added.
* platform/mac-wk2/mathml/opentype/large-operators-LatinModern-expected.txt: Added.
* platform/mac-wk2/mathml/opentype/opentype-stretchy-expected.txt: Added.
* platform/mac-wk2/mathml/opentype/vertical-LatinModern-expected.txt: Added.
* platform/win/TestExpectations: Mark the OpenType MATH tests as failing

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