WebKit-https.git
3 years agoCaptions do not render in PiP window when element is hidden
eric.carlson@apple.com [Wed, 27 Jul 2016 22:06:28 +0000 (22:06 +0000)]
Captions do not render in PiP window when element is hidden
https://bugs.webkit.org/show_bug.cgi?id=160265
<rdar://problem/27556788>

Reviewed by Simon Fraser.

* html/shadow/MediaControlElements.cpp:
(WebCore::MediaControlTextTrackContainerElement::createTextTrackRepresentationImage): Pass new flag so
caption layers are always rendered.

* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::paintLayerContents): Paint non-visible layers when PaintLayerIgnoreVisibility
flag is set.
* rendering/RenderLayer.h: Define PaintLayerIgnoreVisibility.

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

3 years agoconcatAppendOne should allocate using the indexing type of the array if it cannot...
keith_miller@apple.com [Wed, 27 Jul 2016 21:59:02 +0000 (21:59 +0000)]
concatAppendOne should allocate using the indexing type of the array if it cannot merge
https://bugs.webkit.org/show_bug.cgi?id=160261
<rdar://problem/27530122>

Reviewed by Mark Lam.

Before, if we could not merge the indexing types for copying, we would allocate the
the array as ArrayWithUndecided. Instead, we should allocate an array with the original
array's indexing type.

* runtime/ArrayPrototype.cpp:
(JSC::concatAppendOne):
* tests/stress/concat-append-one-with-sparse-array.js: Added.

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

3 years agoParameter to named property getter should be mandatory
cdumez@apple.com [Wed, 27 Jul 2016 21:51:49 +0000 (21:51 +0000)]
Parameter to named property getter should be mandatory
https://bugs.webkit.org/show_bug.cgi?id=160269

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

Rebaseline W3C test now that more checks are passing.

* web-platform-tests/html/dom/interfaces-expected.txt:

Source/WebCore:

Parameter to named property getter should be mandatory:
- https://heycam.github.io/webidl/#idl-named-properties

No new tests, rebaselined existing test.

* Modules/mediastream/RTCStatsResponse.idl:
* bindings/scripts/test/TestOverrideBuiltins.idl:
* html/HTMLOptionsCollection.idl:
* html/HTMLSelectElement.idl:
* plugins/DOMMimeTypeArray.idl:
* plugins/DOMPlugin.idl:
* plugins/DOMPluginArray.idl:

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

3 years agoFirst parameter to Range.createContextualFragment() should be mandatory
cdumez@apple.com [Wed, 27 Jul 2016 21:36:11 +0000 (21:36 +0000)]
First parameter to Range.createContextualFragment() should be mandatory
https://bugs.webkit.org/show_bug.cgi?id=160266

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

Rebaseline W3C test now that one more check is passing.

* web-platform-tests/domparsing/createContextualFragment-expected.txt:

Source/WebCore:

First parameter to Range.createContextualFragment() should be mandatory:
- https://w3c.github.io/DOM-Parsing/#extensions-to-the-range-interface

Firefox and Chrome agree with the specification.

No new tests, rebaselined existing test.

* dom/Range.idl:

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

3 years agoAlign MediaList with the CSSOM specification
cdumez@apple.com [Wed, 27 Jul 2016 21:33:57 +0000 (21:33 +0000)]
Align MediaList with the CSSOM specification
https://bugs.webkit.org/show_bug.cgi?id=160257

Reviewed by Ryosuke Niwa.

Source/WebCore:

Align MediaList with the CSSOM specification:
- https://www.w3.org/TR/cssom-1/#the-medialist-interface

In particular, the parameter to item() / deleteMedium() and
appendMedium() is now mandatory.

Firefox and Chrome agree with the specification.

Test: fast/css/MediaList-mediaText-null.html
      fast/css/MediaList-parameters.html

* css/MediaList.idl:

LayoutTests:

* fast/css/MediaList-mediaText-null-expected.txt: Added.
* fast/css/MediaList-mediaText-null.html: Added.
Add test coverage for MediaList.mediaText to make sure it is not nullable
and treats null as the empty string. Our IDL did not match the
specification here but our behavior was correct. Therefore, this test is
passing with and without my change. I just wanted to make sure we had
good coverage since I updated our IDL to match the specification.

* fast/css/MediaList-parameters-expected.txt: Added.
* fast/css/MediaList-parameters.html: Added.
Add test coverage for mandatory parameters.

* fast/dom/non-numeric-values-numeric-parameters-expected.txt:
* fast/dom/script-tests/non-numeric-values-numeric-parameters.js:
Update existing test to reflect behavior change.

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

3 years agoCorrect the syntax used to skip js/regress/script-tests/bigswitch-indirect-symbol.js
ryanhaddad@apple.com [Wed, 27 Jul 2016 21:18:50 +0000 (21:18 +0000)]
Correct the syntax used to skip js/regress/script-tests/bigswitch-indirect-symbol.js

Unreviewed test gardening.

* js/regress/script-tests/bigswitch-indirect-symbol.js:

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

3 years agoWe don't optimize for-in properly in baseline JIT (maybe other JITs too) with an...
sbarati@apple.com [Wed, 27 Jul 2016 21:11:09 +0000 (21:11 +0000)]
We don't optimize for-in properly in baseline JIT (maybe other JITs too) with an object with symbols
https://bugs.webkit.org/show_bug.cgi?id=160211
<rdar://problem/27572612>

Reviewed by Geoffrey Garen.

The fast for-in iteration mode assumes all inline/out-of-line properties
can be iterated in linear order. This is not true if we have Symbols
because Symbols should not be iterated by for-in.

* runtime/Structure.cpp:
(JSC::Structure::add):
* tests/stress/symbol-should-not-break-for-in.js: Added.
(assert):
(foo):

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

3 years agoFullscreen video zoom button does not work after rotating when aspect ratio matches...
commit-queue@webkit.org [Wed, 27 Jul 2016 21:10:23 +0000 (21:10 +0000)]
Fullscreen video zoom button does not work after rotating when aspect ratio matches display.
https://bugs.webkit.org/show_bug.cgi?id=160263
rdar://problem/27368872

Patch by Jeremy Jones <jeremyj@apple.com> on 2016-07-27
Reviewed by Eric Carlson.

When video and display aspect ratio match, and rotating from landscape to protrait, the transform used in layout
will be Identity. This means checking the transform for identity is an insufficient test to see if the bounds
need to be resolved.

Instead, always attempt to resolve the bounds and do a more accurate test while doing so.

* platform/ios/WebVideoFullscreenInterfaceAVKit.mm:
(-[WebAVPlayerLayer layoutSublayers]):
(-[WebAVPlayerLayer resolveBounds]):

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

3 years ago[iOS] Remove unused textContentType SPI from _WKFormInputSession
commit-queue@webkit.org [Wed, 27 Jul 2016 21:00:42 +0000 (21:00 +0000)]
[iOS] Remove unused textContentType SPI from _WKFormInputSession
https://bugs.webkit.org/show_bug.cgi?id=160260

Patch by Chelsea Pugh <cpugh@apple.com> on 2016-07-27
Reviewed by Dan Bernstein.

* UIProcess/API/Cocoa/_WKFormInputSession.h: Remove unused SPI.

* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView textInputTraits]): Set textContentType of _traits to whatever we classify it as based
on the assisted node info. The default textContentType is nil, and that is our fallback in our method
for determining textContentType.
(-[WKFormInputSession textContentType]): Deleted.
(-[WKFormInputSession setTextContentType:]): Deleted.

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

3 years agoThe second argument for Function.prototype.apply should be array-like or null/undefined.
mark.lam@apple.com [Wed, 27 Jul 2016 20:55:23 +0000 (20:55 +0000)]
The second argument for Function.prototype.apply should be array-like or null/undefined.
https://bugs.webkit.org/show_bug.cgi?id=160212
<rdar://problem/27328525>

Reviewed by Filip Pizlo.

The spec for Function.prototype.apply says its second argument can only be null,
undefined, or must be array-like.  See
https://tc39.github.io/ecma262/#sec-function.prototype.apply and
https://tc39.github.io/ecma262/#sec-createlistfromarraylike.

Our previous implementation was not handling this correctly for SymbolType.
This is now fixed.

* interpreter/Interpreter.cpp:
(JSC::sizeOfVarargs):
* tests/stress/apply-second-argument-must-be-array-like.js: Added.

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

3 years agoStop accepting the deprecated "requiredShippingAddressFields" and "requiredBillingAdd...
andersca@apple.com [Wed, 27 Jul 2016 20:52:50 +0000 (20:52 +0000)]
Stop accepting the deprecated "requiredShippingAddressFields" and "requiredBillingAddressFields" properties
https://bugs.webkit.org/show_bug.cgi?id=160264
rdar://problem/27574519

Reviewed by Simon Fraser.

* Modules/applepay/ApplePaySession.cpp:
(WebCore::createPaymentRequest):
(WebCore::isValidPaymentRequestPropertyName):

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

3 years agoFirst parameter to indexed property getters should be mandatory
cdumez@apple.com [Wed, 27 Jul 2016 20:51:41 +0000 (20:51 +0000)]
First parameter to indexed property getters should be mandatory
https://bugs.webkit.org/show_bug.cgi?id=160259

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

Rebaseline W3C test now that more checks are passing.

* web-platform-tests/html/dom/interfaces-expected.txt:

Source/WebCore:

First parameter to indexed property getters should be mandatory:
- https://heycam.github.io/webidl/#idl-indexed-properties

No new tests, rebaselined existing tests.

* Modules/gamepad/deprecated/GamepadList.idl:
* bindings/js/JSHTMLAllCollectionCustom.cpp:
(WebCore::JSHTMLAllCollection::item):
* css/CSSRuleList.idl:
* css/CSSValueList.idl:
* css/StyleSheetList.idl:
* css/WebKitCSSFilterValue.idl:
* css/WebKitCSSTransformValue.idl:
* dom/ClientRectList.idl:
* dom/DOMStringList.idl:
* dom/DataTransferItemList.idl:
* html/HTMLAllCollection.idl:
* plugins/DOMMimeTypeArray.idl:
* plugins/DOMPlugin.idl:
* plugins/DOMPluginArray.idl:

LayoutTests:

Update existing tests to reflect behavior change.

* fast/css/webkit-keyframes-crash.html:
* fast/dom/non-numeric-values-numeric-parameters-expected.txt:
* fast/dom/script-tests/non-numeric-values-numeric-parameters.js:

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

3 years agoLand test expectations for rdar://problem/27574303.
ryanhaddad@apple.com [Wed, 27 Jul 2016 20:05:43 +0000 (20:05 +0000)]
Land test expectations for rdar://problem/27574303.

Unreviewed test gardening.

* platform/mac-wk2/TestExpectations:

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

3 years agoMathICs should be able to emit only a jump along the inline path when they don't...
sbarati@apple.com [Wed, 27 Jul 2016 19:56:28 +0000 (19:56 +0000)]
MathICs should be able to emit only a jump along the inline path when they don't have any type data
https://bugs.webkit.org/show_bug.cgi?id=160110

Reviewed by Mark Lam.

This patch allows for MathIC fast-path generation to be delayed.
We delay when we don't see any observed type information for
the lhs/rhs operand, which implies that the MathIC has never
executed. This is profitable for two main reasons:
1. If the math operation never executes, we emit much less code.
2. Once we get type information for the lhs/rhs, we can emit better code.

To implement this, we just emit a jump to the slow path call
that will repatch on first execution.

New data for add:
           |   JetStream  |  Unity 3D  |
     ------| -------------|--------------
      Old  |   148 bytes  |  143 bytes |
     ------| -------------|--------------
      New  |   116  bytes |  113 bytes |
     ------------------------------------

New data for mul:
           |   JetStream  |  Unity 3D  |
     ------| -------------|--------------
      Old  |   210 bytes  |  185 bytes |
     ------| -------------|--------------
      New  |   170  bytes |  137 bytes |
     ------------------------------------

* jit/JITAddGenerator.cpp:
(JSC::JITAddGenerator::generateInline):
* jit/JITAddGenerator.h:
(JSC::JITAddGenerator::isLeftOperandValidConstant):
(JSC::JITAddGenerator::isRightOperandValidConstant):
(JSC::JITAddGenerator::arithProfile):
* jit/JITMathIC.h:
(JSC::JITMathIC::generateInline):
(JSC::JITMathIC::generateOutOfLine):
(JSC::JITMathIC::finalizeInlineCode):
* jit/JITMathICInlineResult.h:
* jit/JITMulGenerator.cpp:
(JSC::JITMulGenerator::generateInline):
* jit/JITMulGenerator.h:
(JSC::JITMulGenerator::isLeftOperandValidConstant):
(JSC::JITMulGenerator::isRightOperandValidConstant):
(JSC::JITMulGenerator::arithProfile):
* jit/JITOperations.cpp:

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

3 years ago[css-grid] The isValidTransition function must not alter the GridSizingData object
jfernandez@igalia.com [Wed, 27 Jul 2016 18:46:42 +0000 (18:46 +0000)]
[css-grid] The isValidTransition function must not alter the GridSizingData object
https://bugs.webkit.org/show_bug.cgi?id=160252

Reviewed by Darin Adler.

It's not correct that a function which purpose is to check out the
validity of a state modifies such state.

That code was there to allow the extra row track sizing iteration
in the case of a grid container with indefinite height. We need to
do that in order to figure out its intrinsic height, which will be
used then to properly sizing the row tracks.

Since the intrinsic height computation uses directly the
computeUsedBreadthOfGridTracks function, it does not alter the
algorithm state-machine, hence, we can safely remove this code,
which was incorrect in any case.

No new tests, it's just a refactoring with no functionality change.

* rendering/RenderGrid.cpp:
(WebCore::RenderGrid::GridSizingData::isValidTransition):

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

3 years agoFirst parameter to Document.execCommand() / queryCommand*() should be mandatory
cdumez@apple.com [Wed, 27 Jul 2016 18:27:22 +0000 (18:27 +0000)]
First parameter to Document.execCommand() / queryCommand*() should be mandatory
https://bugs.webkit.org/show_bug.cgi?id=160258

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Rebaseline W3C test now that more checks are passing.

* web-platform-tests/html/dom/interfaces-expected.txt:

Source/WebCore:

First parameter to Document.execCommand() / queryCommand*() should be mandatory:
- https://w3c.github.io/editing/execCommand.html

Firefox and Chrome agree with the specification.

Test: fast/dom/Document/editing-parameters.html

* dom/Document.idl:

LayoutTests:

Add layout test coverage.

* fast/dom/Document/editing-parameters-expected.txt: Added.
* fast/dom/Document/editing-parameters.html: Added.

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

3 years agoFix a typo in TestExpectations.
ryanhaddad@apple.com [Wed, 27 Jul 2016 18:04:58 +0000 (18:04 +0000)]
Fix a typo in TestExpectations.

Unreviewed test gardening.

* platform/mac-wk1/TestExpectations:

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

3 years agoAlign CSSSupportsRule with the specification
cdumez@apple.com [Wed, 27 Jul 2016 18:04:16 +0000 (18:04 +0000)]
Align CSSSupportsRule with the specification
https://bugs.webkit.org/show_bug.cgi?id=160256

Reviewed by Darin Adler.

Source/WebCore:

Align CSSSupportsRule with the specification:
- https://drafts.csswg.org/css-conditional-3/#csssupportsrule

In particular:
- Make the parameters to insertRule() / deleteRule() mandatory
- Expose CSSSupportsRule on the global Window object

Both Firefox and Chrome agree with the specification here.

Test: fast/css/CSSSupportsRule-parameters.html

* css/CSSSupportsRule.idl:

LayoutTests:

* fast/css/CSSSupportsRule-parameters-expected.txt: Added.
* fast/css/CSSSupportsRule-parameters.html: Added.
Add layout test coverage for mandatory parameters.

* platform/efl/js/dom/global-constructors-attributes-expected.txt:
* platform/gtk/js/dom/global-constructors-attributes-expected.txt:
* platform/mac-yosemite/js/dom/global-constructors-attributes-expected.txt:
* platform/mac/js/dom/global-constructors-attributes-expected.txt:
* platform/win/js/dom/global-constructors-attributes-expected.txt:
Rebaseline existing test now that CSSSupportsRule is exposed on the
global Window object.

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

3 years agoDisable WebCoreNSURLSessionTest API tests on ios-simulator
ryanhaddad@apple.com [Wed, 27 Jul 2016 17:15:50 +0000 (17:15 +0000)]
Disable WebCoreNSURLSessionTest API tests on ios-simulator
https://bugs.webkit.org/show_bug.cgi?id=160225

Reviewed by Alexey Proskuryakov.

* TestWebKitAPI/Tests/WebCore/WebCoreNSURLSession.mm:

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

3 years agoFix m_isInBackground initialization for Safari View Services
cdumez@apple.com [Wed, 27 Jul 2016 17:03:19 +0000 (17:03 +0000)]
Fix m_isInBackground initialization for Safari View Services
https://bugs.webkit.org/show_bug.cgi?id=160255
<rdar://problem/27569255>

Reviewed by Tim Horton.

Fix m_isInBackground initialization for Safari View Services. The
code was using m_applicationStateMonitor without initializing it.
Instead, use the local applicationStateMonitor and make sure we
invalidate it before it gets released.

* UIProcess/ApplicationStateTracker.mm:
(WebKit::ApplicationStateTracker::ApplicationStateTracker):

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

3 years ago[GTK] Unreviewed gardening: update expectations after r203770
commit-queue@webkit.org [Wed, 27 Jul 2016 16:18:29 +0000 (16:18 +0000)]
[GTK] Unreviewed gardening: update expectations after r203770
https://bugs.webkit.org/show_bug.cgi?id=160253

Unreviewed gardening.

Patch by Miguel Gomez <magomez@igalia.com> on 2016-07-27

* platform/gtk/TestExpectations:

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

3 years agoRegression(r203535): Uncaught Exception: TypeError: Not enough arguments at LayerTree...
bburg@apple.com [Wed, 27 Jul 2016 16:14:24 +0000 (16:14 +0000)]
Regression(r203535): Uncaught Exception: TypeError: Not enough arguments at LayerTreeDataGridNode.js:47
https://bugs.webkit.org/show_bug.cgi?id=160187
<rdar://problem/27540435>

Reviewed by Eric Carlson.

After r203535, document.createTextNode() requires an argument.

* UserInterface/Views/LayerTreeDataGridNode.js:
(WebInspector.LayerTreeDataGridNode.prototype.createCellContent):
Since this use-site is for creating a cell in an unknown column,
initialize it to '–'. Previously it would have been the string
"undefined" or empty.

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

3 years ago[GTK] Fix some video/canvas tests that should be passing
commit-queue@webkit.org [Wed, 27 Jul 2016 16:00:16 +0000 (16:00 +0000)]
[GTK] Fix some video/canvas tests that should be passing
https://bugs.webkit.org/show_bug.cgi?id=160023

Patch by Miguel Gomez <magomez@igalia.com> on 2016-07-27
Reviewed by Carlos Garcia Campos.

Tools:

Add a platform identifier to the TestRunner's page user agent when the tests are run on the
EFL or GTK platforms.

* WebKitTestRunner/efl/TestControllerEfl.cpp:
(WTR::TestController::platformConfigureViewForTest):
* WebKitTestRunner/gtk/TestControllerGtk.cpp:
(WTR::TestController::platformConfigureViewForTest):

LayoutTests:

Modify the tests to use a tolerance of 6 when running on the GTK or EFL platforms. Also,
added new expectations for the tests that need them.

* fast/canvas/canvas-createPattern-video-loading.html:
* fast/canvas/canvas-createPattern-video-modify.html:
* media/video-canvas-createPattern.html:
* platform/efl/fast/canvas/canvas-createPattern-video-loading-expected.txt: Added.
* platform/efl/fast/canvas/canvas-createPattern-video-modify-expected.txt: Added.
* platform/gtk/fast/canvas/canvas-createPattern-video-loading-expected.txt: Added.
* platform/gtk/fast/canvas/canvas-createPattern-video-modify-expected.txt: Added.
* resources/platform-helper.js: Added.
(isGtk):
(isEfl):
(videoCanvasPixelComparisonTolerance):

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

3 years ago[Coordinated Graphics] Improve scheduling of tasks between threads in CoordinatedGrap...
carlosgc@webkit.org [Wed, 27 Jul 2016 15:58:08 +0000 (15:58 +0000)]
[Coordinated Graphics] Improve scheduling of tasks between threads in CoordinatedGraphicsScene
https://bugs.webkit.org/show_bug.cgi?id=160238

Reviewed by Michael Catanzaro.

This patch makes the following improvements:

 - Avoid scheduling tasks to the main thread if the scene is detached.
 - Do not take references when not actually sending tasks to another threads.
 - Use Function instead of std::function on dispatch methods.
 - Remove purgeBackingStores that is actually never called. It's only scheduled from purgeGLResources() that
   is always called after detach.

* Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:
(WebKit::CoordinatedGraphicsScene::dispatchOnMainThread):
(WebKit::CoordinatedGraphicsScene::dispatchOnClientRunLoop):
(WebKit::CoordinatedGraphicsScene::paintToCurrentGLContext):
(WebKit::CoordinatedGraphicsScene::updateViewport):
(WebKit::CoordinatedGraphicsScene::onNewBufferAvailable):
(WebKit::CoordinatedGraphicsScene::commitSceneState):
(WebKit::CoordinatedGraphicsScene::renderNextFrame):
(WebKit::CoordinatedGraphicsScene::purgeGLResources):
(WebKit::CoordinatedGraphicsScene::commitScrollOffset):
(WebKit::CoordinatedGraphicsScene::detach):
(WebKit::CoordinatedGraphicsScene::setActive):
(WebKit::CoordinatedGraphicsScene::dispatchCommitScrollOffset): Deleted.
(WebKit::CoordinatedGraphicsScene::purgeBackingStores): Deleted.
* Shared/CoordinatedGraphics/CoordinatedGraphicsScene.h:
* Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:
(WebKit::ThreadedCompositor::purgeBackingStores): Deleted.
* Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.h:
* UIProcess/CoordinatedGraphics/CoordinatedLayerTreeHostProxy.cpp:
(WebKit::CoordinatedLayerTreeHostProxy::purgeBackingStores): Deleted.
* UIProcess/CoordinatedGraphics/CoordinatedLayerTreeHostProxy.h:
* WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp:
(WebKit::CompositingCoordinator::invalidate):
* WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.h:
* WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp:
(WebKit::CoordinatedLayerTreeHost::invalidate):
(WebKit::CoordinatedLayerTreeHost::purgeBackingStores): Deleted.
* WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.h:
* WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.messages.in:
* WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.h:

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

3 years ago[Soup] Test http/tests/xmlhttprequest/auth-reject-protection-space.html fails since...
carlosgc@webkit.org [Wed, 27 Jul 2016 15:52:24 +0000 (15:52 +0000)]
[Soup] Test http/tests/xmlhttprequest/auth-reject-protection-space.html fails since added in r203743
https://bugs.webkit.org/show_bug.cgi?id=160235

Reviewed by Michael Catanzaro.

It times out in release and crashes in debug due to an ASSERT_NOT_REACHED(). The soup backend doesn't really
support rejecting the protection space and continuing with the next one, but we can at least continue with the
request without crendential to make the test pass.

* platform/network/soup/ResourceHandleSoup.cpp:
(WebCore::ResourceHandle::receivedChallengeRejection):

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

3 years ago[GTK] Remove network setup from web process
carlosgc@webkit.org [Wed, 27 Jul 2016 15:49:57 +0000 (15:49 +0000)]
[GTK] Remove network setup from web process
https://bugs.webkit.org/show_bug.cgi?id=160236

Reviewed by Michael Catanzaro.

We are still doing network init and finish in th web process. It's useless since we switched to mandatory
network process.

* WebProcess/gtk/WebProcessMainGtk.cpp:

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

3 years ago[Tools] The built product doesn't contains the dwo files when DEBUG_FISSION is enabled.
clopez@igalia.com [Wed, 27 Jul 2016 15:30:36 +0000 (15:30 +0000)]
[Tools] The built product doesn't contains the dwo files when DEBUG_FISSION is enabled.
https://bugs.webkit.org/show_bug.cgi?id=160247

Reviewed by Michael Catanzaro.

* BuildSlaveSupport/built-product-archive:
(createZip):
(dirContainsdwo):
(archiveBuiltProduct):

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

3 years ago[Streams API] Replace ReadableStreamReader by ReadableStreamDefaultReader
commit-queue@webkit.org [Wed, 27 Jul 2016 10:40:17 +0000 (10:40 +0000)]
[Streams API] Replace ReadableStreamReader by ReadableStreamDefaultReader
https://bugs.webkit.org/show_bug.cgi?id=160194

Patch by Romain Bellessort <romain.bellessort@crf.canon.fr> on 2016-07-27
Reviewed by Youenn Fablet.

Replaced ReadableStreamReader by ReadableStreamDefaultReader to align
with updated Streams API specification.

No change in functionality.

Source/WebCore:

* CMakeLists.txt:
* DerivedSources.cpp:
* DerivedSources.make:
* Modules/fetch/FetchInternals.js:
(consumeStream):
* Modules/fetch/FetchResponse.js:
(body):
* Modules/streams/ReadableStream.js:
(getReader):
* Modules/streams/ReadableStreamDefaultReader.idl: Renamed from Source/WebCore/Modules/streams/ReadableStreamReader.idl.
* Modules/streams/ReadableStreamDefaultReader.js: Renamed from Source/WebCore/Modules/streams/ReadableStreamReader.js.
(cancel):
(read):
(releaseLock):
(closed):
* Modules/streams/ReadableStreamInternals.js:
(privateInitializeReadableStreamDefaultReader):
(teeReadableStream):
(teeReadableStreamPullFunction):
(isReadableStreamDefaultReader):
(closeReadableStream):
(readFromReadableStreamDefaultReader):
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/JSDOMGlobalObject.cpp:
(WebCore::JSDOMGlobalObject::addBuiltinGlobals):
(WebCore::JSDOMGlobalObject::finishCreation):
* bindings/js/JSReadableStreamPrivateConstructors.cpp:
(WebCore::constructJSReadableStreamDefaultReader):
(WebCore::JSBuiltinReadableStreamDefaultReaderPrivateConstructor::initializeExecutable):
(WebCore::createReadableStreamDefaultReaderPrivateConstructor):
* bindings/js/JSReadableStreamPrivateConstructors.h:
* bindings/js/WebCoreBuiltinNames.h:
* features.json:

LayoutTests:

* streams/brand-checks.html:
* streams/readable-stream-controller-error-expected.txt:
* streams/readable-stream-controller-error.html:
* streams/readable-stream-default-reader-read-expected.txt: Renamed from LayoutTests/streams/readable-stream-reader-read-expected.txt.
* streams/readable-stream-default-reader-read.html: Renamed from LayoutTests/streams/readable-stream-reader-read.html.
* streams/readable-stream-error-messages-expected.txt:
* streams/readable-stream-error-messages.html:
* streams/reference-implementation/readable-stream-reader-expected.txt:
* streams/shadowing-Promise-expected.txt:
* streams/shadowing-Promise.html:

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

3 years ago[css-grid] Handle alignment with orthogonal flows
jfernandez@igalia.com [Wed, 27 Jul 2016 10:07:19 +0000 (10:07 +0000)]
[css-grid] Handle alignment with orthogonal flows
https://bugs.webkit.org/show_bug.cgi?id=159295

Reviewed by Darin Adler.

Now that grid sizing and positioning issues wrt orthogonal flows have
been clarified in the last spec draft, we can adapt now our alignment
logic to work with orthogonal flows.

Source/WebCore:

Even though basic alignment would work with orthogonal flows with
this patch, we still doesn't allow stretching in that case. I'll provide a
patch for that feature since it's a complex logic and better have an
isolated change.

Tests: fast/css-grid-layout/grid-item-alignment-with-orthogonal-flows-vertical-lr.html
       fast/css-grid-layout/grid-item-alignment-with-orthogonal-flows-vertical-rl.html
       fast/css-grid-layout/grid-item-alignment-with-orthogonal-flows.html

* rendering/RenderGrid.cpp:
(WebCore::computeOverflowAlignmentOffset): Using 'size' instead of 'breadth' as concept.
(WebCore::RenderGrid::columnAxisPositionForChild): Dealing with orthogonal flow cases.
(WebCore::RenderGrid::rowAxisPositionForChild): Dealing with orthogonal flow cases.
(WebCore::RenderGrid::columnAxisOffsetForChild): Using 'size' instead of 'breadth' as concept.
(WebCore::RenderGrid::rowAxisOffsetForChild): Using 'size' instead of 'breadth' as concept.
(WebCore::RenderGrid::findChildLogicalPosition): Dealing with orthogonal flow cases.

LayoutTests:

These tests ensure that alignment works as expected in the cases where
grid and its children are orthogonal.

* fast/css-grid-layout/grid-item-alignment-with-orthogonal-flows-expected.txt: Added.
* fast/css-grid-layout/grid-item-alignment-with-orthogonal-flows-vertical-lr-expected.txt: Added.
* fast/css-grid-layout/grid-item-alignment-with-orthogonal-flows-vertical-lr.html: Added.
* fast/css-grid-layout/grid-item-alignment-with-orthogonal-flows-vertical-rl-expected.txt: Added.
* fast/css-grid-layout/grid-item-alignment-with-orthogonal-flows-vertical-rl.html: Added.
* fast/css-grid-layout/grid-item-alignment-with-orthogonal-flows.html: Added.
* fast/css-grid-layout/resources/grid-alignment.css:
(.alignContentSpaceBetween):
(.alignContentSpaceAround):
(.alignContentSpaceEvenly):
(.alignContentStretch):
(.selfStart):
(.selfEnd):
(.selfCenter):
(.selfRight):
(.selfLeft):
(.selfSelfStart):
(.selfSelfEnd):
(.itemsSelfEnd): Deleted.

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

3 years agoFix Win debug build after r203749.
achristensen@apple.com [Wed, 27 Jul 2016 07:42:16 +0000 (07:42 +0000)]
Fix Win debug build after r203749.

* WebView.cpp:

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

3 years agoUnreviewed. Update OptionsGTK.cmake and NEWS for 2.13.4 release.
carlosgc@webkit.org [Wed, 27 Jul 2016 07:03:37 +0000 (07:03 +0000)]
Unreviewed. Update OptionsGTK.cmake and NEWS for 2.13.4 release.

.:

* Source/cmake/OptionsGTK.cmake: Bump version numbers.

Source/WebKit2:

* gtk/NEWS: Add release notes for 2.13.4.

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

3 years ago[Fetch API] Response constructor should be able to take a ReadableStream as body
commit-queue@webkit.org [Wed, 27 Jul 2016 06:38:15 +0000 (06:38 +0000)]
[Fetch API] Response constructor should be able to take a ReadableStream as body
https://bugs.webkit.org/show_bug.cgi?id=159804

Patch by Youenn Fablet <youenn@apple.com> on 2016-07-26
Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

* web-platform-tests/fetch/api/response/response-consume-empty-expected.txt:
* web-platform-tests/fetch/api/response/response-consume-expected.txt:
* web-platform-tests/fetch/api/response/response-consume.html: Updating test to exercice Response coonstructor with a ReadableStream.

Source/WebCore:

Covered by existing and updated tests.

Introduced FetchBodyConsumer to encapsulate the code responsible to adapt FetchBody internal data to the requests made by user scripts.
This refactoring eases the handling of internal data coming from ReadableStream.

FetchLoader is now delegating conversion from the data to its m_consumer field.
If m_consumer is null, FetchLoader calls FetchLoaderClient::didReceiveData (streaming reception mode).
Clients of FetchLoader needs to pass a FetchBodyConsumer to the FetchLoader to do the data adaptation at loader creation time.

Added support for body data passed as a ReadableStream to Response.
This requires to set @body internal slot of the Response object in the constructor initialization JS built-in.

To actually use that data, Body accessors are also implemented as JS built-in for Response.
Since there is no need to do so for Request, FetchResponse is no longer marked as implementing FetchBody but all
FetchBody IDL description is inlined in FetchResponse.idl.

For each body accessor (arrayBuffer, blob, json, text), the corresponding JS built-in checks whether @body internal slot is set.
If that is not the case, regular handling is done through a new private method called @consume.
If @body internal slot is set, chunks are pumped from the ReadableStream using ReadableStream internal built-ins functions.
Data handling is done in C++ through the private methods @startConsumingStream, @consumeChunk and @finishConsumingStream.

To support cloning of Response with bodies, clone method is also implemented as a JS built-in.
Main clone is done through @cloneFoJS private method implemented in C++.
JS built-in clone code does the teeing of the ReadableStream using ReadableStream JS built-in internal functions.

Introducing a new ReadableStream type for FetchBody to cope with body being stored in a ReadableStream.

Introducing a new Loaded type for FetchBody to cope with body being stored in the FetchBodyConsumer owned by FetchBody.
This allows removing the conversion of data to JSC::ArrayBuffer which was done by defaut at the end of Fetch loading if user script did not request data before.
At the end of a load, the data remains in FetchBodyConsumer and the body is marked as Loaded.
If the user wants to get the data after data finished being loaded, FetchBodyConsumer will do the required conversions.

Introducing DeferredWrapper::resolveWithNewValue to handle the case of resolving promises with new objects.
This allows directly using toJSNewlyCreated instead of toJS.

* CMakeLists.txt: Adding FetchBodyConsumer.cpp. Removing WebCoreJSBuiltins.cpp from CMake list as it is not needed.
* Modules/fetch/FetchBody.cpp: Moving data adaptation code to FetchBodyConsumer.
(WebCore::FetchBody::extract):
(WebCore::FetchBody::arrayBuffer):
(WebCore::FetchBody::blob): Setting contentType in FetchBodyConsumer to handle proper creation of blob.
(WebCore::FetchBody::json):
(WebCore::FetchBody::text):
(WebCore::FetchBody::consume): Refactoring and added case of Loaded bodies.
(WebCore::FetchBody::consumeAsStream): Ditto.
(WebCore::FetchBody::consumeArrayBuffer):
(WebCore::FetchBody::consumeText):
(WebCore::FetchBody::consumeBlob):
(WebCore::FetchBody::loadingFailed):
(WebCore::FetchBody::loadingSucceeded):
(WebCore::FetchBody::loadingType): Deleted.
(WebCore::blobFromArrayBuffer): Deleted.
(WebCore::FetchBody::fulfillTextPromise): Deleted.
(WebCore::FetchBody::loadedAsArrayBuffer): Deleted.
(WebCore::FetchBody::loadedAsText): Deleted.
* Modules/fetch/FetchBody.h:
(WebCore::FetchBody::consumer):
* Modules/fetch/FetchBodyConsumer.cpp: Added, responsible of data adaptation.
(WebCore::blobFromData):
(WebCore::FetchBodyConsumer::resolveWithData):
(WebCore::FetchBodyConsumer::resolve):
(WebCore::FetchBodyConsumer::append):
(WebCore::FetchBodyConsumer::takeData):
(WebCore::FetchBodyConsumer::takeAsArrayBuffer):
(WebCore::FetchBodyConsumer::takeAsBlob):
(WebCore::FetchBodyConsumer::takeAsText):
* Modules/fetch/FetchBodyConsumer.h: Added.
(WebCore::FetchBodyConsumer::FetchBodyConsumer):
(WebCore::FetchBodyConsumer::setContentType):
(WebCore::FetchBodyConsumer::setType):
(WebCore::FetchBodyConsumer::type):
(WebCore::FetchBodyConsumer::clean):
(WebCore::FetchBodyConsumer::hasData):
* Modules/fetch/FetchBodyOwner.cpp:
(WebCore::FetchBodyOwner::loadBlob):
(WebCore::FetchBodyOwner::blobLoadingSucceeded):
(WebCore::FetchBodyOwner::loadedBlobAsText): Deleted.
* Modules/fetch/FetchBodyOwner.h:
(WebCore::FetchBodyOwner::loadedBlobAsArrayBuffer): Deleted.
* Modules/fetch/FetchInternals.js:
(consumeStream): Pump ReadableStream data and send it to FetchResponse to be converted according user need.
* Modules/fetch/FetchLoader.cpp:
(WebCore::FetchLoader::FetchLoader): FetchLoader is simplified as it has two nodes: consumer mode in which case
data is sent to the consumer and no-consumer mode in which case data is passed to loader client. The second mode
is used to conveyy data to ReadableStream source.
(WebCore::FetchLoader::stop):
(WebCore::FetchLoader::startStreaming):
(WebCore::FetchLoader::didReceiveData):
(WebCore::FetchLoader::didFinishLoading): Deleted.
* Modules/fetch/FetchLoader.h:
* Modules/fetch/FetchLoaderClient.h:
(WebCore::FetchLoaderClient::didFinishLoadingAsText): Deleted.
(WebCore::FetchLoaderClient::didFinishLoadingAsArrayBuffer): Deleted.
* Modules/fetch/FetchResponse.cpp:
(WebCore::FetchResponse::cloneForJS):
(WebCore::FetchResponse::BodyLoader::didSucceed):
(WebCore::FetchResponse::BodyLoader::start):
(WebCore::FetchResponse::consume): Introduced to consume data stored in body and not in ReadableStream.
(WebCore::FetchResponse::startConsumingStream): Introduced to start process of consuming data stored in the ReadableStream.
(WebCore::FetchResponse::consumeChunk): Reception of ReadableStream data.
(WebCore::FetchResponse::finishConsumingStream): Doing the final conversion.
(WebCore::FetchResponse::clone): Deleted.
(WebCore::FetchResponse::BodyLoader::didFinishLoadingAsArrayBuffer): Deleted.
* Modules/fetch/FetchResponse.h:
* Modules/fetch/FetchResponse.idl: Inlining of FetchBody methods/attributes and adding private methods.
* Modules/fetch/FetchResponse.js:
(initializeFetchResponse):
(clone):
(arrayBuffer):
(blob):
(formData):
(json):
(text):
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/JSDOMPromise.h:
(WebCore::DeferredWrapper::resolveWithNewValue):
* bindings/js/WebCoreBuiltinNames.h:

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

3 years agoJS Built-ins should throw this-error messages consistently with binding generated...
commit-queue@webkit.org [Wed, 27 Jul 2016 06:37:49 +0000 (06:37 +0000)]
JS Built-ins should throw this-error messages consistently with binding generated code
https://bugs.webkit.org/show_bug.cgi?id=160191

Patch by Youenn Fablet <youennf@gmail.com> on 2016-07-26
Reviewed by Darin Adler.

Source/WebCore:

Introducing @makeThisTypeError and @makeGetterTypeError to create TypeError objects with a consistent error message.
Making use of these functions in streams API and fetch API related built-in code.

Refactored JSDOMBinding.cpp code by adding makeThisTypeErrorMessage and makeGetterTypeErrorMessage helper routines
These routines are used by both new built-in functions as well as binding generated code helper routine.

Tests: fetch/fetch-error-messages.html
       streams/readable-stream-error-messages.html

* Modules/fetch/FetchResponse.js:
(body): Adding an explicit check so that the error message is right. The previous error message was related to the call of Response.@isDisturbed.
* Modules/streams/ReadableStream.js:
(cancel):
(getReader):
(pipeTo):
(tee):
(locked):
* Modules/streams/ReadableStreamController.js:
(enqueue):
(error):
(close):
(desiredSize):
* Modules/streams/ReadableStreamReader.js:
(cancel):
(read):
(releaseLock):
(closed):
* bindings/js/JSDOMBinding.cpp:
(WebCore::makeGetterTypeErrorMessage):
(WebCore::throwGetterTypeError):
(WebCore::makeThisTypeErrorMessage):
(WebCore::throwThisTypeError):
(WebCore::throwSequenceTypeError): Deleted.
(WebCore::throwSetterTypeError): Deleted.
* bindings/js/JSDOMBinding.h:
* bindings/js/JSDOMGlobalObject.cpp:
(WebCore::makeThisTypeErrorForBuiltins):
(WebCore::makeGetterTypeErrorForBuiltins):
(WebCore::JSDOMGlobalObject::addBuiltinGlobals):
* bindings/js/WebCoreBuiltinNames.h:

LayoutTests:

* fetch/fetch-error-messages-expected.txt: Added.
* fetch/fetch-error-messages.html: Added.
* streams/readable-stream-error-messages-expected.txt: Added.
* streams/readable-stream-error-messages.html: Added.

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

3 years agoUnreviewed. Fix GTK+ distcheck build.
carlosgc@webkit.org [Wed, 27 Jul 2016 06:35:30 +0000 (06:35 +0000)]
Unreviewed. Fix GTK+ distcheck build.

wtf/spi/darwin/dyldSPI.h is not included in GTK+ release tarballs.

* html/HTMLObjectElement.cpp: Include wtf/spi/darwin/dyldSPI.h only for iOS.
* html/MediaElementSession.cpp: Ditto.

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

3 years ago[iOS] SF-Heavy is inaccessible by web content
mmaxfield@apple.com [Wed, 27 Jul 2016 06:20:47 +0000 (06:20 +0000)]
[iOS] SF-Heavy is inaccessible by web content
https://bugs.webkit.org/show_bug.cgi?id=160186
<rdar://problem/27434423>

Reviewed by Dean Jackson.

Source/WebCore:

Once we create the system font, we need to modify it with the appropriate weight.
This is because the CoreText API we use to get the system font on iOS does not
let us choose the exact weight we want.

Test: fast/text/system-font-weight.html

* platform/graphics/ios/FontCacheIOS.mm:
(WebCore::baseSystemFontDescriptor):
(WebCore::systemFontModificationAttributes):
(WebCore::systemFontDescriptor):
(WebCore::platformFontWithFamilySpecialCase):
* platform/spi/cocoa/CoreTextSPI.h:

LayoutTests:

* platform/ios-simulator/TestExpectations: system-font-weight-italic.html
is expected to fail on iOS 9.
* fast/text/system-font-weight-italic-expected.txt: Added.
* fast/text/system-font-weight-italic.html: Added.
* fast/text/system-font-weight-expected.txt: Added.
* fast/text/system-font-weight.html: Added.

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

3 years agoSkip failing JSC test regress/script-tests/bigswitch-indirect-symbol.js
ryanhaddad@apple.com [Wed, 27 Jul 2016 05:31:37 +0000 (05:31 +0000)]
Skip failing JSC test regress/script-tests/bigswitch-indirect-symbol.js
https://bugs.webkit.org/show_bug.cgi?id=160035

Unreviewed test gardening.

* js/regress/script-tests/bigswitch-indirect-symbol.js:

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

3 years ago[GTK] ASSERTION FAILED: !m_adoptionIsRequired when Inspector Server is connected
commit-queue@webkit.org [Wed, 27 Jul 2016 05:20:04 +0000 (05:20 +0000)]
[GTK] ASSERTION FAILED: !m_adoptionIsRequired when Inspector Server is connected
https://bugs.webkit.org/show_bug.cgi?id=160229

Patch by Fujii Hironori <Hironori.Fujii@sony.com> on 2016-07-26
Reviewed by Carlos Garcia Campos.

An assertion fails because refcount of SocketStreamHandle is
incremented before adoptRef, in the constructor of
SocketStreamHandle.  The constructor of SocketStreamHandle needs
to increment recount because it passes this pointer to libsoup.

* platform/network/soup/SocketStreamHandleSoup.cpp:
(WebCore::SocketStreamHandle::SocketStreamHandle): Do
relaxAdoptionRequirement() as well as the another constructor.

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

3 years agoMove 'dir' attribute from HTMLDocument to Document
cdumez@apple.com [Wed, 27 Jul 2016 04:27:12 +0000 (04:27 +0000)]
Move 'dir' attribute from HTMLDocument to Document
https://bugs.webkit.org/show_bug.cgi?id=160231

Reviewed by Sam Weinig.

LayoutTests/imported/w3c:

Rebaseline W3C test now that more checks are passing.

* web-platform-tests/html/dom/interfaces-expected.txt:

Source/WebCore:

Move 'dir' attribute from HTMLDocument to Document to match the
specification:
- https://html.spec.whatwg.org/multipage/dom.html#document

Both Firefox and Chrome have 'dir' on Document already.

No new tests, rebaselined existing test.

* dom/Document.cpp:
(WebCore::Document::dir):
(WebCore::Document::setDir):
* dom/Document.h:
* dom/Document.idl:
* html/HTMLDocument.cpp:
(WebCore::HTMLDocument::dir): Deleted.
(WebCore::HTMLDocument::setDir): Deleted.
* html/HTMLDocument.h:
* html/HTMLDocument.idl:

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

3 years agoSecond parameter to History.pushState() / replaceState() should be mandatory
cdumez@apple.com [Wed, 27 Jul 2016 04:12:11 +0000 (04:12 +0000)]
Second parameter to History.pushState() / replaceState() should be mandatory
https://bugs.webkit.org/show_bug.cgi?id=160230

Reviewed by Sam Weinig.

LayoutTests/imported/w3c:

Rebaseline W3C test now that more checks are passing.

* web-platform-tests/html/dom/interfaces-expected.txt:

Source/WebCore:

Second parameter to History.pushState() / replaceState() should be mandatory:
- https://html.spec.whatwg.org/multipage/browsers.html#history-3

Firefox and Chrome agree with the specification.

No new tests, rebaselined existing test.

* bindings/js/JSHistoryCustom.cpp:
(WebCore::JSHistory::pushState):
(WebCore::JSHistory::replaceState):
* page/History.idl:

LayoutTests:

* fast/history/state-api-parameters.html: Added.
* fast/history/state-api-parameters-expected.txt: Added.
Add layout test coverage.

* fast/history/replacestate-nocrash.html:
* fast/loader/stateobjects/popstate-fires-with-page-cache.html:
Update existing tests to reflect behavior change.

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

3 years agoAlign Node.isEqualNode() with the specification
cdumez@apple.com [Wed, 27 Jul 2016 03:42:30 +0000 (03:42 +0000)]
Align Node.isEqualNode() with the specification
https://bugs.webkit.org/show_bug.cgi?id=160224

Reviewed by Sam Weinig.

LayoutTests/imported/w3c:

Rebaseline W3C test now that one more check is passing. We are now
passing all the checks in this test like Firefox and Chrome.

* web-platform-tests/dom/nodes/Node-isEqualNode-expected.txt:

Source/WebCore:

Align our implementation for Node.isEqualNode() to match more closely
the text of the specification:
- https://dom.spec.whatwg.org/#dom-node-isequalnode
- https://dom.spec.whatwg.org/#concept-node-equals

This also fixes a bug where isEqualNode() would sometimes return false
wrongly for elements because we were comparing the value returned by
nodeName() which returns the tagName of elements. The issue was that
the tagName's case may differ depending on the element being in an
HTMLDocument or not. We now compare Element::tagQName() instead which
ends up comparing namespace / namespace prefix and localName, as per
the specification. The new behavior matches Firefox and Chrome and
helps us pass an extra W3C test.

No new tests, rebaselined existing test.

* dom/Node.cpp:
(WebCore::Node::isEqualNode):

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

3 years agorollout r203666
sbarati@apple.com [Wed, 27 Jul 2016 01:23:53 +0000 (01:23 +0000)]
rollout r203666
https://bugs.webkit.org/show_bug.cgi?id=160226

Unreviewed rollout.

* b3/B3BasicBlock.h:
(JSC::B3::BasicBlock::successorBlock):
* b3/B3LowerToAir.cpp:
(JSC::B3::Air::LowerToAir::createGenericCompare):
* b3/B3LowerToAir.h:
* b3/air/AirArg.cpp:
(JSC::B3::Air::Arg::isRepresentableAs):
(JSC::B3::Air::Arg::usesTmp):
* b3/air/AirArg.h:
(JSC::B3::Air::Arg::isRepresentableAs):
(JSC::B3::Air::Arg::asNumber):
(JSC::B3::Air::Arg::castToType): Deleted.
* b3/air/AirCode.h:
(JSC::B3::Air::Code::size):
(JSC::B3::Air::Code::at):
* b3/air/AirOpcode.opcodes:
* b3/air/AirValidate.h:
* b3/air/opcode_generator.rb:
* b3/testb3.cpp:
(JSC::B3::compileAndRun):
(JSC::B3::testSomeEarlyRegister):
(JSC::B3::zero):
(JSC::B3::run):
(JSC::B3::lowerToAirForTesting): Deleted.
(JSC::B3::testBranchBitAndImmFusion): Deleted.

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

3 years agoMarking inspector/memory/tracking.html as flaky on El Capitan Debug WK1
ryanhaddad@apple.com [Wed, 27 Jul 2016 00:45:47 +0000 (00:45 +0000)]
Marking inspector/memory/tracking.html as flaky on El Capitan Debug WK1
https://bugs.webkit.org/show_bug.cgi?id=160227

Unreviewed test gardening.

* platform/mac-wk1/TestExpectations:

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

3 years agoFix the Windows debug build.
simon.fraser@apple.com [Wed, 27 Jul 2016 00:44:01 +0000 (00:44 +0000)]
Fix the Windows debug build.

WebResourceLoadScheduler's logging was a holdover from it being in WebCore,
and prior to r203749 WebKit was actually using a WebCore log channel.

For some reason this doesn't build on Windows debug, so just remove
this logging for now.

Source/WebKit:

* WebCoreSupport/WebResourceLoadScheduler.cpp:
(WebResourceLoadScheduler::scheduleLoad): Deleted.
(WebResourceLoadScheduler::servePendingRequests): Deleted.
(WebResourceLoadScheduler::scheduleServePendingRequests): Deleted.
(WebResourceLoadScheduler::requestTimerFired): Deleted.
(WebResourceLoadScheduler::HostInformation::addLoadInProgress): Deleted.

Source/WebKit/mac:

* Misc/WebKitLogging.h:

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

3 years agoFix tests after r203743.
achristensen@apple.com [Tue, 26 Jul 2016 23:40:35 +0000 (23:40 +0000)]
Fix tests after r203743.
https://bugs.webkit.org/show_bug.cgi?id=156947

* WebKitTestRunner/TestController.cpp:
(WTR::TestController::resetStateToConsistentValues):
Reset the new boolean m_rejectsProtectionSpaceAndContinueForAuthenticationChallenges.

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

3 years agoSort the project files.
simon.fraser@apple.com [Tue, 26 Jul 2016 23:39:39 +0000 (23:39 +0000)]
Sort the project files.

Source/WebCore:

* WebCore.xcodeproj/project.pbxproj:

Source/WebKit:

* WebKit.xcodeproj/project.pbxproj:

Source/WebKit2:

* WebKit2.xcodeproj/project.pbxproj:

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

3 years agoAlign CSSKeyframesRule with the specification
cdumez@apple.com [Tue, 26 Jul 2016 23:37:52 +0000 (23:37 +0000)]
Align CSSKeyframesRule with the specification
https://bugs.webkit.org/show_bug.cgi?id=160219

Reviewed by Darin Adler.

Source/WebCore:

Align CSSKeyframesRule with the specification:
- https://drafts.csswg.org/css-animations/#interface-csskeyframesrule

In particular, the parameter to insertRule() / appendRule() /
deleteRule() / findRule() should be mandatory. Both Firefox and Chrome
agree with the specification here.

Also, the CSSKeyframesRule.name attribute should not be nullable.
Chrome agrees with the specification. However, Firefox, has the
attribute nullable. This patch aligns our behavior with Chrome and
the specification.

Tests: animations/CSSKeyframesRule-name-null.html
       animations/CSSKeyframesRule-parameters.html

* css/CSSKeyframesRule.h:
(WebCore::StyleRuleKeyframes::name):
(WebCore::StyleRuleKeyframes::setName):
* css/CSSKeyframesRule.idl:

LayoutTests:

Add layout test coverage.

* animations/CSSKeyframesRule-name-null-expected.txt: Added.
* animations/CSSKeyframesRule-name-null.html: Added.
* animations/CSSKeyframesRule-parameters-expected.txt: Added.
* animations/CSSKeyframesRule-parameters.html: Added.

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

3 years ago[iPhone] Playing a video on tudou.com plays only sound, no video
mmaxfield@apple.com [Tue, 26 Jul 2016 23:36:52 +0000 (23:36 +0000)]
[iPhone] Playing a video on tudou.com plays only sound, no video
https://bugs.webkit.org/show_bug.cgi?id=160178
<rdar://problem/27535468>

Source/WebCore:

Reviewed by Eric Carlson and Dan Bernstein.

This patch re-implements r203520 in a much simpler way which doesn't involve a new SPI.
The biggest problem with r203520 is that it make it impossible for a WKWebView to match
MobileSafari's behavior. Instead of adding this new SPI, a simple version check should
be used to keep old apps working.

The new behavior is characterized by the following table:

                                     |                iOS                 |      Non-iOS
=============================================================================================
requiresPlayInlineAttribute == true  | Old app: honor -webkit-playsinline | honor playsinline
                                     | New app: honor playsinline         | honor playsinline
---------------------------------------------------------------------------------------------
requiresPlayInlineAttribute == false | Always inline                      | Always inline

Specifically, this patch reverts r203545 which is the commit which actually removes
the old SPI. As soon as Safari is migrated back to this old SPI, I'll remove the two
new SPIs added in r203520.

Tests: media/video-playsinline.html
       media/video-webkit-playsinline.html

* html/MediaElementSession.cpp:
(WebCore::MediaElementSession::requiresFullscreenForVideoPlayback):
* page/Settings.cpp:
* page/Settings.in:
* testing/InternalSettings.cpp:
(WebCore::InternalSettings::Backup::Backup):
(WebCore::InternalSettings::Backup::restoreTo):
(WebCore::InternalSettings::setInlineMediaPlaybackRequiresPlaysInlineAttribute):
* testing/InternalSettings.h:
* testing/InternalSettings.idl:

Source/WebKit/mac:

Reviewed by Eric Carlson and Dan Bernstein.

* WebView/WebPreferenceKeysPrivate.h:
* WebView/WebPreferences.mm:
(+[WebPreferences initialize]):
(-[WebPreferences inlineMediaPlaybackRequiresPlaysInlineAttribute]):
(-[WebPreferences setInlineMediaPlaybackRequiresPlaysInlineAttribute:]):
* WebView/WebPreferencesPrivate.h:
* WebView/WebView.mm:
(-[WebView _preferencesChanged:]):

Source/WebKit2:

Reviewed by Eric Carlson and Dan Bernstein.

* Shared/WebPreferencesDefinitions.h:
* UIProcess/API/C/WKPreferences.cpp:
(WKPreferencesSetInlineMediaPlaybackRequiresPlaysInlineAttribute):
(WKPreferencesGetInlineMediaPlaybackRequiresPlaysInlineAttribute):
* UIProcess/API/C/WKPreferencesRefPrivate.h:
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _initializeWithConfiguration:]):
* UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
(-[WKWebViewConfiguration init]):
(-[WKWebViewConfiguration copyWithZone:]):
(-[WKWebViewConfiguration _inlineMediaPlaybackRequiresPlaysInlineAttribute]):
(-[WKWebViewConfiguration _setInlineMediaPlaybackRequiresPlaysInlineAttribute:]):
* UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::updatePreferences):

Tools:

Reviewed by Dan Bernstein.

* DumpRenderTree/mac/DumpRenderTree.mm:
(setDefaultsToConsistentValuesForTesting):
* TestWebKitAPI/Tests/WebKit2Cocoa/RequiresUserActionForPlayback.mm:
(RequiresUserActionForPlaybackTest::SetUp):
* WebKitTestRunner/TestController.cpp:
(WTR::TestController::resetPreferencesToConsistentValues):
* WebKitTestRunner/cocoa/TestControllerCocoa.mm:
(WTR::initializeWebViewConfiguration):

LayoutTests:

Reviewed by Eric Carlson and Dan Bernstein.

* media/video-playsinline-expected.txt:
* media/video-playsinline.html:
* media/video-webkit-playsinline-expected.txt: Added.
* media/video-webkit-playsinline.html: Added.

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

3 years agoMove RenderView::shouldDisableLayoutStateForSubtree to SubtreeLayoutStateMaintainer.
zalan@apple.com [Tue, 26 Jul 2016 23:33:58 +0000 (23:33 +0000)]
Move RenderView::shouldDisableLayoutStateForSubtree to SubtreeLayoutStateMaintainer.
https://bugs.webkit.org/show_bug.cgi?id=160215

Reviewed by Darin Adler and Simon Fraser.

No change in functionality.

* page/FrameView.cpp:
(WebCore::SubtreeLayoutStateMaintainer::SubtreeLayoutStateMaintainer):
* rendering/RenderView.cpp:
(WebCore::RenderView::shouldDisableLayoutStateForSubtree):
* rendering/RenderView.h:

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

3 years agoRemove unused DownloadAuthenticationClient
commit-queue@webkit.org [Tue, 26 Jul 2016 23:31:43 +0000 (23:31 +0000)]
Remove unused DownloadAuthenticationClient
https://bugs.webkit.org/show_bug.cgi?id=160220

Patch by Alex Christensen <achristensen@webkit.org> on 2016-07-26
Reviewed by Darin Adler.

* CMakeLists.txt:
* NetworkProcess/Downloads/Download.cpp:
* NetworkProcess/Downloads/Download.h:
* NetworkProcess/Downloads/DownloadAuthenticationClient.cpp: Removed.
* NetworkProcess/Downloads/DownloadAuthenticationClient.h: Removed.
* WebKit2.xcodeproj/project.pbxproj:

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

3 years agoAllow LOG macros to be used outside the namespace, and other logging cleanup
simon.fraser@apple.com [Tue, 26 Jul 2016 23:30:01 +0000 (23:30 +0000)]
Allow LOG macros to be used outside the namespace, and other logging cleanup
https://bugs.webkit.org/show_bug.cgi?id=160216

Reviewed by Anders Carlsson.
Source/WebCore:

Fix some issues with the LOG macros.

First, they were not usable outside the WebKit namespace in WebKit2 code. Fix by moving
its log channels outside of the namespace (they are protected by a unique prefix anyway).

Second, allow LOG_WITH_STREAM to be used in WebKit2 by moving that and a helper macro
into LogMacros.h, which is exported from WebCore as a private header.

Third, split the Logging.h header into two. Logging.h remains for framework-internal
log channels and log macros. Add LogInitialization.h which is external, and used to
initialize the channels.

Finally unify "initializeLogChannels" and "initializeLoggingChannels" terminology everywhere.

* WebCore.xcodeproj/project.pbxproj:
* platform/LogInitialization.h: Added.
* platform/LogMacros.h: Added.
* platform/Logging.cpp:
(WebCore::initializeLogChannelsIfNecessary):
(WebCore::initializeLoggingChannelsIfNecessary): Deleted.
* platform/Logging.h:
* testing/js/WebCoreTestSupport.cpp:
(WebCoreTestSupport::initializeLogChannelsIfNecessary):
(WebCoreTestSupport::initializeLoggingChannelsIfNecessary): Deleted.
* testing/js/WebCoreTestSupport.h:

Source/WebKit:

Fix some issues with the LOG macros.

First, they were not usable outside the WebKit namespace in WebKit2 code. Fix by moving
its log channels outside of the namespace (they are protected by a unique prefix anyway).

Second, allow LOG_WITH_STREAM to be used in WebKit2 by moving that and a helper macro
into LogMacros.h, which is exported from WebCore as a private header.

Third, split the Logging.h header into two. Logging.h remains for framework-internal
log channels and log macros. Add LogInitialization.h which is external, and used to
initialize the channels.

Finally unify "initializeLogChannels" and "initializeLoggingChannels" terminology everywhere.

* WebCoreSupport/WebResourceLoadScheduler.cpp:

Source/WebKit/mac:

Fix some issues with the LOG macros.

First, they were not usable outside the WebKit namespace in WebKit2 code. Fix by moving
its log channels outside of the namespace (they are protected by a unique prefix anyway).

Second, allow LOG_WITH_STREAM to be used in WebKit2 by moving that and a helper macro
into LogMacros.h, which is exported from WebCore as a private header.

Third, split the Logging.h header into two. Logging.h remains for framework-internal
log channels and log macros. Add LogInitialization.h which is external, and used to
initialize the channels.

Finally unify "initializeLogChannels" and "initializeLoggingChannels" terminology everywhere.

* Misc/WebKitLogging.h:
* Misc/WebKitLogging.m:
* WebView/WebView.mm:
(-[WebView _commonInitializationWithFrameName:groupName:]):

Source/WebKit/win:

Fix some issues with the LOG macros.

First, they were not usable outside the WebKit namespace in WebKit2 code. Fix by moving
its log channels outside of the namespace (they are protected by a unique prefix anyway).

Second, allow LOG_WITH_STREAM to be used in WebKit2 by moving that and a helper macro
into LogMacros.h, which is exported from WebCore as a private header.

Third, split the Logging.h header into two. Logging.h remains for framework-internal
log channels and log macros. Add LogInitialization.h which is external, and used to
initialize the channels.

Finally unify "initializeLogChannels" and "initializeLoggingChannels" terminology everywhere.

* WebKitLogging.cpp:
* WebKitLogging.h:
* WebView.cpp:
(WebView::initWithFrame):

Source/WebKit2:

Fix some issues with the LOG macros.

First, they were not usable outside the WebKit namespace in WebKit2 code. Fix by moving
its log channels outside of the namespace (they are protected by a unique prefix anyway).

Second, allow LOG_WITH_STREAM to be used in WebKit2 by moving that and a helper macro
into LogMacros.h, which is exported from WebCore as a private header.

Third, split the Logging.h header into two. Logging.h remains for framework-internal
log channels and log macros. Add LogInitialization.h which is external, and used to
initialize the channels.

Finally unify "initializeLogChannels" and "initializeLoggingChannels" terminology everywhere.

* NetworkProcess/NetworkProcess.cpp:
* Platform/LogInitialization.h: Copied from Source/WebKit2/Platform/foundation/LoggingFoundation.mm.
* Platform/Logging.cpp:
(WebKit::initializeLogChannelsIfNecessary):
* Platform/Logging.h:
* Platform/foundation/LoggingFoundation.mm:
* Shared/WebKit2Initialize.cpp:
(WebKit::InitializeWebKit2):
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _updateContentRectsWithState:]):
(-[WKWebView _navigationGestureDidBegin]):
* UIProcess/WebProcessPool.cpp:
(WebKit::m_hiddenPageThrottlingTimer):
* WebKit2.xcodeproj/project.pbxproj:

Tools:

initializeLoggingChannelsIfNecessary -> initializeLogChannelsIfNecessary

* DumpRenderTree/TestRunner.cpp:
* DumpRenderTree/mac/DumpRenderTree.mm:
(resetWebViewToConsistentStateBeforeTesting):

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

3 years agoREGRESSION: Tooltip for analysis tasks doesn't show up on charts
rniwa@webkit.org [Tue, 26 Jul 2016 23:15:14 +0000 (23:15 +0000)]
REGRESSION: Tooltip for analysis tasks doesn't show up on charts
https://bugs.webkit.org/show_bug.cgi?id=160221

Rubber-stamped by Chris Dumez.

The bug was caused by ChartPaneBase resetting annotation bars every time the current point has moved.
Avoid doing this in ChartPaneBase's _renderAnnotations().

* public/v3/components/chart-pane-base.js:
(ChartPaneBase):
(ChartPaneBase.prototype.fetchAnalysisTasks):
(ChartPaneBase.prototype._renderAnnotations):

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

3 years ago[JSC] Object.getOwnPropertyDescriptors should not add undefined props to result
caitp@igalia.com [Tue, 26 Jul 2016 23:06:34 +0000 (23:06 +0000)]
[JSC] Object.getOwnPropertyDescriptors should not add undefined props to result
https://bugs.webkit.org/show_bug.cgi?id=159409

Reviewed by Geoffrey Garen.

* runtime/ObjectConstructor.cpp:
(JSC::objectConstructorGetOwnPropertyDescriptors):
* tests/es6.yaml:
* tests/es6/Object_static_methods_Object.getOwnPropertyDescriptors-proxy.js:
(testPropertiesIndexedSetterOnPrototypeThrows.set get var): Deleted.
(testPropertiesIndexedSetterOnPrototypeThrows): Deleted.
* tests/stress/Object_static_methods_Object.getOwnPropertyDescriptors-proxy.js: Renamed from Source/JavaScriptCore/tests/es6/Object_static_methods_Object.getOwnPropertyDescriptors-proxy.js.
* tests/stress/Object_static_methods_Object.getOwnPropertyDescriptors.js: Renamed from Source/JavaScriptCore/tests/es6/Object_static_methods_Object.getOwnPropertyDescriptors.js.

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

3 years agoonpaymentauthorized callback not received when authorizing for a second time
andersca@apple.com [Tue, 26 Jul 2016 22:56:54 +0000 (22:56 +0000)]
onpaymentauthorized callback not received when authorizing for a second time
https://bugs.webkit.org/show_bug.cgi?id=160218
rdar://problem/27527151

Reviewed by Tim Horton.

Only null out the active session if the status is a final state status.

* Modules/applepay/PaymentCoordinator.cpp:
(WebCore::PaymentCoordinator::completePaymentSession):

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

3 years agoRange.prototype.compareBoundaryPoints.length should be 2
cdumez@apple.com [Tue, 26 Jul 2016 22:42:50 +0000 (22:42 +0000)]
Range.prototype.compareBoundaryPoints.length should be 2
https://bugs.webkit.org/show_bug.cgi?id=160217

Reviewed by Sam Weinig.

LayoutTests/imported/w3c:

Rebaseline W3C test now that one more check is passing.

* web-platform-tests/dom/interfaces-expected.txt:

Source/WebCore:

Range.prototype.compareBoundaryPoints.length:
- https://dom.spec.whatwg.org/#interface-range

We had a bug in our IDL which caused length to be 0 even though
both parameters were effectively mandatory.

No new tests, rebaselined existing test.

* dom/Range.idl:

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

3 years agoAlign CSSStyleDeclaration with the specification
cdumez@apple.com [Tue, 26 Jul 2016 22:38:13 +0000 (22:38 +0000)]
Align CSSStyleDeclaration with the specification
https://bugs.webkit.org/show_bug.cgi?id=160214

Reviewed by Darin Adler.

Source/WebCore:

Align CSSStyleDeclaration with the specification:
- https://drafts.csswg.org/cssom/#the-cssstyledeclaration-interface

In particular, the parameters to removeProperty() / item() and
getPropertyPriority() should be mandatory.

Firefox and Chrome match the specification.

Tests: fast/css/CSSStyleDeclaration-cssText-null.html
       fast/css/CSSStyleDeclaration-parameters.html

* bindings/js/JSCSSStyleDeclarationCustom.cpp:
(WebCore::JSCSSStyleDeclaration::getPropertyCSSValue):
* css/CSSStyleDeclaration.idl:

LayoutTests:

* fast/css/CSSStyleDeclaration-cssText-null-expected.txt: Added.
* fast/css/CSSStyleDeclaration-cssText-null.html: Added.
Add layout test coverage for setting cssText to null. This test
passes in WebKit, Firefox and Chrome, with or without my change.
Our IDL wrongly reported the cssText attribute as nullable but
WebKit was already behaving correctly.

* fast/css/CSSStyleDeclaration-parameters-expected.txt: Added.
* fast/css/CSSStyleDeclaration-parameters.html: Added.
Add testing for omitting CSSStyleDeclaration API parameters, to
make sure they are mandatory. This test passes in Firefox and
Chrome.

* fast/dom/non-numeric-values-numeric-parameters-expected.txt:
* fast/dom/script-tests/non-numeric-values-numeric-parameters.js:
Update existing test to reflect behavior change.

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

3 years agoNetworking process crash due to missing -[WebCoreAuthenticationClientAsChallengeSende...
ddkilzer@apple.com [Tue, 26 Jul 2016 22:31:25 +0000 (22:31 +0000)]
Networking process crash due to missing -[WebCoreAuthenticationClientAsChallengeSender performDefaultHandlingForAuthenticationChallenge:] implementation
https://bugs.webkit.org/show_bug.cgi?id=156947
<rdar://problem/23325160>

Reviewed by Alex Christensen.

Source/WebCore:

Test: http/tests/xmlhttprequest/auth-reject-protection-space.html

* platform/network/mac/AuthenticationMac.mm:
(-[WebCoreAuthenticationClientAsChallengeSender performDefaultHandlingForAuthenticationChallenge:]): Added.
(-[WebCoreAuthenticationClientAsChallengeSender rejectProtectionSpaceAndContinueWithChallenge:]): Added.

Source/WebKit2:

* UIProcess/API/C/WKAuthenticationDecisionListener.cpp:
(WKAuthenticationDecisionListenerRejectProtectionSpaceAndContinue):
* UIProcess/API/C/WKAuthenticationDecisionListener.h:
Added new SPI for testing corresponding to calling the completion handler of
WKWebView.didReceiveAuthenticationChallenge with NSURLSessionAuthChallengeRejectProtectionSpace.

Tools:

* DumpRenderTree/TestRunner.cpp:
(TestRunner::TestRunner):
(setRejectsProtectionSpaceAndContinueForAuthenticationChallengesCallback):
* DumpRenderTree/TestRunner.h:
(TestRunner::rejectsProtectionSpaceAndContinueForAuthenticationChallenges):
(TestRunner::setRejectsProtectionSpaceAndContinueForAuthenticationChallenges):
* DumpRenderTree/mac/ResourceLoadDelegate.mm:
(-[ResourceLoadDelegate webView:resource:didReceiveAuthenticationChallenge:fromDataSource:]):
* WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
* WebKitTestRunner/InjectedBundle/TestRunner.cpp:
(WTR::TestRunner::queueNonLoadingScript):
(WTR::TestRunner::setRejectsProtectionSpaceAndContinueForAuthenticationChallenges):
* WebKitTestRunner/InjectedBundle/TestRunner.h:
* WebKitTestRunner/TestController.cpp:
(WTR::TestController::didReceiveAuthenticationChallenge):
* WebKitTestRunner/TestController.h:
(WTR::TestController::setRejectsProtectionSpaceAndContinueForAuthenticationChallenges):
* WebKitTestRunner/TestInvocation.cpp:
(WTR::TestInvocation::didReceiveMessageFromInjectedBundle):
Add TestRunner.setRejectsProtectionSpaceAndContinueForAuthenticationChallenges to use for testing.

LayoutTests:

* http/tests/xmlhttprequest/auth-reject-protection-space-expected.txt: Added.
* http/tests/xmlhttprequest/auth-reject-protection-space.html: Added.

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

3 years agocheck-for-exit-time-destructors should be usable outside Xcode
ddkilzer@apple.com [Tue, 26 Jul 2016 22:04:02 +0000 (22:04 +0000)]
check-for-exit-time-destructors should be usable outside Xcode
<https://webkit.org/b/160195>

Reviewed by Darin Adler.

* Scripts/check-for-exit-time-destructors: Update to parse
-h|--help switch, or to take one argument to a binary to check
for exit time destructors on the command-line.  The clang
compiler will find these at compile-time with the
-Wexit-time-destructors switch, but this script will check for
them after-the-fact.

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

3 years agoPayment session does not end if user closes all Safari windows
andersca@apple.com [Tue, 26 Jul 2016 22:03:01 +0000 (22:03 +0000)]
Payment session does not end if user closes all Safari windows
https://bugs.webkit.org/show_bug.cgi?id=160213
rdar://problem/27480873

Reviewed by Tim Horton.

Listen for the NSWindowWillCloseNotification of the sheet window and hide the payment UI when
the sheet window is going to be closed.

* UIProcess/ApplePay/WebPaymentCoordinatorProxy.h:
* UIProcess/ApplePay/mac/WebPaymentCoordinatorProxyMac.mm:
(WebKit::WebPaymentCoordinatorProxy::platformShowPaymentUI):
(WebKit::WebPaymentCoordinatorProxy::hidePaymentUI):

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

3 years agoParameters to CSSStyleSheet.insertRule() / deleteRule() should be mandatory
cdumez@apple.com [Tue, 26 Jul 2016 22:00:20 +0000 (22:00 +0000)]
Parameters to CSSStyleSheet.insertRule() / deleteRule() should be mandatory
https://bugs.webkit.org/show_bug.cgi?id=160210

Reviewed by Darin Adler.

Source/WebCore:

Parameters to CSSStyleSheet.insertRule() / deleteRule() should be mandatory:
- https://drafts.csswg.org/cssom/#cssstylesheet

They are mandatory in Firefox.
They are mandatory in Chrome except for the second parameter of insertRule()
which merely logs a deprecation warning.

This patch aligns our behavior with Chrome to move towards to specification
while limiting the risk of breakage.

Test: fast/css/stylesheet-parameters.html

* css/CSSStyleSheet.cpp:
(WebCore::CSSStyleSheet::deprecatedInsertRule):
* css/CSSStyleSheet.h:
* css/CSSStyleSheet.idl:

LayoutTests:

* fast/css/stylesheet-parameters-expected.txt: Added.
* fast/css/stylesheet-parameters.html: Added.
Add layout test coverage.

* editing/selection/first-letter-selection-crash.html:
* fast/css/counters/asterisk-counter-update-after-layout-crash.html:
* fast/dom/HTMLElement/dynamic-editability-change.html:
* fast/dom/non-numeric-values-numeric-parameters-expected.txt:
* fast/dom/script-tests/non-numeric-values-numeric-parameters.js:
Update existing tests to reflect the behavior change.

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

3 years agoHTMLVideoElement frames do not update on iOS when src is a MediaStream blob
commit-queue@webkit.org [Tue, 26 Jul 2016 21:52:27 +0000 (21:52 +0000)]
HTMLVideoElement frames do not update on iOS when src is a MediaStream blob
https://bugs.webkit.org/show_bug.cgi?id=159833
<rdar://problem/27379487>

Patch by George Ruan <gruan@apple.com> on 2016-07-26
Reviewed by Eric Carlson.

Source/WebCore:

Test: fast/mediastream/MediaStream-video-element-displays-buffer.html

* WebCore.xcodeproj/project.pbxproj:
* platform/cf/CoreMediaSoftLink.cpp: Add CMSampleBufferCreateReadyWithImageBuffer and CMVideoFormatDescriptionCreateForImageBuffer
softlink.
* platform/cf/CoreMediaSoftLink.h: Ditto.
* platform/cocoa/CoreVideoSoftLink.cpp: Add CVPixelBufferCreate, kCVPixelBufferCGBitmapContextCompatibilityKey, and
kCVPixelBufferCGImageCompatibilityKey.
* platform/cocoa/CoreVideoSoftLink.h: Ditto.
* platform/graphics/avfoundation/MediaSampleAVFObjC.h: Change create to return a Ref<T> instead
of RefPtr<T>.
* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.h: Make observer of
MediaStreamTrackPrivate and make MediaPlayer use an AVSampleBufferDisplayLayer instead of CALayer.
* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm: Ditto.
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::~MediaPlayerPrivateMediaStreamAVFObjC): Clean up
observers and AVSampleBufferDisplayLayer.
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::isAvailable): Ensures AVSampleBufferDisplayLayer
is available.
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::enqueueAudioSampleBufferFromTrack): Placeholder.
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::enqueueVideoSampleBufferFromTrack): Responsible
for enqueuing sample buffers to the active video track.
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::ensureLayer): Ensures that an AVSampleBufferDisplayLayer
exists.
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::destroyLayer): Destroys the AVSampleBufferDisplayLayer.
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::platformLayer): Replace CALayer with AVSampleBufferDisplayLayer.
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::currentDisplayMode): Ditto.
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::play): Call updateReadyState as a deferred task.
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::currentReadyState): readyState is bumped to HAVE_ENOUGH_DATA
only when the MediaPlayerPrivateMediaStreamAVFObjC has received a media sample.
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::sampleBufferUpdated): Called from MediaStreamTrackPrivate when a
new SampleBuffer is available.
(WebCore::updateTracksOfType): Manage adding and removing self as observer from tracks.
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::updateTracks): Replace CALayer with AVSampleBufferDisplayLayer
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::acceleratedRenderingStateChanged): Copied from
MediaPlayerPrivateMediaSourceAVFObjC.mm
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::load): Deleted CALayer.
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::updateDisplayMode): Deleted process of updating CALayer.
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::updateIntrinsicSize): Deleted CALayer.
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::createPreviewLayers): Deleted.
* platform/mediastream/MediaStreamPrivate.cpp:
(WebCore::MediaStreamPrivate::updateActiveVideoTrack): Remove redundant check.
* platform/mediastream/MediaStreamTrackPrivate.cpp:
(WebCore::MediaStreamTrackPrivate::sourceHasMoreMediaData): Called from RealtimeMediaSource when a new SampleBuffer
is available.
* platform/mediastream/MediaStreamTrackPrivate.h:
(WebCore::MediaStreamTrackPrivate::Observer::sampleBufferUpdated): Relays to MediaPlayerPrivateMediaStreamAVFObjC that
a new SampleBuffer is available to enqueue to the AVSampleBufferDisplayLayer.
* platform/mediastream/RealtimeMediaSource.cpp:
(WebCore::RealtimeMediaSource::settingsDidChange): Fix grammatical mistake in function name settingsDidChanged().
(WebCore::RealtimeMediaSource::mediaDataUpdated): Relays to all observers that a new SampleBuffer is available.
(WebCore::RealtimeMediaSource::settingsDidChanged): Deleted.
* platform/mediastream/RealtimeMediaSource.h:
* platform/mediastream/mac/AVVideoCaptureSource.mm:
(WebCore::AVVideoCaptureSource::processNewFrame): Calls mediaDataUpdated when a new SampleBuffer is captured.
* platform/mediastream/mac/MockRealtimeVideoSourceMac.h:
* platform/mediastream/mac/MockRealtimeVideoSourceMac.mm:
(WebCore::MockRealtimeVideoSourceMac::CMSampleBufferFromPixelBuffer): Convert CVPixelBuffer to CMSampleBuffer.
(WebCore::MockRealtimeVideoSourceMac::pixelBufferFromCGImage): Convert CGImage to CVPixelBuffer.
(WebCore::MockRealtimeVideoSourceMac::updateSampleBuffer): Creates a CMSampleBuffer from current imageBuffer and
sends the CMSampleBuffer to MediaPlayerPrivateMediaStreamAVFObjC
* platform/mock/MockRealtimeVideoSource.cpp:
(WebCore::MockRealtimeVideoSource::setFrameRate): Fix grammar of settingsDidChanged() to settingsDidChange().
(WebCore::MockRealtimeVideoSource::setSize): Ditto.
(WebCore::MockRealtimeVideoSource::generateFrame): Call updateSampleBuffer().
* platform/mock/MockRealtimeVideoSource.h: Change elapsedTime() from private to protected.
(WebCore::MockRealtimeVideoSource::updateSampleBuffer): Overriden by MockRealtimeVideoSourceMac.

LayoutTests:

* fast/mediastream/MediaStream-video-element-displays-buffer-expected.txt: Added.
* fast/mediastream/MediaStream-video-element-displays-buffer.html: Added. Checks that
a video element with a mediastream source displays frames that are neither black or transparent.
* fast/mediastream/resources/getUserMedia-helper.js:
(setupVideoElementWithStream): Sets up video element with global variable mediastream.

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

3 years agoMove ControlStates HashMap to RenderBox.
zalan@apple.com [Tue, 26 Jul 2016 21:49:26 +0000 (21:49 +0000)]
Move ControlStates HashMap to RenderBox.
https://bugs.webkit.org/show_bug.cgi?id=160206

Reviewed by Simon Fraser.

Move and modernize it.

No change in functionality.

* platform/ControlStates.h:
(WebCore::ControlStates::ControlStates): Deleted.
* rendering/RenderBox.cpp:
(WebCore::controlStatesRendererMap):
(WebCore::controlStatesForRenderer):
(WebCore::removeControlStatesForRenderer):
(WebCore::RenderBox::~RenderBox):
(WebCore::RenderBox::paintBoxDecorations):
* rendering/RenderElement.cpp:
(WebCore::controlStatesRendererMap): Deleted.
(WebCore::RenderElement::hasControlStatesForRenderer): Deleted.
(WebCore::RenderElement::controlStatesForRenderer): Deleted.
(WebCore::RenderElement::removeControlStatesForRenderer): Deleted.
(WebCore::RenderElement::addControlStatesForRenderer): Deleted.
* rendering/RenderElement.h:

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

3 years agoOccasional crash in WebCore::RenderVTTCue::initializeLayoutParameters
eric.carlson@apple.com [Tue, 26 Jul 2016 21:35:20 +0000 (21:35 +0000)]
Occasional crash in WebCore::RenderVTTCue::initializeLayoutParameters
https://bugs.webkit.org/show_bug.cgi?id=160208

Reviewed by Darin Adler.

* rendering/RenderVTTCue.cpp:
(WebCore::RenderVTTCue::initializeLayoutParameters): Return when firstChild is NULL so a
release build will not crash.

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

3 years agoREGRESSION: The arrow indicating the current page doesn't get updated
rniwa@webkit.org [Tue, 26 Jul 2016 21:01:07 +0000 (21:01 +0000)]
REGRESSION: The arrow indicating the current page doesn't get updated
https://bugs.webkit.org/show_bug.cgi?id=160185

Reviewed by Chris Dumez.

The bug was caused by Heading's render() function not updating the DOM more than once. I don't understand
how this has ever worked. Fixed the bug by rendering DOM whenever the current page has changed.

* public/v3/pages/heading.js:
(Heading):
(Heading.prototype.render):

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

3 years agoRemove the tests for legacy custom elements API
rniwa@webkit.org [Tue, 26 Jul 2016 20:59:36 +0000 (20:59 +0000)]
Remove the tests for legacy custom elements API
https://bugs.webkit.org/show_bug.cgi?id=160209

Reviewed by Chris Dumez.

Removed the tests for legacy custom elements v0 API. The tests for the new v1 API is at fast/custom-elements.

* fast/dom/custom: Removed.
* fast/dom/custom/document-register-basic-expected.txt: Removed.
* fast/dom/custom/document-register-basic.html: Removed.
* fast/dom/custom/document-register-namespace-expected.txt: Removed.
* fast/dom/custom/document-register-namespace.html: Removed.
* fast/dom/custom/document-register-reentrant-null-constructor-expected.txt: Removed.
* fast/dom/custom/document-register-reentrant-null-constructor.html: Removed.
* fast/dom/custom/document-register-reentrant-returning-fake-expected.txt: Removed.
* fast/dom/custom/document-register-reentrant-returning-fake.html: Removed.
* fast/dom/custom/document-register-reentrant-throwing-constructor-expected.txt: Removed.
* fast/dom/custom/document-register-reentrant-throwing-constructor.html: Removed.
* fast/dom/custom/document-register-type-extensions-expected.txt: Removed.
* fast/dom/custom/document-register-type-extensions.html: Removed.
* fast/dom/custom/lifecycle-ready-createElement-recursion-expected.txt: Removed.
* fast/dom/custom/lifecycle-ready-createElement-recursion.html: Removed.
* fast/dom/custom/lifecycle-ready-createElement-reentrancy-expected.txt: Removed.
* fast/dom/custom/lifecycle-ready-createElement-reentrancy.html: Removed.
* fast/dom/custom/lifecycle-ready-creation-api-expected.txt: Removed.
* fast/dom/custom/lifecycle-ready-creation-api.html: Removed.
* fast/dom/custom/lifecycle-ready-innerHTML-expected.txt: Removed.
* fast/dom/custom/lifecycle-ready-innerHTML.html: Removed.
* fast/dom/custom/lifecycle-ready-parser-only-expected.html: Removed.
* fast/dom/custom/lifecycle-ready-parser-only.html: Removed.
* fast/dom/custom/lifecycle-ready-parser-script-expected.txt: Removed.
* fast/dom/custom/lifecycle-ready-parser-script.html: Removed.
* fast/dom/custom/lifecycle-ready-paste-expected.txt: Removed.
* fast/dom/custom/lifecycle-ready-paste.html: Removed.
* fast/dom/custom/resources: Removed.
* fast/dom/custom/resources/document-register-fuzz.js: Removed.
* platform/efl/TestExpectations:
* platform/gtk/TestExpectations:
* platform/ios-simulator/TestExpectations:
* platform/mac/TestExpectations:
* platform/win/TestExpectations:

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

3 years agoParameters to CustomEvent.initCustomEvent() should be mandatory
cdumez@apple.com [Tue, 26 Jul 2016 20:57:20 +0000 (20:57 +0000)]
Parameters to CustomEvent.initCustomEvent() should be mandatory
https://bugs.webkit.org/show_bug.cgi?id=160205

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

Rebaseline W3C test now that more checks are passing.

* web-platform-tests/dom/interfaces-expected.txt:

Source/WebCore:

Parameters to CustomEvent.initCustomEvent() should be mandatory:
- https://dom.spec.whatwg.org/#interface-customevent

Firefox and Chrome agree with the specification.

No new tests, rebaselined existing test.

* dom/CustomEvent.idl:

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

3 years agoSecond parameter to Range.isPointInRange() / comparePoint() should be mandatory
cdumez@apple.com [Tue, 26 Jul 2016 20:54:25 +0000 (20:54 +0000)]
Second parameter to Range.isPointInRange() / comparePoint() should be mandatory
https://bugs.webkit.org/show_bug.cgi?id=160202

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

Rebaseline W3C test now that more checks are passing.

* web-platform-tests/dom/interfaces-expected.txt:

Source/WebCore:

Second parameter to Range.isPointInRange() / comparePoint() should be mandatory
and be of type "unsigned long":
- https://dom.spec.whatwg.org/#interface-range

Firefox and Chrome agree with the specification.

No new tests, rebaselined existing tests.

* accessibility/AXObjectCache.cpp:
(WebCore::AXObjectCache::traverseToOffsetInRange):
* dom/DocumentMarkerController.cpp:
(WebCore::DocumentMarkerController::removeMarkers):
(WebCore::DocumentMarkerController::markersInRange):
(DocumentMarkerController::setMarkersActive):
* dom/Range.cpp:
(WebCore::Range::isPointInRange):
(WebCore::Range::comparePoint):
(WebCore::Range::compareBoundaryPoints):
(WebCore::Range::toString):
(WebCore::Range::absoluteTextRects):
(WebCore::Range::absoluteTextQuads):
(WebCore::boundaryTextNodesMerged):
(WebCore::Range::getBorderAndTextQuads):
* dom/Range.h:
(WebCore::Range::startOffset):
(WebCore::Range::endOffset):
* dom/Range.idl:
* dom/RangeBoundaryPoint.h:
(WebCore::RangeBoundaryPoint::ensureOffsetIsValid):
(WebCore::RangeBoundaryPoint::toPosition):
(WebCore::RangeBoundaryPoint::offset):
(WebCore::RangeBoundaryPoint::setOffset):
(WebCore::RangeBoundaryPoint::setToBeforeChild):
(WebCore::RangeBoundaryPoint::setToAfterChild):
(WebCore::RangeBoundaryPoint::setToEndOfNode):
(WebCore::RangeBoundaryPoint::childBeforeWillBeRemoved):
(WebCore::RangeBoundaryPoint::invalidateOffset):

LayoutTests:

Update existing test to reflect behavior change.

* fast/dom/non-numeric-values-numeric-parameters-expected.txt:
* fast/dom/script-tests/non-numeric-values-numeric-parameters.js:

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

3 years ago[Fetch API] Add support for fetch mode, in particular cors
commit-queue@webkit.org [Tue, 26 Jul 2016 20:18:03 +0000 (20:18 +0000)]
[Fetch API] Add support for fetch mode, in particular cors
https://bugs.webkit.org/show_bug.cgi?id=156753

Patch by Youenn Fablet <youenn@apple.com> on 2016-07-26
Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Rebasing tests.

* web-platform-tests/fetch/api/basic/integrity-expected.txt:
* web-platform-tests/fetch/api/basic/integrity-worker-expected.txt:
* web-platform-tests/fetch/api/basic/mode-no-cors-expected.txt:
* web-platform-tests/fetch/api/basic/mode-no-cors-worker-expected.txt:
* web-platform-tests/fetch/api/cors/cors-basic-expected.txt:
* web-platform-tests/fetch/api/cors/cors-basic-worker-expected.txt:
* web-platform-tests/fetch/api/cors/cors-cookies-expected.txt:
* web-platform-tests/fetch/api/cors/cors-cookies-worker-expected.txt:
* web-platform-tests/fetch/api/cors/cors-filtering-expected.txt:
* web-platform-tests/fetch/api/cors/cors-filtering-worker-expected.txt:
* web-platform-tests/fetch/api/cors/cors-multiple-origins-expected.txt:
* web-platform-tests/fetch/api/cors/cors-multiple-origins-worker-expected.txt:
* web-platform-tests/fetch/api/cors/cors-preflight-expected.txt:
* web-platform-tests/fetch/api/cors/cors-preflight-referrer-worker-expected.txt:
* web-platform-tests/fetch/api/cors/cors-preflight-worker-expected.txt:
* web-platform-tests/fetch/api/cors/cors-redirect-credentials-expected.txt:
* web-platform-tests/fetch/api/cors/cors-redirect-credentials-worker-expected.txt:
* web-platform-tests/fetch/api/credentials/authentication-basic-worker-expected.txt:
* web-platform-tests/fetch/api/request/request-cache-expected.txt:

Source/WebCore:

Covered by rebased tests.

* Modules/fetch/FetchLoader.cpp:
(WebCore::FetchLoader::start): Passing fetch mode to ThreadableLoader.
Disabling as a temp fix credentials in case of CORS mode as credential options is not yet supported and would make several tests fail.

LayoutTests:

Rebasing specific expectations as Maci/iOS WK2 does not like https tests.

* platform/ios-simulator-wk2/imported/w3c/web-platform-tests/fetch/api/basic/mode-no-cors-expected.txt: Added.
* platform/ios-simulator-wk2/imported/w3c/web-platform-tests/fetch/api/basic/mode-no-cors-worker-expected.txt: Added.
* platform/ios-simulator-wk2/imported/w3c/web-platform-tests/fetch/api/cors/cors-basic-expected.txt: Added.
* platform/ios-simulator-wk2/imported/w3c/web-platform-tests/fetch/api/cors/cors-basic-worker-expected.txt: Added.
* platform/mac-wk2/imported/w3c/web-platform-tests/fetch/api/basic/mode-no-cors-expected.txt: Added.
* platform/mac-wk2/imported/w3c/web-platform-tests/fetch/api/basic/mode-no-cors-worker-expected.txt: Added.
* platform/mac-wk2/imported/w3c/web-platform-tests/fetch/api/cors/cors-basic-expected.txt: Added.
* platform/mac-wk2/imported/w3c/web-platform-tests/fetch/api/cors/cors-basic-worker-expected.txt: Added.

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

3 years agoAlign NamedNodeMap with the specification
cdumez@apple.com [Tue, 26 Jul 2016 19:09:53 +0000 (19:09 +0000)]
Align NamedNodeMap with the specification
https://bugs.webkit.org/show_bug.cgi?id=160204

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Rebaseline W3C test now that more checks are passing.

* web-platform-tests/dom/interfaces-expected.txt:

Source/WebCore:

Align NamedNodeMap with the specification:
- https://dom.spec.whatwg.org/#interface-namednodemap

In particular, mark parameters as mandatory when they should be, and
use tighter "Attr" typing instead of Node.

Chrome and Firefox agree with the specification.

Test: fast/dom/NamedNodeMap-parameters.html

* dom/NamedNodeMap.cpp:
(WebCore::NamedNodeMap::getNamedItem):
(WebCore::NamedNodeMap::getNamedItemNS):
(WebCore::NamedNodeMap::removeNamedItem):
(WebCore::NamedNodeMap::removeNamedItemNS):
(WebCore::NamedNodeMap::setNamedItem):
(WebCore::NamedNodeMap::item):
* dom/NamedNodeMap.h:
* dom/NamedNodeMap.idl:

LayoutTests:

* dom/html/level2/core/hc_namednodemapinvalidtype1-expected.txt: Removed.
* dom/html/level2/core/hc_namednodemapinvalidtype1.html: Removed.
* dom/xhtml/level2/core/hc_namednodemapinvalidtype1-expected.txt: Removed.
* dom/xhtml/level2/core/hc_namednodemapinvalidtype1.xhtml: Removed.
Drop outdated DOM level 2 tests that expect the wrong exception type to
be thrown when passing a non-Attr node in.

* fast/dom/NamedNodeMap-parameters-expected.txt: Added.
* fast/dom/NamedNodeMap-parameters.html: Added.
Add layout test coverage. I have verified that this test is passing in
both Firefox and Chrome.

* fast/dom/NamedNodeMap-setNamedItem-crash-expected.txt:
* fast/dom/non-numeric-values-numeric-parameters-expected.txt:
* fast/dom/script-tests/non-numeric-values-numeric-parameters.js:
Update / rebaseline existing tests to reflect behavior change.

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

3 years agoRemove unused DEBUG_WITH_BREAKPOINT configuration.
mark.lam@apple.com [Tue, 26 Jul 2016 18:58:41 +0000 (18:58 +0000)]
Remove unused DEBUG_WITH_BREAKPOINT configuration.
https://bugs.webkit.org/show_bug.cgi?id=160203

Reviewed by Keith Miller.

* bytecompiler/BytecodeGenerator.cpp:
(JSC::BytecodeGenerator::emitDebugHook):

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

3 years agoInfinite Canvas context save() causes WebKit to crash
commit-queue@webkit.org [Tue, 26 Jul 2016 18:58:32 +0000 (18:58 +0000)]
Infinite Canvas context save() causes WebKit to crash
https://bugs.webkit.org/show_bug.cgi?id=159586
<rdar://problem/26759984>

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2016-07-26
Reviewed by Simon Fraser.

Source/WebCore:

Limit the size of the canvas context state stack to 1024 * 16 saves. All
the saves which come after that limit will stay unrealized. The restore()
should not have any effect till there is no unrealized saves.

Test: fast/canvas/canvas-context-save-limit.html

* html/canvas/CanvasRenderingContext2D.cpp:
(WebCore::CanvasRenderingContext2D::realizeSaves):
(WebCore::CanvasRenderingContext2D::realizeSavesLoop):
* html/canvas/CanvasRenderingContext2D.h:

LayoutTests:

* fast/canvas/canvas-context-save-limit-expected.txt: Added.
* fast/canvas/canvas-context-save-limit.html: Added.

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

3 years agoDOMTokenList should be iterable
commit-queue@webkit.org [Tue, 26 Jul 2016 18:00:57 +0000 (18:00 +0000)]
DOMTokenList should be iterable
https://bugs.webkit.org/show_bug.cgi?id=160183

Patch by Youenn Fablet <youenn@apple.com> on 2016-07-26
Reviewed by Chris Dumez.

Source/WebCore:

DOMTokenList should be iterable as per https://dom.spec.whatwg.org/#interface-domtokenlist

Test: fast/dom/domTokenListIterator.html

* html/DOMTokenList.idl: Added iterable to the interface description.

LayoutTests:

* fast/dom/domTokenListIterator-expected.txt: Added.
* fast/dom/domTokenListIterator.html: Added.
* fast/dom/iterable-tests.js: Added.
* fast/dom/nodeListIterator-expected.txt:
* fast/dom/nodeListIterator.html: Making use of iterable-tests.js

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

3 years ago[Threaded Compositor] ASSERTION FAILED: canAccessThreadLocalDataForThread(m_thread...
carlosgc@webkit.org [Tue, 26 Jul 2016 17:26:28 +0000 (17:26 +0000)]
[Threaded Compositor] ASSERTION FAILED: canAccessThreadLocalDataForThread(m_thread) after r203718
https://bugs.webkit.org/show_bug.cgi?id=160201

Reviewed by Michael Catanzaro.

I forgot to call purgeGLResources() before invalidating the scene in the compositing thread.

* Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:
(WebKit::ThreadedCompositor::invalidate):

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

3 years agoUnreviewed, rolling out r203719.
commit-queue@webkit.org [Tue, 26 Jul 2016 17:13:38 +0000 (17:13 +0000)]
Unreviewed, rolling out r203719.
https://bugs.webkit.org/show_bug.cgi?id=160200

It is breaking win build (Requested by youenn on #webkit).

Reverted changeset:

"[Fetch API] Response constructor should be able to take a
ReadableStream as body"
https://bugs.webkit.org/show_bug.cgi?id=159804
http://trac.webkit.org/changeset/203719

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

3 years agoStop supporting compressed character sets BOCU-1 and SCSU
wilander@apple.com [Tue, 26 Jul 2016 16:57:24 +0000 (16:57 +0000)]
Stop supporting compressed character sets BOCU-1 and SCSU
https://bugs.webkit.org/show_bug.cgi?id=159581

Reviewed by Brent Fulgham.

WebKit should not support the compressed character sets BOCU-1 and SCSU.
Chrome and Firefox don't and these old formats may pass server-side character
filters while still rendering in WebKit.

The HTML specification says "The above prohibits supporting, for example,
CESU-8, UTF-7, BOCU-1, SCSU, EBCDIC, and UTF-32."
https://html.spec.whatwg.org/#character-encodings

Source/WebCore:

Tests: http/tests/misc/char-encoding-bocu-1-blacklisted.html
       http/tests/misc/char-encoding-scsu-blacklisted.html

* platform/text/TextEncodingRegistry.cpp:
    Blacklisted BOCU-1 and SCSU character sets.

LayoutTests:

* http/tests/misc/char-encoding-bocu-1-blacklisted-expected.txt: Added.
* http/tests/misc/char-encoding-bocu-1-blacklisted.html: Added.
* http/tests/misc/char-encoding-scsu-blacklisted-expected.txt: Added.
* http/tests/misc/char-encoding-scsu-blacklisted.html: Added.
* http/tests/misc/resources/bocu-1-cyrillic.php: Added.
* http/tests/misc/resources/scsu-cyrillic.php: Added.

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

3 years agoSupport configurable autocapitalization.
enrica@apple.com [Tue, 26 Jul 2016 16:32:21 +0000 (16:32 +0000)]
Support configurable autocapitalization.
https://bugs.webkit.org/show_bug.cgi?id=158860
rdar://problem/27536113

Reviewed by Tim Horton.

Autocapitalization should be enabled/disabled regardless of whether
we are using advance spelling feature.

* UIProcess/mac/TextCheckerMac.mm:
(WebKit::TextChecker::checkTextOfParagraph):
(WebKit::TextChecker::getGuessesForWord):

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

3 years agoASSERTION FAILED: !m_frame->page()->defersLoading() || InspectorInstrumentation:...
carlosgc@webkit.org [Tue, 26 Jul 2016 16:29:06 +0000 (16:29 +0000)]
ASSERTION FAILED: !m_frame->page()->defersLoading() || InspectorInstrumentation::isDebuggerPaused(m_frame)
https://bugs.webkit.org/show_bug.cgi?id=160193

Reviewed by Michael Catanzaro.

This is happening in the GTK+ Debug bot when running test loader/load-defer.html (note that the assert is inside
a !USE(CF) block).
The test is creating an iframe with load deferred, then in a timeout it disables the deferred load and checks
that the load actually happens. What happens is that the initial empty document is what calls
DocumentLoader::finishedLoading() when load is still deferred. The onload handler is not called because load
events are disabled for the initial empty document in SubframeLoader::loadSubframe(), but
DocumentLoader::finishedLoading() is called unconditionally from maybeLoadEmpty(). I think it's fine to call
DocumentLoader::finishedLoading() for the initial empty document even when load is deferred, so we can simply
update the assert to handle that case.

* loader/DocumentLoader.cpp:
(WebCore::DocumentLoader::finishedLoading): Do not assert if called for the initial empty document when load is
deferred.

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

3 years ago[Coordinated Graphics] Test fast/fixed-layout/fixed-layout.html crashes in debug
carlosgc@webkit.org [Tue, 26 Jul 2016 16:26:54 +0000 (16:26 +0000)]
[Coordinated Graphics] Test fast/fixed-layout/fixed-layout.html crashes in debug
https://bugs.webkit.org/show_bug.cgi?id=160117

Reviewed by Michael Catanzaro.

The problem is that WebPage has its own m_useFixedLayout that is only updated when changed from the UI
process. However, layout tests doing internals.setUseFixedLayout() change the frame view directly, and the
WebPage doesn't notice it.

* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::setFixedVisibleContentRect): Deleted.
(WebKit::WebPage::sendViewportAttributesChanged): Change the assert to check the main FrameView is in fixed
layout mode.
* WebProcess/WebPage/WebPage.h:

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

3 years ago[Threaded Compositor] ASSERTION FAILED: isMainThread() when ThreadedCompositor is...
carlosgc@webkit.org [Tue, 26 Jul 2016 16:25:26 +0000 (16:25 +0000)]
[Threaded Compositor] ASSERTION FAILED: isMainThread() when ThreadedCompositor is destroyed since r203718
https://bugs.webkit.org/show_bug.cgi?id=160197

Reviewed by Žan Doberšek.

ThreadedCompositor can be destroyed from a secondary thread, for example, when a task takes a reference and the
main threads derefs it, when the task finishes in the secondary thread the lambda ends up deleting the threaded
compositor. This is ok for the Threaded compositor but not for the CompositingRunLoop class. this was not a
problem before r203718 because the CompositingRunLoop object was created and destroyed in the same thread
always, but now it's part of the ThreadedCompositor class. This patch uses std:unique_ptr again to explicitly
create the CompositingRunLoop in the ThreadedCompositor constructor and delete in the invalidate() method to
make sure it happens in the main thread in both cases.

* Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.cpp:
(WebKit::WorkQueuePool::invalidate):
(WebKit::WorkQueuePool::getOrCreateWorkQueueForContext):
* Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.h:
* Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:
(WebKit::ThreadedCompositor::ThreadedCompositor):
(WebKit::ThreadedCompositor::invalidate):
(WebKit::ThreadedCompositor::setNativeSurfaceHandleForCompositing):
(WebKit::ThreadedCompositor::setDeviceScaleFactor):
(WebKit::ThreadedCompositor::setDrawsBackground):
(WebKit::ThreadedCompositor::didChangeViewportSize):
(WebKit::ThreadedCompositor::didChangeViewportAttribute):
(WebKit::ThreadedCompositor::didChangeContentsSize):
(WebKit::ThreadedCompositor::scrollTo):
(WebKit::ThreadedCompositor::scrollBy):
(WebKit::ThreadedCompositor::updateViewport):
(WebKit::ThreadedCompositor::scheduleDisplayImmediately):
(WebKit::ThreadedCompositor::forceRepaint):
* Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.h:

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

3 years agoRemove ClientCredentialPolicy cross-origin option from ResourceLoaderOptions
commit-queue@webkit.org [Tue, 26 Jul 2016 16:23:09 +0000 (16:23 +0000)]
Remove ClientCredentialPolicy cross-origin option from ResourceLoaderOptions
https://bugs.webkit.org/show_bug.cgi?id=159413

Patch by Youenn Fablet <youenn@apple.com> on 2016-07-26
Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

Below test changes as ResourceLoader is now computing whether to request credentials to clients if:
- request is authorized to request credentials (DocumentThreadableLoader only allows same-origin to make such thing)
- credential policy is Include or Same-Origin and request is same-origin.
This test changes as current fetch loader sets the credential mode to Omit, thus disabling credential request.

To be noted that only fetch API is allowing to disable credentials sending for same-origin request using "Omit"
credential mode.

* web-platform-tests/fetch/api/credentials/authentication-basic-expected.txt: Rebasing test.

Source/WebCore:

ClientCredentialPolicy had three values (not ask, ask, ask only for same origin).
The distinction between allowing cross-origin or same-origin credentials is misleading as it is not supported
for synchronous loads and not supported by Network process.
It is best replaced by a boolean option (ask or not ask).

Same-origin ClientCredentialPolicy option was only used by DocumentThreadableLoader for asynchronous loads.
Since DocumentThreadableLoader is already computing whether the request is cross-origin, it can also compute
whether credentials may be requested or not. In case of cross-origin redirections, credentials are omitted, thus
disabling any possibility for requesting credentials for cross-origin resources after redirections.

Moving ClientCredentialPolicy to ResourceLoaderOptions since it is not used by platform code except for some
mac-specific code that is already using ResourceLoaderOptions.

Covered by existing tests.

* loader/CrossOriginPreflightChecker.cpp:
(WebCore::CrossOriginPreflightChecker::startPreflight): Setting clearly credential mode to Omit credentials.
(WebCore::CrossOriginPreflightChecker::doPreflight): Ditto.
* loader/DocumentLoader.cpp:
(WebCore::DocumentLoader::startLoadingMainResource): AskClientForAllCredentials ->
ClientCredentialPolicy::MayAskClientForCredentials.
* loader/DocumentThreadableLoader.cpp:
(WebCore::DocumentThreadableLoader::loadRequest): Disabling requesting credentials for any cross-origin request.
* loader/FrameLoader.h:
* loader/MediaResourceLoader.cpp:
(WebCore::MediaResourceLoader::requestResource): AskClientForAllCredentials -> ClientCredentialPolicy::MayAskClientForCredentials.
* loader/NetscapePlugInStreamLoader.cpp:
(WebCore::NetscapePlugInStreamLoader::NetscapePlugInStreamLoader): Ditto.
* loader/ResourceLoader.cpp:
(WebCore::ResourceLoader::isAllowedToAskUserForCredentials): Disabling client credential request if ClientCredentialPolicy is CannotAskClientForCredentials.
Otherwise, returns true if fetch credentials mode allows it.
* loader/ResourceLoaderOptions.h:
(WebCore::ResourceLoaderOptions::ResourceLoaderOptions):
(WebCore::ResourceLoaderOptions::clientCredentialPolicy): Deleted.
(WebCore::ResourceLoaderOptions::setClientCredentialPolicy): Deleted.
* loader/cache/CachedResourceLoader.cpp:
(WebCore::CachedResourceLoader::requestUserCSSStyleSheet): AskClientForAllCredentials -> ClientCredentialPolicy::MayAskClientForCredentials.
(WebCore::CachedResourceLoader::defaultCachedResourceOptions): AskClientForAllCredentials -> ClientCredentialPolicy::MayAskClientForCredentials.
* loader/icon/IconLoader.cpp:
(WebCore::IconLoader::startLoading): DoNotAskClientForAnyCredentials -> ClientCredentialPolicy::CannotAskClientForCredentials.
* platform/graphics/avfoundation/cf/WebCoreAVCFResourceLoader.cpp:
(WebCore::WebCoreAVCFResourceLoader::startLoading): DoNotAskClientForCrossOriginCredentials -> ClientCredentialPolicy::CannotAskClientForCredentials.
This is ok as credentials mode is omit and stored credentials are not allowed.
* platform/graphics/avfoundation/objc/WebCoreAVFResourceLoader.mm:
(WebCore::WebCoreAVFResourceLoader::startLoading): Ditto.
* platform/network/ResourceHandleTypes.h:
* xml/XSLTProcessorLibxslt.cpp: DoNotAskClientForCrossOriginCredentials -> ClientCredentialPolicy::MayAskClientForCredentials.
This is ok as this is a synchronous load.
(WebCore::docLoaderFunc):
* xml/parser/XMLDocumentParserLibxml2.cpp:
(WebCore::openFunc): DoNotAskClientForCrossOriginCredentials -> ClientCredentialPolicy::MayAskClientForCredentials.
This is ok as this is a synchronous load.

Source/WebKit2:

Renaming of ClientCredentialPolicy values.

* NetworkProcess/Downloads/DownloadManager.cpp:
(WebKit::DownloadManager::startDownload):
* NetworkProcess/NetworkLoad.cpp:
(WebKit::NetworkLoad::continueCanAuthenticateAgainstProtectionSpace):
(WebKit::NetworkLoad::didReceiveAuthenticationChallenge):
* NetworkProcess/NetworkLoadParameters.h:
* NetworkProcess/NetworkResourceLoadParameters.cpp:
(WebKit::NetworkResourceLoadParameters::NetworkResourceLoadParameters):
* NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::NetworkResourceLoader):
* WebProcess/Network/WebLoaderStrategy.cpp:
(WebKit::WebLoaderStrategy::scheduleLoad):
* WebProcess/Network/WebResourceLoader.cpp:
(WebKit::WebResourceLoader::willSendRequest):

LayoutTests:

* platform/mac-wk1/imported/w3c/web-platform-tests/fetch/api/credentials/authentication-basic-expected.txt: Removed.

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

3 years ago[Fetch API] Response constructor should be able to take a ReadableStream as body
commit-queue@webkit.org [Tue, 26 Jul 2016 16:03:01 +0000 (16:03 +0000)]
[Fetch API] Response constructor should be able to take a ReadableStream as body
https://bugs.webkit.org/show_bug.cgi?id=159804

Patch by Youenn Fablet <youenn@apple.com> on 2016-07-26
Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

* web-platform-tests/fetch/api/response/response-consume-empty-expected.txt:
* web-platform-tests/fetch/api/response/response-consume-expected.txt:
* web-platform-tests/fetch/api/response/response-consume.html: Updating test to exercice Response coonstructor with a ReadableStream.

Source/WebCore:

Covered by existing and updated tests.

Introduced FetchBodyConsumer to encapsulate the code responsible to adapt FetchBody internal data to the requests made by user scripts.
This refactoring eases the handling of internal data coming from ReadableStream.

FetchLoader is now delegating conversion from the data to its m_consumer field.
If m_consumer is null, FetchLoader calls FetchLoaderClient::didReceiveData (streaming reception mode).
Clients of FetchLoader needs to pass a FetchBodyConsumer to the FetchLoader to do the data adaptation at loader creation time.

Added support for body data passed as a ReadableStream to Response.
This requires to set @body internal slot of the Response object in the constructor initialization JS built-in.

To actually use that data, Body accessors are also implemented as JS built-in for Response.
Since there is no need to do so for Request, FetchResponse is no longer marked as implementing FetchBody but all
FetchBody IDL description is inlined in FetchResponse.idl.

For each body accessor (arrayBuffer, blob, json, text), the corresponding JS built-in checks whether @body internal slot is set.
If that is not the case, regular handling is done through a new private method called @consume.
If @body internal slot is set, chunks are pumped from the ReadableStream using ReadableStream internal built-ins functions.
Data handling is done in C++ through the private methods @startConsumingStream, @consumeChunk and @finishConsumingStream.

To support cloning of Response with bodies, clone method is also implemented as a JS built-in.
Main clone is done through @cloneFoJS private method implemented in C++.
JS built-in clone code does the teeing of the ReadableStream using ReadableStream JS built-in internal functions.

Introducing a new ReadableStream type for FetchBody to cope with body being stored in a ReadableStream.

Introducing a new Loaded type for FetchBody to cope with body being stored in the FetchBodyConsumer owned by FetchBody.
This allows removing the conversion of data to JSC::ArrayBuffer which was done by defaut at the end of Fetch loading if user script did not request data before.
At the end of a load, the data remains in FetchBodyConsumer and the body is marked as Loaded.
If the user wants to get the data after data finished being loaded, FetchBodyConsumer will do the required conversions.

Introducing DeferredWrapper::resolveWithNewValue to handle the case of resolving promises with new objects.
This allows directly using toJSNewlyCreated instead of toJS.

* CMakeLists.txt: Adding FetchBodyConsumer.
* Modules/fetch/FetchBody.cpp: Moving data adaptation code to FetchBodyConsumer.
(WebCore::FetchBody::extract):
(WebCore::FetchBody::arrayBuffer):
(WebCore::FetchBody::blob): Setting contentType in FetchBodyConsumer to handle proper creation of blob.
(WebCore::FetchBody::json):
(WebCore::FetchBody::text):
(WebCore::FetchBody::consume): Refactoring and added case of Loaded bodies.
(WebCore::FetchBody::consumeAsStream): Ditto.
(WebCore::FetchBody::consumeArrayBuffer):
(WebCore::FetchBody::consumeText):
(WebCore::FetchBody::consumeBlob):
(WebCore::FetchBody::loadingFailed):
(WebCore::FetchBody::loadingSucceeded):
(WebCore::FetchBody::loadingType): Deleted.
(WebCore::blobFromArrayBuffer): Deleted.
(WebCore::FetchBody::fulfillTextPromise): Deleted.
(WebCore::FetchBody::loadedAsArrayBuffer): Deleted.
(WebCore::FetchBody::loadedAsText): Deleted.
* Modules/fetch/FetchBody.h:
(WebCore::FetchBody::consumer):
* Modules/fetch/FetchBodyConsumer.cpp: Added, responsible of data adaptation.
(WebCore::blobFromData):
(WebCore::FetchBodyConsumer::resolveWithData):
(WebCore::FetchBodyConsumer::resolve):
(WebCore::FetchBodyConsumer::append):
(WebCore::FetchBodyConsumer::takeData):
(WebCore::FetchBodyConsumer::takeAsArrayBuffer):
(WebCore::FetchBodyConsumer::takeAsBlob):
(WebCore::FetchBodyConsumer::takeAsText):
* Modules/fetch/FetchBodyConsumer.h: Added.
(WebCore::FetchBodyConsumer::FetchBodyConsumer):
(WebCore::FetchBodyConsumer::setContentType):
(WebCore::FetchBodyConsumer::setType):
(WebCore::FetchBodyConsumer::type):
(WebCore::FetchBodyConsumer::clean):
(WebCore::FetchBodyConsumer::hasData):
* Modules/fetch/FetchBodyOwner.cpp:
(WebCore::FetchBodyOwner::loadBlob):
(WebCore::FetchBodyOwner::blobLoadingSucceeded):
(WebCore::FetchBodyOwner::loadedBlobAsText): Deleted.
* Modules/fetch/FetchBodyOwner.h:
(WebCore::FetchBodyOwner::loadedBlobAsArrayBuffer): Deleted.
* Modules/fetch/FetchInternals.js:
(consumeStream): Pump ReadableStream data and send it to FetchResponse to be converted according user need.
* Modules/fetch/FetchLoader.cpp:
(WebCore::FetchLoader::FetchLoader): FetchLoader is simplified as it has two nodes: consumer mode in which case
data is sent to the consumer and no-consumer mode in which case data is passed to loader client. The second mode
is used to conveyy data to ReadableStream source.
(WebCore::FetchLoader::stop):
(WebCore::FetchLoader::startStreaming):
(WebCore::FetchLoader::didReceiveData):
(WebCore::FetchLoader::didFinishLoading): Deleted.
* Modules/fetch/FetchLoader.h:
* Modules/fetch/FetchLoaderClient.h:
(WebCore::FetchLoaderClient::didFinishLoadingAsText): Deleted.
(WebCore::FetchLoaderClient::didFinishLoadingAsArrayBuffer): Deleted.
* Modules/fetch/FetchResponse.cpp:
(WebCore::FetchResponse::cloneForJS):
(WebCore::FetchResponse::BodyLoader::didSucceed):
(WebCore::FetchResponse::BodyLoader::start):
(WebCore::FetchResponse::consume): Introduced to consume data stored in body and not in ReadableStream.
(WebCore::FetchResponse::startConsumingStream): Introduced to start process of consuming data stored in the ReadableStream.
(WebCore::FetchResponse::consumeChunk): Reception of ReadableStream data.
(WebCore::FetchResponse::finishConsumingStream): Doing the final conversion.
(WebCore::FetchResponse::clone): Deleted.
(WebCore::FetchResponse::BodyLoader::didFinishLoadingAsArrayBuffer): Deleted.
* Modules/fetch/FetchResponse.h:
* Modules/fetch/FetchResponse.idl: Inlining of FetchBody methods/attributes and adding private methods.
* Modules/fetch/FetchResponse.js:
(initializeFetchResponse):
(clone):
(arrayBuffer):
(blob):
(formData):
(json):
(text):
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/JSDOMPromise.h:
(WebCore::DeferredWrapper::resolveWithNewValue):
* bindings/js/WebCoreBuiltinNames.h:

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

3 years ago[Threaded Compositor] Crashes and deadlocks in single web process mode
carlosgc@webkit.org [Tue, 26 Jul 2016 13:26:35 +0000 (13:26 +0000)]
[Threaded Compositor] Crashes and deadlocks in single web process mode
https://bugs.webkit.org/show_bug.cgi?id=160160

Reviewed by Žan Doberšek.

Every WebPage has its own threaded compositor that runs its own compositing thread. That means that when there's
more than one WebPage in the same process, we are running OpenGL stuff in different secondary threads. That's
causing crashes and deadlocks in X and graphics drivers. We should ensure there's a single compositing thread
per process when multiple threads is not supported. This is causing unit test
WebKit2.WKPageGetScaleFactorNotZero to time out since we switched to the threaded compositor. That test is
creating two pages in the same web process, and most of the times the web process crashes or deadlocks causing
the test to never finish and time out.
This patch makes CompositingRunLoop use a thread pool that spawns the compositing threads and schedules the tasks
there.

* Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.cpp:
(WebKit::WorkQueuePool::singleton):
(WebKit::WorkQueuePool::dispatch):
(WebKit::WorkQueuePool::runLoop):
(WebKit::WorkQueuePool::invalidate):
(WebKit::WorkQueuePool::WorkQueuePool):
(WebKit::WorkQueuePool::getOrCreateWorkQueueForContext):
(WebKit::CompositingRunLoop::CompositingRunLoop):
(WebKit::CompositingRunLoop::~CompositingRunLoop):
(WebKit::CompositingRunLoop::performTask):
(WebKit::CompositingRunLoop::performTaskSync):
* Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.h:
* Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:
(WebKit::ThreadedCompositor::ThreadedCompositor):
(WebKit::ThreadedCompositor::invalidate):
(WebKit::ThreadedCompositor::setNativeSurfaceHandleForCompositing):
(WebKit::ThreadedCompositor::setDeviceScaleFactor):
(WebKit::ThreadedCompositor::setDrawsBackground):
(WebKit::ThreadedCompositor::didChangeViewportSize):
(WebKit::ThreadedCompositor::didChangeViewportAttribute):
(WebKit::ThreadedCompositor::didChangeContentsSize):
(WebKit::ThreadedCompositor::scrollTo):
(WebKit::ThreadedCompositor::scrollBy):
(WebKit::ThreadedCompositor::purgeBackingStores):
(WebKit::ThreadedCompositor::renderNextFrame):
(WebKit::ThreadedCompositor::commitScrollOffset):
(WebKit::ThreadedCompositor::updateViewport):
(WebKit::ThreadedCompositor::scheduleDisplayImmediately):
(WebKit::ThreadedCompositor::forceRepaint):
(WebKit::ThreadedCompositor::tryEnsureGLContext): Deleted.
(WebKit::ThreadedCompositor::glContext): Deleted.
(WebKit::ThreadedCompositor::updateSceneState): Deleted.
* Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.h:

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

3 years ago[css-grid] repeat() syntax should take a <track-list> argument
svillar@igalia.com [Tue, 26 Jul 2016 11:08:28 +0000 (11:08 +0000)]
[css-grid] repeat() syntax should take a <track-list> argument
https://bugs.webkit.org/show_bug.cgi?id=160162

Reviewed by Darin Adler.

Source/WebCore:

The repeat() notation used to allow just 1 <track-size> as second argument. Specs have been
recently modified so that a <track-list> is now supported, meaning that we can pass an
arbitrary number of track sizes and line numbers.

It has been working for some time for repeat() if the first argument was a positive integer,
but it requires some changes for the auto repeat cases (auto-fill and auto-fit).

* css/CSSComputedStyleDeclaration.cpp:
(WebCore::OrderedNamedLinesCollector::OrderedNamedLinesCollector): Store the total number of
auto repeat tracks and the length of a single repetition instead of the number of
repetitions.
(WebCore::OrderedNamedLinesCollector::collectLineNamesForIndex): Do not assume that there is
only 1 repeat track.
(WebCore::valueForGridTrackList):
* css/CSSParser.cpp:
(WebCore::CSSParser::parseGridTrackRepeatFunction): Allow multiple tracks in repeat().
* rendering/RenderGrid.cpp:
(WebCore::RenderGrid::rawGridTrackSize): Renamed repetitions -> autoRepeatTracksCount.
(WebCore::RenderGrid::computeAutoRepeatTracksCount): Use all the repeat tracks to compute
the total track size of a single repetition.
(WebCore::RenderGrid::computeEmptyTracksForAutoRepeat):
* rendering/style/GridPositionsResolver.cpp:
(WebCore::NamedLineCollection::NamedLineCollection): Renamed m_repetitions ->
m_autoRepeatTotalTracks. Added m_autoRepeatTrackListLength (it was always 1 before).
(WebCore::NamedLineCollection::find): Resolve lines inside multiple repeat tracks.
(WebCore::NamedLineCollection::firstPosition): Ditto.
* rendering/style/GridPositionsResolver.h:

LayoutTests:

Added new test cases with multiple tracks inside repeat() notation, both for fixed an
automatic (auto-fill & auto-fit) repetitions.

* fast/css-grid-layout/grid-auto-fill-columns-expected.txt:
* fast/css-grid-layout/grid-auto-fill-columns.html:
* fast/css-grid-layout/grid-auto-fill-rows-expected.txt:
* fast/css-grid-layout/grid-auto-fill-rows.html:
* fast/css-grid-layout/grid-auto-fit-columns-expected.txt:
* fast/css-grid-layout/grid-auto-fit-columns.html:
* fast/css-grid-layout/grid-auto-fit-rows-expected.txt:
* fast/css-grid-layout/grid-auto-fit-rows.html:
* fast/css-grid-layout/grid-element-auto-repeat-get-set-expected.txt:
* fast/css-grid-layout/grid-element-auto-repeat-get-set.html:
* fast/css-grid-layout/grid-element-repeat-get-set-expected.txt:
* fast/css-grid-layout/grid-element-repeat-get-set.html:

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

3 years ago[css-grid] grid-auto-flow|row should take a <track-size>+
svillar@igalia.com [Tue, 26 Jul 2016 09:37:41 +0000 (09:37 +0000)]
[css-grid] grid-auto-flow|row should take a <track-size>+
https://bugs.webkit.org/show_bug.cgi?id=160158

Reviewed by Darin Adler.

Source/WebCore:

* css/CSSComputedStyleDeclaration.cpp:
(WebCore::valueForGridTrackSizeList):
(WebCore::ComputedStyleExtractor::propertyValue): Return a list of <track-size> instead of
just one.
* css/CSSParser.cpp:
(WebCore::CSSParser::parseValue): Use the new values of TrackListType;
(WebCore::CSSParser::parseGridTemplateRowsAndAreasAndColumns): Ditto.
(WebCore::CSSParser::parseGridTemplateShorthand): Ditto.
(WebCore::CSSParser::parseGridShorthand): Ditto.
(WebCore::CSSParser::parseGridTrackList): Changed behavior depending on the value of
TrackSizeList.
* css/CSSParser.h: TrackListType has now 3 different values which determine the behavior of
parseGridTrackList.
* css/CSSPropertyNames.in: Use a new converter for lists.
* css/StyleBuilderConverter.h:
(WebCore::StyleBuilderConverter::convertGridTrackSizeList):
* rendering/RenderGrid.cpp:
(WebCore::RenderGrid::rawGridTrackSize): Resolve the size of the auto track.
* rendering/style/RenderStyle.h:
(WebCore::RenderStyle::gridAutoColumns): Return a Vector.
(WebCore::RenderStyle::gridAutoRows): Ditto.
(WebCore::RenderStyle::setGridAutoColumns): Store a Vector.
(WebCore::RenderStyle::setGridAutoRows): Ditto.
(WebCore::RenderStyle::initialGridAutoColumns): Return a Vector with one auto track.
(WebCore::RenderStyle::initialGridAutoRows): Ditto.
* rendering/style/StyleGridData.h: Store a Vector of GridTrackSize instead of just one.

LayoutTests:

* fast/css-grid-layout/grid-auto-columns-rows-get-set-expected.txt:
* fast/css-grid-layout/grid-auto-columns-rows-get-set.html:
* fast/css-grid-layout/grid-shorthand-get-set-expected.txt:
* fast/css-grid-layout/grid-shorthand-get-set.html:
* svg/css/getComputedStyle-basic-expected.txt: CSSPrimitiveValue -> CSSValueList.

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

3 years agoTest svn.webkit.org functionality after maintenance.
lforschler@apple.com [Tue, 26 Jul 2016 08:06:28 +0000 (08:06 +0000)]
Test svn.webkit.org functionality after maintenance.

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

3 years agoMathOperator: Add a mapping from combining to non-combining equivalents
fred.wang@free.fr [Tue, 26 Jul 2016 07:46:58 +0000 (07:46 +0000)]
MathOperator: Add a mapping from combining to non-combining equivalents
https://bugs.webkit.org/show_bug.cgi?id=159513

Patch by Frederic Wang <fwang@igalia.com> on 2016-07-25
Reviewed by Darin Adler.

Source/WebCore:

Many math fonts provide stretch variants and assemblies for combining characters but not for
their non-combining equivalent. In the MathML recommendation, it is suggested to use
non-combining charaters, so we allow the operator stretching code to look for constructions
associated to these non-combining characters in order to still be able to stretch the
combining ones.

Test: mathml/presentation/bug159513.html

* rendering/mathml/MathOperator.cpp:
(WebCore::MathOperator::getGlyph): New function extending getBaseGlyph to retrieve the glyph
data for an arbitrary character.
(WebCore::MathOperator::getMathVariantsWithFallback): This helper function calls
getMathVariants for the base glyph. If no constructions are available, it calls
getMathVariants for the glyph associated to equivalent fallback characters as listed in the
small characterFallback table.
(WebCore::MathOperator::calculateStretchyData): Call getMathVariantsWithFallback instead of
getMathVariants. Note that we do not need to do that for calculateDisplayStyleLargeOperator
as we do not use fallback for large operators.
* rendering/mathml/MathOperator.h:
(WebCore::MathOperator::getBaseGlyph): Use getGlyph to implement this function.

LayoutTests:

* mathml/presentation/bug159513.html: Added.
* platform/gtk/mathml/presentation/bug159513-expected.png: Added.
* platform/gtk/mathml/presentation/bug159513-expected.txt: Added.
* platform/ios-simulator/TestExpectations: Skip this test on iOS.
* platform/mac/TestExpectations: Skip this test on Mac.

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

3 years agoSecond parameter to Range.setStart() / setEnd() should be mandatory
cdumez@apple.com [Tue, 26 Jul 2016 05:46:53 +0000 (05:46 +0000)]
Second parameter to Range.setStart() / setEnd() should be mandatory
https://bugs.webkit.org/show_bug.cgi?id=160184

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

Rebaseline W3C test now that more checks are passing.

* web-platform-tests/dom/interfaces-expected.txt:

Source/WebCore:

Second parameter to Range.setStart() / setEnd() should be mandatory:
- https://dom.spec.whatwg.org/#interface-range

Also use "unsigned long" instead of "long" type for the parameter,
as per the specification.

Firefox and Chrome agree with the specification.

No new tests, rebaselined existing test.

* dom/Range.cpp:
(WebCore::Range::setStart):
(WebCore::Range::setEnd):
(WebCore::Range::checkNodeWOffset):
* dom/Range.h:
* dom/Range.idl:
* dom/RangeBoundaryPoint.h:
(WebCore::RangeBoundaryPoint::set):

LayoutTests:

Update tests to reflect behavior change.

* editing/deleting/delete-uneditable-style.html:
* fast/dom/non-numeric-values-numeric-parameters-expected.txt:
* fast/dom/script-tests/non-numeric-values-numeric-parameters.js:
* fast/regions/simplified-layout-no-regions.html:

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

3 years agoDOMTokenList.prototype.toString should be enumerable
cdumez@apple.com [Tue, 26 Jul 2016 05:27:51 +0000 (05:27 +0000)]
DOMTokenList.prototype.toString should be enumerable
https://bugs.webkit.org/show_bug.cgi?id=160182

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

Rebaseline W3C test now that one more check is passing.

* web-platform-tests/dom/interfaces-expected.txt:

Source/WebCore:

DOMTokenList.prototype.toString should be enumerable:
- https://dom.spec.whatwg.org/#interface-domtokenlist
- http://heycam.github.io/webidl/#es-stringifier

Firefox and Chrome agree with the specification.

No new tests, rebaselined existing test.

* html/DOMTokenList.idl:

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

3 years agoAX: Expose autoFillButtonType to accessibility
n_wang@apple.com [Tue, 26 Jul 2016 05:27:33 +0000 (05:27 +0000)]
AX: Expose autoFillButtonType to accessibility
https://bugs.webkit.org/show_bug.cgi?id=160179

Reviewed by Chris Fleizach.

Source/WebCore:

Added a new attribute on Mac to expose the auto-fill button type.

Changes are covered in modified test.

* accessibility/AccessibilityObject.cpp:
(WebCore::AccessibilityObject::isValueAutofillAvailable):
(WebCore::AccessibilityObject::valueAutofillButtonType):
(WebCore::AccessibilityObject::isValueAutofilled):
* accessibility/AccessibilityObject.h:
(WebCore::AccessibilityObject::passwordFieldValue):
* accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]):

LayoutTests:

* accessibility/auto-fill-types-expected.txt:
* accessibility/auto-fill-types.html:

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

3 years agoBuild fix for Safari 9.
rniwa@webkit.org [Tue, 26 Jul 2016 03:04:23 +0000 (03:04 +0000)]
Build fix for Safari 9.

* public/v3/models/build-request.js:
(BuildRequest.prototype.waitingTime): Don't use "const" in strict mode.

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

3 years agoPerf dashboard should show the list of a pending A/B testing jobs
rniwa@webkit.org [Tue, 26 Jul 2016 02:45:13 +0000 (02:45 +0000)]
Perf dashboard should show the list of a pending A/B testing jobs
https://bugs.webkit.org/show_bug.cgi?id=160138

Rubber-stamped by Chris Dumez.

Add a page to show the list of A/B testing build requests per triggerable. Ideally, we would like to
see a queue per builder but that would require changes to database tables and syncing scripts.

Because this page is most useful when the analysis task with which each build request is associated,
JSON API at /api/build-requests/ has been modified to return the analysis task ID for each request.

Also streamlined the page that shows the list of analysis tasks per Chris' feedback by consolidating
"Bisecting" and "Identified" into "Investigated" and moving the toolbar from the upper left corner
inside the heading to right beneath the heading above the table. Also made the category page serialize
the filter an user had typed in so that reloading the page doesn't clear it.

* public/api/analysis-tasks.php:
(fetch_associated_data_for_tasks): Removed 'category' from the list of columns returned as the notion
of 'category' is only relevant in UI, and it's better computed in the front-end.
(format_task): Ditto.
(determine_category): Deleted.

* public/api/test-groups.php:
(main):

* public/include/build-requests-fetcher.php:
(BuildRequestsFetcher::fetch_for_task): Include the analysis task ID in the rows.
(BuildRequestsFetcher::fetch_for_group): Ditto. Ditto.
(BuildRequestsFetcher::fetch_incomplete_requests_for_triggerable): Ditto.
(BuildRequestsFetcher::results_internal): Ditto.

* public/v3/index.html:

* public/v3/main.js:
(main): Create a newly introduced BuildRequestQueuePage as a subpage of AnalysisCategoryPage.

* public/v3/components/ratio-bar-graph.js:
(RatioBarGraph.prototype.update): Fixed a bogus assertion here. ratio can be any number. The coercion
into [-1, 1] is done inside RatioBarGraph's render() function.

* public/v3/models/analysis-task.js:
(AnalysisTask.prototype.category): Moved the code to compute the analysis task's category from
determine_category in analysis-tasks.php. Also merged "bisecting" and "identified" into "investigated".
(AnalysisTask.categories): Merged "bisecting" and "identified" into "investigated".

* public/v3/models/build-request.js:
(BuildRequest): Remember the triggerable and the analysis task associated with this request as well as
the time at when this request was created.
(BuildRequest.prototype.analysisTaskId): Added.
(BuildRequest.prototype.statusLabel): Use a shorter label: "Waiting" for "pending" status.
(BuildRequest.prototype.createdAt): Added.
(BuildRequest.prototype.waitingTime): Added. Returns a human readable time duration since the creation
of this build request such as "2 hours 21 minutes" against a reference time.
(BuildRequest.fetchTriggerables): Added.
(BuildRequest.cachedRequestsForTriggerableID): Added. Used when navigating back to

* public/v3/pages/analysis-category-page.js:
(AnalysisCategoryPage): Construct AnalysisCategoryToolbar and store it in this._categoryToolbar since it
no longer inherits from Toolbar class, which PageWithHeading recognizes and stores.
(AnalysisCategoryPage.prototype.title):
(AnalysisCategoryPage.prototype.serializeState): Added.
(AnalysisCategoryPage.prototype.stateForCategory): Added. Include the filter in the serialization.
(AnalysisCategoryPage.prototype.updateFromSerializedState): Restore the filter from the URL state.
(AnalysisCategoryPage.prototype.filterDidChange): Added. Called by AnalysisCategoryToolbar to update
the URL state in addition to calling render() as done previously via setFilterCallback.
(AnalysisCategoryPage.prototype.render): Always call _categoryToolbar.render() since the hyperlinks for
the category pages now include the filter, which can be updated in each call.
(AnalysisCategoryPage.cssTemplate):

* public/v3/pages/analysis-category-toolbar.js:
(AnalysisCategoryToolbar): Inherits from ComponentBase instead of Toolbar since AnalysisCategoryToolbar
no longer works with Heading class unlike other subclasses of Toolbar class.
(AnalysisCategoryToolbar.prototype.setCategoryPage): Added.
(AnalysisCategoryToolbar.prototype.setFilterCallback): Deleted.
(AnalysisCategoryToolbar.prototype.setFilter): Added. Used to restore from a serialized URL state.
(AnalysisCategoryToolbar.prototype.render): Don't recreate the input element as it clears the value as
well as the selection of the element. Also use AnalysisCategoryPage's stateForCategory to serialize the
category name and the current filter for each hyperlink.
(AnalysisCategoryToolbar.prototype._filterMayHaveChanged): Now takes an boolean argument specifying
whether the URL state should be updated or not. We update the URL only when a change event is fired to
avoid constantly updating it while an user is still typing.
(AnalysisCategoryToolbar.cssTemplate): Added.
(AnalysisCategoryToolbar.htmlTemplate): Added a button to open the newly added queue page.

* public/v3/pages/build-request-queue-page.js:
(BuildRequestQueuePage): Added.
(BuildRequestQueuePage.prototype.routeName): Added.
(BuildRequestQueuePage.prototype.pageTitle): Added.
(BuildRequestQueuePage.prototype.open): Added. Fetch open build requests for every triggerables using
the same API as the syncing scripts.
(BuildRequestQueuePage.prototype.render): Added.
(BuildRequestQueuePage.prototype._constructBuildRequestTable): Added. Construct a table for the list of
pending, scheduled or running build requests in the order syncing scripts would see. Note that the list
of build requests returned by /api/build-requests/* can contain completed, canceled, or failed requests
since the JSON returns all build requests associated with each test group if one of the requests of the
group have not finished. This helps syncing scripts picking the right builder for A/B testing when it
had previously been unloaded or crashed in the middle of processing a test group. This characteristics
of the API actually helps us here because we can reliably compute the total number of build requests in
the group. The first half of this function does this counting as well as collapses all but the first
unfinished build requests into a "contraction" row, which just shows the number of build requests that
are remaining in the group.
(BuildRequestQueuePage.cssTemplate): Added.
(BuildRequestQueuePage.htmlTemplate): Added.

* public/v3/pages/summary-page.js:
(SummaryPage.prototype.open): Use one-day median instead of seven-day median to compute the status.
(SummaryPageConfigurationGroup): Initialize _ratio to NaN. This was causing assertion failures in
RatioBarGraph's update() while measurement sets are being fetched.

* server-tests/api-build-requests-tests.js: Updated the tests per change in BuildRequest's statusLabel.
* unit-tests/analysis-task-tests.js: Ditto.
* unit-tests/test-groups-tests.js: Ditto.
* unit-tests/build-request-tests.js: Added tests for BuildRequest's waitingTime.

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

3 years agoCleanup RenderTable*::createAnonymous*
zalan@apple.com [Tue, 26 Jul 2016 02:40:04 +0000 (02:40 +0000)]
Cleanup RenderTable*::createAnonymous*
https://bugs.webkit.org/show_bug.cgi?id=160175

Reviewed by Simon Fraser.

This patch
1. tightens the type on createAnonymousBoxWithSameTypeAs, createAnonymousWithParentRendererAndDisplay and
createAnonymousWithParentRenderer from RenderObject to the appropriate type.
2. changes the return type of create* function from raw pointer to std::unique_ptr<>
3. decouples createAnonymousBoxWithSameTypeAs and createAnonymousWithParentRenderer.
createAnonymousBoxWithSameTypeAs misleadingly calls createAnonymousWithParentRenderer
while it is never the parent in case of table items.
(std::unique_ptr::release() vs. WTFMove() will be addressed in a separate patch)

No change in functionality.

* rendering/RenderBlock.cpp:
(WebCore::RenderBlock::createAnonymousBoxWithSameTypeAs):
(WebCore::RenderBlock::createAnonymousWithParentRendererAndDisplay):
* rendering/RenderBlock.h:
(WebCore::RenderBlock::createAnonymousBlock):
* rendering/RenderBox.cpp:
(WebCore::RenderBox::layoutOverflowRectForPropagation):
* rendering/RenderBox.h:
(WebCore::RenderBox::createAnonymousBoxWithSameTypeAs):
* rendering/RenderElement.cpp:
(WebCore::RenderElement::addChild):
* rendering/RenderInline.cpp:
(WebCore::RenderInline::splitFlow):
* rendering/RenderTable.cpp:
(WebCore::RenderTable::addChild):
(WebCore::RenderTable::createTableWithStyle):
(WebCore::RenderTable::createAnonymousWithParentRenderer):
* rendering/RenderTable.h:
(WebCore::RenderTable::createAnonymousBoxWithSameTypeAs):
* rendering/RenderTableCell.cpp:
(WebCore::RenderTableCell::createTableCellWithStyle):
(WebCore::RenderTableCell::createAnonymousWithParentRenderer):
* rendering/RenderTableCell.h:
(WebCore::RenderTableCell::createAnonymousBoxWithSameTypeAs):
* rendering/RenderTableRow.cpp:
(WebCore::RenderTableRow::addChild):
(WebCore::RenderTableRow::createTableRowWithStyle):
(WebCore::RenderTableRow::createAnonymousWithParentRenderer):
* rendering/RenderTableRow.h:
(WebCore::RenderTableRow::createAnonymousBoxWithSameTypeAs):
* rendering/RenderTableSection.cpp:
(WebCore::RenderTableSection::addChild):
(WebCore::RenderTableSection::createTableSectionWithStyle):
(WebCore::RenderTableSection::createAnonymousWithParentRenderer):
* rendering/RenderTableSection.h:
(WebCore::RenderTableSection::createAnonymousBoxWithSameTypeAs):

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

3 years agoTouch properties should be on the prototype
cdumez@apple.com [Tue, 26 Jul 2016 02:24:20 +0000 (02:24 +0000)]
Touch properties should be on the prototype
https://bugs.webkit.org/show_bug.cgi?id=160174

Reviewed by Ryosuke Niwa.

Source/WebCore:

Touch properties should be on the prototype:
- https://w3c.github.io/touch-events/#idl-def-touch

Chrome agrees with the specification.

Test: platform/ios-simulator/ios/touch/Touch-attributes-prototype.html

* bindings/scripts/CodeGeneratorJS.pm:
(InterfaceRequiresAttributesOnInstanceForCompatibility): Deleted.

LayoutTests:

Add layout test coverage.

* platform/ios-simulator/ios/touch/Touch-attributes-prototype-expected.txt: Added.
* platform/ios-simulator/ios/touch/Touch-attributes-prototype.html: Added.

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

3 years agoSet MediaRemote playback state based on MediaSession playback state.
commit-queue@webkit.org [Tue, 26 Jul 2016 02:18:30 +0000 (02:18 +0000)]
Set MediaRemote playback state based on MediaSession playback state.
https://bugs.webkit.org/show_bug.cgi?id=160177

Patch by Jeremy Jones <jeremyj@apple.com> on 2016-07-25
Reviewed by Eric Carlson.

Use playback session state to update media remote playback state instead of
unconditionally setting it to playing.

* platform/audio/mac/MediaSessionManagerMac.mm:
(WebCore::MediaSessionManagerMac::updateNowPlayingInfo):

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

3 years agoRenderBox::haveSameDirection is used only by table items.
zalan@apple.com [Tue, 26 Jul 2016 02:15:56 +0000 (02:15 +0000)]
RenderBox::haveSameDirection is used only by table items.
https://bugs.webkit.org/show_bug.cgi?id=160141

Reviewed by Simon Fraser.

Remove RenderBox::haveSameDirection() since it's used only by RenderTable*
classes. The new stand alone function (with 2 arguments) now checks if both of
the objects are valid.

No change in functionality.

* rendering/RenderBox.h:
(WebCore::RenderBox::hasSameDirectionAs): Deleted.
* rendering/RenderTable.cpp:
(WebCore::RenderTable::tableStartBorderAdjoiningCell):
(WebCore::RenderTable::tableEndBorderAdjoiningCell):
* rendering/RenderTable.h:
(WebCore::haveSameDirection):
* rendering/RenderTableCell.cpp:
(WebCore::RenderTableCell::hasStartBorderAdjoiningTable):
(WebCore::RenderTableCell::hasEndBorderAdjoiningTable):
* rendering/RenderTableCell.h:
(WebCore::RenderTableCell::borderAdjoiningTableStart):
(WebCore::RenderTableCell::borderAdjoiningTableEnd):
* rendering/RenderTableRow.h:
(WebCore::RenderTableRow::borderAdjoiningTableStart):
(WebCore::RenderTableRow::borderAdjoiningTableEnd):
* rendering/RenderTableSection.cpp:
(WebCore::RenderTableSection::borderAdjoiningStartCell):
(WebCore::RenderTableSection::borderAdjoiningEndCell):
(WebCore::RenderTableSection::firstRowCellAdjoiningTableStart):
(WebCore::RenderTableSection::firstRowCellAdjoiningTableEnd):
* rendering/RenderTableSection.h:
(WebCore::RenderTableSection::borderAdjoiningTableStart):
(WebCore::RenderTableSection::borderAdjoiningTableEnd):

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

3 years agoUnreviewed, rolling out r203703.
benjamin@webkit.org [Tue, 26 Jul 2016 01:05:43 +0000 (01:05 +0000)]
Unreviewed, rolling out r203703.

It breaks some internal tests

Reverted changeset:

"[JSC] DFG::Node should not have its own allocator"
https://bugs.webkit.org/show_bug.cgi?id=160098
http://trac.webkit.org/changeset/203703

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

3 years ago[JSC] DFG::Node should not have its own allocator
commit-queue@webkit.org [Tue, 26 Jul 2016 00:27:54 +0000 (00:27 +0000)]
[JSC] DFG::Node should not have its own allocator
https://bugs.webkit.org/show_bug.cgi?id=160098

Patch by Benjamin Poulain <bpoulain@apple.com> on 2016-07-25
Reviewed by Geoffrey Garen.

We need some design changes for DFG::Node:
-Accessing the index must be fast. B3 uses indices for sets
 and maps, it is a lot faster than hashing pointers.
-We should be able to subclass DFG::Node to specialize it.

* CMakeLists.txt:
* JavaScriptCore.xcodeproj/project.pbxproj:
* dfg/DFGAllocator.h: Removed.
(JSC::DFG::Allocator::Region::size): Deleted.
(JSC::DFG::Allocator::Region::headerSize): Deleted.
(JSC::DFG::Allocator::Region::numberOfThingsPerRegion): Deleted.
(JSC::DFG::Allocator::Region::data): Deleted.
(JSC::DFG::Allocator::Region::isInThisRegion): Deleted.
(JSC::DFG::Allocator::Region::regionFor): Deleted.
(JSC::DFG::Allocator<T>::Allocator): Deleted.
(JSC::DFG::Allocator<T>::~Allocator): Deleted.
(JSC::DFG::Allocator<T>::allocate): Deleted.
(JSC::DFG::Allocator<T>::free): Deleted.
(JSC::DFG::Allocator<T>::freeAll): Deleted.
(JSC::DFG::Allocator<T>::reset): Deleted.
(JSC::DFG::Allocator<T>::indexOf): Deleted.
(JSC::DFG::Allocator<T>::allocatorOf): Deleted.
(JSC::DFG::Allocator<T>::bumpAllocate): Deleted.
(JSC::DFG::Allocator<T>::freeListAllocate): Deleted.
(JSC::DFG::Allocator<T>::allocateSlow): Deleted.
(JSC::DFG::Allocator<T>::freeRegionsStartingAt): Deleted.
(JSC::DFG::Allocator<T>::startBumpingIn): Deleted.
* dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::addToGraph):
* dfg/DFGCPSRethreadingPhase.cpp:
(JSC::DFG::CPSRethreadingPhase::freeUnnecessaryNodes):
(JSC::DFG::CPSRethreadingPhase::addPhiSilently):
* dfg/DFGCleanUpPhase.cpp:
(JSC::DFG::CleanUpPhase::run):
* dfg/DFGConstantFoldingPhase.cpp:
(JSC::DFG::ConstantFoldingPhase::run):
* dfg/DFGConstantHoistingPhase.cpp:
* dfg/DFGDCEPhase.cpp:
(JSC::DFG::DCEPhase::fixupBlock):
* dfg/DFGDriver.cpp:
(JSC::DFG::compileImpl):
* dfg/DFGGraph.cpp:
(JSC::DFG::Graph::Graph):
(JSC::DFG::Graph::deleteNode):
(JSC::DFG::Graph::killBlockAndItsContents):
(JSC::DFG::Graph::~Graph): Deleted.
* dfg/DFGGraph.h:
(JSC::DFG::Graph::addNode):
* dfg/DFGLICMPhase.cpp:
(JSC::DFG::LICMPhase::attemptHoist):
* dfg/DFGLongLivedState.cpp: Removed.
(JSC::DFG::LongLivedState::LongLivedState): Deleted.
(JSC::DFG::LongLivedState::~LongLivedState): Deleted.
(JSC::DFG::LongLivedState::shrinkToFit): Deleted.
* dfg/DFGLongLivedState.h: Removed.
* dfg/DFGNode.cpp:
(JSC::DFG::Node::index): Deleted.
* dfg/DFGNode.h:
(JSC::DFG::Node::index):
* dfg/DFGNodeAllocator.h: Removed.
(operator new ): Deleted.
* dfg/DFGObjectAllocationSinkingPhase.cpp:
* dfg/DFGPlan.cpp:
(JSC::DFG::Plan::compileInThread):
(JSC::DFG::Plan::compileInThreadImpl):
* dfg/DFGPlan.h:
* dfg/DFGSSAConversionPhase.cpp:
(JSC::DFG::SSAConversionPhase::run):
* dfg/DFGWorklist.cpp:
(JSC::DFG::Worklist::runThread):
* runtime/VM.cpp:
(JSC::VM::VM): Deleted.
* runtime/VM.h:

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

3 years agoClientRect properties should be on the prototype
cdumez@apple.com [Tue, 26 Jul 2016 00:21:31 +0000 (00:21 +0000)]
ClientRect properties should be on the prototype
https://bugs.webkit.org/show_bug.cgi?id=160165

Reviewed by Geoffrey Garen.

Source/WebCore:

Move ClientRect properties from the instance to the prototype. This
matches the specification, Firefox and Chrome.

Also add a serializer to ClientRect in order to match the specification:
- https://drafts.fxtf.org/geometry/Overview.html#domrectreadonly
- https://heycam.github.io/webidl/#es-serializer

This avoids breaking content that relies on JSON.stringify() to
serialize ClientRect objects.

Tests: fast/css/ClientRect-attributes-prototype.html
       fast/css/ClientRect-serialization.html

* CMakeLists.txt:
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/JSBindingsAllInOne.cpp:
* bindings/js/JSClientRectCustom.cpp: Added.
(WebCore::JSClientRect::toJSON):
* bindings/scripts/CodeGeneratorJS.pm:
* dom/ClientRect.idl:

LayoutTests:

* fast/css/ClientRect-attributes-prototype-expected.txt: Added.
* fast/css/ClientRect-attributes-prototype.html: Added.
Add layout test to check that ClientRect's properties are on the
prototype.

* fast/css/ClientRect-serialization-expected.txt: Added.
* fast/css/ClientRect-serialization.html: Added.
Add layout test to check that ClientRect has a serializer.

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

3 years agoParameters to DOMImplementation.createDocumentType() should be mandatory and non...
cdumez@apple.com [Mon, 25 Jul 2016 21:53:33 +0000 (21:53 +0000)]
Parameters to DOMImplementation.createDocumentType() should be mandatory and non-nullable
https://bugs.webkit.org/show_bug.cgi?id=160167

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

Rebaseline a W3C test now that more checks are passing.

* web-platform-tests/dom/interfaces-expected.txt:

Source/WebCore:

Parameters to DOMImplementation.createDocumentType() should be mandatory
and non-nullable:
- https://dom.spec.whatwg.org/#domimplementation

Firefox and Chrome both agree with the specification. However, those
parameters were nullable and optional in WebKit.

Test: fast/dom/DOMImplementation/createDocumentType-parameters.html

* dom/DOMImplementation.idl:

LayoutTests:

* editing/selection/script-tests/DOMSelection-DocumentType.js:
* fast/dom/DOMImplementation/createDocumentType-err-expected.txt:
* fast/dom/DOMImplementation/script-tests/createDocumentType-err.js:
Update existing tests to reflect the behavior change.

* fast/dom/DOMImplementation/createDocumentType-parameters-expected.txt: Added.
* fast/dom/DOMImplementation/createDocumentType-parameters.html: Added.
Add layout test coverage. I have verified that this test passes on both
Firefox and Chrome.

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

3 years agoModern IDB: Make sure IndexedDB works from file:// url documents by default
beidson@apple.com [Mon, 25 Jul 2016 21:38:42 +0000 (21:38 +0000)]
Modern IDB: Make sure IndexedDB works from file:// url documents by default
https://bugs.webkit.org/show_bug.cgi?id=153783

Reviewed by Alex Christensen.

Previously, to grant IndexedDB access to file:// urls for testing purposes,
we had to call the SPI [WKWebViewConfiguration _setAllowUniversalAccessFromFileURLs:].

As of https://trac.webkit.org/changeset/203695 this is no longer required.

Change the relevant API tests to make sure this continues to be no longer required.

* TestWebKitAPI/Tests/WebKit2Cocoa/IDBDeleteRecovery.mm:
* TestWebKitAPI/Tests/WebKit2Cocoa/IndexedDBDatabaseProcessKill.mm:
* TestWebKitAPI/Tests/WebKit2Cocoa/IndexedDBMultiProcess.mm:
* TestWebKitAPI/Tests/WebKit2Cocoa/IndexedDBPersistence.mm:
* TestWebKitAPI/Tests/WebKit2Cocoa/StoreBlobThenDelete.mm:
* TestWebKitAPI/Tests/WebKit2Cocoa/WebProcessKillIDBCleanup.mm:

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

3 years agoAssemblyHelpers should own all of the cell allocation methods
fpizlo@apple.com [Mon, 25 Jul 2016 21:03:35 +0000 (21:03 +0000)]
AssemblyHelpers should own all of the cell allocation methods
https://bugs.webkit.org/show_bug.cgi?id=160171

Reviewed by Saam Barati.

Prior to this change we had some code in DFGSpeculativeJIT.h and some code in JIT.h that
did cell allocation.

This change moves all of that code into AssemblyHelpers.h.

* dfg/DFGSpeculativeJIT.h:
(JSC::DFG::SpeculativeJIT::emitAllocateJSCell):
(JSC::DFG::SpeculativeJIT::emitAllocateJSObject):
(JSC::DFG::SpeculativeJIT::emitAllocateJSObjectWithKnownSize):
(JSC::DFG::SpeculativeJIT::emitAllocateVariableSizedJSObject):
(JSC::DFG::SpeculativeJIT::emitAllocateDestructibleObject):
* jit/AssemblyHelpers.h:
(JSC::AssemblyHelpers::emitAllocate):
(JSC::AssemblyHelpers::emitAllocateJSCell):
(JSC::AssemblyHelpers::emitAllocateJSObject):
(JSC::AssemblyHelpers::emitAllocateJSObjectWithKnownSize):
(JSC::AssemblyHelpers::emitAllocateVariableSized):
(JSC::AssemblyHelpers::emitAllocateVariableSizedJSObject):
(JSC::AssemblyHelpers::emitAllocateDestructibleObject):
* jit/JIT.h:
* jit/JITInlines.h:
(JSC::JIT::isOperandConstantChar):
(JSC::JIT::emitValueProfilingSite):
(JSC::JIT::emitAllocateJSObject): Deleted.
* jit/JITOpcodes.cpp:
(JSC::JIT::emit_op_new_object):
(JSC::JIT::emit_op_create_this):
* jit/JITOpcodes32_64.cpp:
(JSC::JIT::emit_op_new_object):
(JSC::JIT::emit_op_create_this):

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