WebKit-https.git
13 months agoRemove WebRTC legacy API implementation
youenn@apple.com [Thu, 30 Aug 2018 20:01:33 +0000 (20:01 +0000)]
Remove WebRTC legacy API implementation
https://bugs.webkit.org/show_bug.cgi?id=189040
<rdar://problem/43861361>

Unreviewed.

* platform/ios/TestExpectations: Use default expectations for the folder.
This allows skipping imported/w3c/web-platform-tests/webrtc/rtcpeerconnection/setRemoteDescription.html

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

13 months ago[Payment Request] Implement the PaymentMethodChangeEvent and PaymentMethodChangeEvent...
aestes@apple.com [Thu, 30 Aug 2018 19:57:19 +0000 (19:57 +0000)]
[Payment Request] Implement the PaymentMethodChangeEvent and PaymentMethodChangeEventInit interfaces
https://bugs.webkit.org/show_bug.cgi?id=189100

Reviewed by Daniel Bates.

LayoutTests/imported/w3c:

* web-platform-tests/payment-request/PaymentMethodChangeEvent/methodDetails-attribute.https-expected.txt:
* web-platform-tests/payment-request/PaymentMethodChangeEvent/methodName-attribute.https-expected.txt:
* web-platform-tests/payment-request/onpaymentmenthodchange-attribute.https-expected.txt:

Source/WebCore:

Implement the PaymentMethodChangeEvent interface and PaymentMethodChangeEventInit dictionary
defined in the Payment Request API W3C Editor's Draft of 30 August 2018.

<https://w3c.github.io/payment-request/#paymentmethodchangeevent-interface>

The "payment method changed" algorithm will be implemented in a follow-up.

Covered by existing web platform tests.

* CMakeLists.txt:
* DerivedSources.make:
* Modules/paymentrequest/PaymentMethodChangeEvent.cpp: Added.
(WebCore::PaymentMethodChangeEvent::eventInterface const):
(WebCore::PaymentMethodChangeEvent::PaymentMethodChangeEvent):
* Modules/paymentrequest/PaymentMethodChangeEvent.h: Added.
* Modules/paymentrequest/PaymentMethodChangeEvent.idl: Added.
* Modules/paymentrequest/PaymentMethodChangeEventInit.h: Added.
* Modules/paymentrequest/PaymentMethodChangeEventInit.idl: Added.
* Modules/paymentrequest/PaymentRequest.idl:
* Modules/paymentrequest/PaymentRequestUpdateEvent.cpp:
(WebCore::PaymentRequestUpdateEvent::PaymentRequestUpdateEvent):
* Modules/paymentrequest/PaymentRequestUpdateEvent.h:
* Modules/paymentrequest/PaymentRequestUpdateEventInit.h:
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/WebCoreBuiltinNames.h:
* dom/EventNames.h:
* dom/EventNames.in:

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

13 months agoInlineAccess should do StringLength
sbarati@apple.com [Thu, 30 Aug 2018 19:46:56 +0000 (19:46 +0000)]
InlineAccess should do StringLength
https://bugs.webkit.org/show_bug.cgi?id=158911

Reviewed by Yusuke Suzuki.

This patch extends InlineAccess to support StringLength. This patch also
fixes AccessCase::fromStructureStubInfo to support ArrayLength and StringLength.
I forgot to implement this for ArrayLength in the initial InlineAccess
implementation.  Supporting StringLength is a natural extension of the
InlineAccess machinery.

* assembler/MacroAssembler.h:
(JSC::MacroAssembler::patchableBranch8):
* assembler/MacroAssemblerARM64.h:
(JSC::MacroAssemblerARM64::patchableBranch8):
* bytecode/AccessCase.cpp:
(JSC::AccessCase::fromStructureStubInfo):
* bytecode/BytecodeDumper.cpp:
(JSC::BytecodeDumper<Block>::printGetByIdCacheStatus):
* bytecode/InlineAccess.cpp:
(JSC::InlineAccess::dumpCacheSizesAndCrash):
(JSC::InlineAccess::generateSelfPropertyAccess):
(JSC::getScratchRegister):
(JSC::InlineAccess::generateSelfPropertyReplace):
(JSC::InlineAccess::generateArrayLength):
(JSC::InlineAccess::generateSelfInAccess):
(JSC::InlineAccess::generateStringLength):
* bytecode/InlineAccess.h:
* bytecode/PolymorphicAccess.cpp:
(JSC::PolymorphicAccess::regenerate):
* bytecode/StructureStubInfo.cpp:
(JSC::StructureStubInfo::initStringLength):
(JSC::StructureStubInfo::deref):
(JSC::StructureStubInfo::aboutToDie):
(JSC::StructureStubInfo::propagateTransitions):
* bytecode/StructureStubInfo.h:
(JSC::StructureStubInfo::baseGPR const):
* jit/Repatch.cpp:
(JSC::tryCacheGetByID):

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

13 months agoThe width of a nullptr TextRun should be zero
bfulgham@apple.com [Thu, 30 Aug 2018 19:37:37 +0000 (19:37 +0000)]
The width of a nullptr TextRun should be zero
https://bugs.webkit.org/show_bug.cgi?id=189154
<rdar://problem/43685926>

Reviewed by Zalan Bujtas.

Source/WebCore:

If a page has an empty TextRun and attempts to paint it we can crash with a nullptr.

This patch recognizes that an empty TextRun should always produce a zero width, rather than
attempt to compute this value from font data.

Test: fast/text/null-string-textrun.html

* platform/graphics/FontCascade.cpp:
(WebCore::FontCascade::widthOfTextRange const): An empty TextRun has zero width.
(WebCore::FontCascade::width const): Ditto.
(WebCore::FontCascade::codePath const): ASSERT that the TextRun is non-empty.

LayoutTests:

* fast/text/null-string-textrun-expected.txt: Added.
* fast/text/null-string-textrun.html: Added.

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

13 months agoCSE DataViewGet* DFG nodes
sbarati@apple.com [Thu, 30 Aug 2018 19:27:56 +0000 (19:27 +0000)]
CSE DataViewGet* DFG nodes
https://bugs.webkit.org/show_bug.cgi?id=188768

Reviewed by Yusuke Suzuki.

JSTests:

* microbenchmarks/dataview-cse.js: Added.
(assert):
(test):
* stress/dataview-get-cse.js: Added.
(assert):
(test1.foo):
(test1):
(test2.foo):
(test2):
(test3.foo):
(test3):
(test4.foo):
(test4):
(test5.foo):
(test5):
(test6.foo):
(test6):

Source/JavaScriptCore:

This patch makes it so that we CSE DataViewGet* accesses. To do this,
I needed to add a third descriptor to HeapLocation to represent the
isLittleEndian child. This patch is neutral on compile time benchmarks,
and is a 50% speedup on a trivial CSE microbenchmark that I added.

* dfg/DFGClobberize.h:
(JSC::DFG::clobberize):
* dfg/DFGFixupPhase.cpp:
(JSC::DFG::FixupPhase::fixupNode):
* dfg/DFGHeapLocation.cpp:
(WTF::printInternal):
* dfg/DFGHeapLocation.h:
(JSC::DFG::HeapLocation::HeapLocation):
(JSC::DFG::HeapLocation::hash const):
(JSC::DFG::HeapLocation::operator== const):
(JSC::DFG::indexedPropertyLocForResultType):

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

13 months agooutput of toString() of Generator is wrong
yusukesuzuki@slowstart.org [Thu, 30 Aug 2018 19:05:34 +0000 (19:05 +0000)]
output of toString() of Generator is wrong
https://bugs.webkit.org/show_bug.cgi?id=188952

Reviewed by Saam Barati.

JSTests:

* stress/function-to-string.js: Added.
(shouldBe):
(shouldBe.test):
(test):
(shouldBe.async.test):
(async.test):
(shouldBe.async):
(async):
* test262/expectations.yaml:

Source/JavaScriptCore:

Function#toString does not respect generator and async generator.
This patch fixes them and supports all the function types.

* runtime/FunctionPrototype.cpp:
(JSC::functionProtoFuncToString):

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

13 months agoMock video devices should only support discrete sizes
eric.carlson@apple.com [Thu, 30 Aug 2018 19:03:55 +0000 (19:03 +0000)]
Mock video devices should only support discrete sizes
https://bugs.webkit.org/show_bug.cgi?id=189000
<rdar://problem/43766551>

Reviewed by Youenn Fablet.
Source/WebCore:

While many/most video capture devices only support a finite number of discrete width/height
pairs, our mock video capture devices supported arbitrary width and height combinations which
made it difficult to write realistic tests using them. Change the mock devices to support
finite "presets" like those supported by AVFoundation. Create a RealtimeVideoSource base
class with support for these presets, so the same code will eventually be used by the mock
and real capture devices.

No new tests, existing tests updated for these changes.

* Sources.txt: Add RealtimeVideoSource.cpp, remove MockRealtimeMediaSource.cpp.

* WebCore.xcodeproj/project.pbxproj: Ditto.

* platform/mediastream/MediaConstraints.h: Deal with min constraint less than the supported minimum
and max larger than the supported maximum when there is no ideal.

* platform/mediastream/RealtimeMediaSource.cpp:
(WebCore::RealtimeMediaSource::selectSettings): Use supportsSizeAndFrameRate for widths,
heights, and framerates in advanced constraints so a width and height that are supported but
in the same preset are filtered out.
(WebCore::RealtimeMediaSource::setSize): New.
* platform/mediastream/RealtimeMediaSource.h:

* platform/mediastream/RealtimeMediaSourceSettings.h: Remove an unneeded include.

* platform/mediastream/RealtimeVideoSource.cpp: Added.
(WebCore::RealtimeVideoSource::RealtimeVideoSource):
(WebCore::RealtimeVideoSource::~RealtimeVideoSource):
(WebCore::RealtimeVideoSource::startProducingData):
(WebCore::RealtimeVideoSource::setSupportedFrameRates):
(WebCore::RealtimeVideoSource::addSupportedCapabilities const):
(WebCore::RealtimeVideoSource::supportsSizeAndFrameRate):
(WebCore::RealtimeVideoSource::bestSupportedCaptureSizeForWidthAndHeight):
(WebCore::RealtimeVideoSource::applySize):
(WebCore::RealtimeVideoSource::applySizeAndFrameRate):
(WebCore::RealtimeVideoSource::videoSampleAvailable):
(WebCore::RealtimeVideoSource::applyFrameRate):
(WebCore::RealtimeVideoSource::supportsFrameRate):

* platform/mediastream/RealtimeVideoSource.h: Copied from Source/WebCore/platform/mock/MockRealtimeAudioSource.h.
(WebCore::RealtimeVideoSource::setSupportedCaptureSizes):
(WebCore::RealtimeVideoSource::setDefaultSize):
(WebCore::RealtimeVideoSource::observedFrameRate const):

* platform/mediastream/mac/AVMediaCaptureSource.mm:
(WebCore::AVMediaCaptureSource::initializeSettings): Don't set label, it isn't used.

* platform/mediastream/mac/MockRealtimeVideoSourceMac.mm:
(WebCore::MockRealtimeVideoSourceMac::applySize): Call the base class.

* platform/mock/MockMediaDevice.h:
(WebCore::MockCameraProperties::encode const): Add frame rates, sizes, and facing mode.
(WebCore::MockCameraProperties::decode): Ditto.

* platform/mock/MockRealtimeAudioSource.cpp:
(WebCore::MockRealtimeAudioSource::MockRealtimeAudioSource): No more MockRealtimeMediaSource.
(WebCore::MockRealtimeAudioSource::settings const): Clean up.
(WebCore::MockRealtimeAudioSource::capabilities const): Ditto.
(WebCore::MockRealtimeAudioSource::settingsDidChange): Ditto.
(WebCore::MockRealtimeAudioSource::stopProducingData): m_elapsedTime isn't used, delete it.
(WebCore::MockRealtimeAudioSource::updateSettings): Deleted.
(WebCore::MockRealtimeAudioSource::initializeCapabilities): Deleted.
(WebCore::MockRealtimeAudioSource::initializeSupportedConstraints): Deleted.
(WebCore::MockRealtimeAudioSource::elapsedTime): Deleted.
* platform/mock/MockRealtimeAudioSource.h:

* platform/mock/MockRealtimeMediaSourceCenter.cpp: Moved all of the mock device management
code from MockRealtimeMediaSource.cpp here.
(WebCore::defaultDevices):
(WebCore::devices):
(WebCore::deviceMap):
(WebCore::deviceListForDevice):
(WebCore::createCaptureDevice):
(WebCore::MockRealtimeMediaSourceCenter::resetDevices):
(WebCore::MockRealtimeMediaSourceCenter::setDevices):
(WebCore::MockRealtimeMediaSourceCenter::addDevice):
(WebCore::MockRealtimeMediaSourceCenter::removeDevice):
(WebCore::MockRealtimeMediaSourceCenter::mockDeviceWithPersistentID):
(WebCore::MockRealtimeMediaSourceCenter::captureDeviceWithPersistentID):
(WebCore::MockRealtimeMediaSourceCenter::audioDevices):
(WebCore::MockRealtimeMediaSourceCenter::videoDevices):
(WebCore::MockRealtimeMediaSourceCenter::displayDevices):

* platform/mock/MockRealtimeVideoSource.cpp:
(WebCore::MockRealtimeVideoSource::MockRealtimeVideoSource): Use RealtimeVideoSource, no
more MockRealtimeMediaSource.
(WebCore::MockRealtimeVideoSource::capabilities const): Ditto, cleanup.
(WebCore::MockRealtimeVideoSource::settings const): Ditto.
(WebCore::MockRealtimeVideoSource::settingsDidChange): Ditto.
(WebCore::MockRealtimeVideoSource::startCaptureTimer): Ditto.
(WebCore::MockRealtimeVideoSource::startProducingData): Ditto.
(WebCore::MockRealtimeVideoSource::stopProducingData): Ditto.
(WebCore::MockRealtimeVideoSource::elapsedTime): Ditto.
(WebCore::MockRealtimeVideoSource::applySize): Ditto.
(WebCore::MockRealtimeVideoSource::drawText): Render the actual frame rate.
(WebCore::MockRealtimeVideoSource::generateFrame): Use m_fillColor.
(WebCore::MockRealtimeVideoSource::~MockRealtimeVideoSource): Deleted.
(WebCore::MockRealtimeVideoSource::updateSettings): Deleted.
(WebCore::MockRealtimeVideoSource::initializeCapabilities): Deleted.
(WebCore::MockRealtimeVideoSource::initializeSupportedConstraints): Deleted.
(WebCore::MockRealtimeVideoSource::applyFrameRate): Deleted.
* platform/mock/MockRealtimeVideoSource.h:
(WebCore::MockRealtimeVideoSource::updateSampleBuffer): Deleted.

Source/WebKit:

* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::resetMockMediaDevices):
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::resetMockMediaDevices):

LayoutTests:

Updated tests and results now that we have better support for width and height constraints.

* fast/mediastream/MediaDevices-getUserMedia.html:
* fast/mediastream/MediaStreamTrack-getCapabilities-expected.txt:
* fast/mediastream/apply-constraints-advanced-expected.txt:
* fast/mediastream/apply-constraints-advanced.html:
* fast/mediastream/apply-constraints-video-expected.txt:
* fast/mediastream/apply-constraints-video.html:
* fast/mediastream/getUserMedia-default-expected.txt:
* fast/mediastream/getUserMedia-default.html:
* imported/w3c/web-platform-tests/mediacapture-streams/MediaStreamTrack-getSettings.https-expected.txt:
* webrtc/video-interruption.html:
* webrtc/video.html:

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

13 months agoWeb Share API compatible with AppleTV and WatchOS
commit-queue@webkit.org [Thu, 30 Aug 2018 18:29:58 +0000 (18:29 +0000)]
Web Share API compatible with AppleTV and WatchOS
https://bugs.webkit.org/show_bug.cgi?id=189157

Patch by Olivia Barnett <obarnett@apple.com> on 2018-08-30
Reviewed by Tim Horton.

* Shared/WebPreferencesDefaultValues.h:
* UIProcess/ios/WKContentViewInteraction.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView fileUploadPanelDidDismiss:]):
* UIProcess/ios/forms/WKShareSheet.h:
* UIProcess/ios/forms/WKShareSheet.mm:
(-[WKShareSheet invokeShareSheetWithResolution:]):
Added platform checks.

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

13 months agoUnreviewed, rolling out r235413 and r235444.
commit-queue@webkit.org [Thu, 30 Aug 2018 18:21:45 +0000 (18:21 +0000)]
Unreviewed, rolling out r235413 and r235444.
https://bugs.webkit.org/show_bug.cgi?id=189163

Causes crashes when running layout tests under GuardMalloc
(Requested by ryanhaddad on #webkit).

Reverted changesets:

"NetworkLoad::didReceiveResponse should pass its completion
handler to its client"
https://bugs.webkit.org/show_bug.cgi?id=188701
https://trac.webkit.org/changeset/235413

"Remove assertion introduced in r235413"
https://bugs.webkit.org/show_bug.cgi?id=188701
https://trac.webkit.org/changeset/235444

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

13 months ago[Curl][WebKit] Bugfix on redirect.
Basuke.Suzuki@sony.com [Thu, 30 Aug 2018 18:13:01 +0000 (18:13 +0000)]
[Curl][WebKit] Bugfix on redirect.
https://bugs.webkit.org/show_bug.cgi?id=189056

Reviewed by Alex Christensen.

Forget to call updateFromDelegatePreservingOldProperties in continueWillSendRequest like other ports do.

* NetworkProcess/NetworkLoad.cpp:
(WebKit::NetworkLoad::continueWillSendRequest):

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

13 months agoWKNavigation.ProcessCrashDuringCallback is failing on iOS
sihui_liu@apple.com [Thu, 30 Aug 2018 17:03:01 +0000 (17:03 +0000)]
WKNavigation.ProcessCrashDuringCallback is failing on iOS
https://bugs.webkit.org/show_bug.cgi?id=189148

Reviewed by Chris Dumez.

We should not deference WebView or we may get WKErrorWebViewInvalidated error, because
WebView could be destroyed before Web Process termination is noticed.

* TestWebKitAPI/Tests/WebKitCocoa/WebContentProcessDidTerminate.mm:
(TEST):

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

13 months agofast/mediastream/RTCPeerConnection-overloaded-operations.html is flaky after r235484
youenn@apple.com [Thu, 30 Aug 2018 16:53:01 +0000 (16:53 +0000)]
fast/mediastream/RTCPeerConnection-overloaded-operations.html is flaky after r235484
https://bugs.webkit.org/show_bug.cgi?id=189155

Reviewed by Eric Carlson.

* fast/mediastream/RTCPeerConnection-overloaded-operations.html:
createOffer/createAnswer will now reject promises if callbacks are passed as parameters.
Make sure that these promises are handled.

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

13 months ago[macOS] Color picker layout is broken if suggested colors are specified
akeerthi@apple.com [Thu, 30 Aug 2018 16:35:46 +0000 (16:35 +0000)]
[macOS] Color picker layout is broken if suggested colors are specified
https://bugs.webkit.org/show_bug.cgi?id=189117

Reviewed by Tim Horton.

NSPopoverColorWell recently changed the size of its swatches. We need to update
the width of the swatches we provide to match the width of the other swatches,
in order to avoid breaking the layout.

While such a solution is not a good precedent, we do not have fully-functional SPI
to customize the suggested colors. A FIXME has been added for this reason.
However, even once we obtain SPI, we will need to find a way to support older
clients, making conditional compilation a potential necessity.

* UIProcess/mac/WebColorPickerMac.mm:

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

13 months ago[macOS] Whitelist Network process features for VPN
bfulgham@apple.com [Thu, 30 Aug 2018 16:30:11 +0000 (16:30 +0000)]
[macOS] Whitelist Network process features for VPN
https://bugs.webkit.org/show_bug.cgi?id=189023
<rdar://problem/43310000>

Reviewed by Eric Carlson.

CFNetwork needs access to some VPN preference files to configure networking, and
need to be allowed to communicate with the VPN process from the Network Process
sandbox.

* NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in:

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

13 months agoSource/WebCore:
zalan@apple.com [Thu, 30 Aug 2018 14:44:59 +0000 (14:44 +0000)]
Source/WebCore:
[LFC][Floating] Block formatting context roots avoid floats.
https://bugs.webkit.org/show_bug.cgi?id=189150

Reviewed by Antti Koivisto.

This patch implements the float avoiding behaviour for block formatting context roots.

When a box establishes a block formatting context, floats from outside of the context can't interfere with content inside. In order
to achive this, such formatting root boxes need to be positioned so that they don't overlap with floats (floats that share the same
context with the formatting root). In ltr block direction, roots start with avoiding floats on the left, while in rtl on the right.

Tests: fast/block/block-only/float-avoider-multiple-roots.html
       fast/block/block-only/float-avoider-simple-left.html
       fast/block/block-only/float-avoider-simple-right.html
       fast/block/block-only/float-avoider-with-margins.html

* layout/blockformatting/BlockFormattingContext.cpp:
(WebCore::Layout::BlockFormattingContext::layoutFormattingContextRoot const):
(WebCore::Layout::BlockFormattingContext::computeEstimatedMarginTopForAncestors const):
(WebCore::Layout::BlockFormattingContext::computePositionToAvoidFloats const):
* layout/blockformatting/BlockFormattingContext.h:
* layout/floats/FloatAvoider.cpp:
(WebCore::Layout::FloatAvoider::FloatAvoider):
* layout/floats/FloatingContext.cpp:
(WebCore::Layout::FloatingContext::positionForFloatAvoiding const):
* layout/floats/FloatingContext.h:

Tools:
[LFC][Floating] Formatting context roots avoid floats.
https://bugs.webkit.org/show_bug.cgi?id=189150

Reviewed by Antti Koivisto.

* LayoutReloaded/misc/LFC-passing-tests.txt:

LayoutTests:
[LFC][Floating] Formatting context roots avoid floats.
https://bugs.webkit.org/show_bug.cgi?id=189150

Reviewed by Antti Koivisto.

* fast/block/block-only/float-avoider-multiple-roots-expected.txt: Added.
* fast/block/block-only/float-avoider-multiple-roots.html: Added.
* fast/block/block-only/float-avoider-simple-left-expected.txt: Added.
* fast/block/block-only/float-avoider-simple-left.html: Added.
* fast/block/block-only/float-avoider-simple-right-expected.txt: Added.
* fast/block/block-only/float-avoider-simple-right.html: Added.
* fast/block/block-only/float-avoider-with-margins-expected.txt: Added.
* fast/block/block-only/float-avoider-with-margins.html: Added.

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

13 months ago[iOS] TestWebKitAPI.PasteImage tests are flaky failures
wenson_hsieh@apple.com [Thu, 30 Aug 2018 14:35:27 +0000 (14:35 +0000)]
[iOS] TestWebKitAPI.PasteImage tests are flaky failures
https://bugs.webkit.org/show_bug.cgi?id=185965

Reviewed by Andy Estes.

These tests pass reliably when run locally, but sometimes fail in automation when checking that the image
element with its "src" attribute set to a new blob URL has an empty size. It's possible that this is happening
because we're checking the size of the image element prior to image load after setting the blob URL; we can fix
this by waiting for the "load" event (which is also done in some of the other tests in this file).

* TestWebKitAPI/Tests/WebKitCocoa/PasteImage.mm:
(TEST):

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

13 months ago[LFC][Floating] Move containing block constraint logic from FloatAvoider to FloatingC...
zalan@apple.com [Thu, 30 Aug 2018 14:32:29 +0000 (14:32 +0000)]
[LFC][Floating] Move containing block constraint logic from FloatAvoider to FloatingContext
https://bugs.webkit.org/show_bug.cgi?id=189145

Reviewed by Antti Koivisto.

When the float avoider is constrained horizontally, simply align it with the left/right edge of its containing block (with the combination of the constraints)
and check the overflow as part of the FloatingContext::floatingPosition() logic. It simplifies the constraint logic/helps implementing the non-float avoider
case.

* layout/floats/FloatAvoider.cpp:
(WebCore::Layout::FloatAvoider::setHorizontalConstraints):
(WebCore::Layout::FloatAvoider::overflowsContainingBlock const):
* layout/floats/FloatAvoider.h:
* layout/floats/FloatingContext.cpp:
(WebCore::Layout::FloatingContext::floatingPosition const):

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

13 months ago[LFC][Floating] Use non-computed horizontal margins when intersecting floats with...
zalan@apple.com [Thu, 30 Aug 2018 14:28:54 +0000 (14:28 +0000)]
[LFC][Floating] Use non-computed horizontal margins when intersecting floats with float avoiders.
https://bugs.webkit.org/show_bug.cgi?id=189143

Reviewed by Antti Koivisto.

* layout/Verification.cpp:
(WebCore::Layout::LayoutContext::verifyAndOutputMismatchingLayoutTree const):
* layout/floats/FloatAvoider.cpp:
(WebCore::Layout::FloatAvoider::setHorizontalConstraints):
(WebCore::Layout::FloatAvoider::initialHorizontalPosition const):
* layout/floats/FloatAvoider.h:
(WebCore::Layout::FloatAvoider::marginTop const):
(WebCore::Layout::FloatAvoider::marginBottom const):
(WebCore::Layout::FloatAvoider::marginLeft const):
(WebCore::Layout::FloatAvoider::marginRight const):
(WebCore::Layout::FloatAvoider::marginBoxWidth const):
* layout/floats/FloatBox.cpp:
(WebCore::Layout::FloatBox::rect const):
(WebCore::Layout::FloatBox::horizontalPositionCandidate):
(WebCore::Layout::FloatBox::verticalPositionCandidate):
(WebCore::Layout::FloatBox::initialVerticalPosition const):
* layout/floats/FloatBox.h:

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

13 months ago[LFC][Margins] Add non-computed horizontal margins to DisplayBox
zalan@apple.com [Thu, 30 Aug 2018 14:25:45 +0000 (14:25 +0000)]
[LFC][Margins] Add non-computed horizontal margins to DisplayBox
https://bugs.webkit.org/show_bug.cgi?id=189141

Reviewed by Antti Koivisto.

Inflow block boxes' horizontal margins extend all the way to the left/right edge of their containing block.
See https://www.w3.org/TR/CSS22/visudet.html#blockwidth for example
"...
10.3.3 Block-level, non-replaced elements in normal flow
'margin-left' + 'border-left-width' + 'padding-left' + 'width' + 'padding-right' + 'border-right-width' + 'margin-right' = width of containing block
..."

In certain cases (float avoiding) we need to know the original (non-extended) horiztonal margin values.

* layout/FormattingContext.cpp:
(WebCore::Layout::FormattingContext::computeFloatingWidthAndMargin const):
(WebCore::Layout::FormattingContext::computeOutOfFlowHorizontalGeometry const):
* layout/FormattingContextGeometry.cpp:
(WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedHorizontalGeometry):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedHorizontalGeometry):
(WebCore::Layout::FormattingContext::Geometry::floatingNonReplacedWidthAndMargin):
(WebCore::Layout::FormattingContext::Geometry::inlineReplacedWidthAndMargin):
* layout/LayoutContext.cpp:
(WebCore::Layout::LayoutContext::initializeRoot):
* layout/LayoutUnits.h:
* layout/blockformatting/BlockFormattingContext.cpp:
(WebCore::Layout::BlockFormattingContext::computeInFlowWidthAndMargin const):
* layout/blockformatting/BlockFormattingContextGeometry.cpp:
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedWidthAndMargin):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowReplacedWidthAndMargin):
* layout/displaytree/DisplayBox.h:
(WebCore::Display::Box::setHasValidHorizontalNonComputedMargin):
(WebCore::Display::Box::setHorizontalNonComputedMargin):
(WebCore::Display::Box::nonComputedMarginLeft const):
(WebCore::Display::Box::nonComputedMarginRight const):

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

13 months agoUnreviewed, rolling out r235114.
mcatanzaro@igalia.com [Thu, 30 Aug 2018 14:21:42 +0000 (14:21 +0000)]
Unreviewed, rolling out r235114.

ostree server deleted our commits?

Reverted changeset:

"[Flatpak] Update to GNOME master runtime"
https://bugs.webkit.org/show_bug.cgi?id=188731
https://trac.webkit.org/changeset/235114

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

13 months ago[ConnectionUnix] Shrink sizeof AttachmentInfo by reordering members
yoshiaki.jitsukawa@sony.com [Thu, 30 Aug 2018 14:01:49 +0000 (14:01 +0000)]
[ConnectionUnix] Shrink sizeof AttachmentInfo by reordering members
https://bugs.webkit.org/show_bug.cgi?id=189149

Reviewed by Michael Catanzaro.

Reorder members to shrink the size of AttachmentInfo so that
we can attach more attachments.

* Platform/IPC/unix/ConnectionUnix.cpp:

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

13 months agoUnreviewed, add comments about enum names to bitfields
yusukesuzuki@slowstart.org [Thu, 30 Aug 2018 10:24:15 +0000 (10:24 +0000)]
Unreviewed, add comments about enum names to bitfields
https://bugs.webkit.org/show_bug.cgi?id=188944

* xml/XMLHttpRequest.h:

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

13 months agoUnreviewed, add comments about enum names to bitfields
yusukesuzuki@slowstart.org [Thu, 30 Aug 2018 10:17:36 +0000 (10:17 +0000)]
Unreviewed, add comments about enum names to bitfields
https://bugs.webkit.org/show_bug.cgi?id=188945

* html/HTMLCollection.h:

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

13 months agoAvoid code duplication in ResourceLoadStatisticsMemoryStore::processStatisticsAndData...
cdumez@apple.com [Thu, 30 Aug 2018 03:39:59 +0000 (03:39 +0000)]
Avoid code duplication in ResourceLoadStatisticsMemoryStore::processStatisticsAndDataRecords()
https://bugs.webkit.org/show_bug.cgi?id=189130

Reviewed by Youenn Fablet.

Move if check inside the lambda instead of outside to avoid code duplication.

* UIProcess/ResourceLoadStatisticsMemoryStore.cpp:
(WebKit::ResourceLoadStatisticsMemoryStore::processStatisticsAndDataRecords):

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

13 months agoAddressed additional review feedback after r235342.
aestes@apple.com [Thu, 30 Aug 2018 02:26:02 +0000 (02:26 +0000)]
Addressed additional review feedback after r235342.

* Modules/applepay/ApplePayRequestBase.cpp:
(WebCore::convertAndValidate):

Used '"' instead of "\"" with makeString().

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

13 months ago[WHLSL] Test row-majorness of matrices
mmaxfield@apple.com [Thu, 30 Aug 2018 01:50:21 +0000 (01:50 +0000)]
[WHLSL] Test row-majorness of matrices
https://bugs.webkit.org/show_bug.cgi?id=189101

The matrix multiplication functions are temporarily commented out of the standard library,
so I've temporarily copy/pasted them into the test. Matrix multiplication is not
commutative, so it requires the right indexing order.

Reviewed by Dean Jackson and Thomas Denney.

* WebGPUShadingLanguageRI/Intrinsics.js:
* WebGPUShadingLanguageRI/StandardLibrary.js:
(let.standardLibrary):
* WebGPUShadingLanguageRI/Test.js:

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

13 months agoRevert some of r235398
commit-queue@webkit.org [Thu, 30 Aug 2018 01:22:40 +0000 (01:22 +0000)]
Revert some of r235398
https://bugs.webkit.org/show_bug.cgi?id=189133

Patch by Alex Christensen <achristensen@webkit.org> on 2018-08-29
Reviewed by Tim Horton.

* UIProcess/API/APILoaderClient.h:
(API::LoaderClient::processDidCrash):
(API::LoaderClient::didChangeBackForwardList):
(API::LoaderClient::didCommitLoadForFrame):
* UIProcess/API/C/WKPage.cpp:
(WKPageSetPageLoaderClient):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::didChangeBackForwardList):
(WebKit::WebPageProxy::didCommitLoadForFrame):
(WebKit::WebPageProxy::dispatchProcessDidTerminate):

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

13 months agoAdd some missing exception checks in JSRopeString::resolveRopeToAtomicString().
mark.lam@apple.com [Thu, 30 Aug 2018 01:20:20 +0000 (01:20 +0000)]
Add some missing exception checks in JSRopeString::resolveRopeToAtomicString().
https://bugs.webkit.org/show_bug.cgi?id=189132
<rdar://problem/42513068>

Reviewed by Saam Barati.

JSTests:

* stress/regress-189132.js: Added.

Source/JavaScriptCore:

* runtime/JSCJSValueInlines.h:
(JSC::JSValue::toPropertyKey const):
* runtime/JSString.cpp:
(JSC::JSRopeString::resolveRopeToAtomicString const):

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

13 months ago[Datalist] Display prefix-matched suggestions first
akeerthi@apple.com [Thu, 30 Aug 2018 00:26:11 +0000 (00:26 +0000)]
[Datalist] Display prefix-matched suggestions first
https://bugs.webkit.org/show_bug.cgi?id=189106

Reviewed by Tim Horton.

Source/WebCore:

In order to increase suggestion relevancy, we should display suggestions that have
the same prefix as the input value first. In order to achieve this, we can place
the suggestions into two buckets, one that contains prefix-matched values and
another that contains only substring-matched values.

TextFieldInputType::suggestions() can be called up to three times before we
display the values. In order to avoid generating the same suggestions multiple
times, the most recent values can be stored and reused. We clear the cached values
whenever the datalist element is modified or when the suggestions view is hidden.

Finally, removed logic to de-duplicate the list of suggested values. This behavior
is not a part of the specification and leads to unnecessary slowdown when
populating the suggestions view.

Test: fast/forms/datalist/datalist-textinput-suggestions-order.html

* html/TextFieldInputType.cpp:
(WebCore::TextFieldInputType::listAttributeTargetChanged):
(WebCore::TextFieldInputType::suggestions):
(WebCore::TextFieldInputType::didCloseSuggestions):
* html/TextFieldInputType.h:
* platform/DataListSuggestionsClient.h:

LayoutTests:

Added a test to verify that prefix-matched suggestions are shown before other
matches.

* fast/forms/datalist/datalist-textinput-suggestions-order-expected.txt: Added.
* fast/forms/datalist/datalist-textinput-suggestions-order.html: Added.
* platform/ios/TestExpectations:

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

13 months agoImplement the Web Share API
commit-queue@webkit.org [Thu, 30 Aug 2018 00:20:26 +0000 (00:20 +0000)]
Implement the Web Share API
https://bugs.webkit.org/show_bug.cgi?id=171100
<rdar://problem/31751734>

Patch by Olivia Barnett <obarnett@apple.com> on 2018-08-29
Reviewed by Tim Horton.

LayoutTests/imported/w3c:

* web-platform-tests/web-share/idlharness.https-expected.txt:
* web-platform-tests/web-share/share-empty.https-expected.txt:
* web-platform-tests/web-share/share-securecontext.http-expected.txt:
* web-platform-tests/web-share/share-url-invalid.https-expected.txt:
* web-platform-tests/web-share/share-without-user-gesture.https-expected.txt:
Updated expected results.

Source/WebCore:

Added one test in fast/events/ios called share.html; adjusted expectations for existing tests.

* DerivedSources.make:
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* features.json:
* loader/EmptyClients.cpp:
(WebCore::EmptyChromeClient::showShareSheet):
* loader/EmptyClients.h:
Added empty showShareSheet function.

* page/Chrome.cpp:
(WebCore::Chrome::showShareSheet):
* page/Chrome.h:
Added call to showShareSheet on client.

* page/ChromeClient.h:
Virtual showShareSheet function.

* page/Navigator.cpp:
(WebCore::Navigator::share):
* page/Navigator.h:
Share function that returns a promise and invokes the share sheet.

* page/Navigator.idl:
Implements NavigatorShare

* page/NavigatorShare.idl: Added.
Added definition of share function returning a promise.

* page/RuntimeEnabledFeatures.h:
(WebCore::RuntimeEnabledFeatures::setWebShareEnabled):
(WebCore::RuntimeEnabledFeatures::webShareEnabled const):
Added RuntimeEnabledFeature switch.

* page/ShareData.h: Added.
* page/ShareData.idl: Added.
Definition of ShareData struct.

Source/WebKit:

* Platform/spi/ios/UIKitSPI.h:
Added NSURL _title property as in the WebCore UIKitSPI.

* Scripts/webkit/messages.py:
ShareDataWithParsedURL special case for header for type.

* Shared/ShareSheetCallbackID.h:
Added a typedef for a share sheet callback id.

* Shared/WebCoreArgumentCoders.cpp:
(IPC::ArgumentCoder<ShareData>::encode):
(IPC::ArgumentCoder<ShareData>::decode):
(IPC::ArgumentCoder<ShareDataWithParsedURL>::encode):
(IPC::ArgumentCoder<ShareDataWithParsedURL>::decode):
* Shared/WebCoreArgumentCoders.h:
Added encoding and decoding functionality for new structs.

* Shared/WebPreferences.yaml:
* UIProcess/API/C/WKPreferences.cpp:
(WKPreferencesSetWebShareEnabled):
(WKPreferencesGetWebShareEnabled):
* UIProcess/API/C/WKPreferencesRefPrivate.h:
Added switch for RuntimeEnabledFeature.

* UIProcess/API/Cocoa/WKWebView.mm:
* UIProcess/API/Cocoa/WKWebViewPrivate.h:
Added hook for share sheet testing.

* UIProcess/PageClient.h:
(WebKit::PageClient::showShareSheet):
Page client call to invoke share sheet.

* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::showShareSheet):
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
Web page proxy handling of call to invoke share sheet.
Creates completion handler to send to WKShareSheet.mm
Completion handler sends message to WebPage with message id.

* UIProcess/ios/PageClientImplIOS.h:
* UIProcess/ios/PageClientImplIOS.mm:
(WebKit::PageClientImpl::showShareSheet):
Page client implementation call to invoke share sheet.

* UIProcess/ios/WKContentViewInteraction.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView cleanupInteraction]):
(-[WKContentView _showShareSheet:completionHandler:]):
(-[WKContentView shareSheetDidDismiss:]):
(-[WKContentView invokeShareSheetWithResolution:resolved):
Call to WKShareSheet to invoke the share sheet and callback.
Hook for share sheet resolution testing.

* UIProcess/ios/forms/WKShareSheet.h: Added.
* UIProcess/ios/forms/WKShareSheet.mm: Added.
(-[WKShareSheet initWithView:]):
(-[WKShareSheet presentWithParameters:completionHandler:]):
(-[WKShareSheet _dispatchDidDismiss]):
(-[WKShareSheet _cancel]):
(-[WKShareSheet dismiss]):
(-[WKShareSheet _dismissDisplayAnimated:]):
(-[WKShareSheet _presentFullscreenViewController:animated:]):
(-[WKShareSheet invokeShareSheetWithResolution:resolved:]):
Completion handler call and creation of share sheet with parameters.
Hook that force resolves the share sheet completion handler for testing.

* WebKit.xcodeproj/project.pbxproj:

* WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::showShareSheet):
Call to page to invoke share sheet.

* WebProcess/WebCoreSupport/WebChromeClient.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::nextShareSheetContextId):
(WebKit::WebPage::showShareSheet):
(WebKit::WebPage::showShareSheetResponse):
WebPage calls proxy and saves context id for promise.

* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:
Callback for completed response.

Source/WebKitLegacy/ios:

* WebCoreSupport/WebChromeClientIOS.h:
* WebCoreSupport/WebChromeClientIOS.mm:
(WebChromeClientIOS::showShareSheet):
Empty declaration of showShareSheet.

Source/WebKitLegacy/mac:

* WebCoreSupport/WebChromeClient.h:
* WebCoreSupport/WebChromeClient.mm:
(WebChromeClient::showShareSheet):
Empty declaration of showShareSheet.

LayoutTests:

* fast/dom/navigator-detached-no-crash-expected.txt:
Updated expected results.

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

13 months agoLayout Test js/error-should-not-strong-reference-global-object.html is flaky on macOS
ryanhaddad@apple.com [Thu, 30 Aug 2018 00:04:30 +0000 (00:04 +0000)]
Layout Test js/error-should-not-strong-reference-global-object.html is flaky on macOS
https://bugs.webkit.org/show_bug.cgi?id=187103

Unreviewed test gardening.

* platform/mac-wk2/TestExpectations:
* platform/mac/TestExpectations: Consolidate expectations.

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

13 months agoCrash under WebKit: WTF::Function<void ()>::CallableWrapper<WebKit::ResourceLoadStati...
cdumez@apple.com [Wed, 29 Aug 2018 23:41:36 +0000 (23:41 +0000)]
Crash under WebKit: WTF::Function<void ()>::CallableWrapper<WebKit::ResourceLoadStatisticsMemoryStore::removeDataRecords(WTF::CompletionHandler<void ()>&&)::$_1>::call()
https://bugs.webkit.org/show_bug.cgi?id=189098
<rdar://problem/43179891>

Reviewed by Youenn Fablet.

The crash was caused by implicitly using |this| on the main thread by accessing member variables, even though
|this| gets destroyed on the statistics queue. To address the issue, capture what we need on the statistics
queue, *before* dispatching to the main thread.

Also stop capturing |this| in the lambdas to make this less error prone.

* UIProcess/ResourceLoadStatisticsMemoryStore.cpp:
(WebKit::ResourceLoadStatisticsMemoryStore::removeDataRecords):
(WebKit::ResourceLoadStatisticsMemoryStore::grandfatherExistingWebsiteData):
(WebKit::ResourceLoadStatisticsMemoryStore::updateCookieBlocking):

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

13 months agoUnreviewed test gardening; NowPlayingTest API tests require High Sierra.
jer.noble@apple.com [Wed, 29 Aug 2018 23:39:54 +0000 (23:39 +0000)]
Unreviewed test gardening; NowPlayingTest API tests require High Sierra.

* TestWebKitAPI/Tests/WebKitCocoa/NowPlaying.mm:

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

13 months agoREGRESSION (r226138): WebCore::subdivide() may return an empty vector; Web process...
dbates@webkit.org [Wed, 29 Aug 2018 23:35:30 +0000 (23:35 +0000)]
REGRESSION (r226138): WebCore::subdivide() may return an empty vector; Web process can crash when performing find in Epiphany
https://bugs.webkit.org/show_bug.cgi?id=184390
<rdar://problem/41804994>
And
<rdar://problem/39771867>

Reviewed by Simon Fraser.

Source/WebCore:

Speculative fix for Epiphany.

In theory, WebCore::subdivide() should never return an empty vector - no subdivisions - as such a
result represents a programmer error. In practice, InlineTextBox can invoke WebCore::subdivide()
such that it returns an empty vector. One way this can happen is when subdividing an empty inline
text box associated with combined text (RenderCombineText). For now we add a check to bail out of
resolving the style of subdivisions when WebCore::subdivide() returns no subdivisions. In a
subsequent patch we will look to assert that WebCore::subdivide() always returns subdivisions.

Test: fast/text/text-combine-surroundContents-crash.html

* rendering/InlineTextBox.cpp:
(WebCore::InlineTextBox::subdivideAndResolveStyle):

LayoutTests:

Add a test to ensure that we do not crash when painting an empty inline text box associated
with combined text.

* fast/text/text-combine-surroundContents-crash-expected.txt: Added.
* fast/text/text-combine-surroundContents-crash.html: Added.

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

13 months agoRemove WebRTC legacy API implementation
youenn@apple.com [Wed, 29 Aug 2018 22:42:26 +0000 (22:42 +0000)]
Remove WebRTC legacy API implementation
https://bugs.webkit.org/show_bug.cgi?id=189040

Reviewed by Eric Carlson.

LayoutTests/imported/w3c:

* web-platform-tests/mediacapture-streams/MediaDevices-IDL-all-expected.txt:
* web-platform-tests/mediacapture-streams/MediaDevices-IDL-enumerateDevices-expected.txt:
* web-platform-tests/mediacapture-streams/MediaStream-default-feature-policy.https-expected.txt:
* web-platform-tests/webrtc/historical-expected.txt:
* web-platform-tests/webrtc/no-media-call.html:
* web-platform-tests/webrtc/simplecall.https.html:

Source/WebCore:

This API is no longer needed as the runtime flag is off by default.
Removing this option allows removing some code and will ease future WebRTC improvements.
Covered by existing tests.

* CMakeLists.txt:
* DerivedSources.make:
* Modules/mediastream/MediaStreamEvent.cpp: Removed.
* Modules/mediastream/MediaStreamEvent.h: Removed.
* Modules/mediastream/MediaStreamEvent.idl: Removed.
* Modules/mediastream/NavigatorUserMedia.idl: Removed.
* Modules/mediastream/NavigatorUserMedia.js: Removed.
* Modules/mediastream/PeerConnectionBackend.cpp:
* Modules/mediastream/PeerConnectionBackend.h:
* Modules/mediastream/RTCPeerConnection.h:
* Modules/mediastream/RTCPeerConnection.idl:
* Modules/mediastream/RTCPeerConnection.js:
(initializeRTCPeerConnection):
(createOffer):
(createAnswer):
(setLocalDescription):
(setRemoteDescription):
(addIceCandidate):
(getLocalStreams): Deleted.
(getStreamById): Deleted.
(addStream): Deleted.
(): Deleted.
* Modules/mediastream/RTCPeerConnectionInternals.js:
(callbacksAndDictionaryOverload):
(if): Deleted.
* Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
(WebCore::LibWebRTCMediaEndpoint::mediaStreamFromRTCStream):
(WebCore::LibWebRTCMediaEndpoint::addRemoteStream):
(WebCore::LibWebRTCMediaEndpoint::removeRemoteStream):
* Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h:
* Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:
(WebCore::LibWebRTCPeerConnectionBackend::doStop):
(WebCore::LibWebRTCPeerConnectionBackend::removeRemoteStream): Deleted.
(WebCore::LibWebRTCPeerConnectionBackend::addRemoteStream): Deleted.
* Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.h:
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/JSDOMGlobalObject.cpp:
(WebCore::JSDOMGlobalObject::addBuiltinGlobals):
(WebCore::isWebRTCLegacyAPIEnabled): Deleted.
* bindings/js/WebCoreBuiltinNames.h:
* dom/EventNames.in:
* page/RuntimeEnabledFeatures.h:
(WebCore::RuntimeEnabledFeatures::setPeerConnectionEnabled):
(WebCore::RuntimeEnabledFeatures::webRTCLegacyAPIEnabled const): Deleted.
(WebCore::RuntimeEnabledFeatures::setWebRTCLegacyAPIEnabled): Deleted.

Source/WebKit:

* Shared/WebPreferences.yaml:
* UIProcess/API/C/WKPreferences.cpp:
(WKPreferencesSetWebRTCLegacyAPIEnabled): Deleted.
(WKPreferencesGetWebRTCLegacyAPIEnabled): Deleted.
* UIProcess/API/C/WKPreferencesRef.h:
* UIProcess/API/Cocoa/WKPreferences.mm:
(-[WKPreferences _webRTCLegacyAPIEnabled]): Deleted.
(-[WKPreferences _setWebRTCLegacyAPIEnabled:]): Deleted.
* UIProcess/API/Cocoa/WKPreferencesPrivate.h:
* WebProcess/InjectedBundle/InjectedBundle.cpp:
(WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner):

Source/WebKitLegacy/mac:

* WebView/WebPreferenceKeysPrivate.h:
* WebView/WebPreferences.mm:
(+[WebPreferences initialize]):
(-[WebPreferences webRTCLegacyAPIEnabled]): Deleted.
(-[WebPreferences setWebRTCLegacyAPIEnabled:]): Deleted.
* WebView/WebPreferencesPrivate.h:
* WebView/WebView.mm:
(-[WebView _preferencesChanged:]):

Tools:

* DumpRenderTree/mac/DumpRenderTree.mm:
(enableExperimentalFeatures):
* WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
* WebKitTestRunner/InjectedBundle/TestRunner.cpp:
(WTR::TestRunner::setWebRTCLegacyAPIEnabled): Deleted.
* WebKitTestRunner/InjectedBundle/TestRunner.h:
* WebKitTestRunner/TestController.cpp:
(WTR::TestController::resetPreferencesToConsistentValues):

LayoutTests:

* TestExpectations:
* fast/events/constructors/media-stream-event-constructor-expected.txt: Removed.
* fast/events/constructors/media-stream-event-constructor.html: Removed.
* fast/mediastream/RTCPeerConnection-AddRemoveStream-expected.txt: Removed.
* fast/mediastream/RTCPeerConnection-AddRemoveStream.html: Removed.
* fast/mediastream/RTCPeerConnection-createAnswer-expected.txt:
* fast/mediastream/RTCPeerConnection-createAnswer.html:
* fast/mediastream/RTCPeerConnection-createOffer-expected.txt: Removed.
* fast/mediastream/RTCPeerConnection-createOffer.html: Removed.
* fast/mediastream/RTCPeerConnection-dtmf.html: Removed.
* fast/mediastream/RTCPeerConnection-events-expected.txt: Removed.
* fast/mediastream/RTCPeerConnection-events.html: Removed.
* fast/mediastream/RTCPeerConnection-have-local-offer-expected.txt:
* fast/mediastream/RTCPeerConnection-have-local-offer.html:
* fast/mediastream/RTCPeerConnection-have-local-pranswer-expected.txt:
* fast/mediastream/RTCPeerConnection-have-local-pranswer.html:
* fast/mediastream/RTCPeerConnection-have-remote-offer-expected.txt:
* fast/mediastream/RTCPeerConnection-have-remote-offer.html:
* fast/mediastream/RTCPeerConnection-have-remote-pranswer-expected.txt:
* fast/mediastream/RTCPeerConnection-have-remote-pranswer.html:
* fast/mediastream/RTCPeerConnection-legacy-stream-based-api-expected.txt: Removed.
* fast/mediastream/RTCPeerConnection-legacy-stream-based-api.html: Removed.
* fast/mediastream/RTCPeerConnection-localDescription-expected.txt:
* fast/mediastream/RTCPeerConnection-localDescription.html:
* fast/mediastream/RTCPeerConnection-remoteDescription-expected.txt:
* fast/mediastream/RTCPeerConnection-remoteDescription.html:
* fast/mediastream/RTCPeerConnection-stable-expected.txt:
* fast/mediastream/RTCPeerConnection-stable.html:
* fast/mediastream/RTCPeerConnection-stats.html:
* fast/mediastream/RTCPeerConnection-statsSelector-expected.txt:
* fast/mediastream/RTCPeerConnection-statsSelector.html:
* fast/mediastream/argument-types-expected.txt: Removed.
* fast/mediastream/argument-types.html: Removed.
* fast/mediastream/getusermedia-expected.txt: Removed.
* fast/mediastream/getusermedia.html: Removed.
* fast/mediastream/webkitGetUserMedia-shadowing-then-expected.txt: Removed.
* fast/mediastream/webkitGetUserMedia-shadowing-then.html: Removed.
* platform/mac/TestExpectations:
* webrtc/legacy-api-expected.txt:
* webrtc/legacy-api.html:

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

13 months agoModernize SlotAssignment
rniwa@webkit.org [Wed, 29 Aug 2018 22:23:30 +0000 (22:23 +0000)]
Modernize SlotAssignment
https://bugs.webkit.org/show_bug.cgi?id=189075

Reviewed by Antti Koivisto.

Modernized the code related to SlotAssignment. Namely, use HashMap<>::get instead of HashMap<>::find,
and use HashMap<>::ensure instead of HashMap<>::add. Also use WeakPtr to keep track of HTMLSlotElement
instead of a raw pointer.

* dom/SlotAssignment.cpp:
(WebCore::SlotAssignment::findAssignedSlot):
(WebCore::SlotAssignment::addSlotElementByName):
(WebCore::SlotAssignment::removeSlotElementByName):
(WebCore::SlotAssignment::didChangeSlot):
(WebCore::SlotAssignment::findFirstSlotElement):
(WebCore::SlotAssignment::resolveAllSlotElements):
(WebCore::SlotAssignment::assignToSlot):
* dom/SlotAssignment.h:
(WebCore::SlotAssignment::Slot::Slot): Renamed from SlotInfo since "Info" doesn't add any value.
* html/HTMLSlotElement.h:

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

13 months agolldb-webkit: KeyError thrown for uninitialized OptionSet
dbates@webkit.org [Wed, 29 Aug 2018 22:20:15 +0000 (22:20 +0000)]
lldb-webkit: KeyError thrown for uninitialized OptionSet
https://bugs.webkit.org/show_bug.cgi?id=189070

Reviewed by Simon Fraser.

Do not compute what enumerators are in an uninitialized OptionSet. A local OptionSet variable
is only considered initialized when execution passes over its assignment regardless of whether
the variable is in scope.

The LLDB Python API does not provide a way to determine whether an variable is initialized.
So, we use a simple heuristic: when the value of the OptionSet is greater than the value
of the bitmask with all enumerators set then we consider the OptionSet to be garbage (i.e.
uninitialized memory). When the variable is finally initialized LLDB will notify us to update
our state.

* lldb/lldb_webkit.py:
(WTFOptionSetProvider.update):

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

13 months ago[PSON] We should only process-swap when eTLD+1 changes on navigation
cdumez@apple.com [Wed, 29 Aug 2018 22:01:21 +0000 (22:01 +0000)]
[PSON] We should only process-swap when eTLD+1 changes on navigation
https://bugs.webkit.org/show_bug.cgi?id=189090
<rdar://problem/43799225>

Reviewed by Geoffrey Garen.

Source/WebCore:

Add toRegistrableDomain() utility function to get the eTLD+1 (aka "registrable
domain") from an URL.

* platform/network/ResourceRequestBase.h:
(WebCore::toRegistrableDomain):
(WebCore::registrableDomainsAreEqual):

Source/WebKit:

When navigating cross-origin, only process swap when the eTLD+1 (aka "Registrable
domain") changes, instead of considering the full security origin.

This has performance benefits and is also needed to keep document.domain origin
relaxation working.

* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::addProcessToOriginCacheSet):
(WebKit::WebProcessPool::removeProcessFromOriginCacheSet):
(WebKit::WebProcessPool::processForNavigation):
(WebKit::WebProcessPool::processForNavigationInternal):
* UIProcess/WebProcessPool.h:

Tools:

Update existing PSON API tests to use different registrable domains instead of different
protocols, as we now only process-swap when the eTLD+1 (aka "registrable domain") changes.

Add test coverage to make sure that we do not process swap when eTLD+1 does not change.

* TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:

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

13 months agoAdd a runtime flag for WebRTC unified plan
youenn@apple.com [Wed, 29 Aug 2018 21:50:28 +0000 (21:50 +0000)]
Add a runtime flag for WebRTC unified plan
https://bugs.webkit.org/show_bug.cgi?id=189068

Reviewed by Eric Carlson.

LayoutTests/imported/w3c:

* web-platform-tests/webrtc/RTCPeerConnection-addTrack.https-expected.txt:

Source/WebCore:

Covered by existing updated tests.
Main change is to call addTrack with a stream parameter so that on the other side, the track will be tied to a stream.
Receive-only case in unified plan is not yet supported.
This will be supported in follow-up patches.

* Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
(WebCore::LibWebRTCMediaEndpoint::setConfiguration): Activate unified plan based on runtime flag.
(WebCore::LibWebRTCMediaEndpoint::addTrack): Do not use AddStream in case of unified plan.
(WebCore::LibWebRTCMediaEndpoint::shouldOfferAllowToReceiveAudio const):
(WebCore::LibWebRTCMediaEndpoint::shouldOfferAllowToReceiveVideo const):
(WebCore::LibWebRTCMediaEndpoint::doCreateOffer): Use legacy webrtc option for receive only cases only in plan B case.
* page/RuntimeEnabledFeatures.h:
(WebCore::RuntimeEnabledFeatures::webRTCUnifiedPlanEnabled const):
(WebCore::RuntimeEnabledFeatures::setWebRTCUnifiedPlanEnabled):

Source/WebKit:

* Shared/WebPreferences.yaml:
* WebProcess/InjectedBundle/InjectedBundle.cpp:
(WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner):

Tools:

* WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
* WebKitTestRunner/InjectedBundle/TestRunner.cpp:
(WTR::TestRunner::setWebRTCUnifiedPlanEnabled):
* WebKitTestRunner/InjectedBundle/TestRunner.h:

LayoutTests:

* fast/mediastream/RTCPeerConnection-add-removeTrack-expected.txt:
* webrtc/peer-connection-audio-mute2.html:
* webrtc/peer-connection-remote-audio-mute2.html:
* webrtc/video-addTrack-expected.txt:
* webrtc/video-addTrack.html:
* webrtc/video-addTransceiver.html:

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

13 months agoGeneralize suppresion for flaky IntersectionObserver web platform tests
ajuma@chromium.org [Wed, 29 Aug 2018 21:20:16 +0000 (21:20 +0000)]
Generalize suppresion for flaky IntersectionObserver web platform tests
https://bugs.webkit.org/show_bug.cgi?id=189091

Unreviewed test gardening.

* TestExpectations:
* platform/mac-wk1/TestExpectations:

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

13 months agoFollowup (r235427): Use the null string instead of std::nullopt when no suggestion...
akeerthi@apple.com [Wed, 29 Aug 2018 21:09:43 +0000 (21:09 +0000)]
Followup (r235427): Use the null string instead of std::nullopt when no suggestion is selected
https://bugs.webkit.org/show_bug.cgi?id=189095

Reviewed by Tim Horton.

Followup to r235427 as per Darin's comment.

We can avoid unnecessary use of std::optional by taking advantage of the fact that
WTF::String already has a null value distinct from the empty value.

No change in behavior.

* UIProcess/mac/WebDataListSuggestionsDropdownMac.mm:
(WebKit::WebDataListSuggestionsDropdownMac::selectOption):
(-[WKDataListSuggestionsView currentSelectedString]):

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

13 months ago[CMake] Split Tools/CMakeLists.txt into platform files
don.olmstead@sony.com [Wed, 29 Aug 2018 20:55:28 +0000 (20:55 +0000)]
[CMake] Split Tools/CMakeLists.txt into platform files
https://bugs.webkit.org/show_bug.cgi?id=189093

Reviewed by Michael Catanzaro.

* CMakeLists.txt:
* PlatformGTK.cmake: Added.
* PlatformMac.cmake: Added.
* PlatformWPE.cmake: Added.
* PlatformWin.cmake: Added.

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

13 months agoFix crash when reflections and backdrop filter are combined
simon.fraser@apple.com [Wed, 29 Aug 2018 19:57:32 +0000 (19:57 +0000)]
Fix crash when reflections and backdrop filter are combined
https://bugs.webkit.org/show_bug.cgi?id=188504
rdar://problem/43225590

Reviewed by Dan Bates.
Source/WebCore:

GraphicsLayerCA::updateBackdropFiltersRect() was confused about which hash map to modify
when changes to the clipping rect affect whether we make backdrop clipping layers;
we need to add/remove from backdropClippingLayerClones, not backdropLayerClones.

Test: compositing/filters/backdrop-filter-update-rect.html

* platform/graphics/ca/GraphicsLayerCA.cpp:
(WebCore::GraphicsLayerCA::updateBackdropFiltersRect):

LayoutTests:

* compositing/filters/backdrop-filter-update-rect-expected.txt: Added.
* compositing/filters/backdrop-filter-update-rect.html: Added.

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

13 months agoMuted elements do not have their Now Playing status updated when unmuted.
jer.noble@apple.com [Wed, 29 Aug 2018 19:39:37 +0000 (19:39 +0000)]
Muted elements do not have their Now Playing status updated when unmuted.
https://bugs.webkit.org/show_bug.cgi?id=189069

Reviewed by Eric Carlson.

Source/WebCore:

Schedule an updateNowPlayingInfo() when an element becomes unmuted.

* platform/audio/PlatformMediaSessionManager.h:
* platform/audio/mac/MediaSessionManagerMac.h:
* platform/audio/mac/MediaSessionManagerMac.mm:
(WebCore::MediaSessionManagerMac::sessionCanProduceAudioChanged):

Source/WebCore/PAL:

* pal/spi/mac/MediaRemoteSPI.h:

Tools:

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebKitCocoa/NowPlaying.mm: Added.
(userInfoHasNowPlayingApplicationPID):
(getNowPlayingClient):
(getNowPlayingClientPid):
(NowPlayingTest::webView):
(NowPlayingTest::configuration):
(NowPlayingTest::webViewPid):
(NowPlayingTest::loadPage):
(NowPlayingTest::runScriptWithUserGesture):
(NowPlayingTest::runScriptWithoutUserGesture):
(NowPlayingTest::executeAndWaitForPlaying):
(NowPlayingTest::executeAndWaitForWebViewToBecomeNowPlaying):
(NowPlayingTest::observers):
(NowPlayingTest::addObserver):
(NowPlayingTest::removeObserver):
(NowPlayingTest::notificationCallback):
(NowPlayingTest::receivedNotification):
(NowPlayingTest::performAfterReceivingNotification):
(TEST_F):
* TestWebKitAPI/Tests/WebKitCocoa/now-playing.html: Added.

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

13 months agoRename wtf/text/mac/StringMac.mm to wtf/text/cococa/StringCococa.mm
ddkilzer@apple.com [Wed, 29 Aug 2018 19:24:39 +0000 (19:24 +0000)]
Rename wtf/text/mac/StringMac.mm to wtf/text/cococa/StringCococa.mm
<https://webkit.org/b/189082>

Reviewed by Sam Weinig.

Includes a drive-by fix for a webkit-style warning:

    ERROR: Source/WTF/wtf/text/cocoa/StringCocoa.mm:34:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]

* WTF.xcodeproj/project.pbxproj: Update for move and rename.
* wtf/PlatformMac.cmake: Add missing cocoa/StringCocoa.mm source
file.  Drive-by fix for rename of
TextBreakIteratorInternalICUMac.mm to
TextBreakIteratorInternalICUCocoa.cpp.
* wtf/text/cocoa/StringCocoa.mm: Renamed from Source/WTF/wtf/text/mac/StringMac.mm.
(WTF::String::String):

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

13 months agoUse the null string instead of std::nullopt for missing attachment file names and...
wenson_hsieh@apple.com [Wed, 29 Aug 2018 19:17:45 +0000 (19:17 +0000)]
Use the null string instead of std::nullopt for missing attachment file names and content types
https://bugs.webkit.org/show_bug.cgi?id=189080

Reviewed by Tim Horton.

Replace instances of std::optional<String> with just String instead, and use the null string to represent a
missing value instead of std::nullopt. No change in behavior.

Source/WebCore:

* html/HTMLAttachmentElement.cpp:
(WebCore::HTMLAttachmentElement::updateAttributes):
* html/HTMLAttachmentElement.h:

Source/WebKit:

* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::updateAttachmentAttributes):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::updateAttachmentAttributes):
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:

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

13 months ago[mac-wk1] Mark three IntersectionObserver web platform tests as flaky
ajuma@chromium.org [Wed, 29 Aug 2018 18:44:22 +0000 (18:44 +0000)]
[mac-wk1] Mark three IntersectionObserver web platform tests as flaky
https://bugs.webkit.org/show_bug.cgi?id=189091

Unreviewed test gardening.

* platform/mac-wk1/TestExpectations:

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

13 months ago[WHLSL] Ensure that isLValue is copied by the rewriter
commit-queue@webkit.org [Wed, 29 Aug 2018 18:24:45 +0000 (18:24 +0000)]
[WHLSL] Ensure that isLValue is copied by the rewriter
https://bugs.webkit.org/show_bug.cgi?id=189083

The value of isLValue was not propagated when new TernaryExpressions are
created in Rewriter.

Patch by Thomas Denney <tdenney@apple.com> on 2018-08-29
Reviewed by Myles C. Maxfield.

* WebGPUShadingLanguageRI/Rewriter.js:
(Rewriter.prototype.visitTernaryExpression):
* WebGPUShadingLanguageRI/Test.js: Add new test to verify the value is
propagated.

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

13 months ago[WHLSL] Add more functions to the standard library
mmaxfield@apple.com [Wed, 29 Aug 2018 18:21:49 +0000 (18:21 +0000)]
[WHLSL] Add more functions to the standard library
https://bugs.webkit.org/show_bug.cgi?id=188873

Reviewed by Filip Pizlo.

This patch adds the rest of the standard library to StandardLibrary.js, and updates the compiler to be able to compile it.

There are a few major pieces:
1. Swizzle operators are now implemented in the language, instead of as native functions
2. Vector constructors are now implemented in the language, instead of as native functions
3. The matrix type is implemented
4. Vector operator&[] is illegal, and is removed from the compiler
5. Vector index setters & index getters are now implemented in the language, instead of as native functions
6. Vector and matrix equality operators are implemented in the language, instead of as native functions
7. Casting a scalar to a boolean is implemented in the language, instead of as native functions
8. Casting a vector to a boolean is not part of the language, and is removed from the compiler
9. Half-precision floating point types are implemented

* WebGPUShadingLanguageRI/All.js:
* WebGPUShadingLanguageRI/BuiltinMatrixGetter.js: Copied from Tools/WebGPUShadingLanguageRI/BuiltinVectorIndexSetter.js.
(BuiltinMatrixGetter):
(BuiltinMatrixGetter.prototype.get height):
(BuiltinMatrixGetter.prototype.get width):
(BuiltinMatrixGetter.prototype.toString):
(BuiltinMatrixGetter.functions):
(BuiltinMatrixGetter.prototype.instantiateImplementation):
* WebGPUShadingLanguageRI/BuiltinMatrixSetter.js: Renamed from Tools/WebGPUShadingLanguageRI/BuiltinVectorIndexSetter.js.
(BuiltinMatrixSetter):
(BuiltinMatrixSetter.prototype.get height):
(BuiltinMatrixSetter.prototype.get width):
(BuiltinMatrixSetter.prototype.toString):
(BuiltinMatrixSetter.functions):
(BuiltinMatrixSetter.prototype.instantiateImplementation):
* WebGPUShadingLanguageRI/BuiltinVectorConstructors.js: Removed.
* WebGPUShadingLanguageRI/BuiltinVectorEqualityOperator.js: Removed.
* WebGPUShadingLanguageRI/BuiltinVectorGetter.js:
(BuiltinVectorGetter.prototype.instantiateImplementation):
(BuiltinVectorGetter):
* WebGPUShadingLanguageRI/BuiltinVectorSetter.js:
(BuiltinVectorSetter.functions):
(BuiltinVectorSetter.prototype.instantiateImplementation):
(BuiltinVectorSetter):
* WebGPUShadingLanguageRI/CallExpression.js:
(CallExpression.prototype.resolve):
* WebGPUShadingLanguageRI/CheckTypesWithArguments.js:
(checkTypesWithArguments.TypeWithArgumentsChecker.prototype.visitTypeRef):
(checkTypesWithArguments.TypeWithArgumentsChecker):
(checkTypesWithArguments):
* WebGPUShadingLanguageRI/Checker.js:
(Checker.prototype.visitVectorType):
(Checker.prototype.visitMatrixType):
* WebGPUShadingLanguageRI/ConstexprFolder.js:
(ConstexprFolder.prototype.visitCallExpression):
(ConstexprFolder):
* WebGPUShadingLanguageRI/Evaluator.js:
(Evaluator.prototype.visitTernaryExpression):
* WebGPUShadingLanguageRI/FlattenedStructOffsetGatherer.js:
(FlattenedStructOffsetGatherer.prototype.visitMatrixType):
(FlattenedStructOffsetGatherer):
* WebGPUShadingLanguageRI/Intrinsics.js:
(Intrinsics.):
(Intrinsics):
* WebGPUShadingLanguageRI/MatrixType.js: Renamed from Tools/WebGPUShadingLanguageRI/BuiltinVectorIndexGetter.js.
(MatrixType):
(MatrixType.prototype.get elementType):
(MatrixType.prototype.get numRows):
(MatrixType.prototype.get numColumns):
(MatrixType.prototype.get numRowsValue):
(MatrixType.prototype.get numColumnsValue):
(MatrixType.prototype.get size):
(MatrixType.prototype.unifyImpl):
(MatrixType.prototype.populateDefaultValue):
(MatrixType.prototype.toString):
* WebGPUShadingLanguageRI/NameContext.js:
(NameContext.prototype.add):
* WebGPUShadingLanguageRI/NativeType.js:
(NativeType.create):
(NativeType):
* WebGPUShadingLanguageRI/OperatorAnderIndexer.js: Renamed from Tools/WebGPUShadingLanguageRI/OperatorAnderIndex.js.
(OperatorAnderIndexer):
* WebGPUShadingLanguageRI/OperatorBool.js: Removed.
* WebGPUShadingLanguageRI/Prepare.js:
(let.prepare):
* WebGPUShadingLanguageRI/Program.js:
(Program.prototype.add):
* WebGPUShadingLanguageRI/Rewriter.js:
(Rewriter.prototype.visitMatrixType):
(Rewriter):
* WebGPUShadingLanguageRI/SPIRV.html:
* WebGPUShadingLanguageRI/StandardLibrary.js:
(operator.bool):
(bool.operator):
(uchar.operator):
(ushort.operator):
(char.operator):
(short.operator):
(uint.operator):
(int.operator):
(half.operator):
(float.operator):
(uchar2.operator):
(uchar3.operator):
(uchar4.operator):
(ushort2.operator):
(ushort3.operator):
(ushort4.operator):
(uint2.operator):
(uint3.operator):
(uint4.operator):
(char2.operator):
(char3.operator):
(char4.operator):
(short2.operator):
(short3.operator):
(short4.operator):
(int2.operator):
(int3.operator):
(int4.operator):
(half2.operator):
(half3.operator):
(half4.operator):
(float2.operator):
(float3.operator):
(float4.operator):
(half2x2.operator):
(half2x3.operator):
(half2x4.operator):
(half3x2.operator):
(half3x3.operator):
(half3x4.operator):
(half4x2.operator):
(half4x3.operator):
(half4x4.operator):
(float2x2.operator):
(float2x3.operator):
(float2x4.operator):
(float3x2.operator):
(float3x3.operator):
(float3x4.operator):
(float4x2.operator):
(float4x3.operator):
(float4x4.operator):
(operator.bool2):
(operator.bool3):
(operator.bool4):
(uint.operator.length):
(operator.uchar2):
(operator.uchar3):
(operator.uchar4):
(operator.ushort2):
(operator.ushort3):
(operator.ushort4):
(operator.uint2):
(operator.uint3):
(operator.uint4):
(operator.char2):
(operator.char3):
(operator.char4):
(operator.short2):
(operator.short3):
(operator.short4):
(operator.int2):
(operator.int3):
(operator.int4):
(operator.half2):
(operator.half3):
(operator.half4):
(operator.float2):
(operator.float3):
(operator.float4):
(bool2.operator):
(bool3.operator):
(bool4.operator):
(allVectorTypeNames):
* WebGPUShadingLanguageRI/SwizzleOp.js: Removed.
* WebGPUShadingLanguageRI/SynthesizeDefaultConstructorOperator.js:
(synthesizeDefaultConstructorOperator.FindAllTypes.prototype.visitMatrixType):
(synthesizeDefaultConstructorOperator.FindAllTypes):
(synthesizeDefaultConstructorOperator):
* WebGPUShadingLanguageRI/SynthesizeOperatorBool.js: Removed.
* WebGPUShadingLanguageRI/Test.html:
* WebGPUShadingLanguageRI/Test.js:
(makeHalf):
(checkHalf):
* WebGPUShadingLanguageRI/Visitor.js:
(Visitor.prototype.visitMatrixType):
(Visitor):
* WebGPUShadingLanguageRI/index.html:

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

13 months agoLayout Test svg/animations/animate-end-attribute-numeric-precision.html is flaky
tsavell@apple.com [Wed, 29 Aug 2018 17:56:29 +0000 (17:56 +0000)]
Layout Test svg/animations/animate-end-attribute-numeric-precision.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=189087

Unreviewed test gardening.

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

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

13 months agoTeach webkitpy how to check leaks and treat leaks as test failures
simon.fraser@apple.com [Wed, 29 Aug 2018 17:51:32 +0000 (17:51 +0000)]
Teach webkitpy how to check leaks and treat leaks as test failures
https://bugs.webkit.org/show_bug.cgi?id=189067

Reviewed by Darin Adler.

Tools:

Add a new "--world-leaks" argument to run-webkit-tests. When enabled, DRT/WTR are launched
with a --world-leaks argument (which is renamed in this patch for consistency). This enables the
behavior added in r235408, namely that they check for leaked documents after each test, and at
the end of one (if --run-singly) or a set of tests run in a single DRT/WTR instance handle the
"#CHECK FOR WORLD LEAKS" command to get still-live documents.

LayoutTestRunner in webkitpy now has the notion of doing "post-tests work", called via _finished_test_group(),
and here it sends the "#CHECK FOR WORLD LEAKS" command to the runner and parses the resulting output block.
If this results block includes leaks, we convert an existing TestResult into a LEAK failure
in TestRunResults.change_result_to_failure(). Leaks are then added to the ouput JSON for display in results.html

Unit tests are updated with some leak examples.

* DumpRenderTree/mac/DumpRenderTree.mm:
(initializeGlobalsFromCommandLineOptions):
* Scripts/webkitpy/common/net/resultsjsonparser_unittest.py:
(ParsedJSONResultsTest):
* Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py:
(LayoutTestRunner._annotate_results_with_additional_failures):
(LayoutTestRunner._handle_finished_test_group):
(Worker.handle):
(Worker._run_test):
(Worker._do_post_tests_work):
(Worker._finished_test_group):
(Worker._run_test_in_another_thread):
* Scripts/webkitpy/layout_tests/layout_package/json_layout_results_generator.py:
(JSONLayoutResultsGenerator):
* Scripts/webkitpy/layout_tests/models/test_expectations.py:
(TestExpectationParser):
(TestExpectations):
* Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py:
(Base.get_basic_tests):
* Scripts/webkitpy/layout_tests/models/test_failures.py:
(determine_result_type):
(FailureLeak):
(FailureLeak.__init__):
(FailureLeak.message):
(FailureDocumentLeak):
(FailureDocumentLeak.__init__):
(FailureDocumentLeak.message):
* Scripts/webkitpy/layout_tests/models/test_results.py:
(TestResult.convert_to_failure):
* Scripts/webkitpy/layout_tests/models/test_run_results.py:
(TestRunResults.change_result_to_failure):
(_interpret_test_failures):
(summarize_results):
* Scripts/webkitpy/layout_tests/models/test_run_results_unittest.py:
(get_result):
(run_results):
(summarized_results):
* Scripts/webkitpy/layout_tests/run_webkit_tests.py:
(parse_args):
* Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
(parse_args):
(RunTest.test_check_for_world_leaks):
* Scripts/webkitpy/port/driver.py:
(DriverPostTestOutput):
(DriverPostTestOutput.__init__):
(Driver.do_post_tests_work):
(Driver._parse_world_leaks_output):
(Driver.cmd_line):
(DriverProxy.do_post_tests_work):
* Scripts/webkitpy/port/test.py:
(unit_test_list):
* WebKitTestRunner/Options.cpp:
(WTR::OptionsHandler::OptionsHandler):
* WebKitTestRunner/TestController.cpp:
(WTR::TestController::checkForWorldLeaks):

LayoutTests:

Put some fake leaks in full_results.json, and update results.html to show a table
of leaks when results are expanded.

* fast/harness/full_results.json:
* fast/harness/results-expected.txt:
* fast/harness/results.html:

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

13 months agoMissed adding expctations to ios for webkit.org/b/188985
tsavell@apple.com [Wed, 29 Aug 2018 17:50:28 +0000 (17:50 +0000)]
Missed adding expctations to ios for webkit.org/b/188985
https://bugs.webkit.org/show_bug.cgi?id=188985

Unreviewed test gardening.

* platform/ios-wk2/TestExpectations:

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

13 months agoUnreviewed, rolling out r235432 and r235436.
commit-queue@webkit.org [Wed, 29 Aug 2018 17:14:49 +0000 (17:14 +0000)]
Unreviewed, rolling out r235432 and r235436.
https://bugs.webkit.org/show_bug.cgi?id=189086

Is a Swift source breaking change. (Requested by keith_miller
on #webkit).

Reverted changesets:

"Add nullablity attributes to JSValue"
https://bugs.webkit.org/show_bug.cgi?id=189047
https://trac.webkit.org/changeset/235432

"Add nullablity attributes to JSValue"
https://bugs.webkit.org/show_bug.cgi?id=189047
https://trac.webkit.org/changeset/235436

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

13 months agoVersioning.
kocsen_chung@apple.com [Wed, 29 Aug 2018 16:30:58 +0000 (16:30 +0000)]
Versioning.

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

13 months agoRemove empty directories from from svn.webkit.org repository
ddkilzer@apple.com [Wed, 29 Aug 2018 16:25:15 +0000 (16:25 +0000)]
Remove empty directories from from svn.webkit.org repository
<https://webkit.org/b/189081>

Source/ThirdParty/ANGLE:

* src/angle.xcodeproj: Removed.
* src/common/third_party/numerics: Removed.

Source/ThirdParty/libwebrtc:

* Source/webrtc/base: Removed.
* Source/webrtc/media/devices: Removed.
* Source/webrtc/modules/audio_conference_mixer: Removed.
* Source/webrtc/modules/remote_bitrate_estimator/include/mock: Removed.
* Source/webrtc/system_wrappers/test: Removed.
* Source/webrtc/test/testsupport/mac: Removed.
* Source/webrtc/voice_engine: Removed.

Source/WebCore:

* Modules/proximity: Removed.

Source/WebInspectorUI:

* WebInspectorUI.esproj: Removed.

Tools:

* DumpRenderTree/TestNetscapePlugIn/unix: Removed.
* WebKitTestRunner/UIScriptContext: Removed.

LayoutTests:

* css3/filters/backdrop/script-tests: Removed.
* css3/filters/script-tests: Removed.
* indieui: Removed.
* legacy-animation-engine/fullscreen: Removed.
* platform/gtk/editing/pasteboard/script-tests: Removed.
* platform/gtk/resources: Removed.
* platform/ios-wk2/fast/backgrounds: Removed.
* platform/ios-wk2/fast/block/margin-collapse/block-inside-inline: Removed.
* platform/ios-wk2/fast/block/positioning/auto/vertical-lr: Removed.
* platform/ios-wk2/fast/body-propagation/background-color: Removed.
* platform/ios-wk2/fast/body-propagation/background-image: Removed.
* platform/ios-wk2/fast/borders: Removed.
* platform/ios-wk2/fast/box-shadow: Removed.
* platform/ios-wk2/fast/box-sizing: Removed.
* platform/ios-wk2/fast/canvas: Removed.
* platform/ios-wk2/fast/compact: Removed.
* platform/ios-wk2/fast/css/counters: Removed.
* platform/ios-wk2/fast/css/namespaces: Removed.
* platform/ios-wk2/fast/css3-text: Removed.
* platform/ios-wk2/fast/doctypes: Removed.
* platform/ios-wk2/fast/dom/Element: Removed.
* platform/ios-wk2/fast/dom/HTMLDocument: Removed.
* platform/ios-wk2/fast/dom/HTMLElement: Removed.
* platform/ios-wk2/fast/dom/HTMLHeadElement: Removed.
* platform/ios-wk2/fast/dom/HTMLImageElement: Removed.
* platform/ios-wk2/fast/dom/HTMLInputElement: Removed.
* platform/ios-wk2/fast/dom/HTMLLinkElement: Removed.
* platform/ios-wk2/fast/dom/HTMLMeterElement: Removed.
* platform/ios-wk2/fast/dom/HTMLObjectElement: Removed.
* platform/ios-wk2/fast/dom/HTMLProgressElement: Removed.
* platform/ios-wk2/fast/dom/HTMLTableColElement: Removed.
* platform/ios-wk2/fast/dom/HTMLTableElement: Removed.
* platform/ios-wk2/fast/dom/Range: Removed.
* platform/ios-wk2/fast/dom/Window: Removed.
* platform/ios-wk2/fast/events/touch: Removed.
* platform/ios-wk2/fast/fast-mobile-scrolling: Removed.
* platform/ios-wk2/fast/forms/color: Removed.
* platform/ios-wk2/fast/forms/datalist: Removed.
* platform/ios-wk2/fast/forms/file: Removed.
* platform/ios-wk2/fast/forms/number: Removed.
* platform/ios-wk2/fast/forms/range: Removed.
* platform/ios-wk2/fast/forms/select: Removed.
* platform/ios-wk2/fast/gradients: Removed.
* platform/ios-wk2/fast/inspector-support: Removed.
* platform/ios-wk2/fast/line-grid: Removed.
* platform/ios-wk2/fast/multicol/span: Removed.
* platform/ios-wk2/fast/multicol/vertical-lr: Removed.
* platform/ios-wk2/fast/preloader: Removed.
* platform/ios-wk2/fast/reflections: Removed.
* platform/ios-wk2/fast/regions/auto-size: Removed.
* platform/ios-wk2/fast/replaced/vertical-lr: Removed.
* platform/ios-wk2/fast/replaced/vertical-rl: Removed.
* platform/ios-wk2/fast/sub-pixel: Removed.
* platform/ios-wk2/fast/text/firstline: Removed.
* platform/ios-wk2/fast/text/shaping: Removed.
* platform/ios-wk2/fast/tokenizer: Removed.
* platform/ios-wk2/scrolling: Removed.
* platform/ios/fast/viewport: Removed.
* platform/ios/ios/fast/events/touch/script-tests: Removed.
* platform/ios/ios/fast/html: Removed.
* platform/ios/ios/scrolling: Removed.
* platform/mac-sierra-wk2/js: Removed.
* platform/mac-sierra/http/tests/ssl: Removed.
* platform/mac-wk2/http/tests/plugins: Removed.
* platform/mac-wk2/js: Removed.
* platform/mac-wk2/tiled-drawing: Removed.
* platform/mac/accessibility/resources: Removed.
* platform/mac/accessibility/select-text: Removed.
* platform/mac/editing/attributed-string: Removed.
* platform/mac/editing/dictionary-lookup: Removed.
* platform/mac/editing/input/resources: Removed.
* platform/mac/editing/selection/script-tests: Removed.
* platform/mac/fast/canvas/resources: Removed.
* platform/mac/fast/forms/script-tests: Removed.
* platform/mac/fast/ruby/resources: Removed.
* platform/mac/fast/scrolling/resources: Removed.
* platform/mac/http/tests/usercontentfilter: Removed.
* platform/mac/platform/mac/accessibility: Removed.
* platform/mac/platform/mac/editing: Removed.
* platform/win-xp: Removed.
* platform/win/editing/exeCommand: Removed.
* platform/win/platform/win/accessibility: Removed.
* platform/win/sputnik: Removed.
* platform/wk2/js: Removed.
* platform/wk2/storage: Removed.
* proximity: Removed.
* vibration: Removed.

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

13 months ago[GTK][WPE] Add JSCOnly Release bot for Linux ARMv7 Thumb2 SoftFP
commit-queue@webkit.org [Wed, 29 Aug 2018 15:07:26 +0000 (15:07 +0000)]
[GTK][WPE] Add JSCOnly Release bot for Linux ARMv7 Thumb2 SoftFP
https://bugs.webkit.org/show_bug.cgi?id=189077

Patch by Pablo Saavedra <psaavedra@igalia.com> on 2018-08-29
Reviewed by Michael Catanzaro.

Deployed new bot for WPE Release in Linux ARMv7 Thumb2 SoftFP
This bot (jsconly-linux-igalia-bot-5) will run the 'JSCOnly
Linux ARMv7 Thumb2 SoftFP Release' buildjob.

* BuildSlaveSupport/build.webkit.org-config/config.json:
* BuildSlaveSupport/build.webkit.org-config/steps_unittest.py:

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

13 months ago[LFC][Floating] Introduce FloatBox, a FloatAvoider subclass.
zalan@apple.com [Wed, 29 Aug 2018 14:49:35 +0000 (14:49 +0000)]
[LFC][Floating] Introduce FloatBox, a FloatAvoider subclass.
https://bugs.webkit.org/show_bug.cgi?id=189074

Reviewed by Antti Koivisto.

FloatBox is a float avoider and a float positioned box as well.
This is in preparation for the float avoidance feature where formatting context root boxes avoid existing floats.

* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* layout/displaytree/DisplayBox.h:
* layout/floats/FloatAvoider.cpp:
(WebCore::Layout::FloatAvoider::FloatAvoider):
(WebCore::Layout::FloatAvoider::setHorizontalConstraints):
(WebCore::Layout::FloatAvoider::setVerticalConstraint):
(WebCore::Layout::FloatAvoider::horizontalPositionCandidate):
(WebCore::Layout::FloatAvoider::verticalPositionCandidate):
(WebCore::Layout::FloatAvoider::resetPosition):
(WebCore::Layout::FloatAvoider::rectInContainingBlock const):
(WebCore::Layout::FloatAvoider::initializePosition): Deleted.
(WebCore::Layout::FloatAvoider::isLeftAligned const): Deleted.
(WebCore::Layout::FloatAvoider::rect const): Deleted.
(WebCore::Layout::FloatAvoider::resetHorizontalConstraints): Deleted.
(WebCore::Layout::FloatAvoider::initialVerticalPosition const): Deleted.
* layout/floats/FloatAvoider.h:
(WebCore::Layout::FloatAvoider::rect const):
(WebCore::Layout::FloatAvoider::isLeftAligned const):
(WebCore::Layout::FloatAvoider::initialVerticalPosition const):
(WebCore::Layout::FloatAvoider::floatingState const):
(WebCore::Layout::FloatAvoider::layoutBox const):
(WebCore::Layout::FloatAvoider::displayBox const):
* layout/floats/FloatBox.cpp: Copied from Source/WebCore/layout/floats/FloatAvoider.h.
(WebCore::Layout::FloatBox::FloatBox):
(WebCore::Layout::FloatBox::horizontalPositionCandidate):
(WebCore::Layout::FloatBox::verticalPositionCandidate):
(WebCore::Layout::FloatBox::initialVerticalPosition const):
* layout/floats/FloatBox.h: Copied from Source/WebCore/layout/floats/FloatAvoider.h.
* layout/floats/FloatingContext.cpp:
(WebCore::Layout::FloatingContext::positionForFloat const):
(WebCore::Layout::FloatingContext::floatingPosition const):

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

13 months ago[IntersectionObserver] Implement intersection logic for the same-document implicit...
ajuma@chromium.org [Wed, 29 Aug 2018 12:36:15 +0000 (12:36 +0000)]
[IntersectionObserver]  Implement intersection logic for the same-document implicit root case
https://bugs.webkit.org/show_bug.cgi?id=189055

Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

Rebaseline tests.

* web-platform-tests/intersection-observer/display-none-expected.txt:
* web-platform-tests/intersection-observer/inline-client-rect-expected.txt:
* web-platform-tests/intersection-observer/multiple-targets-expected.txt:
* web-platform-tests/intersection-observer/multiple-thresholds-expected.txt:
* web-platform-tests/intersection-observer/observer-without-js-reference-expected.txt:
* web-platform-tests/intersection-observer/root-margin-expected.txt:
* web-platform-tests/intersection-observer/same-document-no-root-expected.txt:
* web-platform-tests/intersection-observer/same-document-zero-size-target-expected.txt:
* web-platform-tests/intersection-observer/shadow-content-expected.txt:
* web-platform-tests/intersection-observer/text-target-expected.txt:
* web-platform-tests/intersection-observer/zero-area-element-hidden-expected.txt:

Source/WebCore:

Extend the intersection logic to handle computing the intersection of the target and the
viewport, for the case where the target is in the main frame.

Tested by existing tests in imported/w3c/web-platform-tests/intersection-observer.

* dom/Document.cpp:
(WebCore::computeIntersectionRects):
(WebCore::Document::updateIntersectionObservations):

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

13 months agoChanges to slot children should trigger slotchange
rniwa@webkit.org [Wed, 29 Aug 2018 05:31:57 +0000 (05:31 +0000)]
Changes to slot children should trigger slotchange
https://bugs.webkit.org/show_bug.cgi?id=169718
<rdar://problem/43317496>

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Rebaselined the test now that relevant test cases pass.

* web-platform-tests/shadow-dom/slotchange-expected.txt:

Source/WebCore:

Fix the bug that slotchange event is not fired when a slot's fallback content is updated now that slotchange event
is more formally specified.

This particular behavior corresponds to step 7.5. of the concept *to insert a node* where it says:
"[I]f parent’s root is a shadow root, and parent is a slot whose assigned nodes is the empty list, then run signal
a slot change for parent."

See https://dom.spec.whatwg.org/#concept-node-insert

Tests: fast/shadow-dom/slotchange-in-fallback.html
       imported/w3c/web-platform-tests/shadow-dom/slotchange.html

* dom/Element.cpp:
(WebCore::Element::childrenChanged): Updated the comment.
* dom/ShadowRoot.cpp:
(WebCore::ShadowRoot::addSlotElementByName): Added an assertion.
(WebCore::ShadowRoot::slotFallbackDidChange): Added.
* dom/ShadowRoot.h:
* dom/SlotAssignment.cpp:
(WebCore::SlotAssignment::slotFallbackDidChange): Added. When the assigned nodes is empty, we enqueue a slotchange.
Because assignedNodesForSlot invokes assignSlots, this can be O(n) but we don't expect mutating slot's fallback
contents and shadow host's children in turn to be a common scenario so this shouldn't be an issue in practice.
* dom/SlotAssignment.h:
* html/HTMLSlotElement.cpp:
(WebCore::HTMLSlotElement::insertedIntoAncestor): Be explicit about auto* being used here.
(WebCore::HTMLSlotElement::childrenChanged): Added. Invokes slotFallbackDidChange whenver child node is muated.
* html/HTMLSlotElement.h:

LayoutTests:

Added a W3C style testharness.js test for firing slotchange event for the fallback content change
since web-platform-tests/shadow-dom/slotchange.html doesn't have adequate set of tests.

Chrome and Firefox pass all test cases. WebKit used to fail all test cases before this patch.

* fast/shadow-dom/slotchange-in-fallback-expected.txt: Added.
* fast/shadow-dom/slotchange-in-fallback.html: Added.

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

13 months agoCheck for null renderer in canBeScrolledIntoView
don.olmstead@sony.com [Wed, 29 Aug 2018 05:05:23 +0000 (05:05 +0000)]
Check for null renderer in canBeScrolledIntoView
https://bugs.webkit.org/show_bug.cgi?id=188935

Reviewed by Simon Fraser.

Source/WebCore:

Test: fast/spatial-navigation/snav-display-contents-crash.html

* page/SpatialNavigation.cpp:
(WebCore::canBeScrolledIntoView):

LayoutTests:

* fast/spatial-navigation/snav-display-contents-crash-expected.txt: Added.
* fast/spatial-navigation/snav-display-contents-crash.html: Added.

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

13 months agoIDBDatabase should not return true to hasPendingActivity after being stopped
youenn@apple.com [Wed, 29 Aug 2018 04:52:45 +0000 (04:52 +0000)]
IDBDatabase should not return true to hasPendingActivity after being stopped
https://bugs.webkit.org/show_bug.cgi?id=189073

Reviewed by Darin Adler.

There is a chance that IDBDatabase::hasPendingActivity returns true.
The case that might happen is when stop() is called but there are still some active/being committed transactions.
In that case, hasPendingActivity will return true until these transactions get finalized.
While these transactions will probably be finalized at some point, it delays GC for no good reason.
And we might want in a follow-up patch to assert that ActiveDOMObject are GC-able whenever their context is stopped.
For that purpose, make sure hasPendingActivity returns false when context is stopped.

* Modules/indexeddb/IDBDatabase.cpp:
(WebCore::IDBDatabase::hasPendingActivity const):

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

13 months ago[libwebrtc] Remove references to Source/webrtc/modules/audio_coding/codecs/isac/main...
ddkilzer@apple.com [Wed, 29 Aug 2018 04:06:53 +0000 (04:06 +0000)]
[libwebrtc] Remove references to Source/webrtc/modules/audio_coding/codecs/isac/main/source/fft.h

Found by tidy-Xcode-project-file script (see Bug 188754).

* libwebrtc.xcodeproj/project.pbxproj:
(Source/webrtc/modules/audio_coding/codecs/isac/main/source/fft.h):
Remove references to this file since it doesn't exist.

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

13 months ago[CMake] Use CMake's FindFreetype
don.olmstead@sony.com [Wed, 29 Aug 2018 03:58:32 +0000 (03:58 +0000)]
[CMake] Use CMake's FindFreetype
https://bugs.webkit.org/show_bug.cgi?id=189071

Reviewed by Michael Catanzaro.

.:

Use the builtin CMake functionality for finding Freetype.

* Source/cmake/FindFreetype2.cmake: Removed.
* Source/cmake/OptionsGTK.cmake:
* Source/cmake/OptionsWPE.cmake:

Source/WebCore:

No new tests. No change in behavior.

* platform/FreeType.cmake:

Source/WebKit:

* PlatformWPE.cmake:

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

13 months agoWebKitMediaSession should be GC collectable when its document is being stopped
youenn@apple.com [Wed, 29 Aug 2018 02:37:08 +0000 (02:37 +0000)]
WebKitMediaSession should be GC collectable when its document is being stopped
https://bugs.webkit.org/show_bug.cgi?id=189016
<rdar://problem/43804904>

Unreviewed.
Increasing number of GC and checks to unflake tests on bots.

* http/tests/IndexedDB/collect-IDB-objects.https.html:
* http/tests/media/clearkey/collect-webkit-media-session.html:

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

13 months agoconsole.log() shows (anonymous function) instead of the passed string when a certain...
drousso@apple.com [Wed, 29 Aug 2018 01:36:36 +0000 (01:36 +0000)]
console.log() shows (anonymous function) instead of the passed string when a certain format is used
https://bugs.webkit.org/show_bug.cgi?id=188946
<rdar://problem/43756428>

Reviewed by Brian Burg.

Source/WebInspectorUI:

Stack trace URLs are much more likely to follow the following format:

    <protocol>://<path>:<line>:<column>

Modify the test regexp to always require that a protocol exists and to check that there are
no ":" inside the protocol or path. Additionally, stack traces usually have more than one
frame, so return false if there isn't more than one line.

* UserInterface/Models/StackTrace.js:
(WI.StackTrace.isLikelyStackTrace):

LayoutTests:

* inspector/console/js-isLikelyStackTrace-expected.txt:
* inspector/console/js-isLikelyStackTrace.html:

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

13 months agoWeb Inspector: REGRESSION: CanvasSidebarPanel is empty for imported recordings
drousso@apple.com [Wed, 29 Aug 2018 00:06:40 +0000 (00:06 +0000)]
Web Inspector: REGRESSION: CanvasSidebarPanel is empty for imported recordings
https://bugs.webkit.org/show_bug.cgi?id=189061

Reviewed by Brian Burg.

When recordings are imported, they don't have an associated `WI.Canvas`, meaning that the
`WI.Recording` is never added to the canvas' `WI.RecordingCollection`. Previously, the
canvas sidebar relied upon the `ItemAdded` event to update the recording `WI.ScopeBar`.
Since the imported recording isn't ever added to the collection, this is never fired.

This patch moves the function call that updates the `WI.ScopeBar` to a more universal path,
ensuring that no matter how a `WI.Recording` is set for the sidebar, it will be shown.

* UserInterface/Views/CanvasSidebarPanel.js:
(WI.CanvasSidebarPanel.prototype.set recording):
(WI.CanvasSidebarPanel.prototype._recordingAdded):
(WI.CanvasSidebarPanel.prototype._updateRecordingScopeBar):

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

13 months agoFix bit-rotted Interpreter::dumpRegisters() and move it to the VMInspector.
mark.lam@apple.com [Tue, 28 Aug 2018 23:43:59 +0000 (23:43 +0000)]
Fix bit-rotted Interpreter::dumpRegisters() and move it to the VMInspector.
https://bugs.webkit.org/show_bug.cgi?id=189059
<rdar://problem/40335354>

Reviewed by Saam Barati.

1. Moved Interpreter::dumpRegisters() to VMInspector::dumpRegisters().
2. Added $vm.dumpRegisters().

    Usage: $vm.dumpRegisters(N) // dump the registers of the Nth CallFrame.
    Usage: $vm.dumpRegisters() // dump the registers of the current CallFrame.

   Note: Currently, $vm.dumpRegisters() only dump registers in the physical frame.
   It will treat inlined frames content as registers in the bounding physical frame.

   Here's an example of such a dump on a DFG frame:

        Register frame:

        -----------------------------------------------------------------------------
                    use            |   address  |                value
        -----------------------------------------------------------------------------
        [r 12 arguments[  7]]      | 0x7ffeefbfd330 | 0xa                Undefined
        [r 11 arguments[  6]]      | 0x7ffeefbfd328 | 0x10bbb3e80        Object: 0x10bbb3e80 with butterfly 0x0 (Structure 0x10bbf20d0:[Object, {}, NonArray, Proto:0x10bbb4000]), StructureID: 76
        [r 10 arguments[  5]]      | 0x7ffeefbfd320 | 0xa                Undefined
        [r  9 arguments[  4]]      | 0x7ffeefbfd318 | 0xa                Undefined
        [r  8 arguments[  3]]      | 0x7ffeefbfd310 | 0xa                Undefined
        [r  7 arguments[  2]]      | 0x7ffeefbfd308 | 0xffff0000000a5eaa Int32: 679594
        [r  6 arguments[  1]]      | 0x7ffeefbfd300 | 0x10bbd00f0        Object: 0x10bbd00f0 with butterfly 0x8000f8248 (Structure 0x10bba4700:[Function, {name:100, prototype:101, length:102, Symbol.species:103, isArray:104}, NonArray, Proto:0x10bbd0000, Leaf]), StructureID: 160
        [r  5           this]      | 0x7ffeefbfd2f8 | 0x10bbe0000        Object: 0x10bbe0000 with butterfly 0x8000d8808 (Structure 0x10bb35340:[global, {parseInt:100, parseFloat:101, Object:102, Function:103, Array:104, RegExp:105, RangeError:106, TypeError:107, PrivateSymbol.Object:108, PrivateSymbol.Array:109, ArrayBuffer:110, String:111, Symbol:112, Number:113, Boolean:114, Error:115, Map:116, Set:117, Promise:118, eval:119, Reflect:121, $vm:122, WebAssembly:123, debug:124, describe:125, describeArray:126, print:127, printErr:128, quit:129, gc:130, fullGC:131, edenGC:132, forceGCSlowPaths:133, gcHeapSize:134, addressOf:135, version:136, run:137, runString:138, load:139, loadString:140, readFile:141, read:142, checkSyntax:143, sleepSeconds:144, jscStack:145, readline:146, preciseTime:147, neverInlineFunction:148, noInline:149, noDFG:150, noFTL:151, numberOfDFGCompiles:153, jscOptions:154, optimizeNextInvocation:155, reoptimizationRetryCount:156, transferArrayBuffer:157, failNextNewCodeBlock:158, OSRExit:159, isFinalTier:160, predictInt32:161, isInt32:162, isPureNaN:163, fiatInt52:164, effectful42:165, makeMasquerader:166, hasCustomProperties:167, createGlobalObject:168, dumpTypesForAllVariables:169, drainMicrotasks:170, getRandomSeed:171, setRandomSeed:172, isRope:173, callerSourceOrigin:174, is32BitPlatform:175, loadModule:176, checkModuleSyntax:177, platformSupportsSamplingProfiler:178, generateHeapSnapshot:179, resetSuperSamplerState:180, ensureArrayStorage:181, startSamplingProfiler:182, samplingProfilerStackTraces:183, maxArguments:184, asyncTestStart:185, asyncTestPassed:186, WebAssemblyMemoryMode:187, console:188, $:189, $262:190, waitForReport:191, heapCapacity:192, flashHeapAccess:193, disableRichSourceInfo:194, mallocInALoop:195, totalCompileTime:196, Proxy:197, uneval:198, WScript:199, failWithMessage:200, triggerAssertFalse:201, isNaN:202, isFinite:203, escape:204, unescape:205, decodeURI:206, decodeURIComponent:207, encodeURI:208, encodeURIComponent:209, EvalError:210, ReferenceError:211, SyntaxError:212, URIError:213, JSON:214, Math:215, Int8Array:216, PrivateSymbol.Int8Array:217, Int16Array:218, PrivateSymbol.Int16Array:219, Int32Array:220, PrivateSymbol.Int32Array:221, Uint8Array:222, PrivateSymbol.Uint8Array:223, Uint8ClampedArray:224, PrivateSymbol.Uint8ClampedArray:225, Uint16Array:226, PrivateSymbol.Uint16Array:227, Uint32Array:228, PrivateSymbol.Uint32Array:229, Float32Array:230, PrivateSymbol.Float32Array:231, Float64Array:232, PrivateSymbol.Float64Array:233, DataView:234, Date:235, WeakMap:236, WeakSet:237, Intl:120, desc:238}, NonArray, Proto:0x10bbb4000, UncacheableDictionary, Leaf]), StructureID: 474
        -----------------------------------------------------------------------------
        [ArgumentCount]            | 0x7ffeefbfd2f0 | 7
        [ReturnVPC]                | 0x7ffeefbfd2f0 | 164 (line 57)
        [Callee]                   | 0x7ffeefbfd2e8 | 0x10bb68db0        Object: 0x10bb68db0 with butterfly 0x0 (Structure 0x10bbf1c00:[Function, {}, NonArray, Proto:0x10bbd0000, Shady leaf]), StructureID: 65
        [CodeBlock]                | 0x7ffeefbfd2e0 | 0x10bb2f8e0        __callRandomFunction#DmVXnv:[0x10bb2f8e0->0x10bbfd1e0, LLIntFunctionCall, 253]
        [ReturnPC]                 | 0x7ffeefbfd2d8 | 0x10064d14c
        [CallerFrame]              | 0x7ffeefbfd2d0 | 0x7ffeefbfd380
        -----------------------------------------------------------------------------
        [r -1  CalleeSaveReg]      | 0x7ffeefbfd2c8 | 0xffff000000000002 Int32: 2
        [r -2  CalleeSaveReg]      | 0x7ffeefbfd2c0 | 0xffff000000000000 Int32: 0
        [r -3  CalleeSaveReg]      | 0x7ffeefbfd2b8 | 0x10baf1608
        [r -4               ]      | 0x7ffeefbfd2b0 | 0x10bbcc000        Object: 0x10bbcc000 with butterfly 0x0 (Structure 0x10bbf1960:[JSGlobalLexicalEnvironment, {}, NonArray, Leaf]), StructureID: 59
        [r -5               ]      | 0x7ffeefbfd2a8 | 0x10bbcc000        Object: 0x10bbcc000 with butterfly 0x0 (Structure 0x10bbf1960:[JSGlobalLexicalEnvironment, {}, NonArray, Leaf]), StructureID: 59
        [r -6               ]      | 0x7ffeefbfd2a0 | 0xa                Undefined
        -----------------------------------------------------------------------------
        [r -7]                     | 0x7ffeefbfd298 | 0x10bb6fdc0        String (atomic) (identifier): length, StructureID: 4
        [r -8]                     | 0x7ffeefbfd290 | 0x10bbb7ec0        Object: 0x10bbb7ec0 with butterfly 0x8000e0008 (Structure 0x10bbf2ae0:[Array, {}, ArrayWithContiguous, Proto:0x10bbc8080]), StructureID: 99
        [r -9]                     | 0x7ffeefbfd288 | 0x10bbc33f0        Object: 0x10bbc33f0 with butterfly 0x8000fdda8 (Structure 0x10bbf1dc0:[Function, {name:100, length:101}, NonArray, Proto:0x10bbd0000, Leaf]), StructureID: 69
        [r-10]                     | 0x7ffeefbfd280 | 0xffff000000000004 Int32: 4
        [r-11]                     | 0x7ffeefbfd278 | 0x10bbb4290        Object: 0x10bbb4290 with butterfly 0x8000e8408 (Structure 0x10bb74850:[DollarVM, {abort:100, crash:101, breakpoint:102, dfgTrue:103, ftlTrue:104, cpuMfence:105, cpuRdtsc:106, cpuCpuid:107, cpuPause:108, cpuClflush:109, llintTrue:110, jitTrue:111, noInline:112, gc:113, edenGC:114, callFrame:115, codeBlockFor:116, codeBlockForFrame:117, dumpSourceFor:118, dumpBytecodeFor:119, dataLog:120, print:121, dumpCallFrame:122, dumpStack:123, dumpRegisters:124, dumpCell:125, indexingMode:126, inlineCapacity:127, value:128, getpid:129, createProxy:130, createRuntimeArray:131, createImpureGetter:132, createCustomGetterObject:133, createDOMJITNodeObject:134, createDOMJITGetterObject:135, createDOMJITGetterComplexObject:136, createDOMJITFunctionObject:137, createDOMJITCheckSubClassObject:138, createDOMJITGetterBaseJSObject:139, createBuiltin:140, getPrivateProperty:141, setImpureGetterDelegate:142, Root:143, Element:144, getElement:145, SimpleObject:146, getHiddenValue:147, setHiddenValue:148, shadowChickenFunctionsOnStack:149, setGlobalConstRedeclarationShouldNotThrow:150, findTypeForExpression:151, returnTypeFor:152, flattenDictionaryObject:153, dumpBasicBlockExecutionRanges:154, hasBasicBlockExecuted:155, basicBlockExecutionCount:156, enableDebuggerModeWhenIdle:158, disableDebuggerModeWhenIdle:159, globalObjectCount:160, globalObjectForObject:161, getGetterSetter:162, loadGetterFromGetterSetter:163, createCustomTestGetterSetter:164, deltaBetweenButterflies:165, totalGCTime:166}, NonArray, Proto:0x10bbb4000, Dictionary, Leaf]), StructureID: 306
        [r-12]                     | 0x7ffeefbfd270 | 0x100000001
        [r-13]                     | 0x7ffeefbfd268 | 0x10bbc33f0        Object: 0x10bbc33f0 with butterfly 0x8000fdda8 (Structure 0x10bbf1dc0:[Function, {name:100, length:101}, NonArray, Proto:0x10bbd0000, Leaf]), StructureID: 69
        [r-14]                     | 0x7ffeefbfd260 | 0x0
        [r-15]                     | 0x7ffeefbfd258 | 0x10064d14c
        [r-16]                     | 0x7ffeefbfd250 | 0x7ffeefbfd2d0
        [r-17]                     | 0x7ffeefbfd248 | 0x67ec87ee177      INVALID
        [r-18]                     | 0x7ffeefbfd240 | 0x7ffeefbfd250
        -----------------------------------------------------------------------------

3. Removed dumpCallFrame() from the jsc shell.  We have the following tools that
   we can use in its place:

    $vm.dumpCallFrame()
    $vm.dumpBytecodeFor()
    $vm.dumpRegisters()     // Just added in this patch.

4. Also fixed a bug in BytecodeDumper: it should only access
   CallLinkInfo::haveLastSeenCallee() only if CallLinkInfo::isDirect() is false.

* bytecode/BytecodeDumper.cpp:
(JSC::BytecodeDumper<Block>::printCallOp):
* interpreter/Interpreter.cpp:
(JSC::Interpreter::dumpCallFrame): Deleted.
(JSC::DumpReturnVirtualPCFunctor::DumpReturnVirtualPCFunctor): Deleted.
(JSC::DumpReturnVirtualPCFunctor::operator() const): Deleted.
(JSC::Interpreter::dumpRegisters): Deleted.
* interpreter/Interpreter.h:
* jsc.cpp:
(GlobalObject::finishCreation):
(functionDumpCallFrame): Deleted.
* tools/JSDollarVM.cpp:
(JSC::functionDumpRegisters):
(JSC::JSDollarVM::finishCreation):
* tools/VMInspector.cpp:
(JSC::VMInspector::dumpRegisters):
* tools/VMInspector.h:

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

13 months agoEdditing test expectations from webkit.org/b/188985.
tsavell@apple.com [Tue, 28 Aug 2018 23:40:05 +0000 (23:40 +0000)]
Edditing test expectations from webkit.org/b/188985.
https://bugs.webkit.org/show_bug.cgi?id=188985

Unreviewed test gardening.

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

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

13 months agoWork towards: [iOS] Consolidate the implementations of readString, stringForType...
wenson_hsieh@apple.com [Tue, 28 Aug 2018 23:28:19 +0000 (23:28 +0000)]
Work towards: [iOS] Consolidate the implementations of readString, stringForType, and readURL in PlatformPasteboardIOS.mm
https://bugs.webkit.org/show_bug.cgi?id=189054

Reviewed by Andy Estes.

Source/WebCore:

Remove the pasteboard type argument from PlatformPasteboard::readURL(). Currently, we only ever pass it
"public.url" anyways; for reading other types of strings, readString() already exists, which takes an arbitrary
pasteboard type.

* platform/PasteboardStrategy.h:
* platform/PlatformPasteboard.h:
* platform/ios/PasteboardIOS.mm:
(WebCore::Pasteboard::readPasteboardWebContentDataForType):
(WebCore::Pasteboard::readPlatformValueAsString):
* platform/ios/PlatformPasteboardIOS.mm:
(WebCore::PlatformPasteboard::readURL):

Source/WebKit:

Remove the pasteboard type argument from readURLFromPasteboard.

* UIProcess/Cocoa/WebPasteboardProxyCocoa.mm:
(WebKit::WebPasteboardProxy::readURLFromPasteboard):
* UIProcess/WebPasteboardProxy.h:
* UIProcess/WebPasteboardProxy.messages.in:
* WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
(WebKit::WebPlatformStrategies::readURLFromPasteboard):
* WebProcess/WebCoreSupport/WebPlatformStrategies.h:

Source/WebKitLegacy/mac:

Remove the pasteboard type argument from readURLFromPasteboard.

* WebCoreSupport/WebPlatformStrategies.h:
* WebCoreSupport/WebPlatformStrategies.mm:
(WebPlatformStrategies::readURLFromPasteboard):

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

13 months agoWeb Inspector: Search bar is too narrow in some localizations
drousso@apple.com [Tue, 28 Aug 2018 23:26:58 +0000 (23:26 +0000)]
Web Inspector: Search bar is too narrow in some localizations
https://bugs.webkit.org/show_bug.cgi?id=189060
<rdar://problem/43006369>

Reviewed by Brian Burg.

* UserInterface/Views/Toolbar.css:
(.toolbar .search-bar):

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

13 months agoLayout Test imported/w3c/web-platform-tests/service-workers/cache-storage/window...
david_fenton@apple.com [Tue, 28 Aug 2018 23:20:20 +0000 (23:20 +0000)]
Layout Test imported/w3c/web-platform-tests/service-workers/cache-storage/window/cache-storage-match.https.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=187935

Unreviewed test gardening.

* platform/mac-wk2/TestExpectations:

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

13 months agolldb-webkit: KeyError thrown for OptionSet
dbates@webkit.org [Tue, 28 Aug 2018 23:04:30 +0000 (23:04 +0000)]
lldb-webkit: KeyError thrown for OptionSet
https://bugs.webkit.org/show_bug.cgi?id=189062

Reviewed by Simon Fraser.

For some reason lldb(1) may not retrieve the enumerator names for an enum value
when it calls update() on the synthetic children provider. If this occurs then
bail out as we cannot compute what enumerators are in the set.

* lldb/lldb_webkit.py:
(WTFOptionSetProvider.update):

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

13 months agoRemove assertion introduced in r235413
achristensen@apple.com [Tue, 28 Aug 2018 22:25:38 +0000 (22:25 +0000)]
Remove assertion introduced in r235413
https://bugs.webkit.org/show_bug.cgi?id=188701

* NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::didFinishWithRedirectResponse):
r235413 did not change behavior. The assertion was invalid.

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

13 months agoMove PMurHash.{cpp,h} into 'src' folder to match path on disk
ddkilzer@apple.com [Tue, 28 Aug 2018 22:13:27 +0000 (22:13 +0000)]
Move PMurHash.{cpp,h} into 'src' folder to match path on disk

* ANGLE.xcodeproj/project.pbxproj:
(src/common/third_party/smhasher/src): Add folder and move
PMurHash.{cpp,h} into it.  This makes tidy-Xcode-project-file
run smoothly when updating the ANGLE project.

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

13 months agoRemove references to "APIAttachmentCocoa.h" in WebKit.xcodeproj
wenson_hsieh@apple.com [Tue, 28 Aug 2018 22:05:20 +0000 (22:05 +0000)]
Remove references to "APIAttachmentCocoa.h" in WebKit.xcodeproj
Follow-up to https://bugs.webkit.org/show_bug.cgi?id=188933

Rubber-stamped by David Kilzer.

This header was not removed from the Xcode project file after being deleted.

* WebKit.xcodeproj/project.pbxproj:

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

13 months agoMoving test expectations for webkit.org/b/188985 from mac-wk2 to General test expecta...
tsavell@apple.com [Tue, 28 Aug 2018 21:30:46 +0000 (21:30 +0000)]
Moving test expectations for webkit.org/b/188985 from mac-wk2 to General test expectations due to failing on iOS.
https://bugs.webkit.org/show_bug.cgi?id=188985

Unreviewed test gardening.

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

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

13 months agoAdd error information to help debug test failure in WKNavigation.ProcessCrashDuringCa...
sihui_liu@apple.com [Tue, 28 Aug 2018 21:26:22 +0000 (21:26 +0000)]
Add error information to help debug test failure in WKNavigation.ProcessCrashDuringCallback
https://bugs.webkit.org/show_bug.cgi?id=189037

Reviewed by Chris Dumez.

Source/WebKit:

* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _getMainResourceDataWithCompletionHandler:]):
(-[WKWebView _getWebArchiveDataWithCompletionHandler:]):
(-[WKWebView _getContentsAsStringWithCompletionHandler:]):

Tools:

* TestWebKitAPI/Tests/WebKitCocoa/WebContentProcessDidTerminate.mm:
(TEST):

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

13 months agoFix incorrect use of `sourceTree = "<group>";` for built products and frameworks...
ddkilzer@apple.com [Tue, 28 Aug 2018 21:02:34 +0000 (21:02 +0000)]
Fix incorrect use of `sourceTree = "<group>";` for built products and frameworks in Xcode projects

Found by tidy-Xcode-project-file script (see Bug 188754).

* DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
(IOKit.framework): Use `sourceTree = "<absolute>";` to match
other frameworks in the project.
* MobileMiniBrowser/MobileMiniBrowser.xcodeproj/project.pbxproj:
(WebKit.framework): Use `sourceTree = BUILT_PRODUCTS_DIR;` for
built product instead of relative build directory path.
* jsc-cli/jsc-cli.xcodeproj/project.pbxproj:
(JavaScriptCore.framework): Ditto.
* lldb/lldbWebKitTester/lldbWebKitTester.xcodeproj/project.pbxproj:
(libWTF.a): Ditto.

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

13 months agoMediaDevices should be collectable as soon as its document is stopped
youenn@apple.com [Tue, 28 Aug 2018 20:53:17 +0000 (20:53 +0000)]
MediaDevices should be collectable as soon as its document is stopped
https://bugs.webkit.org/show_bug.cgi?id=189021

Reviewed by Eric Carlson.

Source/WebCore:

Introduce ActiveDOMObject::isContextStopped to check whether the context is stopped.
Use this check in MediaDevices::hasPendingActivity so that it returns false as soon as active dom objects are stopped.

Test: http/tests/media/collect-media-devices.https.html

* Modules/mediastream/MediaDevices.cpp:
(WebCore::MediaDevices::hasPendingActivity const):
* dom/ActiveDOMObject.cpp:
(WebCore::ActiveDOMObject::hasPendingActivity const):
(WebCore::ActiveDOMObject::isContextStopped const):
* dom/ActiveDOMObject.h:

LayoutTests:

* http/tests/media/media-stream/collect-media-devices.https-expected.txt: Added.
* http/tests/media/media-stream/collect-media-devices.https.html: Added.
* http/tests/media/media-stream/resources/mymediadevicesframe.htm: Added.

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

13 months ago[Curl] Fix issue that extra cookie is added when redirect happens.
Basuke.Suzuki@sony.com [Tue, 28 Aug 2018 20:50:19 +0000 (20:50 +0000)]
[Curl] Fix issue that extra cookie is added when redirect happens.
https://bugs.webkit.org/show_bug.cgi?id=187874

Reviewed by Alex Christensen.

Source/WebCore:

When initial request has cookie set and redirect happens, it add extra Cookie header to that
abd request was broken. Just stop modifying the original request by passing a value.

Test: http/tests/cookies/multiple-redirect-and-set-cookie.php

* platform/network/ResourceHandle.h:
* platform/network/curl/ResourceHandleCurl.cpp:
(WebCore::ResourceHandle::createCurlRequest):

Source/WebKit:

When initial request has cookie set and redirect happens, it add extra Cookie header to that
abd request was broken. Just stop modifying the original request by passing a value.

* NetworkProcess/curl/NetworkDataTaskCurl.cpp:
(WebKit::NetworkDataTaskCurl::createCurlRequest):
(WebKit::NetworkDataTaskCurl::willPerformHTTPRedirection):
(WebKit::NetworkDataTaskCurl::restartWithCredential):
* NetworkProcess/curl/NetworkDataTaskCurl.h:

LayoutTests:

* http/tests/cookies/multiple-redirect-and-set-cookie-expected.txt: Added.
* http/tests/cookies/multiple-redirect-and-set-cookie.php: Added.

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

13 months agoAdd nullablity attributes to JSValue
keith_miller@apple.com [Tue, 28 Aug 2018 20:00:35 +0000 (20:00 +0000)]
Add nullablity attributes to JSValue
https://bugs.webkit.org/show_bug.cgi?id=189047

Reviewed by Dan Bernstein.

Switch to using NS_ASSUME_NONNULL_BEGIN/END.

* API/JSValue.h:

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

13 months ago[macOS] Color wells should appear rounded and textured
akeerthi@apple.com [Tue, 28 Aug 2018 18:56:37 +0000 (18:56 +0000)]
[macOS] Color wells should appear rounded and textured
https://bugs.webkit.org/show_bug.cgi?id=189039

Reviewed by Tim Horton.

Source/WebCore:

Color wells should have a rounded and textured appearance on macOS. We can use
NSBezelStyleTexturedSquare to achieve this appearance.

Also updated the user-agent stylesheet to match the system appearance.

Rebaselined existing test: fast/forms/color/input-appearance-color.html

* css/html.css:
(input[type="color"]::-webkit-color-swatch-wrapper):
(input[type="color"]::-webkit-color-swatch):
* platform/mac/ThemeMac.mm:
(WebCore::setUpButtonCell):
* rendering/RenderThemeMac.h: Build fix.

Source/WebKit:

* UIProcess/mac/WebColorPickerMac.mm: Build fix.

LayoutTests:

Rebaseline tests to match new color-well appearance.

* platform/mac/fast/forms/color/input-appearance-color-expected.png:
* platform/mac/fast/forms/color/input-appearance-color-expected.txt:

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

13 months agoFix 32-bit Mac build.
achristensen@apple.com [Tue, 28 Aug 2018 18:37:46 +0000 (18:37 +0000)]
Fix 32-bit Mac build.

* TestWebKitAPI/Tests/WebKitCocoa/RestoreSessionStateWithoutNavigation.mm:

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

13 months agoREGRESSION (r235391): [iOS] TestWebKitAPI.WebKit.RestoreSessionStateWithoutNavigation...
achristensen@apple.com [Tue, 28 Aug 2018 18:29:13 +0000 (18:29 +0000)]
REGRESSION (r235391): [iOS] TestWebKitAPI.WebKit.RestoreSessionStateWithoutNavigation is timing out
https://bugs.webkit.org/show_bug.cgi?id=189050

Reviewed by Tim Horton.

* TestWebKitAPI/Tests/WebKitCocoa/RestoreSessionStateWithoutNavigation.mm:
This test wasn't run on iOS before.  Let's re-introduce the WK_HAVE_C_SPI guard.

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

13 months agoAdd nullablity attributes to JSValue
keith_miller@apple.com [Tue, 28 Aug 2018 18:11:23 +0000 (18:11 +0000)]
Add nullablity attributes to JSValue
https://bugs.webkit.org/show_bug.cgi?id=189047

Reviewed by Geoffrey Garen.

* API/JSValue.h:

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

13 months ago[iOS] WKAttachmentTests.DropFolderAsAttachmentAndMoveByDragging encounters an excepti...
wenson_hsieh@apple.com [Tue, 28 Aug 2018 18:04:54 +0000 (18:04 +0000)]
[iOS] WKAttachmentTests.DropFolderAsAttachmentAndMoveByDragging encounters an exception on iOS simulator
https://bugs.webkit.org/show_bug.cgi?id=189049

Reviewed by Tim Horton.

Wrap an NSURL in a RetainPtr to prevent it from being freed prematurely. It seems this broke when I changed the
load handler from an Objective-C block that captured `folderURL` to a C++ lambda that didn't retain `folderURL`.

* TestWebKitAPI/Tests/WebKitCocoa/WKAttachmentTests.mm:
(simulateFolderDragWithURL):

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

13 months agoReenable -Wexit-time-destructors -and Wglobal-constructors in libwebrtc
youenn@apple.com [Tue, 28 Aug 2018 18:00:45 +0000 (18:00 +0000)]
Reenable -Wexit-time-destructors -and Wglobal-constructors in libwebrtc
https://bugs.webkit.org/show_bug.cgi?id=189036

Reviewed by Geoffrey Garen.

Renable these compilation warnings and introduce rtc::NeverDestroyed as helper.

* Configurations/Base.xcconfig:
* Source/webrtc/modules/audio_processing/agc2/rnn_vad/spectral_features_internal.cc:
* Source/webrtc/modules/congestion_controller/bbr/bbr_network_controller.cc:
* Source/webrtc/modules/congestion_controller/goog_cc/goog_cc_network_control.cc:
* Source/webrtc/pc/peerconnection.cc:
* Source/webrtc/rtc_base/flags.h:
* Source/webrtc/rtc_base/logging.cc:
* Source/webrtc/rtc_base/never_destroyed.h: Added.
(rtc::NeverDestroyed::NeverDestroyed):
(rtc::NeverDestroyed::operator T&):
(rtc::NeverDestroyed::get):
(rtc::NeverDestroyed::operator const T& const):
(rtc::NeverDestroyed::get const):
(rtc::NeverDestroyed::storagePointer const):
(rtc::makeNeverDestroyed):
* Source/webrtc/rtc_base/virtualsocketserver.cc:
* Source/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCVideoCodec.mm:
* Source/webrtc/system_wrappers/source/clock.cc:
* Source/webrtc/system_wrappers/source/runtime_enabled_features_default.cc:
* libwebrtc.xcodeproj/project.pbxproj:

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

13 months agoWebKitMediaSession should be GC collectable when its document is being stopped
youenn@apple.com [Tue, 28 Aug 2018 18:00:00 +0000 (18:00 +0000)]
WebKitMediaSession should be GC collectable when its document is being stopped
https://bugs.webkit.org/show_bug.cgi?id=189016

Reviewed by Eric Carlson.

Source/WebCore:

Make sure WebKitMediaSession is  collectable after its document is stopped.
This is done by nullifying m_session when calling close.
This way hasPendingActivity() returns false when stop() is called.

Test: http/tests/media/clearkey/collect-webkit-media-session.html

* Modules/encryptedmedia/legacy/WebKitMediaKeySession.cpp:
(WebCore::WebKitMediaKeySession::WebKitMediaKeySession):
(WebCore::WebKitMediaKeySession::close):
* Modules/encryptedmedia/legacy/WebKitMediaKeySession.h:

LayoutTests:

* http/tests/media/clearkey/collect-webkit-media-session-expected.txt: Added.
* http/tests/media/clearkey/collect-webkit-media-session.html: Added.
* http/tests/media/clearkey/resources/mywebkitmediasessionframe.htm: Added.

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

13 months ago[IntersectionObserver] Fix build after r235424
ajuma@chromium.org [Tue, 28 Aug 2018 17:53:15 +0000 (17:53 +0000)]
[IntersectionObserver] Fix build after r235424
https://bugs.webkit.org/show_bug.cgi?id=189051

Rubber-stamped by Simon Fraser.

Fix unused variable warning by using the variable.

* page/FrameView.cpp:
(WebCore::FrameView::viewportContentsChanged):

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

13 months ago[Datalist] Pressing enter without a selected option shouldn't change the input
akeerthi@apple.com [Tue, 28 Aug 2018 17:02:56 +0000 (17:02 +0000)]
[Datalist] Pressing enter without a selected option shouldn't change the input
https://bugs.webkit.org/show_bug.cgi?id=189010

Reviewed by Tim Horton.

Source/WebKit:

Currently, the value of an input field gets cleared if there is no selected
datalist suggestion when the enter key is pressed. The correct behavior is to
leave the value of the input as-is.

The incorrect behavior is a consequence of the fact that an empty string is
returned by [WKDataListSuggestionsView currentSelectedString] if there is no
selection. To fix the behavior, the method now returns an std::optional instead
of an empty string. If std::nullopt is returned, we do not make any modification
to the value of the input. This ensures that we can still change the value of
an input field to an empty string in the case that an empty string is part of
the suggestions.

Augmented test: fast/forms/datalist/datalist-textinput-keydown.html

* UIProcess/mac/WebDataListSuggestionsDropdownMac.mm:
(WebKit::WebDataListSuggestionsDropdownMac::selectOption):
(-[WKDataListSuggestionCell drawRect:]): Quick fix. The mouseover color was incorrect.
(-[WKDataListSuggestionsView currentSelectedString]):

LayoutTests:

Augmented test to verify that pressing enter when there is no selected datalist
suggestion does not change the value of the input field.

* fast/forms/datalist/datalist-textinput-keydown-expected.txt:
* fast/forms/datalist/datalist-textinput-keydown.html:

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

13 months ago[iOS] Support inputmode=none
akeerthi@apple.com [Tue, 28 Aug 2018 16:34:25 +0000 (16:34 +0000)]
[iOS] Support inputmode=none
https://bugs.webkit.org/show_bug.cgi?id=188896

Reviewed by Tim Horton.

LayoutTests/imported/w3c:

* web-platform-tests/html/dom/reflection-misc-expected.txt: Rebaseline.

Source/WebCore:

Updated InputMode.cpp to ensure that "none" is recognized as a valid value for the
inputmode attribute. This keyword is useful for content that renders its own
keyboard control.

Spec: https://html.spec.whatwg.org/multipage/interaction.html#input-modalities%3A-the-inputmode-attribute

Test: fast/forms/ios/inputmode-none.html

* html/InputMode.cpp:
(WebCore::inputModeForAttributeValue):
(WebCore::stringForInputMode):
(WebCore::InputModeNames::none):
* html/InputMode.h:

Source/WebKit:

inputmode=none is used by content that renders its own keyboard control.
Consequently, we should not display the virtual keyboard when a user interacts
with an element that has the inputmode attribute set to the "none" value.

In order to achieve this behavior, we return a UIView with a bounds of CGRectZero
as the inputView of the WKContentView when inputmode=none is present. Furthermore,
we do not provide an accessory view in this case.

Updated the logic that zooms and scrolls to a control when it gains focus, as that
behavior currently relies on an accessory view being present.

* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _displayFormNodeInputView]):
(-[WKContentView inputView]):
(-[WKContentView requiresAccessoryView]):
(-[WKContentView textInputTraits]):

LayoutTests:

Added new test to verify that the system keyboard does not show for inputs with
inputmode=none. Updated existing inputmode tests to reflect the addition of the
"none" value.

* fast/forms/inputmode-attribute-contenteditable-expected.txt:
* fast/forms/inputmode-attribute-contenteditable.html:
* fast/forms/inputmode-attribute-input-expected.txt:
* fast/forms/inputmode-attribute-input.html:
* fast/forms/inputmode-attribute-textarea-expected.txt:
* fast/forms/inputmode-attribute-textarea.html:
* fast/forms/ios/inputmode-none-expected.txt: Added.
* fast/forms/ios/inputmode-none.html: Added.
* resources/ui-helper.js:
(window.UIHelper.activateFormControl):
(window.UIHelper.inputViewBounds):

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

13 months agoMore results.html cleanup
simon.fraser@apple.com [Tue, 28 Aug 2018 15:51:55 +0000 (15:51 +0000)]
More results.html cleanup
https://bugs.webkit.org/show_bug.cgi?id=189038

Reviewed by Zalan Bujtas.

Use a map of table-id to SectionBuilderClass to drive the table builder class selection,
rather than hardcoding the builder class; this will allow for SectionBuilders to stay alive
longer in future, so they can be used to build the expanded state of each row.

Refactor the code that generates the expand link and test name, to de-duplicate some HTML strings,
and let SectionBuilders control whether their rows are expandable and test names linkifyable.

Put a "data-test-name" attribute on each row so we can easily map from HTML elements to
TestResults in future.

The test result change is a progression; there is nothing to show for a test with missing results,
so the row should not be expandable.

* fast/harness/results-expected.txt:
* fast/harness/results.html:

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

13 months ago[IntersectionObserver] Schedule intersection observation updates
ajuma@chromium.org [Tue, 28 Aug 2018 15:45:32 +0000 (15:45 +0000)]
[IntersectionObserver] Schedule intersection observation updates
https://bugs.webkit.org/show_bug.cgi?id=189007

Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

Rebaseline tests that now pass.

* web-platform-tests/intersection-observer/bounding-box-expected.txt:
* web-platform-tests/intersection-observer/containing-block-expected.txt:
* web-platform-tests/intersection-observer/remove-element-expected.txt:
* web-platform-tests/intersection-observer/same-document-root-expected.txt:
* web-platform-tests/intersection-observer/unclipped-root-expected.txt:

Source/WebCore:

Schedule intersection observation updates in the following situations:
1) A new observation target is added.
2) FrameView::viewportContentsChanged -- this covers changes to layout and
   to scroll positions for same-document observation. Scheduling for
   cross-document observation will be handled in a future patch.
3) Style is resolved without triggering layout -- this handles updates that
   were deferred because of a pending style recalculation.

Tested by existing tests in imported/w3c/web-platform-tests/intersection-observer.

* dom/Document.cpp:
(WebCore::Document::resolveStyle):
(WebCore::Document::updateIntersectionObservations):
(WebCore::Document::scheduleIntersectionObservationUpdate):
* dom/Document.h:
* page/FrameView.cpp:
(WebCore::FrameView::viewportContentsChanged):
* page/IntersectionObserver.cpp:
(WebCore::IntersectionObserver::observe):

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

13 months ago[LFC][Floating] Remove redundant FloatAvoider functions.
zalan@apple.com [Tue, 28 Aug 2018 15:01:37 +0000 (15:01 +0000)]
[LFC][Floating] Remove redundant FloatAvoider functions.
https://bugs.webkit.org/show_bug.cgi?id=189035

Reviewed by Antti Koivisto.

and move some code from FloatContext to FloatAvoider.

* layout/floats/FloatAvoider.cpp:
(WebCore::Layout::FloatAvoider::initializePosition):
(WebCore::Layout::FloatAvoider::rect const):
(WebCore::Layout::FloatAvoider::setVerticalConstraint):
(WebCore::Layout::FloatAvoider::setHorizontalConstraints):
(WebCore::Layout::FloatAvoider::resetHorizontalConstraint):
(WebCore::Layout::FloatAvoider::initialVerticalPosition const):
(WebCore::Layout::FloatAvoider::initialHorizontalPosition const):
(WebCore::Layout::FloatAvoider::rectInContainingBlock const):
(WebCore::Layout::FloatAvoider::setLeft): Deleted.
(WebCore::Layout::FloatAvoider::setTopLeft): Deleted.
(WebCore::Layout::FloatAvoider::resetVertically): Deleted.
(WebCore::Layout::FloatAvoider::resetHorizontally): Deleted.
(WebCore::Layout::FloatAvoider::topLeftInContainingBlock const): Deleted.
* layout/floats/FloatAvoider.h:
(WebCore::Layout::FloatAvoider::top const): Deleted.
(WebCore::Layout::FloatAvoider::left const): Deleted.
(WebCore::Layout::FloatAvoider::marginTop const): Deleted.
(WebCore::Layout::FloatAvoider::marginLeft const): Deleted.
(WebCore::Layout::FloatAvoider::marginBottom const): Deleted.
(WebCore::Layout::FloatAvoider::marginRight const): Deleted.
(WebCore::Layout::FloatAvoider::rectWithMargin const): Deleted.
(WebCore::Layout::FloatAvoider::setTop): Deleted.
* layout/floats/FloatingContext.cpp:
(WebCore::Layout::FloatingContext::positionForFloat const):
(WebCore::Layout::FloatingContext::floatingPosition const):
(WebCore::Layout::FloatingPair::horizontalConstraints const):
(WebCore::Layout::FloatingPair::horiztonalPosition const): Deleted.

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

13 months agoRevert changes to RealtimeMediaSource.cpp made in r235086
eric.carlson@apple.com [Tue, 28 Aug 2018 13:29:36 +0000 (13:29 +0000)]
Revert changes to RealtimeMediaSource.cpp made in r235086
https://bugs.webkit.org/show_bug.cgi?id=189046
<rdar://problem/43794875>

Unreviewed, reverting an accidental change.

* platform/mediastream/RealtimeMediaSource.cpp:
(WebCore::RealtimeMediaSource::supportsSizeAndFrameRate):

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

13 months agoFix gcc compilation warnings after r235230
commit-queue@webkit.org [Tue, 28 Aug 2018 07:49:14 +0000 (07:49 +0000)]
Fix gcc compilation warnings after r235230
https://bugs.webkit.org/show_bug.cgi?id=188981

Patch by Alejandro G. Castro <alex@igalia.com> on 2018-08-28
Reviewed by Eric Carlson.

Replace the pragma clang with pragma GCC, it is understood by
clang and gcc.

* Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.h:
* Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h:
* platform/mediastream/RealtimeIncomingAudioSource.h:
* platform/mediastream/RealtimeIncomingVideoSource.h:
* platform/mediastream/RealtimeOutgoingAudioSource.h:
* platform/mediastream/RealtimeOutgoingVideoSource.h:
* platform/mediastream/libwebrtc/LibWebRTCAudioModule.h:
* platform/mediastream/libwebrtc/LibWebRTCProvider.cpp:
* platform/mediastream/libwebrtc/LibWebRTCProvider.h:
* testing/MockLibWebRTCPeerConnection.h:

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

13 months ago[WebAssembly] Parse wasm modules in a streaming fashion
yusukesuzuki@slowstart.org [Tue, 28 Aug 2018 06:38:29 +0000 (06:38 +0000)]
[WebAssembly] Parse wasm modules in a streaming fashion
https://bugs.webkit.org/show_bug.cgi?id=188943

Reviewed by Mark Lam.

JSTests:

Wasm parsing error should not report the total byte size since streaming parsing does not
want to load all the bytes.
Add a simple test wasm/stress/streaming-basic.js for initial streaming parsing implementation.

* wasm/function-tests/invalid-duplicate-export.js:
* wasm/function-tests/memory-alignment.js:
(const.op.of.WASM.opcodes):
* wasm/function-tests/memory-section-and-import.js:
* wasm/function-tests/void-argument-type-should-be-a-validation-error.js:
* wasm/js-api/Module-compile.js:
(async.testPromiseAPI):
* wasm/js-api/element.js:
(assert.throws.new.WebAssembly.Module.builder.WebAssembly):
(assert.throws):
* wasm/js-api/global-error.js:
(assert.throws.new.WebAssembly.Module.bin):
(assert.throws):
* wasm/js-api/table.js:
(new.WebAssembly.Module):
(assert.throws):
(assertBadTableImport):
* wasm/js-api/test_Data.js:
(DataSectionWithoutMemory):
* wasm/js-api/test_Start.js:
(InvalidStartFunctionIndex):
* wasm/js-api/test_basic_api.js:
(const.c.in.constructorProperties.switch):
* wasm/js-api/version.js:
* wasm/stress/nameSection.wasm: Added.
* wasm/stress/streaming-basic.js: Added.
(check):

Source/JavaScriptCore:

This patch adds Wasm::StreamingParser, which parses wasm binary in a streaming fashion.
Currently, this StreamingParser is not enabled and integrated. In subsequent patches,
we start integrating it into BBQPlan and dropping the old ModuleParser.

* JavaScriptCore.xcodeproj/project.pbxproj:
* Sources.txt:
* tools/JSDollarVM.cpp:
(WTF::WasmStreamingParser::WasmStreamingParser):
(WTF::WasmStreamingParser::create):
(WTF::WasmStreamingParser::createStructure):
(WTF::WasmStreamingParser::streamingParser):
(WTF::WasmStreamingParser::finishCreation):
(WTF::functionWasmStreamingParserAddBytes):
(WTF::functionWasmStreamingParserFinalize):
(JSC::functionCreateWasmStreamingParser):
(JSC::JSDollarVM::finishCreation):
The $vm Wasm::StreamingParser object is introduced for testing purpose. Added new stress test uses
this interface to test streaming parser in the JSC shell.

* wasm/WasmBBQPlan.cpp:
(JSC::Wasm::BBQPlan::BBQPlan):
(JSC::Wasm::BBQPlan::parseAndValidateModule):
(JSC::Wasm::BBQPlan::prepare):
(JSC::Wasm::BBQPlan::compileFunctions):
(JSC::Wasm::BBQPlan::complete):
(JSC::Wasm::BBQPlan::work):
* wasm/WasmBBQPlan.h:
BBQPlan has m_source, but once ModuleInformation is parsed, it is no longer necessary.
In subsequent patches, we will remove this, and stream the data into the BBQPlan.

* wasm/WasmFormat.h:
* wasm/WasmModuleInformation.cpp:
(JSC::Wasm::ModuleInformation::ModuleInformation):
* wasm/WasmModuleInformation.h:
One of the largest change in this patch is that ModuleInformation no longer holds source bytes,
since source bytes can be added in a streaming fashion. Instead of holding all the source bytes
in ModuleInformation, each function (ModuleInformation::functions, FunctionData) should have
Vector<uint8_t> for its data. This data is eventually filled by StreamingParser, and compiling
a function with this data can be done concurrently with StreamingParser.

(JSC::Wasm::ModuleInformation::create):
(JSC::Wasm::ModuleInformation::memoryCount const):
(JSC::Wasm::ModuleInformation::tableCount const):
memoryCount and tableCount should be recorded in ModuleInformation.

* wasm/WasmModuleParser.cpp:
(JSC::Wasm::ModuleParser::parse):
(JSC::Wasm::makeI32InitExpr): Deleted.
(JSC::Wasm::ModuleParser::parseType): Deleted.
(JSC::Wasm::ModuleParser::parseImport): Deleted.
(JSC::Wasm::ModuleParser::parseFunction): Deleted.
(JSC::Wasm::ModuleParser::parseResizableLimits): Deleted.
(JSC::Wasm::ModuleParser::parseTableHelper): Deleted.
(JSC::Wasm::ModuleParser::parseTable): Deleted.
(JSC::Wasm::ModuleParser::parseMemoryHelper): Deleted.
(JSC::Wasm::ModuleParser::parseMemory): Deleted.
(JSC::Wasm::ModuleParser::parseGlobal): Deleted.
(JSC::Wasm::ModuleParser::parseExport): Deleted.
(JSC::Wasm::ModuleParser::parseStart): Deleted.
(JSC::Wasm::ModuleParser::parseElement): Deleted.
(JSC::Wasm::ModuleParser::parseCode): Deleted.
(JSC::Wasm::ModuleParser::parseInitExpr): Deleted.
(JSC::Wasm::ModuleParser::parseGlobalType): Deleted.
(JSC::Wasm::ModuleParser::parseData): Deleted.
(JSC::Wasm::ModuleParser::parseCustom): Deleted.
Extract section parsing code out from ModuleParser. We create SectionParser and ModuleParser uses it.
SectionParser is also used by StreamingParser.

* wasm/WasmModuleParser.h:
(): Deleted.
* wasm/WasmNameSection.h:
(JSC::Wasm::NameSection::NameSection):
(JSC::Wasm::NameSection::create):
(JSC::Wasm::NameSection::setHash):
Hash calculation is deferred since all the source is not available in streaming parsing.

* wasm/WasmNameSectionParser.cpp:
(JSC::Wasm::NameSectionParser::parse):
* wasm/WasmNameSectionParser.h:
Use Ref<NameSection>.

* wasm/WasmOMGPlan.cpp:
(JSC::Wasm::OMGPlan::work):
Wasm::Plan no longer have m_source since data will be eventually filled in a streaming fashion.
OMGPlan can get data of the function by using ModuleInformation::functions.

* wasm/WasmParser.h:
(JSC::Wasm::Parser::source const):
(JSC::Wasm::Parser::length const):
(JSC::Wasm::Parser::offset const):
(JSC::Wasm::Parser::fail const):
(JSC::Wasm::makeI32InitExpr):
* wasm/WasmPlan.cpp:
(JSC::Wasm::Plan::Plan):
Wasm::Plan should not have all the source apriori. Streamed data will be pumped from the provider.

* wasm/WasmPlan.h:
* wasm/WasmSectionParser.cpp: Copied from Source/JavaScriptCore/wasm/WasmModuleParser.cpp.
SectionParser is extracted from ModuleParser. And it is used by both the old (currently working)
ModuleParser and the new StreamingParser.

(JSC::Wasm::SectionParser::parseType):
(JSC::Wasm::SectionParser::parseImport):
(JSC::Wasm::SectionParser::parseFunction):
(JSC::Wasm::SectionParser::parseResizableLimits):
(JSC::Wasm::SectionParser::parseTableHelper):
(JSC::Wasm::SectionParser::parseTable):
(JSC::Wasm::SectionParser::parseMemoryHelper):
(JSC::Wasm::SectionParser::parseMemory):
(JSC::Wasm::SectionParser::parseGlobal):
(JSC::Wasm::SectionParser::parseExport):
(JSC::Wasm::SectionParser::parseStart):
(JSC::Wasm::SectionParser::parseElement):
(JSC::Wasm::SectionParser::parseCode):
(JSC::Wasm::SectionParser::parseInitExpr):
(JSC::Wasm::SectionParser::parseGlobalType):
(JSC::Wasm::SectionParser::parseData):
(JSC::Wasm::SectionParser::parseCustom):
* wasm/WasmSectionParser.h: Copied from Source/JavaScriptCore/wasm/WasmModuleParser.h.
* wasm/WasmStreamingParser.cpp: Added.
(JSC::Wasm::parseUInt7):
(JSC::Wasm::StreamingParser::fail):
(JSC::Wasm::StreamingParser::StreamingParser):
(JSC::Wasm::StreamingParser::parseModuleHeader):
(JSC::Wasm::StreamingParser::parseSectionID):
(JSC::Wasm::StreamingParser::parseSectionSize):
(JSC::Wasm::StreamingParser::parseCodeSectionSize):
Code section in Wasm binary is specially handled compared with the other sections since it includes
a bunch of functions. StreamingParser extracts each function in a streaming fashion and enable
streaming validation / compilation of Wasm functions.

(JSC::Wasm::StreamingParser::parseFunctionSize):
(JSC::Wasm::StreamingParser::parseFunctionPayload):
(JSC::Wasm::StreamingParser::parseSectionPayload):
(JSC::Wasm::StreamingParser::consume):
(JSC::Wasm::StreamingParser::consumeVarUInt32):
(JSC::Wasm::StreamingParser::addBytes):
(JSC::Wasm::StreamingParser::failOnState):
(JSC::Wasm::StreamingParser::finalize):
* wasm/WasmStreamingParser.h: Added.
(JSC::Wasm::StreamingParser::addBytes):
(JSC::Wasm::StreamingParser::errorMessage const):
This is our new StreamingParser implementation. StreamingParser::consumeXXX functions get data, and
StreamingParser::parseXXX functions parse consumed data. The user of StreamingParser calls
StreamingParser::addBytes() to pump the bytes stream into the parser. And once all the data is pumped,
the user calls StreamingParser::finalize. StreamingParser is a state machine which feeds on the
incoming byte stream.

* wasm/js/JSWebAssemblyModule.cpp:
(JSC::JSWebAssemblyModule::source const): Deleted.
All the source should not be held.

* wasm/js/JSWebAssemblyModule.h:
* wasm/js/WebAssemblyPrototype.cpp:
(JSC::webAssemblyValidateFunc):

Source/WTF:

Add maxByteLength function to get the maximum size for T.

* wtf/LEBDecoder.h:
(WTF::LEBDecoder::maxByteLength):
(WTF::LEBDecoder::decodeUInt):
(WTF::LEBDecoder::decodeInt):

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

13 months agoFix exception throwing code so that topCallFrame and topEntryFrame stay true to their...
mark.lam@apple.com [Tue, 28 Aug 2018 05:01:05 +0000 (05:01 +0000)]
Fix exception throwing code so that topCallFrame and topEntryFrame stay true to their names.
https://bugs.webkit.org/show_bug.cgi?id=188577
<rdar://problem/42985684>

Reviewed by Saam Barati.

JSTests:

* stress/regress-188577.js: Added.

Source/JavaScriptCore:

1. Introduced CallFrame::convertToStackOverflowFrame() which converts the current
   (top) CallFrame (which may not have a valid callee) into a StackOverflowFrame.

   The StackOverflowFrame is a sentinel frame that the low level code (exception
   throwing code, stack visitor, and stack unwinding code) will know to skip
   over.  The StackOverflowFrame will also have a valid JSCallee so that client
   code can compute the globalObject or VM from this frame.

   As a result, client code that throws StackOverflowErrors no longer need to
   compute the caller frame to throw from: it just converts the top frame into
   a StackOverflowFrame and everything should *Just Work*.

2. NativeCallFrameTracerWithRestore is now obsolete.

   Instead, client code should always call convertToStackOverflowFrame() on the
   frame before instantiating a NativeCallFrameTracer with it.

   This means that topCallFrame will always point to the top CallFrame (which
   may be a StackOverflowFrame), and topEntryFrame will always point to the top
   EntryFrame.  We'll never temporarily point them to the previous EntryFrame
   (which we used to do with NativeCallFrameTracerWithRestore).

3. genericUnwind() and Interpreter::unwind() will now always unwind from the top
   CallFrame, and will know how to handle a StackOverflowFrame if they see one.

   This obsoletes the UnwindStart flag.

* CMakeLists.txt:
* JavaScriptCore.xcodeproj/project.pbxproj:
* Sources.txt:
* debugger/Debugger.cpp:
(JSC::Debugger::pauseIfNeeded):
* interpreter/CallFrame.cpp:
(JSC::CallFrame::callerFrame const):
(JSC::CallFrame::unsafeCallerFrame const):
(JSC::CallFrame::convertToStackOverflowFrame):
(JSC::CallFrame::callerFrame): Deleted.
(JSC::CallFrame::unsafeCallerFrame): Deleted.
* interpreter/CallFrame.h:
(JSC::ExecState::iterate):
* interpreter/CallFrameInlines.h: Added.
(JSC::CallFrame::isStackOverflowFrame const):
(JSC::CallFrame::isWasmFrame const):
* interpreter/EntryFrame.h: Added.
(JSC::EntryFrame::vmEntryRecordOffset):
(JSC::EntryFrame::calleeSaveRegistersBufferOffset):
* interpreter/FrameTracers.h:
(JSC::NativeCallFrameTracerWithRestore::NativeCallFrameTracerWithRestore): Deleted.
(JSC::NativeCallFrameTracerWithRestore::~NativeCallFrameTracerWithRestore): Deleted.
* interpreter/Interpreter.cpp:
(JSC::Interpreter::unwind):
* interpreter/Interpreter.h:
* interpreter/StackVisitor.cpp:
(JSC::StackVisitor::StackVisitor):
* interpreter/StackVisitor.h:
(JSC::StackVisitor::visit):
(JSC::StackVisitor::topEntryFrameIsEmpty const):
* interpreter/VMEntryRecord.h:
(JSC::VMEntryRecord::callee const):
(JSC::EntryFrame::vmEntryRecordOffset): Deleted.
(JSC::EntryFrame::calleeSaveRegistersBufferOffset): Deleted.
* jit/AssemblyHelpers.h:
* jit/JITExceptions.cpp:
(JSC::genericUnwind):
* jit/JITExceptions.h:
* jit/JITOperations.cpp:
* llint/LLIntOffsetsExtractor.cpp:
* llint/LLIntSlowPaths.cpp:
(JSC::LLInt::LLINT_SLOW_PATH_DECL):
* llint/LowLevelInterpreter.asm:
* llint/LowLevelInterpreter32_64.asm:
* llint/LowLevelInterpreter64.asm:
* runtime/CallData.cpp:
* runtime/CommonSlowPaths.cpp:
(JSC::throwArityCheckStackOverflowError):
(JSC::SLOW_PATH_DECL):
* runtime/CommonSlowPathsExceptions.cpp: Removed.
* runtime/CommonSlowPathsExceptions.h: Removed.
* runtime/Completion.cpp:
(JSC::evaluateWithScopeExtension):
* runtime/JSGeneratorFunction.h:
* runtime/JSGlobalObject.cpp:
(JSC::JSGlobalObject::init):
(JSC::JSGlobalObject::visitChildren):
* runtime/JSGlobalObject.h:
(JSC::JSGlobalObject::stackOverflowFrameCallee const):
* runtime/VM.cpp:
(JSC::VM::throwException):
* runtime/VM.h:
* runtime/VMInlines.h:
(JSC::VM::topJSCallFrame const):

LayoutTests:

* http/tests/misc/large-js-program-expected.txt:

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

13 months ago[Curl] Enable Proxy Authentication on WebKit.
Basuke.Suzuki@sony.com [Tue, 28 Aug 2018 00:43:44 +0000 (00:43 +0000)]
[Curl] Enable Proxy Authentication on WebKit.
https://bugs.webkit.org/show_bug.cgi?id=188998

Reviewed by Alex Christensen.

Add support for proxy authentication to curl backend running on WebKit.
This is follow up implementation of legacy implementation:
- https://bugs.webkit.org/show_bug.cgi?id=185266

* NetworkProcess/curl/NetworkDataTaskCurl.cpp:
(WebKit::NetworkDataTaskCurl::curlDidReceiveResponse):
(WebKit::NetworkDataTaskCurl::tryProxyAuthentication):
* NetworkProcess/curl/NetworkDataTaskCurl.h:
* NetworkProcess/curl/NetworkProcessCurl.cpp:
* PlatformWin.cmake:

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

13 months agoWebGL 2 conformance: framebuffer-test
justin_fan@apple.com [Tue, 28 Aug 2018 00:37:49 +0000 (00:37 +0000)]
WebGL 2 conformance: framebuffer-test
https://bugs.webkit.org/show_bug.cgi?id=188812

Reviewed by Jon Lee.

Source/WebCore:

Update WebGL 2 implementation to handle READ_FRAMEBUFFER and default framebuffer conformance. Also taking this
chance to fix memory leak in PlatformScreenMac/gpuIDForDisplayMask().

Covered by existing WebGL tests as well as newly-enabled webgl/2.0.0/conformance2/renderbuffers/framebuffer-test.html.

* html/canvas/WebGL2RenderingContext.cpp:
(WebCore::WebGL2RenderingContext::blitFramebuffer):
(WebCore::WebGL2RenderingContext::framebufferTextureLayer):
(WebCore::validateDefaultFramebufferAttachment):
(WebCore::WebGL2RenderingContext::getFramebufferAttachmentParameter):
(WebCore::WebGL2RenderingContext::validateFramebufferFuncParameters):
(WebCore::WebGL2RenderingContext::validateFramebufferTarget):
(WebCore::WebGL2RenderingContext::validateNonDefaultFramebufferAttachment):
(WebCore::WebGL2RenderingContext::getParameter):
* html/canvas/WebGL2RenderingContext.h:
* html/canvas/WebGLFramebuffer.cpp:
(WebCore::WebGLFramebuffer::isBound const):
* html/canvas/WebGLRenderingContextBase.cpp:
(WebCore::WebGLRenderingContextBase::initializeNewContext):
(WebCore::WebGLRenderingContextBase::~WebGLRenderingContextBase):
(WebCore::WebGLRenderingContextBase::bindFramebuffer):
(WebCore::WebGLRenderingContextBase::checkFramebufferStatus):
(WebCore::WebGLRenderingContextBase::deleteFramebuffer):
(WebCore::WebGLRenderingContextBase::framebufferRenderbuffer):
(WebCore::WebGLRenderingContextBase::framebufferTexture2D):
* html/canvas/WebGLRenderingContextBase.h:
* platform/graphics/GraphicsContext3D.h:
* platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:
(WebCore::GraphicsContext3D::blitFramebuffer):
* platform/mac/PlatformScreenMac.mm:
(WebCore::gpuIDForDisplayMask):

LayoutTests:

Update WebGL 2 implementation to handle READ_FRAMEBUFFER and default framebuffer conformance.

* TestExpectations: Unskipping webgl/2.0.0/conformance2/renderbuffers/framebuffer-test.html.

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