WebKit-https.git
3 years agoWeb Inspector: SyncTestSuite should complain if passed an async setup/test/teardown...
bburg@apple.com [Tue, 12 Dec 2017 23:13:04 +0000 (23:13 +0000)]
Web Inspector: SyncTestSuite should complain if passed an async setup/test/teardown function
https://bugs.webkit.org/show_bug.cgi?id=180717

Reviewed by Devin Rousso.

Source/WebInspectorUI:

* UserInterface/Test/TestSuite.js:
(SyncTestSuite.prototype.addTestCase):
Raise an exception if test/setup/teardown is an async function. It won't work.

LayoutTests:

Add new test cases for more strict requirements for test case arguments.

* inspector/unit-tests/sync-test-suite-expected.txt:
* inspector/unit-tests/sync-test-suite.html:

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

3 years ago[EME] Support FPS-over-HLS in the Modern EME API
jer.noble@apple.com [Tue, 12 Dec 2017 23:12:20 +0000 (23:12 +0000)]
[EME] Support FPS-over-HLS in the Modern EME API
https://bugs.webkit.org/show_bug.cgi?id=180707

Reviewed by Eric Carlson.

Add support for the "skd" initDataType, where the initData is the URI provided in the
EXT-X-KEY tag in a HLS manifest:

* platform/graphics/avfoundation/CDMFairPlayStreaming.cpp:
(WebCore::CDMPrivateFairPlayStreaming::sinfName):
(WebCore::CDMPrivateFairPlayStreaming::skdName):
(WebCore::extractSinfData):
(WebCore::CDMPrivateFairPlayStreaming::sanitizeSkd):
(WebCore::CDMPrivateFairPlayStreaming::extractKeyIDsSkd):
(WebCore::validInitDataTypes):
(WebCore::CDMFactory::platformRegisterFactories):
(WebCore::CDMPrivateFairPlayStreaming::supportsInitDataType const):
(WebCore::CDMPrivateFairPlayStreaming::supportsConfiguration const):
(WebCore::CDMPrivateFairPlayStreaming::supportsInitData const):
(WebCore::sinfName): Deleted.

Add support for creating a AVContentKeyRequest from a skd key URI rather than from
initialization data, and for extracting keyIDs from the AVContentKeyRequest identifier.

* platform/graphics/avfoundation/CDMFairPlayStreaming.h:
* platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.h:
* platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.mm:
(WebCore::CDMInstanceFairPlayStreamingAVFObjC::keyIDs):
(WebCore::CDMInstanceFairPlayStreamingAVFObjC::requestLicense):
(WebCore::CDMInstanceFairPlayStreamingAVFObjC::updateLicense):
(WebCore::CDMInstanceFairPlayStreamingAVFObjC::didProvideRequest):

Add support for AVContentKeySession to MediaPlayerPrivateAVFoundationObjC, and for emitting
initializationData messages when encountering a loading request for a "skd" URI.

* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
(WebCore::MediaPlayerPrivateAVFoundationObjC::shouldWaitForLoadingOfResource):
(WebCore::MediaPlayerPrivateAVFoundationObjC::cdmInstanceAttached):
(WebCore::MediaPlayerPrivateAVFoundationObjC::cdmInstanceDetached):
(WebCore::MediaPlayerPrivateAVFoundationObjC::attemptToDecryptWithInstance):

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

3 years ago[Web Animations] Expose promises on Animation interface
graouts@webkit.org [Tue, 12 Dec 2017 23:12:02 +0000 (23:12 +0000)]
[Web Animations] Expose promises on Animation interface
https://bugs.webkit.org/show_bug.cgi?id=180710
<rdar://problem/36000604>

Reviewed by Dean Jackson.

Source/WebCore:

Expose the "ready" and "finished" promises on Animation. A future patch will fulfil or reject them.

* animation/WebAnimation.cpp:
(WebCore::WebAnimation::WebAnimation):
(WebCore::WebAnimation::readyPromiseResolve):
(WebCore::WebAnimation::finishedPromiseResolve):
* animation/WebAnimation.h:
* animation/WebAnimation.idl:

LayoutTests:

Rebase some WPT expectations with progressions due to exposing the "ready" and "finished" promises.

* http/wpt/web-animations/interfaces/Animation/idlharness-expected.txt:
* http/wpt/web-animations/timing-model/animations/current-time-expected.txt:

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

3 years agoIPC code doesn't understand NSDictionaries with non-NSString keys
mmaxfield@apple.com [Tue, 12 Dec 2017 23:11:19 +0000 (23:11 +0000)]
IPC code doesn't understand NSDictionaries with non-NSString keys
https://bugs.webkit.org/show_bug.cgi?id=180307
<rdar://problem/35812382>

Reviewed by Alex Christensen.

Source/WebKit:

Variable fonts have a dictionary inside its descriptor which represents the values
of all the axes of the variable font. Our IPC code wasn't expecting this.

* Shared/mac/ArgumentCodersMac.mm:
(IPC::encode):
(IPC::decode):

LayoutTests:

* fast/text/variations/ipc-expected.txt: Added.
* fast/text/variations/ipc.html: Added.

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

3 years agoWeb Inspector: add InspectorTest.expectException() and use it
bburg@apple.com [Tue, 12 Dec 2017 23:10:00 +0000 (23:10 +0000)]
Web Inspector: add InspectorTest.expectException() and use it
https://bugs.webkit.org/show_bug.cgi?id=180719

Reviewed by Matt Baker.

Source/WebInspectorUI:

This helps straighten out async test() functions that need
to test exceptional cases. Without this, every such method
needs try/catch boilerplate to leak the error outside the
scope of the catch-block and then assert that it exists.

* UserInterface/Test/TestHarness.js:
(TestHarness.prototype.expectException):
Added. This method takes a callback which is expected to raise
an exception either by throwing an Error instance or returning
a Promise that rejects with an Error instance. The method returns
a Promise that is either resolved with the expected exception
from one of the above sources, or is rejected with the non-exception
result that was returned or resolved by the callback.

LayoutTests:

* inspector/dom/highlightNode-expected.txt:
* inspector/dom/highlightNode.html:
Adopt the new helper method.

* inspector/unit-tests/test-harness-expect-functions-async-expected.txt: Added.
* inspector/unit-tests/test-harness-expect-functions-async.html: Added.
Add a separate async test suite for async expect* functions.

* inspector/unit-tests/test-harness-expect-functions-expected.txt:
* inspector/unit-tests/test-harness-expect-functions.html:
Standardize the naming for these two suites.

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

3 years agoFetch Event header filtering should apply in CORS mode only
commit-queue@webkit.org [Tue, 12 Dec 2017 23:01:52 +0000 (23:01 +0000)]
Fetch Event header filtering should apply in CORS mode only
https://bugs.webkit.org/show_bug.cgi?id=180708

Patch by Youenn Fablet <youenn@apple.com> on 2017-12-12
Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

* web-platform-tests/service-workers/service-worker/fetch-event.https-expected.txt:

Source/WebCore:

Covered by no-longer failing test.

* workers/service/context/ServiceWorkerFetch.cpp: cleaning headers only in case of CORS mode.

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

3 years agoREGRESSION (Safari 11): custom <font-face> tag crashes a page
mmaxfield@apple.com [Tue, 12 Dec 2017 22:51:02 +0000 (22:51 +0000)]
REGRESSION (Safari 11): custom <font-face> tag crashes a page
https://bugs.webkit.org/show_bug.cgi?id=177848

Reviewed by Darin Adler.

Source/WebCore:

We currently use the CSS property parsers to parse SVG's <font-face> element attributes. Instead,
we should be using the CSS descriptor parsers to parse these attributes. However, this is a
fairly involved task, so until I can finish that, this patch fixes the crash. The crash is simple;
the descriptors shouldn't accept the universal keywords ("initial", "inherit", etc.) and our
font-face machinery assumes this. So the fix is just detect these keywords and explicitly disallow
them.

Test: svg/text/font-style-keyword.html

* svg/SVGFontFaceElement.cpp:
(WebCore::SVGFontFaceElement::parseAttribute):

LayoutTests:

* svg/text/font-style-keyword-expected.txt: Added.
* svg/text/font-style-keyword.html: Added.

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

3 years ago[Web Animations] Implement the playState property on Animation
commit-queue@webkit.org [Tue, 12 Dec 2017 22:24:37 +0000 (22:24 +0000)]
[Web Animations] Implement the playState property on Animation
https://bugs.webkit.org/show_bug.cgi?id=180711
<rdar://problem/36000982>

Patch by Antoine Quint <graouts@apple.com> on 2017-12-12
Reviewed by Dean Jackson.

Source/WebCore:

Expose the playState and pending properties. The playState property has a complete implementation but
has some test failures due to Animation lacking correct behavior while running animations which will
be fixed in a followup patch. The pending property is a placeholder until we implement pending play
and pause tasks in followup patches.

* animation/WebAnimation.cpp:
(WebCore::WebAnimation::playState const):
(WebCore::WebAnimation::effectEndTime const):
* animation/WebAnimation.h:
* animation/WebAnimation.idl:

LayoutTests:

Rebase some WPT expectations with progressions due to exposing the "playState" and "pending" properties.

* http/wpt/web-animations/interfaces/Animation/constructor-expected.txt:
* http/wpt/web-animations/interfaces/Animation/idlharness-expected.txt:
* http/wpt/web-animations/timing-model/animations/set-the-timeline-of-an-animation-expected.txt:

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

3 years agoDon't require perl(File::Copy::Recursive)
mcatanzaro@igalia.com [Tue, 12 Dec 2017 22:23:17 +0000 (22:23 +0000)]
Don't require perl(File::Copy::Recursive)
https://bugs.webkit.org/show_bug.cgi?id=180479
<rdar://problem/35944218>

Reviewed by Daniel Bates.

Fix the error handling. I added this at the last moment and failed to test. The logic is
inverted, causing an error to always be reported on success.

Add a missing 'mkdir -p' using File::Path::make_path. This has its own built-in error
reporting, so no need to add our own.

* Scripts/copy-user-interface-resources.pl:
(ditto):

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

3 years ago[css-grid] Implement alignment for absolute positioned grid items
jfernandez@igalia.com [Tue, 12 Dec 2017 22:19:20 +0000 (22:19 +0000)]
[css-grid] Implement alignment for absolute positioned grid items
https://bugs.webkit.org/show_bug.cgi?id=180632

Reviewed by Manuel Rego Casasnovas.

LayoutTests/imported/w3c:

These tests now pass and verify the alignment logic for positioned grid items.

* web-platform-tests/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-002-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-005-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-007-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-009-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-011-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-013-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-014-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-016-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-002-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-003-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-004-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-005-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-007-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-009-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-010-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-013-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-014-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-015-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-001-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-002-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-003-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-004-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-005-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-006-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-007-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-008-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-009-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-009.html:
* web-platform-tests/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-010-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-011-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-012-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-001-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-002-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-003-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-004-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-005-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-006-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-007-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-008-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-009-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-010-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-011-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-012-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-013-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-014-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-015-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-016-expected.txt:

Source/WebCore:

We are changing how we compute the grid area's size of positioned
items, trying to make the logic as independent as possible of the
grid container's direction.

The new way of placing absolute positioned elements in their grid area
is based on the previously computed area's size. This provide a
mechanism to place an item in its area respecting the offsets derived
from the Content Alignment CSS properties and, which is more important,
ignoring the grid container's direction.

Additionally, we use the already implemented alignment logic that's
used for regular grid items. This patch provides almost full alignment
capabilities for positioned objects, with the exception of 'stretch'.

It's worth mentioning that some of the test cases using vertical-rl
writing mode will fail because of the bug 180633.

Updated web-platform-tests results of the test cases that pass now.

* rendering/GridLayoutFunctions.cpp:
       (WebCore::GridLayoutFunctions::hasOverrideContainingBlockContentSizeForChild):
(WebCore::GridLayoutFunctions::overrideContainingBlockContentSizeForChild):
* rendering/GridLayoutFunctions.h:
* rendering/GridTrackSizingAlgorithm.cpp:
(WebCore::GridTrackSizingAlgorithmStrategy::updateOverrideContainingBlockContentSizeForChild const):
* rendering/RenderGrid.cpp:
(WebCore::RenderGrid::layoutBlock):
(WebCore::RenderGrid::gridItemOffset const):
(WebCore::RenderGrid::hasStaticPositionForChild const):
(WebCore::RenderGrid::layoutPositionedObject):
(WebCore::RenderGrid::applyStretchAlignmentToChildIfNeeded):
(WebCore::RenderGrid::columnAxisPositionForChild const):
(WebCore::RenderGrid::rowAxisPositionForChild const):
(WebCore::RenderGrid::columnAxisOffsetForChild const):
(WebCore::RenderGrid::rowAxisOffsetForChild const):
(WebCore::RenderGrid::gridPositionIsAutoForOutOfFlow const):
(WebCore::RenderGrid::resolveAutoStartGridPosition const):
(WebCore::RenderGrid::resolveAutoEndGridPosition const):
(WebCore::RenderGrid::gridAreaBreadthForOutOfFlowChild):
(WebCore::RenderGrid::logicalOffsetForChild const):
(WebCore::RenderGrid::gridAreaPositionForOutOfFlowChild const):
(WebCore::RenderGrid::gridAreaPositionForInFlowChild const):
(WebCore::RenderGrid::gridAreaPositionForChild const):
(WebCore::RenderGrid::translateOutOfFlowRTLCoordinate const):
(WebCore::RenderGrid::findChildLogicalPosition const):
* rendering/RenderGrid.h:
* rendering/style/GridPositionsResolver.cpp:
(WebCore::adjustGridPositionsFromStyle):
(WebCore::GridPositionsResolver::initialPositionSide):
(WebCore::GridPositionsResolver::finalPositionSide):
* rendering/style/GridPositionsResolver.h:

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

3 years agoWeb Inspector: modernize InjectedScript a bit
bburg@apple.com [Tue, 12 Dec 2017 21:49:13 +0000 (21:49 +0000)]
Web Inspector: modernize InjectedScript a bit
https://bugs.webkit.org/show_bug.cgi?id=180367

Reviewed by Timothy Hatcher.

Stop using out parameters passed by pointer, use references instead.
Stop using OptOutput<T> in favor of std::optional where possible.
If there is only one out-parameter and a void return type, then return the value.

* inspector/InjectedScript.h:
* inspector/InjectedScript.cpp:
(Inspector::InjectedScript::evaluate):
(Inspector::InjectedScript::callFunctionOn):
(Inspector::InjectedScript::evaluateOnCallFrame):
(Inspector::InjectedScript::getFunctionDetails):
(Inspector::InjectedScript::functionDetails):
(Inspector::InjectedScript::getPreview):
(Inspector::InjectedScript::getProperties):
(Inspector::InjectedScript::getDisplayableProperties):
(Inspector::InjectedScript::getInternalProperties):
(Inspector::InjectedScript::getCollectionEntries):
(Inspector::InjectedScript::saveResult):
(Inspector::InjectedScript::setExceptionValue):
(Inspector::InjectedScript::clearExceptionValue):
(Inspector::InjectedScript::inspectObject):
(Inspector::InjectedScript::releaseObject):

* inspector/InjectedScriptBase.h:
* inspector/InjectedScriptBase.cpp:
(Inspector::InjectedScriptBase::InjectedScriptBase):
Declare m_environment with a default initializer.

(Inspector::InjectedScriptBase::makeCall):
(Inspector::InjectedScriptBase::makeEvalCall):
Just return the result, no need for an out-parameter.
Rearrange some code paths now that we can just return a result.
Return a Ref<JSON::Value> since it is either a result value or error value.
Use out_ prefixes in a few places to improve readability.

* inspector/agents/InspectorDebuggerAgent.cpp:
(Inspector::InspectorDebuggerAgent::getFunctionDetails):
(Inspector::InspectorDebuggerAgent::evaluateOnCallFrame):
* inspector/agents/InspectorHeapAgent.cpp:
(Inspector::InspectorHeapAgent::getPreview):
* inspector/agents/InspectorRuntimeAgent.cpp:
(Inspector::InspectorRuntimeAgent::evaluate):
(Inspector::InspectorRuntimeAgent::callFunctionOn):
(Inspector::InspectorRuntimeAgent::getPreview):
(Inspector::InspectorRuntimeAgent::getProperties):
(Inspector::InspectorRuntimeAgent::getDisplayableProperties):
(Inspector::InspectorRuntimeAgent::getCollectionEntries):
(Inspector::InspectorRuntimeAgent::saveResult):
Adapt to InjectedScript changes. In some cases we need to bridge OptOutput<T>
and std::optional until the former is removed from generated method signatures.

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

3 years agoUpdate ContentFiltering.LazilyLoadPlatformFrameworks test to account for libwebrtc...
commit-queue@webkit.org [Tue, 12 Dec 2017 21:36:48 +0000 (21:36 +0000)]
Update ContentFiltering.LazilyLoadPlatformFrameworks test to account for libwebrtc using VideoProcessing framework
https://bugs.webkit.org/show_bug.cgi?id=180713

Patch by Youenn Fablet <youenn@apple.com> on 2017-12-12
Reviewed by Andy Estes.

Temporarily disabling a subcheck until we make the test more robust and/or libwebrtc weak linking VideoProcessing framework.

* TestWebKitAPI/Tests/WebKitCocoa/ContentFiltering.mm:
(-[LazilyLoadPlatformFrameworksController expectParentalControlsLoaded:networkExtensionLoaded:]):

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

3 years ago[EME] Support reporting and restoring persistent usage data.
jer.noble@apple.com [Tue, 12 Dec 2017 21:35:58 +0000 (21:35 +0000)]
[EME] Support reporting and restoring persistent usage data.
https://bugs.webkit.org/show_bug.cgi?id=180684

Reviewed by Eric Carlson.

Add support for reading and acknowledging persistent usage data from the MediaKeys storage
directory.

Add a mechanism for passing the storage location down to CDMPrivate and CDMInstance objects
inside of the CDM class itself:

* Modules/encryptedmedia/CDM.cpp:
(WebCore::CDM::createInstance):
(WebCore::CDM::storageDirectory const):
* Modules/encryptedmedia/CDM.h:

Support loading expired session data, acknowledging expired session data, closing sessions
and removing usable key data.

* platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.h:
* platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.mm:
(WebCore::isEqual):
(WebCore::CDMInstanceFairPlayStreamingAVFObjC::updateLicense):
(WebCore::CDMInstanceFairPlayStreamingAVFObjC::loadSession):
(WebCore::CDMInstanceFairPlayStreamingAVFObjC::closeSession):
(WebCore::CDMInstanceFairPlayStreamingAVFObjC::removeSessionData):

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

3 years agoUnreviewed build fix after r225763.
bfulgham@apple.com [Tue, 12 Dec 2017 21:16:36 +0000 (21:16 +0000)]
Unreviewed build fix after r225763.

Remove dangling close-parentheses character.

* Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:

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

3 years agoWebGL TextureMapperShaderProgram shaders don't compile in MSVC
commit-queue@webkit.org [Tue, 12 Dec 2017 21:11:11 +0000 (21:11 +0000)]
WebGL TextureMapperShaderProgram shaders don't compile in MSVC
https://bugs.webkit.org/show_bug.cgi?id=180709

Patch by Christopher Reid <chris.reid@sony.com> on 2017-12-12
Reviewed by Myles C. Maxfield.

No new tests, no change in behavior.

Vertex and Fragment shaders were not compiling because TextureMapperShaderProgram.cpp was
stringifying "#if USE(OPENGL_ES_2) ... #endif" into the shaders rather than evaluating these
preprocessor directives before the STRINGIFY expansion.

Moved these #if conditions outside of STRINGIFY to remove compiler ambiguity.

* platform/graphics/texmap/TextureMapperShaderProgram.cpp:

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

3 years ago[ESNext][BigInt] Implement BigInt literals and JSBigInt
ticaiolima@gmail.com [Tue, 12 Dec 2017 21:01:57 +0000 (21:01 +0000)]
[ESNext][BigInt] Implement BigInt literals and JSBigInt
https://bugs.webkit.org/show_bug.cgi?id=179000

Reviewed by Darin Adler and Yusuke Suzuki.

JSTests:

* bigIntTests.yaml: Added.
* stress/big-int-literal-line-terminator.js: Added.
* stress/big-int-literals.js: Added.
* stress/big-int-operations-error.js: Added.
* stress/big-int-type-of.js: Added.
* stress/big-int-white-space-trailing-leading.js: Added.
* stress/big-int-function-apply.js: Added.

Source/JavaScriptCore:

This patch starts the implementation of BigInt primitive on
JavaScriptCore. We are introducing BigInt primitive and
implementing it on JSBigInt as a subclass of JSCell with [[BigIntData]]
field implemented contiguosly on memory as inline storage of JSBigInt to
take advantages on performance due to cache locality. The
implementation allows 64 or 32 bitwise arithmetic operations.
JSBigInt also has m_sign to store the sign of [[BigIntData]] and
m_length that keeps track of BigInt length.
The implementation is following the V8 one. [[BigIntData]] is manipulated
by JSBigInt::setDigit(index, value) and JSBigInt::digit(index) operations.
We also have some operations to support arithmetics over digits.

It is important to notice that on our representation,
JSBigInt::dataStorage()[0] represents the least significant digit and
JSBigInt::dataStorage()[m_length - 1] represents the most siginificant digit.

We are also introducing into this Patch the BigInt literals lexer and
syntax parsing support. The operation Strict Equals on BigInts is also being
implemented to enable tests.
These features are being implemented behind a runtime flage "--useBigInt" and
are disabled by default.

* JavaScriptCore.xcodeproj/project.pbxproj:
* Sources.txt:
* bytecode/CodeBlock.cpp:
* bytecompiler/BytecodeGenerator.cpp:
(JSC::BytecodeGenerator::emitEqualityOp):
(JSC::BytecodeGenerator::addBigIntConstant):
* bytecompiler/BytecodeGenerator.h:
(JSC::BytecodeGenerator::BigIntEntryHash::hash):
(JSC::BytecodeGenerator::BigIntEntryHash::equal):
* bytecompiler/NodesCodegen.cpp:
(JSC::BigIntNode::jsValue const):
* dfg/DFGAbstractInterpreterInlines.h:
(JSC::DFG::isToThisAnIdentity):
* interpreter/Interpreter.cpp:
(JSC::sizeOfVarargs):
* llint/LLIntData.cpp:
(JSC::LLInt::Data::performAssertions):
* llint/LowLevelInterpreter.asm:
* parser/ASTBuilder.h:
(JSC::ASTBuilder::createBigInt):
* parser/Lexer.cpp:
(JSC::Lexer<T>::parseBinary):
(JSC::Lexer<T>::parseOctal):
(JSC::Lexer<T>::parseDecimal):
(JSC::Lexer<T>::lex):
(JSC::Lexer<T>::parseHex): Deleted.
* parser/Lexer.h:
* parser/NodeConstructors.h:
(JSC::BigIntNode::BigIntNode):
* parser/Nodes.h:
(JSC::ExpressionNode::isBigInt const):
(JSC::BigIntNode::value):
* parser/Parser.cpp:
(JSC::Parser<LexerType>::parsePrimaryExpression):
* parser/ParserTokens.h:
* parser/ResultType.h:
(JSC::ResultType::definitelyIsBigInt const):
(JSC::ResultType::mightBeBigInt const):
(JSC::ResultType::isNotBigInt const):
(JSC::ResultType::addResultType):
(JSC::ResultType::bigIntType):
(JSC::ResultType::forAdd):
(JSC::ResultType::forLogicalOp):
* parser/SyntaxChecker.h:
(JSC::SyntaxChecker::createBigInt):
* runtime/CommonIdentifiers.h:
* runtime/JSBigInt.cpp: Added.
(JSC::JSBigInt::visitChildren):
(JSC::JSBigInt::JSBigInt):
(JSC::JSBigInt::initialize):
(JSC::JSBigInt::createStructure):
(JSC::JSBigInt::createZero):
(JSC::JSBigInt::allocationSize):
(JSC::JSBigInt::createWithLength):
(JSC::JSBigInt::finishCreation):
(JSC::JSBigInt::toPrimitive const):
(JSC::JSBigInt::singleDigitValueForString):
(JSC::JSBigInt::parseInt):
(JSC::JSBigInt::toString):
(JSC::JSBigInt::isZero):
(JSC::JSBigInt::inplaceMultiplyAdd):
(JSC::JSBigInt::digitAdd):
(JSC::JSBigInt::digitSub):
(JSC::JSBigInt::digitMul):
(JSC::JSBigInt::digitPow):
(JSC::JSBigInt::digitDiv):
(JSC::JSBigInt::internalMultiplyAdd):
(JSC::JSBigInt::equalToBigInt):
(JSC::JSBigInt::absoluteDivSmall):
(JSC::JSBigInt::calculateMaximumCharactersRequired):
(JSC::JSBigInt::toStringGeneric):
(JSC::JSBigInt::rightTrim):
(JSC::JSBigInt::allocateFor):
(JSC::JSBigInt::estimatedSize):
(JSC::JSBigInt::toNumber const):
(JSC::JSBigInt::getPrimitiveNumber const):
* runtime/JSBigInt.h: Added.
(JSC::JSBigInt::setSign):
(JSC::JSBigInt::sign const):
(JSC::JSBigInt::setLength):
(JSC::JSBigInt::length const):
(JSC::JSBigInt::parseInt):
(JSC::JSBigInt::offsetOfData):
(JSC::JSBigInt::dataStorage):
(JSC::JSBigInt::digit):
(JSC::JSBigInt::setDigit):
(JSC::asBigInt):
* runtime/JSCJSValue.cpp:
(JSC::JSValue::synthesizePrototype const):
(JSC::JSValue::toStringSlowCase const):
* runtime/JSCJSValue.h:
* runtime/JSCJSValueInlines.h:
(JSC::JSValue::isBigInt const):
(JSC::JSValue::strictEqualSlowCaseInline):
* runtime/JSCell.cpp:
(JSC::JSCell::put):
(JSC::JSCell::putByIndex):
(JSC::JSCell::toPrimitive const):
(JSC::JSCell::getPrimitiveNumber const):
(JSC::JSCell::toNumber const):
(JSC::JSCell::toObjectSlow const):
* runtime/JSCell.h:
* runtime/JSCellInlines.h:
(JSC::JSCell::isBigInt const):
* runtime/JSType.h:
* runtime/MathCommon.h:
(JSC::clz64):
* runtime/NumberPrototype.cpp:
* runtime/Operations.cpp:
(JSC::jsTypeStringForValue):
(JSC::jsIsObjectTypeOrNull):
* runtime/Options.h:
* runtime/ParseInt.h:
* runtime/SmallStrings.h:
(JSC::SmallStrings::typeString const):
* runtime/StructureInlines.h:
(JSC::prototypeForLookupPrimitiveImpl):
* runtime/TypeofType.cpp:
(WTF::printInternal):
* runtime/TypeofType.h:
* runtime/VM.cpp:
(JSC::VM::VM):
* runtime/VM.h:

Source/WTF:

* wtf/HashFunctions.h:

Tools:

* Scripts/run-jsc-stress-tests:

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

3 years ago[WK2] Expose image via WKBundleHitTestResult API.
commit-queue@webkit.org [Tue, 12 Dec 2017 21:01:26 +0000 (21:01 +0000)]
[WK2] Expose image via WKBundleHitTestResult API.
https://bugs.webkit.org/show_bug.cgi?id=180552.
rdar://problem/23951521

Patch by Zach Li <zachli@apple.com> on 2017-12-12
Reviewed by Simon Fraser.

Source/WebCore:

* platform/graphics/ImageSource.h:
This method will be used by clients outside WebCore, so
add WEBCORE_EXPORT.

Source/WebKit:

* WebProcess/InjectedBundle/API/c/WKBundleHitTestResult.cpp:
(WKBundleHitTestResultGetImage):
* WebProcess/InjectedBundle/API/c/WKBundleHitTestResult.h:

* WebProcess/InjectedBundle/InjectedBundleHitTestResult.cpp:
(WebKit::InjectedBundleHitTestResult::image const):
Convert from WebCore::Image to WebImage by creating a WebImage
and paint the WebCore::Image into its graphics context. For now,
only handle bitmap images.
* WebProcess/InjectedBundle/InjectedBundleHitTestResult.h:

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

3 years agoRemove ColorSpaceDeviceRGB and most users of the obsolete deviceRGB colorspace
simon.fraser@apple.com [Tue, 12 Dec 2017 21:00:37 +0000 (21:00 +0000)]
Remove ColorSpaceDeviceRGB and most users of the obsolete deviceRGB colorspace
https://bugs.webkit.org/show_bug.cgi?id=180689

Reviewed by Tim Horton.

Source/WebCore:

Remove the ColorSpaceDeviceRGB enum and users.

ImageBuffer now uses sRGB instead of deviceRGB in the few cases that used the latter.

Switch Windows CG code to use sRGBColorSpaceRef() instead of deviceRGBColorSpaceRef().

Have linearRGBColorSpaceRef() use kCGColorSpaceLinearSRGB, which is present in iOS 9 and 10.11 and later.

* page/win/FrameCGWin.cpp:
(WebCore::imageFromRect):
* platform/graphics/Color.cpp:
(WebCore::operator<<):
* platform/graphics/ColorSpace.h:
* platform/graphics/ImageBuffer.cpp:
(WebCore::ImageBuffer::transformColorSpace):
* platform/graphics/cg/ColorCG.cpp:
(WebCore::Color::Color):
(WebCore::leakCGColor):
(WebCore::createCGColorWithDeviceRGBA): Deleted.
* platform/graphics/cg/GraphicsContextCG.cpp:
(WebCore::sRGBColorSpaceRef):
(WebCore::linearRGBColorSpaceRef):
(WebCore::extendedSRGBColorSpaceRef):
(WebCore::displayP3ColorSpaceRef):
(WebCore::deviceRGBColorSpaceRef): Deleted.
* platform/graphics/cg/GraphicsContextCG.h:
(WebCore::cachedCGColorSpace):
* platform/graphics/cocoa/GraphicsContextCocoa.mm:
* platform/graphics/win/GraphicsContextCGWin.cpp:
(WebCore::CGContextWithHDC):
(WebCore::GraphicsContext::releaseWindowsContext):
(WebCore::GraphicsContext::drawWindowsBitmap):
* platform/graphics/win/ImageCGWin.cpp:
(WebCore::BitmapImage::create):
(WebCore::BitmapImage::getHBITMAPOfSize):
* platform/mediastream/mac/MockRealtimeVideoSourceMac.mm:
(WebCore::MockRealtimeVideoSourceMac::pixelBufferFromCGImage const):
* platform/win/DragImageCGWin.cpp:
(WebCore::allocImage):
(WebCore::createCgContextFromBitmap):
* rendering/svg/RenderSVGResourceFilter.cpp:
(WebCore::RenderSVGResourceFilter::postApplyResource):
* rendering/svg/RenderSVGResourceMasker.cpp:
(WebCore::RenderSVGResourceMasker::drawContentIntoMaskImage):

Source/WebKit:

Remove encoding of ColorSpaceDeviceRGB.

* Shared/WebCoreArgumentCoders.h:

Source/WebKitLegacy/mac:

Use sRGBColorSpaceRef() from WebCore.

* WebView/WebHTMLView.mm:
(imageFromRect):

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

3 years agoNavigation requests should use navigate fetch mode
commit-queue@webkit.org [Tue, 12 Dec 2017 20:43:32 +0000 (20:43 +0000)]
Navigation requests should use navigate fetch mode
https://bugs.webkit.org/show_bug.cgi?id=179808

Patch by Youenn Fablet <youenn@apple.com> on 2017-12-12
Reviewed by Chris Dumez.

LayoutTests/imported/w3c:

* web-platform-tests/service-workers/service-worker/fetch-request-redirect.https-expected.txt:
* web-platform-tests/service-workers/service-worker/navigation-redirect.https-expected.txt:
* web-platform-tests/service-workers/service-worker/register-same-scope-different-script-url.https-expected.txt:
* web-platform-tests/service-workers/service-worker/request-end-to-end.https-expected.txt:
This is a progression since test is failing at a later point. Test might need being updated to match latest fetch spec.
* web-platform-tests/service-workers/service-worker/resources/clients-get-worker.js:
(self.onfetch): Change upstreamed at https://github.com/w3c/web-platform-tests/pull/8289.

Source/WebCore:

Covered by existing tests.

* Modules/fetch/FetchRequest.cpp:
(WebCore::buildOptions): Update to throw only if init.mode is Navigate.
* Modules/fetch/FetchRequestInit.h:
(WebCore::FetchRequestInit::hasMembers const): If init is present, set default values as per spec.
* loader/DocumentLoader.cpp:
(WebCore::DocumentLoader::loadMainResource): Set fetch mode to navigate.
* loader/DocumentThreadableLoader.cpp:
(WebCore::DocumentThreadableLoader::DocumentThreadableLoader): Bypass preflight in case fetch mode is navigate.

LayoutTests:

* http/tests/workers/service/basic-fetch.https-expected.txt:
* http/tests/workers/service/resources/basic-fetch-worker.js:
* http/tests/workers/service/resources/basic-fetch.js:
(async.test):

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

3 years agoREGRESSION(r216941): Plugin Process can't access AppStore Plugin Service
bfulgham@apple.com [Tue, 12 Dec 2017 19:52:41 +0000 (19:52 +0000)]
REGRESSION(r216941): Plugin Process can't access AppStore Plugin Service
https://bugs.webkit.org/show_bug.cgi?id=180701
<rdar://problem/35940948>

Reviewed by Daniel Bates.

The PluginProcess needs access to the AppStore Plugin XPC service.

* PluginProcess/mac/com.apple.WebKit.plugin-common.sb.in:

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

3 years agoRebasing/unskipping some WPT service worker tests
commit-queue@webkit.org [Tue, 12 Dec 2017 19:40:40 +0000 (19:40 +0000)]
Rebasing/unskipping some WPT service worker tests
https://bugs.webkit.org/show_bug.cgi?id=180705

Unreviewed.

Patch by Youenn Fablet <youenn@apple.com> on 2017-12-12

LayoutTests/imported/w3c:

* web-platform-tests/service-workers/service-worker/fetch-event.https-expected.txt:
* web-platform-tests/service-workers/service-worker/service-worker-csp-default.https-expected.txt:
* web-platform-tests/service-workers/service-worker/service-worker-csp-script.https-expected.txt:

LayoutTests:

* TestExpectations:

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

3 years agoSymbol not found: __ZN3WTF8LockBase10unlockSlowEv
joepeck@webkit.org [Tue, 12 Dec 2017 19:19:11 +0000 (19:19 +0000)]
Symbol not found: __ZN3WTF8LockBase10unlockSlowEv
https://bugs.webkit.org/show_bug.cgi?id=180691

Reviewed by Yusuke Suzuki.

* wtf/mac/DeprecatedSymbolsUsedBySafari.mm:
(WTF::LockBase::lockSlow):
(WTF::LockBase::unlockSlow):
Add back LockBase Symbols used by System Safari on 10.13.

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

3 years agoHTML-page with <object type="image/svg+xml" data="foo.svg"> often is blank
simon.fraser@apple.com [Tue, 12 Dec 2017 19:15:50 +0000 (19:15 +0000)]
HTML-page with <object type="image/svg+xml" data="foo.svg"> often is blank
https://bugs.webkit.org/show_bug.cgi?id=180524
<rdar://problem/35920554>

Reviewed by Antti Koivisto.

Source/WebCore:

The test case has script that conditionalizes behavior on whether window.innerWidth/Height
are zero during the load event. We didn't force layout in innerWidth/Height, so whether
they would zero depended on whether the parent frame had laid out, which was timing-sensitive.

Fix by triggering enough layout in the parent document so that the FrameView is resized before
fetching its dimensions in innerWidth/Height. This causes our behavior to match Chrome and Firefox.

Test: fast/dom/iframe-innerWidth.html

* dom/EventDispatcher.cpp:
(WebCore::EventDispatcher::dispatchEvent): Add some logging that helped me diagnose this.
* page/DOMWindow.cpp:
(WebCore::DOMWindow::innerHeight const):
(WebCore::DOMWindow::innerWidth const):

LayoutTests:

Adjust a test where the new layout is triggering scrollbar creation.

* fast/dom/iframe-inner-size-scaling-expected.txt:
* fast/dom/iframe-inner-size-scaling.html:
* fast/dom/iframe-innerWidth-expected.txt: Added.
* fast/dom/iframe-innerWidth.html: Added.

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

3 years ago[Web Animations] Enqueue and dispatch animation events
graouts@webkit.org [Tue, 12 Dec 2017 19:01:18 +0000 (19:01 +0000)]
[Web Animations] Enqueue and dispatch animation events
https://bugs.webkit.org/show_bug.cgi?id=180657
<rdar://problem/35970103>

Reviewed by Chris Dumez.

Source/WebCore:

Now that we have support for the AnimationPlaybackEvent interface, we need a way to enqueue
such events for dispatch at the opportune time. The Web Animations spec defines two ways
to queue and dispatch events.

If the animation has a "document for timing", it should enqueue events on this document.
In our implementation, if the animation timeline is set to a DocumentTimeline, that means
it has a document for timing, and we let the DocumentTimeline enqueue those events, which
will be dispatched through a dedicated GenericTaskQueue<Timer>. These events will be sorted
by their respective timeline time before being dispatched.

If there is no document for timing, events should be dispatched as a standalone task.

* animation/DocumentTimeline.cpp:
(WebCore::DocumentTimeline::~DocumentTimeline): Close the event dispatch task queue when the
document timeline is torn down.
(WebCore::DocumentTimeline::enqueueAnimationPlaybackEvent): Add the provided event to the
pending animation events queue and, if one hasn't been registered yet, enqueue a task to
dispatch events using a GenericTaskQueue<Timer>.
(WebCore::compareAnimationPlaybackEvents): Comparator used to sort events in performEventDispatchTask()
where events are sorted such that unresolved timeline times come first, and then from the
earlier resolved timeline times to the later resolved timeline times. Events with unresolved
timeline times and equal resolved timeline times are sorted in the order they were enqueued.
(WebCore::DocumentTimeline::performEventDispatchTask): Run a stable sort on a copy of the pending list
of events to dispatch and dispatch the events individually on their respective animations.
* animation/DocumentTimeline.h:
* animation/WebAnimation.cpp:
(WebCore::WebAnimation::create): Pass in the document to the constructor.
(WebCore::WebAnimation::WebAnimation): Use the provided document to initialize ActiveDOMObject.
(WebCore::WebAnimation::enqueueAnimationPlaybackEvent): Create an AnimationPlaybackEvent with
the provided type, timeline time and animation time and enqueue it on the document timeline,
if one is available, or dispatch on this animation as a standalone task.
(WebCore::WebAnimation::acceleratedRunningStateDidChange):
(WebCore::WebAnimation::activeDOMObjectName const):
(WebCore::WebAnimation::canSuspendForDocumentSuspension const):
(WebCore::WebAnimation::stop):
* animation/WebAnimation.h: Define WebAnimation to be an EventTarget and an ActiveDOMObject.
* animation/WebAnimation.idl: Define WebAnimation to be an EventTarget and an ActiveDOMObject.
* dom/EventTargetFactory.in:

LayoutTests:

Rebase Web Platform Tests with some progressions based on the IDL changes. Progressions due
to dispatching events will become apparent when the next patch, where we dispatch actual
animation playback events, lands.

* http/wpt/web-animations/interfaces/Animation/idlharness-expected.txt:

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

3 years agoMake ServiceWorkers follow the DEFAULT_EXPERIMENTAL_FEATURES_ENABLED flag on Mac.
beidson@apple.com [Tue, 12 Dec 2017 18:48:13 +0000 (18:48 +0000)]
Make ServiceWorkers follow the DEFAULT_EXPERIMENTAL_FEATURES_ENABLED flag on Mac.
<rdar://problem/35978311> and https://bugs.webkit.org/show_bug.cgi?id=180697

Reviewed by Chris Dumez.

* Shared/WebPreferences.yaml:
* Shared/WebPreferencesDefaultValues.h:

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

3 years agoLLInt: reserve 16 bytes of stack on MIPS for native calls
guijemont@igalia.com [Tue, 12 Dec 2017 18:40:29 +0000 (18:40 +0000)]
LLInt: reserve 16 bytes of stack on MIPS for native calls
https://bugs.webkit.org/show_bug.cgi?id=180653

Reviewed by Carlos Alberto Lopez Perez.

* llint/LowLevelInterpreter32_64.asm:
On MIPS, substract 24 from the stack pointer (16 for calling
convention + 8 to be 16-aligned) instead of the 8 on other platforms
(for alignment).

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

3 years agoSimplify IPC code between WebProcess and StorageProcess for serviceWorker.postMessage()
cdumez@apple.com [Tue, 12 Dec 2017 18:08:53 +0000 (18:08 +0000)]
Simplify IPC code between WebProcess and StorageProcess for serviceWorker.postMessage()
https://bugs.webkit.org/show_bug.cgi?id=180683

Reviewed by Brady Eidson.

Merge the 2 code paths from calling postMessage() from a ServiceWorkerClient and from
a ServiceWorker. Also, postMessage() now only IPCs an identifier from the WebContent
process to the StorageProcess. The ServiceWorkerClientData is looked up on Storage
process side from the identifier before being sent to the context process.

Source/WebCore:

* workers/service/SWClientConnection.h:
* workers/service/ServiceWorker.cpp:
(WebCore::ServiceWorker::postMessage):
* workers/service/ServiceWorkerTypes.h:
* workers/service/server/SWServer.cpp:
(WebCore::SWServer::clientByID const):
(WebCore::SWServer::matchAll):
(WebCore::SWServer::forEachClientForOrigin):
(WebCore::SWServer::claim):
(WebCore::SWServer::registerServiceWorkerClient):
(WebCore::SWServer::unregisterServiceWorkerClient):
* workers/service/server/SWServer.h:
* workers/service/server/SWServerWorker.cpp:
(WebCore::SWServerWorker::findClientByIdentifier):
* workers/service/server/SWServerWorker.h:

Source/WebKit:

* Scripts/webkit/messages.py:
(forward_declarations_and_headers):
(headers_for_type):
* Shared/WebCoreArgumentCoders.cpp:
(IPC::ArgumentCoder<ServiceWorkerOrClientIdentifier>::encode):
(IPC::ArgumentCoder<ServiceWorkerOrClientIdentifier>::decode):
* Shared/WebCoreArgumentCoders.h:
* StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
(WebKit::WebSWServerConnection::postMessageToServiceWorker):
* StorageProcess/ServiceWorker/WebSWServerConnection.h:
* StorageProcess/ServiceWorker/WebSWServerConnection.messages.in:
* WebProcess/Storage/WebSWClientConnection.cpp:
(WebKit::WebSWClientConnection::postMessageToServiceWorker):
* WebProcess/Storage/WebSWClientConnection.h:

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

3 years agoUnreviewed, don't print empty error message when copying resource fails
mcatanzaro@igalia.com [Tue, 12 Dec 2017 18:02:17 +0000 (18:02 +0000)]
Unreviewed, don't print empty error message when copying resource fails

Unsurprisingly, when system() fails, there is not any useful error to be printed, so don't.

* Scripts/copy-user-interface-resources.pl:
(ditto):

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

3 years agoAllow AudioContext to start when getUserMedia is on
commit-queue@webkit.org [Tue, 12 Dec 2017 17:26:34 +0000 (17:26 +0000)]
Allow AudioContext to start when getUserMedia is on
https://bugs.webkit.org/show_bug.cgi?id=180680

Patch by Youenn Fablet <youenn@apple.com> on 2017-12-12
Reviewed by Eric Carlson.

Source/WebCore:

Test: webrtc/getUserMedia-webaudio-autoplay.html

* Modules/webaudio/AudioContext.cpp:
(WebCore::AudioContext::willBeginPlayback):

LayoutTests:

* webrtc/getUserMedia-webaudio-autoplay-expected.txt: Added.
* webrtc/getUserMedia-webaudio-autoplay.html: Added.

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

3 years ago[Readable Streams API] Throw RangeError if a size is provided when creating a readabl...
romain.bellessort@crf.canon.fr [Tue, 12 Dec 2017 16:51:54 +0000 (16:51 +0000)]
[Readable Streams API] Throw RangeError if a size is provided when creating a readable byte stream
https://bugs.webkit.org/show_bug.cgi?id=180470

Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

One new test imported from WPT to check that RangeError is thrown if a size is provided.

* web-platform-tests/streams/readable-byte-streams/general-expected.txt: Updated expectations.
* web-platform-tests/streams/readable-byte-streams/general.dedicatedworker-expected.txt: Updated expectations.
* web-platform-tests/streams/readable-byte-streams/general.js: Imported one test case from WPT.
* web-platform-tests/streams/readable-byte-streams/general.serviceworker.https-expected.txt: Updated expectations.

Source/WebCore:

Throw a RangeError if a ReadableStream is created with type 'bytes' and with a
non-undefined strategy size, as per latest spec:
- https://github.com/whatwg/streams/pull/856
- https://streams.spec.whatwg.org/#rs-constructor (step 4.c)

One new test imported from WPT to check that RangeError is thrown.

* Modules/streams/ReadableStream.js:
(initializeReadableStream): Check strategy size and throw RangeError if needed.

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

3 years ago[GTK][WebRTC] Stop warning with so much verbosity about not implemented RealtimeMedia...
clopez@igalia.com [Tue, 12 Dec 2017 16:46:09 +0000 (16:46 +0000)]
[GTK][WebRTC] Stop warning with so much verbosity about not implemented RealtimeMediaSourceCenter
https://bugs.webkit.org/show_bug.cgi?id=180694

Reviewed by Youenn Fablet.

No new tests -- no change in functionality.

* platform/mediastream/RealtimeMediaSourceCenter.cpp:
(WebCore::RealtimeMediaSourceCenter::singleton):

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

3 years ago[WPE] Enable some wpt tests.
Ms2ger@igalia.com [Tue, 12 Dec 2017 16:12:39 +0000 (16:12 +0000)]
[WPE] Enable some wpt tests.
https://bugs.webkit.org/show_bug.cgi?id=180695

Unreviewed test gardening.

* platform/wpe/TestExpectations:

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

3 years ago[GTK] Update some test expectations.
Ms2ger@igalia.com [Tue, 12 Dec 2017 15:01:32 +0000 (15:01 +0000)]
[GTK] Update some test expectations.
https://bugs.webkit.org/show_bug.cgi?id=180655

Unreviewed test gardening.

LayoutTests/imported/w3c:

Update tests from upstream, and update test expectations.

* web-platform-tests/XMLHttpRequest/send-network-error-sync-events.sub-expected.txt:
* web-platform-tests/XMLHttpRequest/send-network-error-sync-events.sub.htm:
* web-platform-tests/common/media.js:
* web-platform-tests/html/browsers/browsing-the-web/read-media/pageload-video-expected.txt:
* web-platform-tests/html/browsers/browsing-the-web/read-media/pageload-video.html:
* web-platform-tests/html/semantics/forms/textfieldselection/textfieldselection-setSelectionRange.html:

LayoutTests:

* platform/gtk/TestExpectations:
  - Add bug numbers.
  - Remove failure expectations in favour of accurate baselines.
* platform/gtk/imported/w3c/web-platform-tests/XMLHttpRequest/send-network-error-sync-events.sub-expected.txt:
  Added to account for the fact that libsoup is more lenient about data URLs.
* platform/gtk/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/read-media/pageload-video-expected.txt:
  Added to account for video codec support depending on the platform.
* platform/gtk/imported/w3c/web-platform-tests/html/semantics/forms/the-form-element/form-autocomplete-expected.txt:
  Added to account for whitespace differences in the dumped output.
* platform/gtk/imported/w3c/web-platform-tests/html/semantics/forms/the-form-element/form-elements-filter-expected.txt:
  Added to account for whitespace differences in the dumped output.
* platform/gtk/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/telephone-expected.txt:
  Added to account for whitespace differences in the dumped output.
* platform/mac-wk1/imported/w3c/web-platform-tests/XMLHttpRequest/send-network-error-sync-events.sub-expected.txt:
  Removed; the platform-neutral expectation now matches.

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

3 years ago[GTK][WPE] Bump GStreamer version to 1.12 in jhbuild
clopez@igalia.com [Tue, 12 Dec 2017 14:58:05 +0000 (14:58 +0000)]
[GTK][WPE] Bump GStreamer version to 1.12 in jhbuild
https://bugs.webkit.org/show_bug.cgi?id=171677

Reviewed by Carlos Garcia Campos.

Bump gstreamer related modules and rebase patches still needed and not merged

* gstreamer/jhbuild.modules:
* gstreamer/patches/gst-plugins-good-0003-rtpbin-receive-bundle-support.patch: Removed. This was needed for OpenWebRTC. Not longer supported.
* gstreamer/patches/gst-plugins-good-0005-souphttpsrc-cookie-jar-and-context-query-support.patch: Rebased.
* gstreamer/patches/gst-plugins-good-0006-qtdemux-add-context-for-a-preferred-protection.patch: Rebased.
* gstreamer/patches/gst-plugins-good-0008-qtdemux-also-push-buffers-without-encryption-info-in.patch: Rebased.
* gstreamer/patches/gst-plugins-good-0009-qtdemux-fix-assert-when-moof-contains-one-sample.patch: Added a note about merge commit not still in 1.12.4.

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

3 years agoImplement {DOMMimeTypeArray, DOMPluginArray}::supportedPropertyNames().
Ms2ger@igalia.com [Tue, 12 Dec 2017 14:29:01 +0000 (14:29 +0000)]
Implement {DOMMimeTypeArray, DOMPluginArray}::supportedPropertyNames().
https://bugs.webkit.org/show_bug.cgi?id=180471

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Update test expectation. It will now work better if "WebKit built-in PDF"
is not present or not the only available plugin.

* web-platform-tests/html/webappapis/system-state-and-capabilities/the-navigator-object/navigator-pluginarray-expected.txt:

Source/WebCore:

Test: imported/w3c/web-platform-tests/html/webappapis/system-state-and-capabilities/the-navigator-object/navigator-pluginarray.html

* plugins/DOMMimeTypeArray.cpp:
(WebCore::DOMMimeTypeArray::supportedPropertyNames):
* plugins/DOMPluginArray.cpp:
(WebCore::DOMPluginArray::supportedPropertyNames):

LayoutTests:

Remove failure expectation for test that now matches the expectation file.

* platform/gtk/TestExpectations:

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

3 years ago[WTF] Thread::create should have Thread::tryCreate
utatane.tea@gmail.com [Tue, 12 Dec 2017 10:35:39 +0000 (10:35 +0000)]
[WTF] Thread::create should have Thread::tryCreate
https://bugs.webkit.org/show_bug.cgi?id=180333

Reviewed by Darin Adler.

Source/JavaScriptCore:

* assembler/testmasm.cpp:
(JSC::run):
* b3/air/testair.cpp:
* b3/testb3.cpp:
(JSC::B3::run):
* jsc.cpp:
(functionDollarAgentStart):

Source/WebCore:

No behavior change.

* bindings/js/GCController.cpp:
(WebCore::GCController::garbageCollectOnAlternateThreadForDebugging):
* platform/audio/ReverbConvolver.cpp:
(WebCore::ReverbConvolver::ReverbConvolver):
* platform/audio/ReverbConvolver.h:
* workers/WorkerThread.cpp:
(WebCore::WorkerThread::start):

Source/WebKit:

* UIProcess/API/glib/IconDatabase.cpp:
(WebKit::IconDatabase::open):
* UIProcess/linux/MemoryPressureMonitor.cpp:
(WebKit::MemoryPressureMonitor::MemoryPressureMonitor):

Source/WebKitLegacy:

* Storage/StorageThread.cpp:
(WebCore::StorageThread::start):

Source/WebKitLegacy/win:

* WebKitQuartzCoreAdditions/CVDisplayLink.cpp:
(WKQCA::CVDisplayLink::start):

Source/WTF:

Many callers of Thread::create assume that it returns non-nullptr Thread.
But if the number of threads hits the limit in the system, creating Thread
would fail. In that case, it is really difficult to keep WebKit working.

We introduce Thread::tryCreate, and change the returned value from Thread::create
from RefPtr<Thread> to Ref<Thread>. In Thread::create, we ensure thread creation
succeeds by RELEASE_ASSERT. And we use Thread::create intentionally if the
caller assumes that thread should be created.

* wtf/AutomaticThread.cpp:
(WTF::AutomaticThread::start):
* wtf/ParallelJobsGeneric.cpp:
(WTF::ParallelEnvironment::ThreadPrivate::tryLockFor):
* wtf/Threading.cpp:
(WTF::Thread::tryCreate):
(WTF::Thread::create): Deleted.
* wtf/Threading.h:
(WTF::Thread::create):
* wtf/WorkQueue.cpp:
(WTF::WorkQueue::concurrentApply):

Tools:

* TestWebKitAPI/Tests/WTF/Condition.cpp:
* TestWebKitAPI/Tests/WTF/ParkingLot.cpp:
* TestWebKitAPI/Tests/WTF/Signals.cpp:
(TEST):
* TestWebKitAPI/Tests/WTF/ThreadGroup.cpp:
(TestWebKitAPI::testThreadGroup):
(TestWebKitAPI::TEST):

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

3 years agoUnreviewed build fix after r225766.
joepeck@webkit.org [Tue, 12 Dec 2017 07:20:37 +0000 (07:20 +0000)]
Unreviewed build fix after r225766.

* pal/spi/mac/AVFoundationSPI.h:
Conform AVStreamDataParser to the AVContentKeyRecipient protocol if available.

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

3 years ago[css-grid] Automatic minimum size is not clamped if min track sizing function is...
rego@igalia.com [Tue, 12 Dec 2017 07:11:04 +0000 (07:11 +0000)]
[css-grid] Automatic minimum size is not clamped if min track sizing function is auto
https://bugs.webkit.org/show_bug.cgi?id=180283

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Update expected result in the following WPT tests, as now everything
is passing there.

* web-platform-tests/css/css-grid/grid-items/grid-minimum-size-grid-items-022-expected.txt:
* web-platform-tests/css/css-grid/grid-items/grid-minimum-size-grid-items-023-expected.txt:

Source/WebCore:

We were not clamping the automatic minimum size when
the min track sizing function was intrinsic (e.g. minmax(auto, 0px)).
However the spec (https://drafts.csswg.org/css-grid/#min-size-auto)
is very clear regarding that.

This patch modifies
GridTrackSizingAlgorithm::sizeTrackToFitNonSpanningItem(),
so in the case of a fixed max track sizing function it clamps
the automatic minimum size of the item to the stretch fit
of the grid area's size.
It needs to take into account if the item has fixed size, margin, border
and/or padding as those cannot be clamped.

Using WPT tests to verify this behavior,
and corrected a bunch of other tests that were wrong.

Test: imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-minimum-size-grid-items-017.html
      imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-minimum-size-grid-items-022.html
      imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-minimum-size-grid-items-023.html

* rendering/GridTrackSizingAlgorithm.cpp:
(WebCore::GridTrackSizingAlgorithm::sizeTrackToFitNonSpanningItem):
* rendering/GridTrackSizingAlgorithm.h:
(WebCore::GridTrack::growthLimitIsInfinite const):
* rendering/style/GridTrackSize.h:
(WebCore::GridTrackSize::cacheMinMaxTrackBreadthTypes):
(WebCore::GridTrackSize::hasFixedMaxTrackBreadth const):

LayoutTests:

This patch updates a bunch of tests that were wrong
to follow the new behavior.

* TestExpectations: Now we're passing one WPT test more.
* fast/css-grid-layout/min-height-border-box.html:
* fast/css-grid-layout/min-width-margin-box.html:
* fast/css-grid-layout/percent-of-indefinite-track-size-in-auto.html:
* fast/css-grid-layout/percent-of-indefinite-track-size.html:

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

3 years ago[Cairo] Cairo::clipToImageBuffer() should operate on a cairo_surface_t
zandobersek@gmail.com [Tue, 12 Dec 2017 07:06:16 +0000 (07:06 +0000)]
[Cairo] Cairo::clipToImageBuffer() should operate on a cairo_surface_t
https://bugs.webkit.org/show_bug.cgi?id=180665

Reviewed by Michael Catanzaro.

Have the Cairo::clipToImageBuffer() function in the CairoUtilities code
operate on a cairo_surface_t object, instead of an Image object.

Call site in GraphicsContext::clipToImageBuffer() is adjusted to first
ensure a non-null Image object, and then retrieve a cairo_surface_t
object from that, passing it on to Cairo::clipToImageBuffer().

No new tests -- no change in functionality.

* platform/graphics/cairo/CairoOperations.cpp:
(WebCore::Cairo::clipToImageBuffer):
* platform/graphics/cairo/CairoOperations.h:
* platform/graphics/cairo/GraphicsContextCairo.cpp:
(WebCore::GraphicsContext::clipToImageBuffer):

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

3 years ago[Cairo] Don't use a static cairo_surface_t object for CairoPath contexts
zandobersek@gmail.com [Tue, 12 Dec 2017 07:05:30 +0000 (07:05 +0000)]
[Cairo] Don't use a static cairo_surface_t object for CairoPath contexts
https://bugs.webkit.org/show_bug.cgi?id=180663

Reviewed by Michael Catanzaro.

Instead of using a single cairo_surface_t object and sharing it between
different cairo_t objects handled by CairoPath, create a new mock 1x1px
alpha-only surface for each cairo_t object that's allocated in the
CairoPath constructor.

This avoids potential issues in how Cairo's state handling internally
uses these surfaces, which is completely opaque to us and out of our
control. This also avoids crashes when using this one cairo_surface_t
object through different CairoPath objects across different threads.

No new tests -- no change in behavior.

* platform/graphics/cairo/PlatformPathCairo.cpp:
(WebCore::CairoPath::CairoPath):
(WebCore::pathSurface): Deleted.
* platform/graphics/cairo/PlatformPathCairo.h:
(WebCore::CairoPath::context):

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

3 years ago[CoordGraphics] Move UpdateAtlas, AreaAllocator into the platform layer
zandobersek@gmail.com [Tue, 12 Dec 2017 07:04:44 +0000 (07:04 +0000)]
[CoordGraphics] Move UpdateAtlas, AreaAllocator into the platform layer
https://bugs.webkit.org/show_bug.cgi?id=180641

Reviewed by Michael Catanzaro.

Source/WebCore:

Move the UpdateAtlas and AreaAllocator classes and their source files
into the platform layer. This still means using the WebCore namespace,
but apart from that these two classes have no dependency on anything in
the WebKit layer, so they can be moved from there.

No new tests -- no change in functionality.

* platform/TextureMapper.cmake:
* platform/graphics/texmap/coordinated/AreaAllocator.cpp: Renamed from Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/AreaAllocator.cpp.
(WebCore::AreaAllocator::AreaAllocator):
(WebCore::AreaAllocator::~AreaAllocator):
(WebCore::AreaAllocator::expand):
(WebCore::AreaAllocator::expandBy):
(WebCore::AreaAllocator::release):
(WebCore::AreaAllocator::overhead const):
(WebCore::AreaAllocator::roundAllocation const):
(WebCore::GeneralAreaAllocator::GeneralAreaAllocator):
(WebCore::GeneralAreaAllocator::~GeneralAreaAllocator):
(WebCore::GeneralAreaAllocator::freeNode):
(WebCore::GeneralAreaAllocator::expand):
(WebCore::fitsWithin):
(WebCore::GeneralAreaAllocator::allocate):
(WebCore::GeneralAreaAllocator::allocateFromNode):
(WebCore::GeneralAreaAllocator::splitNode):
(WebCore::GeneralAreaAllocator::updateLargestFree):
(WebCore::GeneralAreaAllocator::release):
(WebCore::GeneralAreaAllocator::overhead const):
* platform/graphics/texmap/coordinated/AreaAllocator.h: Renamed from Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/AreaAllocator.h.
(WebCore::nextPowerOfTwo):
(WebCore::AreaAllocator::size const):
(WebCore::AreaAllocator::minimumAllocation const):
(WebCore::AreaAllocator::setMinimumAllocation):
(WebCore::AreaAllocator::margin const):
(WebCore::AreaAllocator::setMargin):
* platform/graphics/texmap/coordinated/UpdateAtlas.cpp: Renamed from Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/UpdateAtlas.cpp.
(WebCore::UpdateAtlas::UpdateAtlas):
(WebCore::UpdateAtlas::~UpdateAtlas):
(WebCore::UpdateAtlas::buildLayoutIfNeeded):
(WebCore::UpdateAtlas::didSwapBuffers):
(WebCore::UpdateAtlas::getCoordinatedBuffer):
* platform/graphics/texmap/coordinated/UpdateAtlas.h: Renamed from Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/UpdateAtlas.h.
(WebCore::UpdateAtlas::size const):
(WebCore::UpdateAtlas::supportsAlpha const):
(WebCore::UpdateAtlas::addTimeInactive):
(WebCore::UpdateAtlas::isInactive const):
(WebCore::UpdateAtlas::isInUse const):

Source/WebKit:

Move the UpdateAtlas and AreaAllocator classes into the platform layer,
moving over build targets and adjust UpdateAtlas class references in
CompositingCoordinator.

* PlatformGTK.cmake:
* PlatformWPE.cmake:
* PlatformWin.cmake:
* WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.h:

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

3 years agoDisable NoEventDispatchAssertion release assertion in WebKit1
rniwa@webkit.org [Tue, 12 Dec 2017 06:30:34 +0000 (06:30 +0000)]
Disable NoEventDispatchAssertion release assertion in WebKit1
https://bugs.webkit.org/show_bug.cgi?id=180616

Reviewed by Zalan Bujtas.

Disabled the release assertion for NoEventDispatchAssertion in WebKit1 since there are many
delegate callbacks that happen at unsafe timing, and we don't have any hope of fixing them
in short term.

* bindings/js/ScriptController.cpp:
(WebCore::ScriptController::canExecuteScripts):
* dom/Document.cpp:
(WebCore::isSafeToUpdateStyleOrLayout):
* dom/ScriptElement.cpp:
(WebCore::ScriptElement::executeClassicScript):
* platform/RuntimeApplicationChecks.h:
(WebCore::isInWebProcess):
* platform/cocoa/RuntimeApplicationChecksCocoa.mm:
(WebCore::isInWebProcess): Extracted from IOSApplication::isWebProcess.
(WebCore::IOSApplication::isWebProcess):

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

3 years agoREGRESSION(r225683): Chakra test failure in es6/regex-unicode.js for 32bit builds
msaboff@apple.com [Tue, 12 Dec 2017 05:47:18 +0000 (05:47 +0000)]
REGRESSION(r225683): Chakra test failure in es6/regex-unicode.js for 32bit builds
https://bugs.webkit.org/show_bug.cgi?id=180685

Reviewed by Saam Barati.

The characterClass->m_anyCharacter check at the top of checkCharacterClass() caused
the character class check to return true without reading the character.  Given that
the character could be a surrogate pair, we need to read the character even if we
don't have the check it.

* yarr/YarrInterpreter.cpp:
(JSC::Yarr::Interpreter::testCharacterClass):
(JSC::Yarr::Interpreter::checkCharacterClass):

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

3 years ago[WinCairo] Enable running sharded tests
commit-queue@webkit.org [Tue, 12 Dec 2017 04:54:24 +0000 (04:54 +0000)]
[WinCairo] Enable running sharded tests
https://bugs.webkit.org/show_bug.cgi?id=180660

Patch by Basuke Suzuki <Basuke.Suzuki@sony.com> on 2017-12-11
Reviewed by Alex Christensen.

The sharder splits the test inputs into groups of test based on the directory,
but separation of base name and directory name was wrong because of this bug.
Once sharded correctly, the execution of layout test on native Windows environment
is in parallel and much less time to run.

* Scripts/webkitpy/port/win.py:
(WinCairoPort):

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

3 years agoImprove FontSelectionAlgorithm, including moving from IntegerHasher to Hasher
darin@apple.com [Tue, 12 Dec 2017 03:50:06 +0000 (03:50 +0000)]
Improve FontSelectionAlgorithm, including moving from IntegerHasher to Hasher
https://bugs.webkit.org/show_bug.cgi?id=180340

Reviewed by Dan Bates.

* css/CSSFontFaceSet.h: Moved FontSelectionRequestKey and FontSelectionRequestKeyHash
here to be private members, and used a std::optional instead of a class for this.
Also use the new Hasher to compute the hash. Also added FontSelectionRequestKeyHashTraits.

* platform/graphics/FontDescription.cpp:
(WebCore::FontDescription::FontDescription): Updated since FontSelectionRequest
does not always have a constructor any more.

* platform/graphics/FontSelectionAlgorithm.h: Tweaked comments. Used "using" instead
of typedef. Formatted some trivial functions as single lines. Stopped using
NeverDestroyed for simple classes like FontSelectionValue; it's not needed unless
there is a destructor. Got rid of some incorrect use of const. Replaced some member
functions with non-member functions. Moved some function bodies out of class definitions.
Used a lot of constexpr functions.
(WebCore::FontSelectionRequest::tied const): Added so we can easily write both == and the
hash function without listing the data members.
(WebCore::add): Added an overload so we can hash things that include FontSelectionRequest.
(WebCore::FontSelectionRequestKey::FontSelectionRequestKey): Changed this class to
use std::optional instead of a separate boolean for deleted values.
(WebCore::FontSelectionRequestKey::isHashTableDeletedValue const): Ditto.
(WebCore::FontSelectionRequestKey::operator== const): Ditto.
(WebCore::FontSelectionRequestKeyHash::hash): Ditto.
(WebCore::FontSelectionRequestKeyHash::equal): Ditto.
(WebCore::FontSelectionCapabilities::tied const): Added so we can easily write both ==
and the hash function without listing the data members.
(WebCore::FontSelectionSpecifiedCapabilities::tied const): Ditto.
(WebCore::FontSelectionAlgorithm::FontSelectionAlgorithm): Use make_unique instead of new.

* platform/graphics/cocoa/FontCacheCoreText.cpp:
(WebCore::findClosestFont): Move in the vector instead of copying it when creating a
FontSelectionAlgorithm object.

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

3 years agoWe need to disableCaching() in ErrorInstance when we materialize properties
sbarati@apple.com [Tue, 12 Dec 2017 03:24:43 +0000 (03:24 +0000)]
We need to disableCaching() in ErrorInstance when we materialize properties
https://bugs.webkit.org/show_bug.cgi?id=180343
<rdar://problem/35833002>

Reviewed by Mark Lam.

JSTests:

* stress/disable-caching-when-lazy-materializing-error-property-on-put.js: Added.
(assert):
(makeError):
(storeToStack):
(storeToStackAlreadyMaterialized):

Source/JavaScriptCore:

This patch fixes a bug in ErrorInstance where we forgot to call PutPropertySlot::disableCaching
on puts() to a property that we lazily materialized. Forgetting to do this goes against the
PutPropertySlot's caching API. This lazy materialization caused the ErrorInstance to transition
from a Structure A to a Structure B. However, we were telling the IC that we were caching an
existing property only found on Structure B. This is obviously wrong as it would lead to an
OOB store if we didn't already crash when generating the IC.

* jit/Repatch.cpp:
(JSC::tryCachePutByID):
* runtime/ErrorInstance.cpp:
(JSC::ErrorInstance::materializeErrorInfoIfNeeded):
(JSC::ErrorInstance::put):
* runtime/ErrorInstance.h:
* runtime/Structure.cpp:
(JSC::Structure::didCachePropertyReplacement):

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

3 years ago[WinCairo] DLLLauncherMain should use SetDllDirectory
commit-queue@webkit.org [Tue, 12 Dec 2017 02:45:13 +0000 (02:45 +0000)]
[WinCairo] DLLLauncherMain should use SetDllDirectory
https://bugs.webkit.org/show_bug.cgi?id=180642

Patch by Fujii Hironori <Hironori.Fujii@sony.com> on 2017-12-11
Reviewed by Alex Christensen.

Windows have icuuc.dll in the system directory. WebKit should find
one in WebKitLibraries directory, not one in the system directory.

Source/JavaScriptCore:

* shell/DLLLauncherMain.cpp:
(modifyPath): Use SetDllDirectory for WebKitLibraries directory instead of modifying path.

Tools:

* win/DLLLauncher/DLLLauncherMain.cpp:
(modifyPath): Use SetDllDirectory for WebKitLibraries directory instead of modifying path.
Do not add a path for GStreamer because nobody is using now.

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

3 years ago[EME] support update() for FairPlayStreaming in Modern EME API
jer.noble@apple.com [Tue, 12 Dec 2017 01:17:21 +0000 (01:17 +0000)]
[EME] support update() for FairPlayStreaming in Modern EME API
https://bugs.webkit.org/show_bug.cgi?id=180542

Reviewed by Eric Carlson.

Support the updateLicense() method in CDMInstanceFairPlayStreaming. Also, support adding a
AVStreamDataParser to the AVContentKeySession.

Drive-by fixes:

- Sometimes, AVFoundation will give us a base64 encoded string with spaces url-disallowed
characters, so use base64Decode() rather than base64URLDecode().

* platform/graphics/avfoundation/CDMFairPlayStreaming.cpp:
(WebCore::validFairPlayStreamingSchemes):
(WebCore::extractSinfData):
* platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.h:
* platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.mm:
(WebCore::CDMInstanceFairPlayStreamingAVFObjC::updateLicense):
(WebCore::CDMInstanceFairPlayStreamingAVFObjC::didProvideRequest):
(WebCore::CDMInstanceFairPlayStreamingAVFObjC::didFailToProvideRequest):
* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h:
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::cdmInstance const):
* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::cdmInstanceAttached):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::cdmInstanceDetached):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::attemptToDecryptWithInstance):
* platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.h:
* platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:
(WebCore::SourceBufferPrivateAVFObjC::destroyParser):
(WebCore::SourceBufferPrivateAVFObjC::setCDMInstance):

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

3 years agoAdd a WKPageGroupRef setter in WKWebViewConfiguration
achristensen@apple.com [Tue, 12 Dec 2017 00:53:30 +0000 (00:53 +0000)]
Add a WKPageGroupRef setter in WKWebViewConfiguration
https://bugs.webkit.org/show_bug.cgi?id=180674
<rdar://problem/35920392>

Reviewed by Brady Eidson.

There is a Mac app trying to transition to WKWebView, and it uses WKPageGroupRef extensively.
To help it transition, we are temporarily giving it an ObjC way to use this organization for
its UserContentControllers to be united per PageGroup before it transitions away from SPIs like
WKBundleAddUserScript.  Make it Mac-only to indicate that this should be transitioned away from,
rather than adopted on iOS.

No change in behavior for apps not using the new WKWebViewConfiguration._pageGroup SPI.

* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _initializeWithConfiguration:]):
* UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
(-[WKWebViewConfiguration copyWithZone:]):
(-[WKWebViewConfiguration _pageGroup]):
(-[WKWebViewConfiguration _setPageGroup:]):
* UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:

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

3 years agoWeb Inspector: Optionally log WebKit log parameters as JSON
eric.carlson@apple.com [Tue, 12 Dec 2017 00:41:54 +0000 (00:41 +0000)]
Web Inspector: Optionally log WebKit log parameters as JSON
https://bugs.webkit.org/show_bug.cgi?id=180529
<rdar://problem/35909462>

Reviewed by Joseph Pecoraro.

Source/JavaScriptCore:

* inspector/ConsoleMessage.cpp:
(Inspector::ConsoleMessage::ConsoleMessage): New constructor that takes a vector of JSON log
values. Concatenate all adjacent strings to make logging cleaner.
(Inspector::ConsoleMessage::addToFrontend): Process WebKit logging arguments.
(Inspector::ConsoleMessage::scriptState const):
* inspector/ConsoleMessage.h:

* inspector/InjectedScript.cpp:
(Inspector::InjectedScript::wrapJSONString const): Wrap JSON string log arguments.
* inspector/InjectedScript.h:
* inspector/InjectedScriptSource.js:
(let.InjectedScript.prototype.wrapJSONString):

Source/WebCore:

* dom/Document.cpp:
(WebCore::Document::didLogMessage):Update for API change. Don't check for main thread, that
is already done in addConsoleMessage.
* dom/Document.h:

* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::updatePlayState): Cleanup logging.

* html/track/DataCue.cpp:
(WebCore::DataCue::toJSONString const): Serialize to JSON string.
(WebCore::DataCue::toString const): Deleted.
* html/track/DataCue.h:
(WTF::LogArgument<WebCore::DataCue>::toString):

* html/track/TextTrackCue.cpp:
(WebCore::TextTrackCue::toJSON const): Ditto.
(WebCore::TextTrackCue::toJSONString const):
(WebCore::TextTrackCue::toString const): Deleted.
* html/track/TextTrackCue.h:
(WTF::LogArgument<WebCore::TextTrackCue>::toString):

* html/track/TextTrackCueGeneric.cpp:
(WebCore::TextTrackCueGeneric::toJSONString const): Ditto.
(WebCore::TextTrackCueGeneric::toString const): Deleted.
* html/track/TextTrackCueGeneric.h:
(WTF::LogArgument<WebCore::TextTrackCueGeneric>::toString):

* html/track/VTTCue.cpp:
(WebCore::VTTCue::toJSONString const): Ditto.
(WebCore::VTTCue::toString const): Deleted.
* html/track/VTTCue.h:
(WTF::LogArgument<WebCore::VTTCue>::toString):

* platform/graphics/InbandTextTrackPrivateClient.h:
(WebCore::GenericCueData::toJSONString const): Ditto.
(WTF::LogArgument<WebCore::GenericCueData>::toString):
(WebCore::GenericCueData::toString const): Deleted.

* platform/graphics/avfoundation/InbandTextTrackPrivateAVF.cpp:
(WebCore::InbandTextTrackPrivateAVF::processAttributedStrings): Cleanup logging.
(WebCore::InbandTextTrackPrivateAVF::removeCompletedCues): Ditto.
(WebCore::InbandTextTrackPrivateAVF::processNativeSamples): Log the entire cue.
(WebCore::InbandTextTrackPrivateAVF::readNativeSampleBuffer): Cleanup logging.

* platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp:
(WebCore::MediaPlayerPrivateAVFoundation::maxMediaTimeSeekable const): Don't log, it isn't
interesting and happens frequently.
(WebCore::MediaPlayerPrivateAVFoundation::minMediaTimeSeekable const): Ditto.

* platform/graphics/iso/ISOVTTCue.cpp:
(WebCore::ISOWebVTTCue::toJSONString const): Serialize to JSON string.

* platform/graphics/iso/ISOVTTCue.h:
(WTF::LogArgument<WebCore::ISOWebVTTCue>::toString): Ditto.

Source/WTF:

* wtf/Logger.h:
(WTF::Logger::log):
(WTF::LogArgument<Logger::LogSiteIdentifier>::toString):

* wtf/MediaTime.cpp:
(WTF::MediaTime::toJSONString const): Serialize to JSON string.
* wtf/MediaTime.h:

LayoutTests:

* inspector/canvas/recording-2d-expected.txt:
* inspector/canvas/recording-webgl-expected.txt:
* inspector/canvas/recording-webgl-snapshots-expected.txt:

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

3 years ago[iOS] Remove unused services from WebContent Process sandbox
bfulgham@apple.com [Tue, 12 Dec 2017 00:39:37 +0000 (00:39 +0000)]
[iOS] Remove unused services from WebContent Process sandbox
https://bugs.webkit.org/show_bug.cgi?id=180670

Reviewed by Eric Carlson.

Pare down the set of sandbox exceptions in the iOS WebContent process sandbox to just
those services actually in use:
1. Remove unused code.
2. Instead of defining a 'UIKit-app' function and calling it, just declare the individual sandbox
commands inline. This will allow them to be more easily consolidated with other parts of the
sandbox in a future step.

This update should not change behavior.

* Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:

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

3 years agoRemove unused builtin names
commit-queue@webkit.org [Tue, 12 Dec 2017 00:28:59 +0000 (00:28 +0000)]
Remove unused builtin names
https://bugs.webkit.org/show_bug.cgi?id=180673

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2017-12-11
Reviewed by Keith Miller.

* builtins/BuiltinNames.h:

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

3 years agoUse VCP H264 encoder for platforms supporting it
commit-queue@webkit.org [Mon, 11 Dec 2017 23:37:38 +0000 (23:37 +0000)]
Use VCP H264 encoder for platforms supporting it
https://bugs.webkit.org/show_bug.cgi?id=179076
rdar://problem/35180773

Patch by Youenn Fablet <youenn@apple.com> on 2017-12-11
Reviewed by Eric Carlson.

Source/ThirdParty/libwebrtc:

* Configurations/libwebrtc.iOS.exp:
* Configurations/libwebrtc.iOSsim.exp:
* Configurations/libwebrtc.mac.exp:
* Source/webrtc/sdk/objc/Framework/Classes/VideoProcessing/encoder_vcp.h: Added.
(webrtc::H264VideoToolboxEncoderVCP::SetActive):
* Source/webrtc/sdk/objc/Framework/Classes/VideoProcessing/encoder_vcp.mm: Copied from Source/ThirdParty/libwebrtc/Source/webrtc/sdk/objc/Framework/Classes/VideoToolbox/encoder.mm.
* Source/webrtc/sdk/objc/Framework/Classes/VideoToolbox/encoder.mm:
(internal::CFStringToString):
(internal::SetVTSessionProperty):
(internal::CopyVideoFrameToPixelBuffer):
(internal::CreatePixelBuffer):
(internal::VTCompressionOutputCallback):
(internal::ExtractProfile):
* Source/webrtc/sdk/objc/Framework/Classes/VideoToolbox/videocodecfactory.h:
* Source/webrtc/sdk/objc/Framework/Classes/VideoToolbox/videocodecfactory.mm:
(webrtc::VideoToolboxVideoEncoderFactory::VideoToolboxVideoEncoderFactory):
(webrtc::VideoToolboxVideoEncoderFactory::CreateSupportedVideoEncoder):
* libwebrtc.xcodeproj/project.pbxproj:

Source/WebCore:

Covered by existing test coverage.

* platform/mediastream/libwebrtc/VideoToolBoxEncoderFactory.cpp:
(WebCore::VideoToolboxVideoEncoderFactory::setActive):
(WebCore::VideoToolboxVideoEncoderFactory::CreateSupportedVideoEncoder):
(WebCore::VideoToolboxVideoEncoderFactory::DestroyVideoEncoder):
* platform/mediastream/libwebrtc/VideoToolBoxEncoderFactory.h:

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

3 years agoMerge ServiceWorkerClientIdentifier into ServiceWorkerClientData
cdumez@apple.com [Mon, 11 Dec 2017 23:24:51 +0000 (23:24 +0000)]
Merge ServiceWorkerClientIdentifier into ServiceWorkerClientData
https://bugs.webkit.org/show_bug.cgi?id=180669

Reviewed by Youenn Fablet.

Merge ServiceWorkerClientIdentifier into ServiceWorkerClientData, for consistency with
ServiceWorkerIdentifier / ServiceWorkerData, and start simplifying the postMessage() code.

Source/WebCore:

* WebCore.xcodeproj/project.pbxproj:
* dom/Document.cpp:
(WebCore::Document::setServiceWorkerConnection):
* workers/service/SWClientConnection.h:
* workers/service/ServiceWorker.cpp:
(WebCore::ServiceWorker::postMessage):
* workers/service/ServiceWorkerClient.cpp:
(WebCore::ServiceWorkerClient::getOrCreate):
(WebCore::ServiceWorkerClient::ServiceWorkerClient):
* workers/service/ServiceWorkerClient.h:
(WebCore::ServiceWorkerClient::identifier const):
* workers/service/ServiceWorkerClientData.cpp:
(WebCore::ServiceWorkerClientData::isolatedCopy const):
(WebCore::ServiceWorkerClientData::from):
* workers/service/ServiceWorkerClientData.h:
(WebCore::ServiceWorkerClientData::encode const):
(WebCore::ServiceWorkerClientData::decode):
* workers/service/ServiceWorkerClientInformation.h: Removed.
* workers/service/ServiceWorkerClients.cpp:
(WebCore::didFinishGetRequest):
(WebCore::ServiceWorkerClients::get):
(WebCore::matchAllCompleted):
* workers/service/ServiceWorkerTypes.h:
* workers/service/ServiceWorkerWindowClient.cpp:
(WebCore::ServiceWorkerWindowClient::ServiceWorkerWindowClient):
* workers/service/ServiceWorkerWindowClient.h:
* workers/service/context/SWContextManager.cpp:
(WebCore::SWContextManager::postMessageToServiceWorker):
* workers/service/context/SWContextManager.h:
* workers/service/context/ServiceWorkerThread.cpp:
(WebCore::ServiceWorkerThread::postMessageToServiceWorker):
* workers/service/context/ServiceWorkerThread.h:
* workers/service/server/SWServer.cpp:
(WebCore::SWServer::findClientByIdentifier):
(WebCore::SWServer::matchAll):
(WebCore::SWServer::claim):
(WebCore::SWServer::registerServiceWorkerClient):
* workers/service/server/SWServer.h:
* workers/service/server/SWServerToContextConnection.h:
* workers/service/server/SWServerWorker.h:

Source/WebKit:

* Scripts/webkit/messages.py:
(forward_declarations_and_headers):
(headers_for_type):
* Shared/WebCoreArgumentCoders.cpp:
(IPC::ArgumentCoder<ServiceWorkerOrClientData>::encode):
(IPC::ArgumentCoder<ServiceWorkerOrClientData>::decode):
* Shared/WebCoreArgumentCoders.h:
* StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
(WebKit::WebSWServerConnection::~WebSWServerConnection):
(WebKit::WebSWServerConnection::postMessageToServiceWorkerFromClient):
(WebKit::WebSWServerConnection::postMessageToServiceWorkerFromServiceWorker):
(WebKit::WebSWServerConnection::registerServiceWorkerClient):
(WebKit::WebSWServerConnection::unregisterServiceWorkerClient):
* StorageProcess/ServiceWorker/WebSWServerConnection.h:
* StorageProcess/ServiceWorker/WebSWServerConnection.messages.in:
* StorageProcess/ServiceWorker/WebSWServerToContextConnection.cpp:
(WebKit::WebSWServerToContextConnection::matchAllCompleted):
* StorageProcess/ServiceWorker/WebSWServerToContextConnection.h:
* WebProcess/Storage/WebSWClientConnection.cpp:
(WebKit::WebSWClientConnection::registerServiceWorkerClient):
(WebKit::WebSWClientConnection::unregisterServiceWorkerClient):
* WebProcess/Storage/WebSWClientConnection.h:
* WebProcess/Storage/WebSWContextManagerConnection.cpp:
(WebKit::WebSWContextManagerConnection::postMessageToServiceWorker):
(WebKit::WebSWContextManagerConnection::matchAllCompleted):
* WebProcess/Storage/WebSWContextManagerConnection.h:
* WebProcess/Storage/WebSWContextManagerConnection.messages.in:

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

3 years agoRTCPacketOptions::packet_id should be encoded as 32 bits integer.
commit-queue@webkit.org [Mon, 11 Dec 2017 23:23:52 +0000 (23:23 +0000)]
RTCPacketOptions::packet_id should be encoded as 32 bits integer.
https://bugs.webkit.org/show_bug.cgi?id=180654

Patch by Youenn Fablet <youenn@apple.com> on 2017-12-11
Reviewed by Eric Carlson.

packet_id is a 16 bit unsigned integer, but it can also take -1 if its value is not set.
Before the patch, it was IPC encoded as a 16 bit signed integer which is not large enough.

* Shared/RTCPacketOptions.cpp:
(WebKit::RTCPacketOptions::encode const):
(WebKit::RTCPacketOptions::decode):

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

3 years agoLayout Test http/tests/workers/service/postmessage-after-sw-process-crash.https.html...
cdumez@apple.com [Mon, 11 Dec 2017 22:49:10 +0000 (22:49 +0000)]
Layout Test http/tests/workers/service/postmessage-after-sw-process-crash.https.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=180659

Reviewed by Youenn Fablet.

Source/WebKit:

Fix flaky crash due to capturing an IPC::DataReference in a lambda, which would point to invalid
memory when the lambda is called asynchronously.

* StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
(WebKit::WebSWServerConnection::postMessageToServiceWorkerFromClient):
(WebKit::WebSWServerConnection::postMessageToServiceWorkerFromServiceWorker):

LayoutTests:

Rewrite test so that it is no longer flaky.

* http/tests/workers/service/postmessage-after-sw-process-crash.https-expected.txt:
* http/tests/workers/service/resources/postmessage-after-sw-process-crash-worker.js: Added.
* http/tests/workers/service/resources/postmessage-after-sw-process-crash.js:

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

3 years agoFix the macOS Sierra build following r225179
dbates@webkit.org [Mon, 11 Dec 2017 22:35:30 +0000 (22:35 +0000)]
Fix the macOS Sierra build following r225179
(https://bugs.webkit.org/show_bug.cgi?id=180011)

Substitute TARGET_MAC_OS_X_VERSION_LESS_THAN_101300 for TARGET_MAC_OS_X_VERSION_LESS_THAN_1013000.

* Configurations/WebCore.xcconfig:

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

3 years agoMake FrameView objects IsoHeap allocated
zalan@apple.com [Mon, 11 Dec 2017 22:27:43 +0000 (22:27 +0000)]
Make FrameView objects IsoHeap allocated
https://bugs.webkit.org/show_bug.cgi?id=180668
<rdar://problem/35976738>

Reviewed by Simon Fraser.

Related to <https://trac.webkit.org/changeset/225719/webkit>

* page/FrameView.cpp:
* page/FrameView.h:

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

3 years ago[iOS] Don't import 'UIKit-apps.sb' to the WebContent process sandbox
bfulgham@apple.com [Mon, 11 Dec 2017 21:25:51 +0000 (21:25 +0000)]
[iOS] Don't import 'UIKit-apps.sb' to the WebContent process sandbox
https://bugs.webkit.org/show_bug.cgi?id=180610
<rdar://problem/18899506>

Reviewed by Dean Jackson.

Stop including 'system.sb', and just include the portions of that sandbox that we
actually use in WebContent Process. This is the first step in some further sandbox
tightening.

* Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:

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

3 years agoStop using deprecated target conditional for simulator builds
timothy_horton@apple.com [Mon, 11 Dec 2017 20:10:03 +0000 (20:10 +0000)]
Stop using deprecated target conditional for simulator builds
https://bugs.webkit.org/show_bug.cgi?id=180662
<rdar://problem/35136156>

Reviewed by Simon Fraser.

PerformanceTests:

* StitchMarker/wtf/Platform.h:
* StitchMarker/wtf/dependencies/bmalloc/BPlatform.h:

Source/bmalloc:

* bmalloc/BPlatform.h:

Source/ThirdParty/libwebrtc:

* Source/third_party/libyuv/source/mjpeg_decoder.cc:
* Source/webrtc/examples/objc/AppRTCMobile/ARDAppClient.m:
(-[ARDAppClient createLocalVideoTrack]):
* Source/webrtc/examples/objc/AppRTCMobile/tests/ARDAppClient_xctest.mm:
* Source/webrtc/modules/audio_device/ios/audio_device_ios.mm:
(webrtc::LogDeviceInfo):

Source/WebKitLegacy/mac:

* postprocess-headers.sh:

Source/WTF:

* wtf/Platform.h:

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

3 years agoStyleBench improvements
antti@apple.com [Mon, 11 Dec 2017 19:41:46 +0000 (19:41 +0000)]
StyleBench improvements
https://bugs.webkit.org/show_bug.cgi?id=180646

Reviewed by Geoffrey Garen.

- Remove :empty rule from global stylesheet. It caused all tests to hit positional pseudo-class code paths.
- Instead use min-width to create easy flexible layout. Use it for ::before/::after too.
- Add :empty to positional pseudo-class test.
- Include some id attributes and id selectors
- Chance to have more than 1 classes per compound selector
- Change distribution of elements and classes to be non-uniform
- Other bug fixes

* StyleBench/resources/style-bench.js:
(Random.prototype.numberSquareWeightedToLow):
(Random):
(defaultConfiguration):
(prototype.randomElementName):
(prototype.randomId):
(prototype.makeCompoundSelector):
(prototype.makeSelector):
(prototype.makeElement):

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

3 years ago[WTF] Add Converter traits to StringHasher instead of function pointer
utatane.tea@gmail.com [Mon, 11 Dec 2017 19:22:01 +0000 (19:22 +0000)]
[WTF] Add Converter traits to StringHasher instead of function pointer
https://bugs.webkit.org/show_bug.cgi?id=180656

Reviewed by JF Bastien.

Source/WebKit:

* WebProcess/WebProcess.cpp:
(WebKit::addCaseFoldedCharacters):

Source/WTF:

In the latest ICU, UChar is char16_t. So defining defaultConverter(UChar)
and defaultConverter(char16_t) causes duplicate definitions.
Instead of passing a funtion pointer, we pass a trait class DefaultConveter
which has `convert` static function. And we make this `convert` function
generic. This avoids defining convert function for UChar and char16_t.

* wtf/text/StringHash.h:
(WTF::ASCIICaseInsensitiveHash::FoldCase::convert):
(WTF::ASCIICaseInsensitiveHash::hash):
(WTF::ASCIICaseInsensitiveHash::foldCase): Deleted.
* wtf/text/StringHasher.h:
(WTF::StringHasher::DefaultConverter::convert):
(WTF::StringHasher::addCharactersAssumingAligned):
(WTF::StringHasher::addCharacters):
(WTF::StringHasher::computeHashAndMaskTop8Bits):
(WTF::StringHasher::computeHash):
(WTF::StringHasher::computeLiteralHash):
(WTF::StringHasher::computeLiteralHashAndMaskTop8Bits):
(WTF::StringHasher::computeHashImpl):
(WTF::StringHasher::Converter): Deleted.
(WTF::StringHasher::defaultConverter): Deleted.

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

3 years ago[Web Animations] Implement AnimationPlaybackEvent and AnimationPlaybackEventInit
graouts@webkit.org [Mon, 11 Dec 2017 19:19:35 +0000 (19:19 +0000)]
[Web Animations] Implement AnimationPlaybackEvent and AnimationPlaybackEventInit
https://bugs.webkit.org/show_bug.cgi?id=180647

Reviewed by Dean Jackson.

Actually fix Windows build this time.

* animation/AnimationPlaybackEventInit.h:

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

3 years ago[Web Animations] Implement AnimationPlaybackEvent and AnimationPlaybackEventInit
graouts@webkit.org [Mon, 11 Dec 2017 18:56:56 +0000 (18:56 +0000)]
[Web Animations] Implement AnimationPlaybackEvent and AnimationPlaybackEventInit
https://bugs.webkit.org/show_bug.cgi?id=180647
<rdar://problem/35966325>

Reviewed by Dean Jackson.

Unreviewed, fix Windows build.

* animation/AnimationPlaybackEventInit.h:

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

3 years agoFloatingObjects/FloatingObject classes should hold weak references to renderers
zalan@apple.com [Mon, 11 Dec 2017 18:23:48 +0000 (18:23 +0000)]
FloatingObjects/FloatingObject classes should hold weak references to renderers
https://bugs.webkit.org/show_bug.cgi?id=180627
<rdar://problem/35954069>

Reviewed by Antti Koivisto.

* rendering/FloatingObjects.cpp:
(WebCore::FloatingObject::FloatingObject):
(WebCore::ComputeFloatOffsetAdapter::ComputeFloatOffsetAdapter):
(WebCore::ComputeFloatOffsetForFloatLayoutAdapter::ComputeFloatOffsetForFloatLayoutAdapter):
(WebCore::ComputeFloatOffsetForLineLayoutAdapter::ComputeFloatOffsetForLineLayoutAdapter):
(WebCore::FindNextFloatLogicalBottomAdapter::FindNextFloatLogicalBottomAdapter):
(WebCore::FindNextFloatLogicalBottomAdapter::collectIfNeeded):
(WebCore::FloatingObjects::findNextFloatLogicalBottomBelow):
(WebCore::FloatingObjects::findNextFloatLogicalBottomBelowForBlock):
(WebCore::FloatingObjects::FloatingObjects):
(WebCore::FloatingObjects::clearLineBoxTreePointers):
(WebCore::FloatingObjects::logicalLeftOffsetForPositioningFloat):
(WebCore::FloatingObjects::logicalRightOffsetForPositioningFloat):
(WebCore::FloatingObjects::logicalLeftOffset):
(WebCore::FloatingObjects::logicalRightOffset):
(WebCore::ComputeFloatOffsetForFloatLayoutAdapter<FloatingObject::FloatLeft>::updateOffsetIfNeeded):
(WebCore::ComputeFloatOffsetForFloatLayoutAdapter<FloatingObject::FloatRight>::updateOffsetIfNeeded):
(WebCore::ComputeFloatOffsetForFloatLayoutAdapter<FloatTypeValue>::heightRemaining const):
(WebCore::ComputeFloatOffsetAdapter<FloatTypeValue>::collectIfNeeded):
(WebCore::ComputeFloatOffsetForLineLayoutAdapter<FloatingObject::FloatLeft>::updateOffsetIfNeeded):
(WebCore::ComputeFloatOffsetForLineLayoutAdapter<FloatingObject::FloatRight>::updateOffsetIfNeeded):
* rendering/FloatingObjects.h:
(WebCore::FloatingObject::renderer const):
(WebCore::FloatingObjects::renderer const):

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

3 years agoTurn on ENABLE_APPLICATION_MANIFEST
commit-queue@webkit.org [Mon, 11 Dec 2017 18:09:32 +0000 (18:09 +0000)]
Turn on ENABLE_APPLICATION_MANIFEST
https://bugs.webkit.org/show_bug.cgi?id=180562
rdar://problem/35924737

Patch by David Quesada <david_quesada@apple.com> on 2017-12-11
Reviewed by Geoffrey Garen.

Source/JavaScriptCore:

* Configurations/FeatureDefines.xcconfig:

Source/WebCore:

* Configurations/FeatureDefines.xcconfig:
* loader/LinkLoader.cpp:
(WebCore::createLinkPreloadResourceClient):
* loader/cached/CachedResourceRequest.cpp:
    Add a missing #include that was implicitly added in the unified source when
    the feature is disabled.

Source/WebCore/PAL:

* Configurations/FeatureDefines.xcconfig:

Source/WebKit:

* Configurations/FeatureDefines.xcconfig:

Source/WebKitLegacy/mac:

* Configurations/FeatureDefines.xcconfig:

Tools:

* Configurations/FeatureDefines.xcconfig:

LayoutTests:

* platform/ios-wk2/TestExpectations:
* platform/mac-wk2/TestExpectations:

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

3 years agoAdd a runtime feature flag for ImageBitmap and OffscreenCanvas
dino@apple.com [Mon, 11 Dec 2017 18:07:48 +0000 (18:07 +0000)]
Add a runtime feature flag for ImageBitmap and OffscreenCanvas
https://bugs.webkit.org/show_bug.cgi?id=180652
<rdar://problem/35969611>

Reviewed by Antoine Quint.

Source/WebCore:

Add a RuntimeEnabledFeature for these interfaces, and link the bindings
to the feature.

Test: fast/canvas/offscreen-enabled.html

* bindings/js/WebCoreBuiltinNames.h:
* html/ImageBitmap.idl:
* html/OffscreenCanvas.idl:
* page/RuntimeEnabledFeatures.h:
(WebCore::RuntimeEnabledFeatures::setImageBitmapOffscreenCanvasEnabled):
(WebCore::RuntimeEnabledFeatures::imageBitmapOffscreenCanvasEnabled const):
* page/WindowOrWorkerGlobalScope.idl:

Source/WebKit:

Add an experimental feature flag for these interfaces.

* Shared/WebPreferences.yaml:

Websites/webkit.org:

Simple test to validate if these interfaces are enabled.

* experimental-features.html:

LayoutTests:

* fast/canvas/offscreen-enabled-expected.txt: Added.
* fast/canvas/offscreen-enabled.html: Added.

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

3 years ago[Web Animations] Implement AnimationPlaybackEvent and AnimationPlaybackEventInit
graouts@webkit.org [Mon, 11 Dec 2017 18:02:37 +0000 (18:02 +0000)]
[Web Animations] Implement AnimationPlaybackEvent and AnimationPlaybackEventInit
https://bugs.webkit.org/show_bug.cgi?id=180647
<rdar://problem/35966325>

Reviewed by Dean Jackson.

We implement the AnimationPlaybackEvent interface and AnimationPlaybackEventInit dictionary
as the first step towards dispatching animation "finish" and "cancel" events.

Animation playback events will be dispatched on Animation objects and expose the timeline time
and animation current time at the time they were constructed. Dispatch itself, which will be
the focus of the next patch, is not synchronous, so it's important to track those values
at creation time.

No new tests yet, followup patches will enable event dispatch and existing Web Platform Tests
will show progressions.

* CMakeLists.txt:
* DerivedSources.make:
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* animation/AnimationPlaybackEvent.cpp: Added.
(WebCore::AnimationPlaybackEvent::AnimationPlaybackEvent):
(WebCore::AnimationPlaybackEvent::bindingsCurrentTime const):
(WebCore::AnimationPlaybackEvent::bindingsTimelineTime const):
* animation/AnimationPlaybackEvent.h: Added.
* animation/AnimationPlaybackEvent.idl: Added.
* animation/AnimationPlaybackEventInit.h: Added.
* animation/AnimationPlaybackEventInit.idl: Added.
* bindings/js/WebCoreBuiltinNames.h:
* dom/EventNames.in:

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

3 years ago[WPE] Enable most wpt html tests.
Ms2ger@igalia.com [Mon, 11 Dec 2017 17:46:26 +0000 (17:46 +0000)]
[WPE] Enable most wpt html tests.
https://bugs.webkit.org/show_bug.cgi?id=180650

Unreviewed test gardening.

* platform/wpe/TestExpectations:
* platform/wpe/imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-showModal-expected.txt:
  Added: same as GTK; whitespace-only difference with the generic expectation file.
* platform/wpe/imported/w3c/web-platform-tests/html/semantics/selectors/pseudo-classes/inrange-outofrange-expected.txt:
  Added: whitespace-only difference with the generic expectation file.
* platform/wpe/imported/w3c/web-platform-tests/html/webappapis/system-state-and-capabilities/the-navigator-object/navigator-pluginarray-expected.txt:
  Added: some subtests pass because the plugin array does not contain any
  plugins on WPE, and issues with the actual elements of the array can
  not be detected.

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

3 years ago[WinCairo] DumpRenderTree times out for all non-http tests
commit-queue@webkit.org [Mon, 11 Dec 2017 17:38:57 +0000 (17:38 +0000)]
[WinCairo] DumpRenderTree times out for all non-http tests
https://bugs.webkit.org/show_bug.cgi?id=180571

Patch by Basuke Suzuki <Basuke.Suzuki@sony.com> on 2017-12-11
Reviewed by Alex Christensen.

Bug fix on processing the curl event for file protocol.

No new tests. This fix is to run existing tests.

* platform/network/curl/CurlRequest.cpp:
(WebCore::CurlRequest::completeDidReceiveResponse):
* platform/network/curl/CurlRequest.h:
(WebCore::CurlRequest::isCompleted const):
(WebCore::CurlRequest::isCancelled const):
(WebCore::CurlRequest::isCompletedOrCancelled const):

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

3 years agoUnreviewed, rolling out r225737.
zandobersek@gmail.com [Mon, 11 Dec 2017 10:16:55 +0000 (10:16 +0000)]
Unreviewed, rolling out r225737.

Breaks Git clones of the repository, including EWSs and webkitbot.

Reverted changeset:

"Add a script to automate W3c web-platform-tests pull request
creations from WebKit commits"
https://bugs.webkit.org/show_bug.cgi?id=169462
https://trac.webkit.org/changeset/225737

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

3 years agoREGRESSION(r221931): Row stretch doesn't work for grid container with min-height
rego@igalia.com [Mon, 11 Dec 2017 09:11:19 +0000 (09:11 +0000)]
REGRESSION(r221931): Row stretch doesn't work for grid container with min-height
https://bugs.webkit.org/show_bug.cgi?id=180287

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

* web-platform-tests/css/css-grid/grid-model/grid-box-sizing-001-expected.txt:
Update expectations as the test is now passing.

Source/WebCore:

In r221931 we moved the stretch phase as the last step of
the track sizing algorithm.
However this introduced a regression as we were no longer
taking into account the grid container min-width|height constraints
during this step.

The CSS WG modified the spec so it now defines what to do
in these situations (https://drafts.csswg.org/css-grid/#algo-stretch):
  "If the free space is indefinite, but the grid container
   has a definite min-width/height, use that size to calculate
   the free space for this step instead."

This patch adds a new method
GridTrackSizingAlgorithmStrategy::freeSpaceForStretchAutoTracksStep().
When we're in the DefiniteSizeStrategy it just returns the current
free space.
For the IndefiniteSizeStrategy in the columns case we don't need
any special computation (the same that happens in
recomputeUsedFlexFractionIfNeeded()); for rows it uses the min size
of the grid container (respecting min-width|height properties)
to calculate the free space.

Test: imported/w3c/web-platform-tests/css/css-grid/layout-algorithm/grid-stretch-respects-min-size-001.html

* rendering/GridTrackSizingAlgorithm.cpp:
(WebCore::IndefiniteSizeStrategy::freeSpaceForStretchAutoTracksStep const):
(WebCore::DefiniteSizeStrategy::freeSpaceForStretchAutoTracksStep const):
(WebCore::GridTrackSizingAlgorithm::stretchAutoTracks):
* rendering/GridTrackSizingAlgorithm.h:

LayoutTests:

* TestExpectations: Now layout-algorithm/grid-stretch-respects-min-size-001.html
from WPT is passing, so this patch removes it from TestExpectations file.

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

3 years ago[GTK] WebDriver: run-webdriver-tests is leaking a DumpRenderTree directory in tmp
carlosgc@webkit.org [Mon, 11 Dec 2017 08:31:38 +0000 (08:31 +0000)]
[GTK] WebDriver: run-webdriver-tests is leaking a DumpRenderTree directory in tmp
https://bugs.webkit.org/show_bug.cgi?id=180426

Reviewed by Michael Catanzaro.

This happens when running the tests with Xvfb driver, because _setup_environ_for_test() is called twice and the
DTR temp directory is created there every time. Only the last directory created is cleaned up by the driver
destructor. The DRT temp directory is only needed for layout tests, so we could even avoid its creation by
moving it to the start() method like other drivers do (included the base driver implementation). Since API and
WebDriver tests don't call start(), the directory is not even created, and the required env vars are not set
either in that case. Weston driver was behaving differently for some reason, it's now consistent with all other
drivers.

* Scripts/webkitpy/port/headlessdriver.py:
(HeadlessDriver._setup_environ_for_test): Do not set DUMPRENDERTREE_TEMP and XDG_CACHE_HOME if _driver_tempdir is None.
(HeadlessDriver._start): Use Port._driver_tempdir() to create the driver temp directory.
* Scripts/webkitpy/port/waylanddriver.py:
(WaylandDriver._setup_environ_for_test): Do not set DUMPRENDERTREE_TEMP and XDG_CACHE_HOME if _driver_tempdir is None.
(WaylandDriver._start): Use Port._driver_tempdir() to create the driver temp directory.
* Scripts/webkitpy/port/westondriver.py:
(WestonDriver._setup_environ_for_test): Do not set DUMPRENDERTREE_TEMP and XDG_CACHE_HOME if _driver_tempdir is None.
(WestonDriver._start): Use Port._driver_tempdir() to create the driver temp directory.
(WestonDriver.stop): Do not delete the temp directory, it's done by the parent class.
(WestonDriver._ensure_driver_tmpdir_subdirectory): Deleted.
* Scripts/webkitpy/port/westondriver_unittest.py:
(WestonDriverTest.make_driver):
(WestonDriverTest.test_stop):
* Scripts/webkitpy/port/xorgdriver.py:
(XorgDriver._setup_environ_for_test): Do not set DUMPRENDERTREE_TEMP and XDG_CACHE_HOME if _driver_tempdir is None.
(XorgDriver._start): Use Port._driver_tempdir() to create the driver temp directory.
* Scripts/webkitpy/port/xvfbdriver.py:
(XvfbDriver._setup_environ_for_test): Do not set DUMPRENDERTREE_TEMP and XDG_CACHE_HOME if _driver_tempdir is None.
(XvfbDriver._start): Use Port._driver_tempdir() to create the driver temp directory.

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

3 years agoWebDriver: get active element should return no such element error when there isn...
carlosgc@webkit.org [Mon, 11 Dec 2017 08:30:25 +0000 (08:30 +0000)]
WebDriver: get active element should return no such element error when there isn't an active element
https://bugs.webkit.org/show_bug.cgi?id=180421

Reviewed by Brian Burg.

We currently return unknown error.

Fixes: imported/w3c/webdriver/tests/element_retrieval/get_active_element.py::test_missing_document_element
* Session.cpp:
(WebDriver::Session::getActiveElement):

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

3 years agoUnreviewed webkitpy fix on Linux platforms after r225721.
zandobersek@gmail.com [Mon, 11 Dec 2017 07:55:10 +0000 (07:55 +0000)]
Unreviewed webkitpy fix on Linux platforms after r225721.

Add an empty 'linux' entry to the PUBLIC_TABLE mapping in the
VersionNameMap class. This avoids asserting in this class's
mapping_for_platform() method when the code is evaluated on a Linux
system, which happens when the static VERSION_FALLBACK_ORDER member in
the WinCairoPort class is constructed. This can occur during a
test-webkitpy run or when trying to construct a WPEPort instance in
PortFactory, which isn't possible because again the WinCairoPort
instance is constructed first, leading to the same assert in both cases.

* Scripts/webkitpy/common/version_name_map.py:
(VersionNameMap.__init__):

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

3 years agoAdd a script to automate W3c web-platform-tests pull request creations from WebKit...
commit-queue@webkit.org [Mon, 11 Dec 2017 05:04:33 +0000 (05:04 +0000)]
Add a script to automate W3c web-platform-tests pull request creations from WebKit commits
https://bugs.webkit.org/show_bug.cgi?id=169462

Patch by Youenn Fablet <youenn@apple.com> on 2017-12-10
Reviewed by Darin Adler.

Adding some git helper routines used by WPT exporter.
Copying WPT github utility files from Chromium.
Updating web.py/web_mock.py to cope with these new files.

Implementing test exporter in test_exporter.py.
This script takes a WebKit commit as input and will create a WPT commit in a local WPT clone.
It will then push the commit to a public GitHub repository identified by a username parameter.
This parameter is passed through the command line or searched through git config/environment variables.

The script can optionally create a pull request to the official WPT GitHub repository.
User must provide a GitHub token to allow the script to make the PR on behalf of the user.
In that case, a comment is added to the corresponding bugzilla if a bug ID is given or can be found from the change log,
to easily link the pull request with the bugzilla bug.

* Scripts/export-w3c-test-changes: Added.
* Scripts/webkitpy/common/checkout/scm/git.py:
(Git.reset_hard):
(Git):
(Git.am):
(Git.commit):
(Git.format_patch):
(Git.request_pull):
(Git.remote):
(Git.push):
(Git.checkout_new_branch):
* Scripts/webkitpy/common/net/web.py:
(Web.request): Copied from Chromium.
* Scripts/webkitpy/common/net/web_mock.py: Copied needed code from Chromium.
* Scripts/webkitpy/w3c/test_exporter.py: Added.
(TestExporter):
(TestExporter.__init__):
(TestExporter._init_repository):
(TestExporter.download_and_commit_patch):
(TestExporter.clean):
(TestExporter.create_branch_with_patch):
(TestExporter.push_to_public_repository):
(TestExporter.make_pull_request):
(TestExporter.delete_local_branch):
(TestExporter.create_git_patch):
(TestExporter.create_upload_remote_if_needed):
(TestExporter.do_export):
(parse_args):
(configure_logging):
(configure_logging.LogHandler):
(configure_logging.LogHandler.format):
(main):
* Scripts/webkitpy/w3c/test_exporter_unittest.py: Added.
(TestExporterTest):
(TestExporterTest.MockBugzilla):
(TestExporterTest.MockBugzilla.__init__):
(TestExporterTest.MockBugzilla.fetch_bug_dictionary):
(TestExporterTest.MockBugzilla.post_comment_to_bug):
(TestExporterTest.MockGit):
(TestExporterTest.MockGit.clone):
(TestExporterTest.MockGit.__init__):
(TestExporterTest.MockGit.fetch):
(TestExporterTest.MockGit.checkout):
(TestExporterTest.MockGit.reset_hard):
(TestExporterTest.MockGit.push):
(TestExporterTest.MockGit.format_patch):
(TestExporterTest.MockGit.delete_branch):
(TestExporterTest.MockGit.checkout_new_branch):
(TestExporterTest.MockGit.am):
(TestExporterTest.MockGit.commit):
(TestExporterTest.MockGit.remote):
(TestExporterTest.test_export):
* Scripts/webkitpy/w3c/common.py: Copied from chromium.
* Scripts/webkitpy/w3c/wpt_github.py: Copied from chromium.
* Scripts/webkitpy/w3c/wpt_github_mock.py: Copied from chromium.
* Scripts/webkitpy/w3c/wpt_github_unittest.py: Copied from chromium.

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

3 years agoIncorrect bounds inside <mover>/<munder> when a stretchy operator is present
commit-queue@webkit.org [Mon, 11 Dec 2017 03:10:41 +0000 (03:10 +0000)]
Incorrect bounds inside <mover>/<munder> when a stretchy operator is present
https://bugs.webkit.org/show_bug.cgi?id=179682

Patch by Minsheng Liu <lambda@liu.ms> on 2017-12-10
Reviewed by Frédéric Wang.

Source/WebCore:

Currently a stretchy operator inside <mover>/<munder>/<munderover> is stretched
during paint() rather than layout(), which leads to both end user confusion
and many unexpected behaviors. This patch rewrites
RenderMathMLUnderOver::stretchHorizontalOperatorsAndLayoutChildren()
to both eliminate the issue and make operator stretching more standard
conforming.

A test is added to check the stretch width of stretchy operators in various
scenarios:
mathml/opentype/munderover-stretch-width.html

A previous test is updated:
mathml/opentype/opentype-stretchy-horizontal.html

* rendering/mathml/RenderMathMLOperator.cpp:
(WebCore::RenderMathMLOperator::stretchTo):
(WebCore::RenderMathMLOperator::resetStretchSize):
(WebCore::RenderMathMLOperator::paint):
* rendering/mathml/RenderMathMLOperator.h:
(WebCore::RenderMathMLOperator::setStretchWidthLocked):
(WebCore::RenderMathMLOperator::isStretchWidthLocked const):
* rendering/mathml/RenderMathMLUnderOver.cpp:
(WebCore::toHorizontalStretchyOperator):
(WebCore::fixLayoutAfterStretch):
(WebCore::RenderMathMLUnderOver::stretchHorizontalOperatorsAndLayoutChildren):

LayoutTests:

Added test case: mathml/opentype/munderover-stretch-width.html

Updated test case: mathml/opentype/opentype-stretchy-horizontal
We update the test file to make sure the stretchy <mo> has zero lspace/rspace.
Expected results for macOS and iOS are included.

* mathml/opentype/munderover-stretch-width-expected.txt: Added.
* mathml/opentype/munderover-stretch-width.html: Added.
* mathml/opentype/opentype-stretchy-horizontal.html:
* platform/gtk/mathml/opentype/opentype-stretchy-horizontal-expected.txt: Removed.
* platform/ios/mathml/opentype/opentype-stretchy-horizontal-expected.png:
* platform/ios/mathml/opentype/opentype-stretchy-horizontal-expected.txt:
* platform/mac/mathml/opentype/opentype-stretchy-horizontal-expected.png:
* platform/mac/mathml/opentype/opentype-stretchy-horizontal-expected.txt:
* platform/win/mathml/opentype/opentype-stretchy-horizontal-expected.txt: Removed.

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

3 years ago[WTF] Reduce sizeof(Thread) by adjusting alignment
utatane.tea@gmail.com [Mon, 11 Dec 2017 01:32:19 +0000 (01:32 +0000)]
[WTF] Reduce sizeof(Thread) by adjusting alignment
https://bugs.webkit.org/show_bug.cgi?id=180630

Reviewed by Saam Barati.

Reduce sizeof(Thread) slightly by adjusting alignment.

* wtf/Threading.h:

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

3 years agoHarden a few assertions in GC sweep
fpizlo@apple.com [Mon, 11 Dec 2017 01:10:32 +0000 (01:10 +0000)]
Harden a few assertions in GC sweep
https://bugs.webkit.org/show_bug.cgi?id=180634

Reviewed by Saam Barati.

This turns one dynamic check into a release assertion and upgrades another assertion to a release
assertion.

* heap/MarkedBlock.cpp:
(JSC::MarkedBlock::Handle::sweep):

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

3 years ago[python] Modernize "except" usage for python3 compatibility
annulen@yandex.ru [Sun, 10 Dec 2017 21:11:18 +0000 (21:11 +0000)]
[python] Modernize "except" usage for python3 compatibility
https://bugs.webkit.org/show_bug.cgi?id=180612

Reviewed by Michael Catanzaro.

Source/JavaScriptCore:

* inspector/scripts/generate-inspector-protocol-bindings.py:

Tools:

* BuildSlaveSupport/build.webkit.org-config/committer_auth.py:
(CommitterAuth.auth_json):
(CommitterAuth.authenticate):
(CommitterAuth.is_webkit_committer):
(CommitterAuth.is_webkit_trac_user):
* BuildSlaveSupport/wait-for-SVN-server.py:
(getLatestSVNRevision):
* QueueStatusServer/handlers/updatebase.py:
(UpdateBase._int_from_request):
* Scripts/webkitpy/bindings/main.py:
(BindingsTests.generate_from_idl):
(BindingsTests.generate_supplemental_dependency):
(BindingsTests.detect_changes):
* Scripts/webkitpy/codegen/main.py:
(BuiltinsGeneratorTests.generate_from_js_builtins):
(BuiltinsGeneratorTests.detect_changes):
* Scripts/webkitpy/common/checkout/changelog.py:
(ChangeLog.parse_latest_entry_from_file):
* Scripts/webkitpy/common/checkout/checkout.py:
(Checkout.bug_id_for_this_commit):
* Scripts/webkitpy/common/checkout/scm/git.py:
(Git.in_working_directory):
(Git.clone):
(Git._string_to_int_or_none):
(Git._commit_on_branch):
* Scripts/webkitpy/common/checkout/scm/svn.py:
(SVN.revisions_changing_file):
* Scripts/webkitpy/common/config/committers.py:
(CommitterList.load_json):
* Scripts/webkitpy/common/message_pool.py:
(_Worker.run):
* Scripts/webkitpy/common/net/buildbot/buildbot.py:
(Builder.force_build.predicate):
(Builder._fetch_revision_to_build_map):
(BuildBot._fetch_build_dictionary):
* Scripts/webkitpy/common/net/credentials.py:
(Credentials._credentials_from_git):
* Scripts/webkitpy/common/net/networktransaction.py:
(NetworkTransaction.run):
* Scripts/webkitpy/common/net/networktransaction_unittest.py:
(NetworkTransactionTest.test_exception):
(NetworkTransactionTest.test_timeout):
* Scripts/webkitpy/common/net/statusserver.py:
(StatusServer._fetch_url):
* Scripts/webkitpy/common/net/unittestresults.py:
(UnitTestResults.results_from_string):
* Scripts/webkitpy/common/prettypatch.py:
(PrettyPatch.check_pretty_patch):
(PrettyPatch.pretty_patch_text):
* Scripts/webkitpy/common/prettypatch_unittest.py:
(PrettyPatchTest.check_ruby):
* Scripts/webkitpy/common/system/autoinstall.py:
(AutoInstaller._extract_tar):
(AutoInstaller._unzip):
(AutoInstaller._replace_domain_with_next_mirror):
(AutoInstaller._download_to_stream):
(AutoInstaller.install):
* Scripts/webkitpy/common/system/crashlogs.py:
(CrashLogs._find_newest_log_darwin):
(CrashLogs._find_newest_log_win):
(CrashLogs._find_all_logs_darwin):
* Scripts/webkitpy/common/system/executive.py:
(Executive.kill_process):
(Executive.running_pids):
* Scripts/webkitpy/common/system/filesystem.py:
(FileSystem.maybe_make_directory):
(FileSystem.remove):
* Scripts/webkitpy/common/system/user.py:
(User._wait_on_list_response):
(User.edit):
(User.page):
(User.can_open_url):
* Scripts/webkitpy/common/system/workspace.py:
(Workspace.create_zip):
* Scripts/webkitpy/common/watchlist/watchlistparser.py:
(WatchListParser._parse_definition_section):
* Scripts/webkitpy/common/webkitunittest.py:
(TestCase._assertRaisesRegexp):
* Scripts/webkitpy/inspector/main.py:
(InspectorGeneratorTests.generate_from_json):
(InspectorGeneratorTests.detect_changes):
* Scripts/webkitpy/layout_tests/controllers/layout_test_finder.py:
(LayoutTestFinder._read_test_names_from_file):
* Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py:
(LayoutTestRunner.run_tests):
* Scripts/webkitpy/layout_tests/controllers/manager.py:
(Manager.upload_results):
* Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:
(JSONResultsGenerator.upload_json_files):
(JSONResultsGenerator._get_archived_json_results):
* Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py:
(MiscTests.test_parse_warning):
(SemanticTests.test_bad_bugid):
* Scripts/webkitpy/layout_tests/models/test_run_results.py:
(summarize_results):
* Scripts/webkitpy/layout_tests/run_webkit_tests.py:
(main):
* Scripts/webkitpy/layout_tests/servers/http_server.py:
(Lighttpd._remove_stale_logs):
* Scripts/webkitpy/layout_tests/servers/http_server_base.py:
(HttpServerBase._is_running_on_port):
(HttpServerBase._check_that_all_ports_are_available):
* Scripts/webkitpy/layout_tests/servers/http_server_integrationtest.py:
(BaseTest.assert_servers_are_down):
(BaseTest.assert_servers_are_up):
(BaseTest.integration_test_server__fails):
(BaseTest.maybe_make_dir):
* Scripts/webkitpy/layout_tests/servers/run_webkit_httpd.py:
(run_server):
* Scripts/webkitpy/layout_tests/servers/web_platform_test_launcher.py:
* Scripts/webkitpy/layout_tests/servers/websocket_server.py:
(PyWebSocket.is_running):
(PyWebSocket._remove_stale_logs):
* Scripts/webkitpy/performance_tests/perftestsrunner.py:
(_merge_slave_config_json):
(_merge_outputs_if_needed):
(_upload_json):
* Scripts/webkitpy/port/base.py:
(Port._build_driver):
(Port._build_image_diff):
(Port._symbols_string):
* Scripts/webkitpy/port/leakdetector.py:
(LeakDetector.count_total_bytes_and_unique_leaks):
(LeakDetector.check_for_leaks):
* Scripts/webkitpy/port/leakdetector_valgrind.py:
(LeakDetectorValgrind._parse_leaks_output):
* Scripts/webkitpy/port/mac.py:
(MacPort.reset_preferences):
(MacPort.stop_helper):
* Scripts/webkitpy/port/port_testcase.py:
(PortTestCase.assert_servers_are_down):
(PortTestCase.assert_servers_are_up):
(PortTestCase.integration_test_http_server__fails):
(PortTestCase.integration_test_websocket_server__fails):
* Scripts/webkitpy/port/server_process.py:
(ServerProcess.write):
(ServerProcess._wait_for_data_and_update_buffers_using_select):
(ServerProcess._non_blocking_read_win32):
* Scripts/webkitpy/port/win.py:
(WinPort._runtime_feature_list):
* Scripts/webkitpy/port/xvfbdriver.py:
(XvfbDriver._xvfb_read_display_id):
* Scripts/webkitpy/style/checkers/jsonchecker.py:
(JSONChecker.check):
* Scripts/webkitpy/style/checkers/xml.py:
(XMLChecker.check):
* Scripts/webkitpy/style/filereader.py:
(TextFileReader.process_file):
* Scripts/webkitpy/style/filereader_unittest.py:
(TextFileReaderTest.test_process_file__does_not_exist):
* Scripts/webkitpy/style/optparser.py:
(ArgumentParser.parse):
* Scripts/webkitpy/tool/bot/irc_command.py:
(CreateBug.execute):
(Rollout.execute):
* Scripts/webkitpy/tool/bot/ircbot.py:
(IRCBot.process_message):
* Scripts/webkitpy/tool/bot/layouttestresultsreader.py:
(LayoutTestResultsReader._read_file_contents):
* Scripts/webkitpy/tool/bot/patchanalysistask.py:
(PatchAnalysisTask._run_command):
* Scripts/webkitpy/tool/bot/queueengine.py:
(QueueEngine.run):
* Scripts/webkitpy/tool/commands/abstractsequencedcommand.py:
(AbstractSequencedCommand.execute):
* Scripts/webkitpy/tool/commands/download.py:
(AbstractPatchSequencingCommand._prepare_to_process):
* Scripts/webkitpy/tool/commands/earlywarningsystem.py:
(AbstractEarlyWarningSystem.review_patch):
* Scripts/webkitpy/tool/commands/queries.py:
(FailureReason._blame_line_for_revision):
* Scripts/webkitpy/tool/commands/queues.py:
(AbstractQueue._cc_watchers):
(AbstractQueue.run_webkit_patch):
(CommitQueue.process_work_item):
(StyleQueue.review_patch):
* Scripts/webkitpy/tool/commands/rebaseline.py:
(AbstractParallelRebaselineCommand._run_webkit_patch):
* Scripts/webkitpy/tool/commands/stepsequence.py:
(StepSequence.run_and_handle_errors):
* Scripts/webkitpy/tool/commands/suggestnominations.py:
(SuggestNominations._count_recent_patches):
* Scripts/webkitpy/tool/multicommandtool.py:
(MultiCommandTool.main):
* Scripts/webkitpy/tool/servers/rebaselineserver.py:
(_rebaseline_test):
(_move_test_baselines):
* Scripts/webkitpy/tool/steps/addsvnmimetypeforpng_unittest.py:
(AddSvnMimetypeForPngTest.test_run):
* Scripts/webkitpy/tool/steps/checkstyle.py:
(CheckStyle.run):
* Scripts/webkitpy/tool/steps/commit.py:
(Commit._check_test_expectations):
(Commit.run):
* Scripts/webkitpy/tool/steps/confirmdiff.py:
(ConfirmDiff._show_pretty_diff):
* Scripts/webkitpy/tool/steps/haslanded.py:
(HasLanded.diff_diff):
* Scripts/webkitpy/tool/steps/preparechangelog.py:
(PrepareChangeLog.run):
* Scripts/webkitpy/tool/steps/promptforbugortitle.py:
(PromptForBugOrTitle.run):
* Scripts/webkitpy/tool/steps/sortxcodeprojectfiles.py:
(SortXcodeProjectFiles.run):
* Scripts/webkitpy/webdriver_tests/webdriver_w3c_web_server.py:
(WebDriverW3CWebServer._wait_for_server.check_port):
* TestResultServer/model/datastorefile.py:
(DataStoreFile.save_data):
* jhbuild/jhbuildutils.py:
(enter_jhbuild_environment_if_available):

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

3 years agoAPIClient.h uses things from <tuple> without including it explicitly
commit-queue@webkit.org [Sun, 10 Dec 2017 16:47:24 +0000 (16:47 +0000)]
APIClient.h uses things from <tuple> without including it explicitly
https://bugs.webkit.org/show_bug.cgi?id=180609

Patch by Stephan Szabo <stephan.szabo@sony.com> on 2017-12-10
Reviewed by Darin Adler.

* Shared/API/APIClient.h:

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

3 years agoUnreviewed, follow-up patch after r225470
utatane.tea@gmail.com [Sun, 10 Dec 2017 13:14:27 +0000 (13:14 +0000)]
Unreviewed, follow-up patch after r225470
https://bugs.webkit.org/show_bug.cgi?id=180308

* Modules/webdatabase/SQLTransaction.cpp:
(WebCore::SQLTransaction::checkAndHandleClosedDatabase):
Use consistent operands.

* bindings/js/JSCallbackData.h:
(WebCore::JSCallbackData::JSCallbackData):
Use class field initializer.

* xml/parser/XMLDocumentParserLibxml2.cpp:
(WebCore::openFunc):
Use consistent operands.

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

3 years agoUnreviewed, follow-up patch after r225726
utatane.tea@gmail.com [Sun, 10 Dec 2017 13:00:24 +0000 (13:00 +0000)]
Unreviewed, follow-up patch after r225726
https://bugs.webkit.org/show_bug.cgi?id=180622

Suggested by Darin. We should take care of signed-extension of `char`.

* wtf/text/StringHasher.h:
(WTF::StringHasher::defaultConverter):

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

3 years agoAdd test demonstrating leaks that happen when we create reference cycles with DOM...
darin@apple.com [Sun, 10 Dec 2017 02:53:29 +0000 (02:53 +0000)]
Add test demonstrating leaks that happen when we create reference cycles with DOM objects
https://bugs.webkit.org/show_bug.cgi?id=180323

Reviewed by Filip Pizlo.

* fast/dom/reference-cycle-leaks-expected.txt: Added.
* fast/dom/reference-cycle-leaks.html: Added.

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

3 years ago[WTF] Remove RELAXED_CONSTEXPR
utatane.tea@gmail.com [Sat, 9 Dec 2017 21:42:02 +0000 (21:42 +0000)]
[WTF] Remove RELAXED_CONSTEXPR
https://bugs.webkit.org/show_bug.cgi?id=180624

Reviewed by JF Bastien.

All of our required compilers support relaxed constexpr in C++14.
We can drop RELAXED_CONSTEXPR macro in our tree.

* wtf/Compiler.h:
* wtf/Expected.h:
(std::experimental::fundamentals_v3::expected::operator*):
(std::experimental::fundamentals_v3::expected::value):
(std::experimental::fundamentals_v3::expected::error):
* wtf/Unexpected.h:
(std::experimental::fundamentals_v3::unexpected::value):
(std::experimental::fundamentals_v3::unexpected::value const):

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

3 years agoFix WTF::Hasher tuple expansion with variadic args
utatane.tea@gmail.com [Sat, 9 Dec 2017 20:34:45 +0000 (20:34 +0000)]
Fix WTF::Hasher tuple expansion with variadic args
https://bugs.webkit.org/show_bug.cgi?id=180623

Reviewed by JF Bastien.

Source/WTF:

We expand a tuple with `...`, and use this in a function's argument list.
And in this argument list, we call `add()` for each value. This will be
expanded as follows.

    [] (...) { }((add(hasher, std::get<i>(values)), 0)...);

will become,

    [] (...) { }((add(hasher, std::get<0>(values)), 0), (add(hasher, std::get<1>(values)), 0), ...);

However, the evaluation order of the C++ argument is unspecified. Actually,
in GCC environment, this `add()` is not called in our expected order. As a
result, currently we have test failures in TestWTF.

This patch just uses variadic templates to expand tuples, and call add() in
our expected order. This patch fixes an existing failure of TestWTF in GCC environment.

* wtf/Hasher.h:
(WTF::Hasher::computeHash):
(WTF::addArgs):
(WTF::addTupleHelper):
(WTF::add):

Tools:

* TestWebKitAPI/Tests/WTF/Hasher.cpp:
(TestWebKitAPI::TEST):

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

3 years agoUse relaxed constexpr for StringHasher
utatane.tea@gmail.com [Sat, 9 Dec 2017 20:11:56 +0000 (20:11 +0000)]
Use relaxed constexpr for StringHasher
https://bugs.webkit.org/show_bug.cgi?id=180622

Reviewed by JF Bastien.

Now VC++ is updated and all the WebKit compilers support C++14 relaxed constexpr.
This patch uses relaxed constexpr for StringHasher constexpr implementation

* wtf/text/StringHasher.h:
(WTF::StringHasher::addCharactersAssumingAligned):
(WTF::StringHasher::Converter):
(WTF::StringHasher::computeHashAndMaskTop8Bits):
(WTF::StringHasher::computeHash):
(WTF::StringHasher::computeLiteralHash):
(WTF::StringHasher::computeLiteralHashAndMaskTop8Bits):
(WTF::StringHasher::defaultConverter):
(WTF::StringHasher::avalancheBits):
(WTF::StringHasher::finalize):
(WTF::StringHasher::finalizeAndMaskTop8Bits):
(WTF::StringHasher::avoidZero):
(WTF::StringHasher::calculateWithRemainingLastCharacter):
(WTF::StringHasher::calculateWithTwoCharacters):
(WTF::StringHasher::processPendingCharacter const):
(WTF::StringHasher::StringHasher): Deleted.
(WTF::StringHasher::avalancheBits3): Deleted.
(WTF::StringHasher::avalancheBits2): Deleted.
(WTF::StringHasher::avalancheBits1): Deleted.
(WTF::StringHasher::avalancheBits0): Deleted.
(WTF::StringHasher::calculateWithRemainingLastCharacter1): Deleted.
(WTF::StringHasher::calculateWithRemainingLastCharacter0): Deleted.
(WTF::StringHasher::calculate1): Deleted.
(WTF::StringHasher::calculate0): Deleted.
(WTF::StringHasher::calculate): Deleted.
(WTF::StringHasher::computeLiteralHashImpl): Deleted.

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

3 years agoInferredType should not use UnconditionalFinalizer
fpizlo@apple.com [Sat, 9 Dec 2017 19:48:04 +0000 (19:48 +0000)]
InferredType should not use UnconditionalFinalizer
https://bugs.webkit.org/show_bug.cgi?id=180456

Reviewed by Saam Barati.

This turns InferredStructure into a cell so that we can unconditionally finalize them without
having to add things to the UnconditionalFinalizer list. I'm removing all uses of
UnconditionalFinalizers and WeakReferenceHarvesters because the data structures used to manage
them are a top cause of lock contention in the parallel GC. Also, we don't need those data
structures if we use IsoSubspaces, subspace iteration, and marking constraints.

* JavaScriptCore.xcodeproj/project.pbxproj:
* Sources.txt:
* heap/Heap.cpp:
(JSC::Heap::finalizeUnconditionalFinalizers):
* heap/Heap.h:
* runtime/InferredStructure.cpp: Added.
(JSC::InferredStructure::create):
(JSC::InferredStructure::destroy):
(JSC::InferredStructure::createStructure):
(JSC::InferredStructure::visitChildren):
(JSC::InferredStructure::finalizeUnconditionally):
(JSC::InferredStructure::InferredStructure):
(JSC::InferredStructure::finishCreation):
* runtime/InferredStructure.h: Added.
* runtime/InferredStructureWatchpoint.cpp: Added.
(JSC::InferredStructureWatchpoint::fireInternal):
* runtime/InferredStructureWatchpoint.h: Added.
* runtime/InferredType.cpp:
(JSC::InferredType::visitChildren):
(JSC::InferredType::willStoreValueSlow):
(JSC::InferredType::makeTopSlow):
(JSC::InferredType::set):
(JSC::InferredType::removeStructure):
(JSC::InferredType::InferredStructureWatchpoint::fireInternal): Deleted.
(JSC::InferredType::InferredStructureFinalizer::finalizeUnconditionally): Deleted.
(JSC::InferredType::InferredStructure::InferredStructure): Deleted.
* runtime/InferredType.h:
* runtime/VM.cpp:
(JSC::VM::VM):
* runtime/VM.h:

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

3 years ago[python] Replace print >> operator with print() function for python3 compatibility
annulen@yandex.ru [Sat, 9 Dec 2017 16:58:36 +0000 (16:58 +0000)]
[python] Replace print >> operator with print() function for python3 compatibility
https://bugs.webkit.org/show_bug.cgi?id=180611

Reviewed by Michael Catanzaro.

Source/JavaScriptCore:

* Scripts/make-js-file-arrays.py:
(main):

Tools:

* CygwinDownloader/cygwin-downloader.py:
(download_url_to_file):
* Scripts/webkitpy/common/system/profiler.py:
(Perf.profile_after_exit):
* Scripts/webkitpy/common/version_check.py:
* Scripts/webkitpy/layout_tests/lint_test_expectations.py:
(main):
* Scripts/webkitpy/layout_tests/run_webkit_tests.py:
(main):
* Scripts/webkitpy/layout_tests/servers/run_webkit_httpd.py:
(run_server):
* Scripts/webkitpy/tool/commands/analyzechangelog.py:
(ChangeLogAnalyzer._print_status):
* Scripts/webkitpy/tool/commands/queries.py:
(BugsToCommit.execute):
(PatchesInCommitQueue.execute):
(PatchesToCommitQueue.execute):
(PatchesToReview._print_report):
(WhatBroke._print_builder_line):
(WhatBroke._print_blame_information_for_builder):
(WhatBroke.execute):
(ResultsFor._print_layout_test_results):
(ResultsFor.execute):
(FailureReason._print_blame_information_for_transition):
(FailureReason._explain_failures_for_builder):
(FailureReason._builder_to_explain):
(FailureReason.execute):
(FindFlakyTests._find_failures):
(FindFlakyTests._print_statistics):
(FindFlakyTests._walk_backwards_from):
(execute):
(PrintExpectations.execute):
(PrintBaselines.execute):
(PrintBaselines._print_baselines):
(FindResolvedBugs.execute):
* Scripts/webkitpy/tool/commands/rebaseline.py:
(AbstractParallelRebaselineCommand._run_webkit_patch):
(AbstractParallelRebaselineCommand._rebaseline):
* Scripts/webkitpy/tool/servers/gardeningserver.py:
(GardeningHTTPRequestHandler.rebaselineall):
* Scripts/webkitpy/tool/servers/gardeningserver_unittest.py:
(GardeningServerTest.disabled_test_rebaselineall.run_command):
(GardeningServerTest):

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

3 years agoiOS: Crash in Document::updateLayout() via Document::processViewport
rniwa@webkit.org [Sat, 9 Dec 2017 10:41:32 +0000 (10:41 +0000)]
iOS: Crash in Document::updateLayout() via Document::processViewport
https://bugs.webkit.org/show_bug.cgi?id=180619
<rdar://problem/35717575>

Reviewed by Zalan Bujtas.

Source/WebCore:

The crash is caused by modern media controls updating the layout in the middle of insertedIntoAncestor
via HTMLMediaElement::setControllerJSProperty inside Document::pageScaleFactorChangedAndStable.

Fixed the crash by delaying the work to update the viewport configuration until didFinishInsertingNode
since updating the viewport configuration results in a lot of related code running in response,
and making sure all that code never tries to execute an author script is not attainable in the short term,
and a maintenance nightmare in the long term.

Test: media/ios/viewport-change-with-video.html

* html/HTMLMetaElement.cpp:
(WebCore::HTMLMetaElement::insertedIntoAncestor):
(WebCore::HTMLMetaElement::didFinishInsertingNode): Added.
* html/HTMLMetaElement.h:

LayoutTests:

Added a regression test for the crash.

* media/ios/viewport-change-with-video-expected.txt: Added.
* media/ios/viewport-change-with-video.html: Added.

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

3 years ago[Win] The way to detect Windows 10 is wrong
commit-queue@webkit.org [Sat, 9 Dec 2017 07:39:47 +0000 (07:39 +0000)]
[Win] The way to detect Windows 10 is wrong
https://bugs.webkit.org/show_bug.cgi?id=179344
<rdar://problem/35562264>

Patch by Basuke Suzuki <Basuke.Suzuki@sony.com> on 2017-12-08
Reviewed by Alex Christensen.

Python2.7 doesn't return correct information on Windows 10.
Use platform.win32_ver() instead of sys.getwindowsversion().

* Scripts/webkitpy/common/system/platforminfo.py:
(PlatformInfo._win_version):
(PlatformInfo._win_version_str):
* Scripts/webkitpy/common/system/platforminfo_unittest.py:
(fake_sys):
(fake_sys.FakeSysModule):
(fake_platform):
(fake_platform.FakePlatformModule.win32_ver):
(TestPlatformInfo.test_os_name_and_wrappers):
(TestPlatformInfo.test_os_version):
(TestPlatformInfo.test_display_name):
(TestPlatformInfo.test_total_bytes_memory):

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

3 years ago[WinCairo] Fix runtime error after r225229
commit-queue@webkit.org [Sat, 9 Dec 2017 05:40:02 +0000 (05:40 +0000)]
[WinCairo] Fix runtime error after r225229
https://bugs.webkit.org/show_bug.cgi?id=180614

Patch by Basuke Suzuki <Basuke.Suzuki@sony.com> on 2017-12-08
Reviewed by Alex Christensen.

The list of fallback versions doesn't match with version name mapping introduced recently.
It should be safe by creating the list automatically from the name map for consistency.

* Scripts/webkitpy/common/version_name_map.py:
(VersionNameMap.__init__):
(VersionNameMap.to_name):
(VersionNameMap.from_name):
(VersionNameMap):
(VersionNameMap.names):
(VersionNameMap.mapping_for_platform):
* Scripts/webkitpy/port/win.py:
(WinCairoPort):
(WinCairoPort.default_baseline_search_path):

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

3 years agoService Worker should use a correct user agent
commit-queue@webkit.org [Sat, 9 Dec 2017 05:36:37 +0000 (05:36 +0000)]
Service Worker should use a correct user agent
https://bugs.webkit.org/show_bug.cgi?id=180566
<rdar://problem/35926295>

Patch by Youenn Fablet <youenn@apple.com> on 2017-12-08
Reviewed by Chris Dumez.

Addendum to landed patch.
This change was removed from the last version of the patch but proves to be needed by Safari.

* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::establishWorkerContextConnectionToStorageProcess):
Added back setting the user agent at start of service worker in case a page is already created.

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

3 years agoDocument::updateLayout() could destroy current frame.
zalan@apple.com [Sat, 9 Dec 2017 03:51:25 +0000 (03:51 +0000)]
Document::updateLayout() could destroy current frame.
https://bugs.webkit.org/show_bug.cgi?id=180525
<rdar://problem/35906836>

Reviewed by Simon Fraser.

Source/WebCore:

Early return when Document::updateLayout() triggers Frame destruction.

Test: fast/frames/crash-when-iframe-is-remove-in-eventhandler.html

* dom/TreeScope.cpp:
(WebCore::absolutePointIfNotClipped):

LayoutTests:

* fast/frames/crash-when-iframe-is-remove-in-eventhandler-expected.txt: Added.
* fast/frames/crash-when-iframe-is-remove-in-eventhandler.html: Added.

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

3 years agoServiceWorkerGlobalScope is a global object and should be marked as [ImplicitThis...
cdumez@apple.com [Sat, 9 Dec 2017 03:44:33 +0000 (03:44 +0000)]
ServiceWorkerGlobalScope is a global object and should be marked as [ImplicitThis] in the IDL
https://bugs.webkit.org/show_bug.cgi?id=180615

Reviewed by Brady Eidson.

LayoutTests/imported/w3c:

Rebaseline WPT tests now that more checks are passing.

* web-platform-tests/service-workers/service-worker/interfaces-sw.https-expected.txt:
* web-platform-tests/workers/interfaces.worker-expected.txt:

Source/WebCore:

ServiceWorkerGlobalScope is a global object and should be marked as [ImplicitThis] in the IDL, similarly to what we do for Window.
This allows a getter to be fallback to the global object as ThisValue when the cast of the ThisValue to the expected type fails.

No new tests, rebaselined existing test.

* workers/DedicatedWorkerGlobalScope.idl:
* workers/WorkerGlobalScope.idl:
* workers/service/ServiceWorkerGlobalScope.idl:

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

3 years agoDelay some service worker operations until after the database import completes.
beidson@apple.com [Sat, 9 Dec 2017 03:03:06 +0000 (03:03 +0000)]
Delay some service worker operations until after the database import completes.
https://bugs.webkit.org/show_bug.cgi?id=180573

Reviewed by Chris Dumez.

Source/WebCore:

No new tests (Not testable yet).

Right after the storage process launches it starts importing registration records.
During this time, a lot of the decisions we make regarding registrations, fetch, etc.
are invalid, as they rely on those in-memory records being in place.

This patch delays certain things until after the initial origin table import is complete.

* workers/service/server/RegistrationStore.cpp:
(WebCore::RegistrationStore::databaseOpenedAndRecordsImported):

* workers/service/server/SWOriginStore.h:

* workers/service/server/SWServer.cpp:
(WebCore::SWServer::registrationStoreImportComplete): Tell the origin store the initial
  import was completed.
(WebCore::SWServer::addRegistrationFromStore):
* workers/service/server/SWServer.h:

Source/WebKit:

* StorageProcess/ServiceWorker/WebSWOriginStore.cpp:
(WebKit::WebSWOriginStore::importComplete): Tell the Origin Table on all connects that
  the import is complete.
(WebKit::WebSWOriginStore::registerSWServerConnection):
* StorageProcess/ServiceWorker/WebSWOriginStore.h:

* WebProcess/Storage/WebSWClientConnection.cpp:
(WebKit::WebSWClientConnection::mayHaveServiceWorkerRegisteredForOrigin const):
(WebKit::WebSWClientConnection::setSWOriginTableIsImported): Run deferred tasks!
(WebKit::WebSWClientConnection::matchRegistration): If the import isn't complete yet, delay
  the match registration task until later.
(WebKit::WebSWClientConnection::runOrDelayTask): Either send the message now or save off
  the task to wait until the import is complete.
(WebKit::WebSWClientConnection::getRegistrations): If the import isn't complete yet, delay
  the get registrations task until later.
(WebKit::WebSWClientConnection::initializeSWOriginTableAsEmpty): Deleted.
* WebProcess/Storage/WebSWClientConnection.h:
* WebProcess/Storage/WebSWClientConnection.messages.in:

* WebProcess/Storage/WebSWOriginTable.cpp:
(WebKit::WebSWOriginTable::setSharedMemory):
* WebProcess/Storage/WebSWOriginTable.h:
(WebKit::WebSWOriginTable::isImported const):
(WebKit::WebSWOriginTable::setIsImported):
(WebKit::WebSWOriginTable::isInitialized const): Deleted.
(WebKit::WebSWOriginTable::initializeAsEmpty): Deleted.

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

3 years agoService Worker should use a correct user agent
commit-queue@webkit.org [Sat, 9 Dec 2017 01:05:58 +0000 (01:05 +0000)]
Service Worker should use a correct user agent
https://bugs.webkit.org/show_bug.cgi?id=180566
<rdar://problem/35926295>

Patch by Youenn Fablet <youenn@apple.com> on 2017-12-08
Reviewed by Chris Dumez.

Source/WebCore:

Test: http/wpt/service-workers/useragent.https.html

Make ServiceWorkerFrameLoaderClient return a valid UserAgent.
Pass user agent to ServiceWorkerThread so that navigation.userAgent is correctly initialized.
Allow ServiceWorkerFrameLoaderClient to clean itself when no longer needed.

* loader/EmptyFrameLoaderClient.h:
* workers/service/context/ServiceWorkerThread.cpp:
(WebCore::ServiceWorkerThread::ServiceWorkerThread):
* workers/service/context/ServiceWorkerThread.h:
* workers/service/context/ServiceWorkerThreadProxy.cpp:
(WebCore::ServiceWorkerThreadProxy::ServiceWorkerThreadProxy):
(WebCore::ServiceWorkerThreadProxy::frameLoaderClient):
* workers/service/context/ServiceWorkerThreadProxy.h:

Source/WebKit:

Add support to set service worker user agent from UIProcess to service worker process.
One user agent is currently supported per service worker process and it can be changed at any given time.
Only new service worker will use the new value.
Once a service worker is launched, it will stay with the same user agent value.

This sets both navigator.userAgent and User-Agent header name used for fetch within a service worker.
Compute the service worker process user agent by picking the last user agent set for a web page.

* UIProcess/ServiceWorkerProcessProxy.cpp:
(WebKit::ServiceWorkerProcessProxy::start):
(WebKit::ServiceWorkerProcessProxy::setUserAgent):
* UIProcess/ServiceWorkerProcessProxy.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::setApplicationNameForUserAgent):
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::establishWorkerContextConnectionToStorageProcess):
(WebKit::WebProcessPool::createWebPage):
(WebKit::WebProcessPool::updateServiceWorkerUserAgent):
* UIProcess/WebProcessPool.h:
* WebProcess/Storage/WebSWContextManagerConnection.cpp:
(WebKit::WebSWContextManagerConnection::installServiceWorker):
(WebKit::WebSWContextManagerConnection::setUserAgent):
(WebKit::WebSWContextManagerConnection::removeFrameLoaderClient):
* WebProcess/Storage/WebSWContextManagerConnection.h:
* WebProcess/Storage/WebSWContextManagerConnection.messages.in:

LayoutTests:

* http/wpt/service-workers/useragent-worker.js: Added.
(async.doTest):
* http/wpt/service-workers/useragent.https-expected.txt: Added.
* http/wpt/service-workers/useragent.https.html: Added.

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

3 years agoWrong caret position for input field inside a fixed position parent on iOS 11
simon.fraser@apple.com [Sat, 9 Dec 2017 00:00:14 +0000 (00:00 +0000)]
Wrong caret position for input field inside a fixed position parent on iOS 11
https://bugs.webkit.org/show_bug.cgi?id=176896
rdar://problem/33726145

Reviewed by Tim Horton.
Source/WebCore:

In r219668 I added code to compute a layout viewport rect in the web process, so that
after programmatic scrolling, getBoundingClientRect() would return the correct values.
However, that computation sometimes used a different visual viewport than the UI process,
resulting in a different layout viewport being set. This would happen when the keyboard
was visible, and the combination of this and zooming when focusing an input would result
in a state where the scrolling tree contained notes computed with the bad layout viewport.
This could cause apparently offset fixed elements, and bad caret positioning if those fixed
elements contained the focused input.

Fix by passing to the web process the same visual viewport rect that the UI process is using,
namely "unobscuredContentRectRespectingInputViewBounds". This was already being set in
VisibleContentRectUpdateInfo but wasn't encoded/decoded, so fix that. Set it as an optional<>
on FrameView when different from the normal visual viewport, and return it from
visualViewportRect().

Some other minor logging changes.

Test: fast/visual-viewport/ios/caret-after-focus-in-fixed.html

* page/FrameView.cpp:
(WebCore::FrameView::setVisualViewportOverrideRect):
(WebCore::FrameView::updateLayoutViewport):
(WebCore::FrameView::visualViewportRect const):
* page/FrameView.h:
* page/scrolling/mac/ScrollingTreeFixedNode.mm:
(WebCore::ScrollingTreeFixedNode::updateLayersAfterAncestorChange):

Source/WebKit:

In r219668 I added code to compute a layout viewport rect in the web process, so that
after programmatic scrolling, getBoundingClientRect() would return the correct values.
However, that computation sometimes used a different visual viewport than the UI process,
resulting in a different layout viewport being set. This would happen when the keyboard
was visible, and the combination of this and zooming when focusing an input would result
in a state where the scrolling tree contained notes computed with the bad layout viewport.
This could cause apparently offset fixed elements, and bad caret positioning if those fixed
elements contained the focused input.

Fix by passing to the web process the same visual viewport rect that the UI process is using,
namely "unobscuredContentRectRespectingInputViewBounds". This was already being set in
VisibleContentRectUpdateInfo but wasn't encoded/decoded, so fix that. Set it as an optional<>
on FrameView when different from the normal visual viewport, and return it from
visualViewportRect().

Some other minor logging changes.

* Shared/VisibleContentRectUpdateInfo.cpp:
(WebKit::VisibleContentRectUpdateInfo::encode const):
(WebKit::VisibleContentRectUpdateInfo::decode):
(WebKit::operator<<):
* Shared/VisibleContentRectUpdateInfo.h:
(WebKit::VisibleContentRectUpdateInfo::VisibleContentRectUpdateInfo):
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::updateVisibleContentRects):

LayoutTests:

Test that focuses an input inside position:fixed, then moves focus to the next
input. This was the most reliable way I could find of triggering the bug.
The test dumps the caret rect.

* fast/visual-viewport/ios/caret-after-focus-in-fixed-expected.txt: Added.
* fast/visual-viewport/ios/caret-after-focus-in-fixed.html: Added.

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

3 years agoWhen the iPhone keyboard is up, sometimes we never commit a stable update and re...
simon.fraser@apple.com [Sat, 9 Dec 2017 00:00:09 +0000 (00:00 +0000)]
When the iPhone keyboard is up, sometimes we never commit a stable update and re-show the caret
https://bugs.webkit.org/show_bug.cgi?id=180498

Reviewed by Tim Horton.

Source/WebKit:

When the keyboard is showing, we would think that the page was in a rubber-banding state
because contentOffsetBoundedInValidRange() would always clamp the content offset to a different
value.

This happened because scrollView.contentInset don't change when the keyboard is showing,
but UIKit actually consults scrollView.adjustedContentInset, which does. If we use
scrollView.adjustedContentInset in this computation, we'll get a correct answer.

Also rewrote the clamping logic to be more similar to what UIKit does internally when computing
min/max content offset.

* UIProcess/API/Cocoa/WKWebView.mm:
(contentOffsetBoundedInValidRange):

LayoutTests:

Test that completes once a stable update is received after showing the keyboard.

* fast/visual-viewport/ios/stable-update-with-keyboard-expected.txt: Added.
* fast/visual-viewport/ios/stable-update-with-keyboard.html: Added.

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

3 years agoHopefully fix Windows build
dino@apple.com [Fri, 8 Dec 2017 23:53:45 +0000 (23:53 +0000)]
Hopefully fix Windows build

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