[iOS] Teach WKPDFView to navigate to pageNumber links
https://bugs.webkit.org/show_bug.cgi?id=137358

Reviewed by Tim Horton.

Treat PDF pageNumber annotations as if they were fragment navigations in an HTML document. For a given page
number N, create a fragment called "#pageN" and tell WebKit to navigate to it. By doing this we create history
entries for each pageNumber navigation and allow for proper back/forward. When navigating to a page, reset to
the initial scale factor and scroll to the beginning of the Nth page.

* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _zoomToPoint:atScale:animated:]): Added an animated parameter. If animated is NO, use a duration of 0.
(-[WKWebView _zoomToRect:atScale:origin:animated:]): Added an animated parameter and passed it to _zoomToPoint:atScale:animated:.
(-[WKWebView _zoomOutWithOrigin:animated:]): Ditto.
(-[WKWebView _zoomToRect:withOrigin:fitEntireRect:minimumScale:maximumScale:minimumScrollDistance:]): Called _zoomToRect:atScale:origin:animated:,
setting animated to YES.
(-[WKWebView _didSameDocumentNavigationForMainFrame:]): Called web_didSameDocumentNavigation: on _customContentView.
(-[WKWebView _zoomToPoint:atScale:]): Deleted.
(-[WKWebView _zoomToRect:atScale:origin:]): Deleted.
(-[WKWebView _zoomOutWithOrigin:]): Deleted.
* UIProcess/API/Cocoa/WKWebViewInternal.h:
* UIProcess/Cocoa/WKWebViewContentProvider.h:
* UIProcess/ios/PageClientImplIOS.mm:
(WebKit::PageClientImpl::didSameDocumentNavigationForMainFrame): Called _didSameDocumentNavigationForMainFrame on m_webView.
* UIProcess/ios/WKContentView.mm:
(-[WKContentView _zoomOutWithOrigin:]): Called _zoomOutWithOrigin:animated: on m_webView, setting animated to YES.
* UIProcess/ios/WKPDFPageNumberIndicator.h:
* UIProcess/ios/WKPDFPageNumberIndicator.mm:
(-[WKPDFPageNumberIndicator hide]): Added a method to hide the page number indicator.
* UIProcess/ios/WKPDFView.mm:
(-[WKPDFView web_setContentProviderData:suggestedFilename:]): Added a FIXME for restoring scroll position and page scale when loading from the back/forward list.
(-[WKPDFView scrollViewDidScroll:]): Stopped showing the page number indicator if a same-document navigation is occurring (to match UIWebPDFView).
(-[WKPDFView _updatePageNumberIndicator]): Ditto.
(-[WKPDFView web_didSameDocumentNavigation:]):
(-[WKPDFView _resetZoomAnimated:]): For same-document navigations of type kWKSameDocumentNavigationSessionStatePop, extracted the page index from the URL fragment
identifier, hid the page number indicator, reset the zoom (without an animation to match UIWebPDFView), and scrolled to the beginning of the given page.
(-[WKPDFView resetZoom:]): Called _resetZoomAnimated:, setting animated to YES.
(-[WKPDFView annotation:wasTouchedAtPoint:controller:]): If there is a non-zero pageNumber in the link annotation, construct a "#pageN" fragment and navigate to it.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@174232 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[Subpixel] Use floats instead of ints for text justification expansion
https://bugs.webkit.org/show_bug.cgi?id=137327

Reviewed by Zalan Bujtas.

Source/WebCore:

Use a float instead of an int for the expansion variable in InlineBox. The int was inside an inner class
that held a collection of bitfields, and this patch removes that inner-inner variable.

No new tests because there is plenty of existing coverage and existing tests are rebaselined.

* rendering/InlineBox.cpp: Update static_assert for the size of InlineBox.
* rendering/InlineBox.h: Use a float for the justification expansion amount instead of an int bitfield.
(WebCore::InlineBox::InlineBoxBitfields::InlineBoxBitfields): Remove int bitfield.
(WebCore::InlineBox::InlineBox): Initialize float expansion.
(WebCore::InlineBox::expansion): Return a float.
(WebCore::InlineBox::setExpansion): Take a float.
(WebCore::InlineBox::InlineBoxBitfields::expansion): Deleted. Moved to InlineBox.
(WebCore::InlineBox::InlineBoxBitfields::setExpansion): Deleted. Ditto.
* rendering/InlineTextBox.h:
(WebCore::InlineTextBox::setExpansion): Take a float.

LayoutTests:

Rebaselining tests due to subpixel differences.

* platform/mac/css1/box_properties/clear_float-expected.txt:
* platform/mac/css1/box_properties/float_on_text_elements-expected.txt:
* platform/mac/css2.1/t0905-c5525-fltcont-00-d-g-expected.txt:
* platform/mac/css2.1/t0905-c5525-fltwidth-00-c-g-expected.txt:
* platform/mac/css2.1/t1602-c546-txt-align-00-b-expected.txt:
* platform/mac/fast/multicol/float-avoidance-expected.txt:
* platform/mac/fast/multicol/overflow-across-columns-expected.txt:
* platform/mac/fast/multicol/overflow-across-columns-percent-height-expected.txt:
* platform/mac/fast/multicol/overflow-unsplittable-expected.txt:
* platform/mac/fast/multicol/positive-leading-expected.txt:
* platform/mac/fast/multicol/vertical-lr/float-avoidance-expected.txt:
* platform/mac/fast/multicol/vertical-rl/float-avoidance-expected.txt:
* platform/mac/fast/regions/multiple-directionality-changes-in-variable-width-regions-expected.txt:
* platform/mac/fast/regions/repaint/line-flow-with-floats-in-regions-expected.txt:
* platform/mac/fast/repaint/line-flow-with-floats-1-expected.txt:
* platform/mac/fast/repaint/line-flow-with-floats-10-expected.txt:
* platform/mac/fast/repaint/line-flow-with-floats-2-expected.txt:
* platform/mac/fast/repaint/line-flow-with-floats-3-expected.txt:
* platform/mac/fast/repaint/line-flow-with-floats-4-expected.txt:
* platform/mac/fast/repaint/line-flow-with-floats-5-expected.txt:
* platform/mac/fast/repaint/line-flow-with-floats-6-expected.txt:
* platform/mac/fast/repaint/line-flow-with-floats-7-expected.txt:
* platform/mac/fast/repaint/line-flow-with-floats-8-expected.txt:
* platform/mac/fast/repaint/line-flow-with-floats-9-expected.txt:
* platform/mac/fast/ruby/bopomofo-rl-expected.txt:
* platform/mac/fast/text/hyphenate-character-expected.txt:
* platform/mac/fast/text/hyphens-expected.txt:
* platform/mac/fast/text/justified-selection-at-edge-expected.txt:
* platform/mac/fast/text/justify-ideograph-leading-expansion-expected.txt:
* platform/mac/fast/text/justify-nbsp-expected.txt: Added.
* platform/mac/fast/text/trailing-white-space-2-expected.txt:
* platform/mac/fast/text/trailing-white-space-expected.txt:
* platform/mac/tables/mozilla/marvin/x_tbody_align_justify-expected.txt:
* platform/mac/tables/mozilla/marvin/x_td_align_justify-expected.txt:
* platform/mac/tables/mozilla/marvin/x_tfoot_align_justify-expected.txt:
* platform/mac/tables/mozilla/marvin/x_th_align_justify-expected.txt:
* platform/mac/tables/mozilla/marvin/x_thead_align_justify-expected.txt:
* platform/mac/tables/mozilla/marvin/x_tr_align_justify-expected.txt:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@174233 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Simplify StringTypeAdapter templates
https://bugs.webkit.org/show_bug.cgi?id=137356

Reviewed by Andreas Kling.

* wtf/text/StringConcatenate.h:
Use StringView for copying characters. Use inheritance for char* vs const char* etc. Make all StringAdapter member functions const.

* wtf/text/StringView.h:
Move enough functions out of line so we can include WTFString.h after the StringView class definition.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@174234 268f45cc-cd09-0410-ab3c-d52691b4dbfc
XMLHttpRequestProgressEventThrottle shouldn't throttle / defer progress events if there are no listeners
https://bugs.webkit.org/show_bug.cgi?id=137346

Reviewed by Alexey Proskuryakov.

Previously XMLHttpRequestProgressEventThrottle would throttle / defer
progress events, which involves queueing events and starting timers,
even if there were no listeners for those events (which is fairly
common case).

This patch updates XMLHttpRequestProgressEventThrottle to make sure
there are actual progress event listeners *before* attempting to
throttle and do extra processing, to avoid doing unnecessary work.

This patch also makes XMLHttpRequestProgressEventThrottle::dispatchEvent()
private as this method is only called from other dispatch methods of
the class and never from the outside.

No new tests, no behavior change.

* xml/XMLHttpRequestProgressEventThrottle.cpp:
(WebCore::XMLHttpRequestProgressEventThrottle::dispatchThrottledProgressEvent):
(WebCore::XMLHttpRequestProgressEventThrottle::dispatchProgressEvent):


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@174235 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Use is<>() / downcast<>() for CSSBasicShape objects
https://bugs.webkit.org/show_bug.cgi?id=137331

Reviewed by Andreas Kling.

Use is<>() / downcast<>() for CSSBasicShape objects.

No new tests, no behavior change.

* css/BasicShapeFunctions.cpp:
(WebCore::basicShapeForValue):
* css/CSSBasicShapes.cpp:
(WebCore::CSSBasicShapeCircle::equals):
(WebCore::CSSBasicShapeEllipse::equals):
(WebCore::CSSBasicShapePolygon::equals):
(WebCore::CSSBasicShapeInset::equals):
* css/CSSBasicShapes.h:


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@174236 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[Windows] Unskip media tests now that audio devices are installed on the bots.

* platform/win/TestExpectations: There will likely still be a handful of failures left, which we will then skip.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@174237 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Fix the iOS build.

* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::blurAssistedNode):
(WebKit::WebPage::setAssistedNodeValue):
(WebKit::WebPage::setAssistedNodeValueAsNumber):
(WebKit::WebPage::setAssistedNodeSelectedIndex):

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