WebKit-https.git
2 years agoFont Loading API specifies font is loaded but sizing of font after load reports incon...
mmaxfield@apple.com [Tue, 2 May 2017 18:02:50 +0000 (18:02 +0000)]
Font Loading API specifies font is loaded but sizing of font after load reports inconsistent values
https://bugs.webkit.org/show_bug.cgi?id=168533

Reviewed by Zalan Bujtas.

Source/WebCore:

Previously, we were marking all local() fonts as immediately successful,
regardless of whether or not they were present on the system. Instead, we
should use the load() function to make this determination and mark the font
as failed if it doesn't exist. (This is, after all, the whole point of the
load() function). This brings us in-line with Firefox's and Chrome's
behavior.

Test: fast/text/font-loading-local.html

* css/CSSFontFace.cpp:
(WebCore::CSSFontFace::pump): Remote loading requires the FontSelector,
but it isn't available for local fonts. Now that load() is called for both
local and remote fonts, the ASSERT() should be lowered into the load()
function and scoped to just the case where we have a remote font.
(WebCore::CSSFontFace::font): Ditto.
* css/CSSFontFaceSource.cpp:
(WebCore::CSSFontFaceSource::CSSFontFaceSource): Don't immediatley set
the success/failure state for local fonts.
(WebCore::CSSFontFaceSource::load): Move loading logic from font() to
load(). None of this code is new; it just is moved.
(WebCore::CSSFontFaceSource::font): Delete code moved to load().
* css/CSSFontFaceSource.h:
* css/FontFace.cpp:
(WebCore::FontFace::create):

LayoutTests:

* fast/text/font-loading-local-expected.txt: Added.
* fast/text/font-loading-local.html: Added.
* fast/text/web-font-load-fallback-during-loading.html:

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

2 years agoJSC C API should expose GC marking constraints and weak references
fpizlo@apple.com [Tue, 2 May 2017 18:00:23 +0000 (18:00 +0000)]
JSC C API should expose GC marking constraints and weak references
https://bugs.webkit.org/show_bug.cgi?id=171554

Reviewed by Geoffrey Garen.

This exposes an API that lets you participate in the GC's fixpoint. You can ask the GC
what is marked and you can tell the GC to mark things. The constraint callback cannot
do a whole lot, but it can query marking state and it can dereference weak references.

Additionally, this exposes a very simple weak reference API in C.

* API/JSMarkingConstraintPrivate.cpp: Added.
(JSC::isMarked):
(JSC::mark):
(JSContextGroupRegisterMarkingConstraint):
* API/JSMarkingConstraintPrivate.h: Added.
* API/JSWeakPrivate.cpp: Added.
(OpaqueJSWeak::OpaqueJSWeak):
(JSWeakCreate):
(JSWeakRetain):
(JSWeakRelease):
(JSWeakGetObject):
* API/JSWeakPrivate.h: Added.
* API/tests/testapi.c:
(markingConstraint):
(testMarkingConstraints):
(main):
* JavaScriptCore.xcodeproj/project.pbxproj:
* heap/SlotVisitor.h:
* heap/SlotVisitorInlines.h:
(JSC::SlotVisitor::appendHiddenUnbarriered):
(JSC::SlotVisitor::appendHidden):

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

2 years agoMake "PAL/pal" and "PAL/pal/crypto" directories private
commit-queue@webkit.org [Tue, 2 May 2017 18:00:22 +0000 (18:00 +0000)]
Make "PAL/pal" and "PAL/pal/crypto" directories private
https://bugs.webkit.org/show_bug.cgi?id=171524

Patch by Yoshiaki Jitsukawa <Yoshiaki.Jitsukawa@sony.com> on 2017-05-02
Reviewed by Myles C. Maxfield.

Make the "PAL/pal" and "PAL/pal/crypto" directories private to force WebCore sources
to include PAL headers in "#include <pal/***.h>" style.

* pal/CMakeLists.txt:

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

2 years agoJSFixedArray::allocationSize() should not allow for allocation failure.
mark.lam@apple.com [Tue, 2 May 2017 17:55:11 +0000 (17:55 +0000)]
JSFixedArray::allocationSize() should not allow for allocation failure.
https://bugs.webkit.org/show_bug.cgi?id=171516

Reviewed by Geoffrey Garen.

Since JSFixedArray::createFromArray() now handles allocation failures by throwing
OutOfMemoryErrors, its helper function allocationSize() (which computes the buffer
size to allocate) should also allow for allocation failure on overflow.

This issue is covered by the stress/js-fixed-array-out-of-memory.js test when
run on 32-bit builds.

* runtime/JSFixedArray.h:
(JSC::JSFixedArray::tryCreate):
(JSC::JSFixedArray::allocationSize):

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

2 years agoSource/WebCore:
commit-queue@webkit.org [Tue, 2 May 2017 17:49:39 +0000 (17:49 +0000)]
Source/WebCore:
Allow media stream based videos with sound to autoplay if the page is already playing sound
https://bugs.webkit.org/show_bug.cgi?id=171447

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

Test: http/tests/media/autoplay-if-audio-is-playing.html for ensuring non-mediastream based video will not autoplay.
Manual testing for the autoplay of media stream based videos since such a test should happen without using getUserMedia.

* html/MediaElementSession.cpp:
(WebCore::MediaElementSession::playbackPermitted):

LayoutTests:
Allow media stream based videos with sound autoplay if the page is already playing sound
https://bugs.webkit.org/show_bug.cgi?id=171447

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

* http/tests/media/autoplay-if-audio-is-playing-expected.txt: Added.
* http/tests/media/autoplay-if-audio-is-playing.html: Added.
* http/tests/media/resources/test-25fps.mp4: Added.

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

2 years agoUse PassRefPtr less in editing code
cdumez@apple.com [Tue, 2 May 2017 17:41:46 +0000 (17:41 +0000)]
Use PassRefPtr less in editing code
https://bugs.webkit.org/show_bug.cgi?id=171534

Reviewed by Geoffrey Garen.

Use PassRefPtr less in editing code.

* editing/AppendNodeCommand.cpp:
(WebCore::AppendNodeCommand::AppendNodeCommand):
(WebCore::AppendNodeCommand::getNodesInCommand):
* editing/AppendNodeCommand.h:
(WebCore::AppendNodeCommand::create):
* editing/ApplyStyleCommand.cpp:
(WebCore::ApplyStyleCommand::surroundNodeRangeWithElement):
(WebCore::ApplyStyleCommand::positionToComputeInlineStyleChange):
* editing/BreakBlockquoteCommand.cpp:
(WebCore::BreakBlockquoteCommand::doApply):
* editing/CompositeEditCommand.cpp:
(WebCore::CompositeEditCommand::insertNodeBefore):
(WebCore::CompositeEditCommand::insertNodeAfter):
(WebCore::CompositeEditCommand::insertNodeAt):
(WebCore::CompositeEditCommand::appendNode):
(WebCore::CompositeEditCommand::moveRemainingSiblingsToNewParent):
(WebCore::CompositeEditCommand::mergeIdenticalElements):
(WebCore::CompositeEditCommand::insertNodeAtTabSpanPosition):
(WebCore::CompositeEditCommand::appendBlockPlaceholder):
(WebCore::CompositeEditCommand::insertBlockPlaceholder):
(WebCore::CompositeEditCommand::addBlockPlaceholderIfNeeded):
(WebCore::CompositeEditCommand::insertNewDefaultParagraphElementAt):
(WebCore::CompositeEditCommand::cloneParagraphUnderNewElement):
(WebCore::CompositeEditCommand::moveParagraphs):
* editing/CompositeEditCommand.h:
* editing/CreateLinkCommand.cpp:
(WebCore::CreateLinkCommand::doApply):
* editing/DeleteSelectionCommand.cpp:
(WebCore::DeleteSelectionCommand::makeStylingElementsDirectChildrenOfEditableRootToPreventStyleLoss):
(WebCore::DeleteSelectionCommand::mergeParagraphs):
* editing/FormatBlockCommand.cpp:
(WebCore::FormatBlockCommand::formatRange):
* editing/IndentOutdentCommand.cpp:
(WebCore::IndentOutdentCommand::tryIndentingAsListItem):
(WebCore::IndentOutdentCommand::indentIntoBlockquote):
(WebCore::IndentOutdentCommand::outdentParagraph):
* editing/InsertLineBreakCommand.cpp:
(WebCore::InsertLineBreakCommand::doApply):
* editing/InsertLineBreakCommand.h:
* editing/InsertListCommand.cpp:
(WebCore::InsertListCommand::fixOrphanedListChild):
(WebCore::InsertListCommand::doApplyForSingleParagraph):
(WebCore::InsertListCommand::unlistifyParagraph):
(WebCore::InsertListCommand::listifyParagraph):
* editing/InsertListCommand.h:
* editing/InsertNodeBeforeCommand.cpp:
(WebCore::InsertNodeBeforeCommand::InsertNodeBeforeCommand):
(WebCore::InsertNodeBeforeCommand::doApply):
(WebCore::InsertNodeBeforeCommand::doUnapply):
(WebCore::InsertNodeBeforeCommand::getNodesInCommand):
* editing/InsertNodeBeforeCommand.h:
(WebCore::InsertNodeBeforeCommand::create):
* editing/InsertParagraphSeparatorCommand.cpp:
(WebCore::InsertParagraphSeparatorCommand::cloneHierarchyUnderNewBlock):
(WebCore::InsertParagraphSeparatorCommand::doApply):
* editing/InsertParagraphSeparatorCommand.h:
* editing/InsertTextCommand.cpp:
(WebCore::InsertTextCommand::positionInsideTextNode):
(WebCore::InsertTextCommand::insertTab):
* editing/ModifySelectionListLevel.cpp:
(WebCore::ModifySelectionListLevelCommand::insertSiblingNodeRangeBefore):
(WebCore::ModifySelectionListLevelCommand::insertSiblingNodeRangeAfter):
(WebCore::ModifySelectionListLevelCommand::appendSiblingNodeRange):
(WebCore::IncreaseSelectionListLevelCommand::doApply):
* editing/RemoveNodePreservingChildrenCommand.cpp:
(WebCore::RemoveNodePreservingChildrenCommand::doApply):
* editing/ReplaceSelectionCommand.cpp:
(WebCore::ReplaceSelectionCommand::moveNodeOutOfAncestor):
(WebCore::ReplaceSelectionCommand::mergeEndIfNeeded):
(WebCore::ReplaceSelectionCommand::doApply):
(WebCore::ReplaceSelectionCommand::addSpacesForSmartReplace):
(WebCore::ReplaceSelectionCommand::insertAsListItems):
* editing/SimplifyMarkupCommand.cpp:
(WebCore::SimplifyMarkupCommand::pruneSubsequentAncestorsToRemove):

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

2 years agoSet Response.blob() type correctly when body is a ReadableStream.
commit-queue@webkit.org [Tue, 2 May 2017 16:58:33 +0000 (16:58 +0000)]
Set Response.blob() type correctly when body is a ReadableStream.
https://bugs.webkit.org/show_bug.cgi?id=171489

Patch by Ben Kelly <ben@wanderview.com> on 2017-05-02
Reviewed by Youenn Fablet

LayoutTests/imported/w3c:

* web-platform-tests/fetch/api/response/response-consume-expected.txt:

Source/WebCore:

The Fetch API specification requires setting the blob contentType
using the Content-Type header value, if present.  Currently WebKit
only sets the type on the FetchBodyConsumer when FetchBody::blob()
is called.  Unfortunately, this is never called if the body is
actually a ReadableStream.

This change allows WebKit to pass the "Consume response's body: from
stream to blob" case in the WPT response-consume.html test.

Test: http://w3c-test.org/fetch/api/response/response-consume.html

* Modules/fetch/FetchResponse.cpp:
(WebCore::FetchResponse::startConsumingStream): Modified to call
FetchBodyConsumer::setContentType() before processing the stream.

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

2 years agoMarked test http/tests/xmlhttprequest/methods-async.html as flaky timeout.
ryanhaddad@apple.com [Tue, 2 May 2017 16:52:51 +0000 (16:52 +0000)]
Marked test http/tests/xmlhttprequest/methods-async.html as flaky timeout.
https://bugs.webkit.org/show_bug.cgi?id=171530

Unreviewed test gardening.

Patch by Matt Lewis <jlewis3@apple.com> on 2017-05-02

* platform/ios-wk2/TestExpectations:

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

2 years agoUnreviewed, rolling out r216069.
ryanhaddad@apple.com [Tue, 2 May 2017 16:22:53 +0000 (16:22 +0000)]
Unreviewed, rolling out r216069.

This change broke the build.

Reverted changeset:

"Document style resolvers should share user rulesets"
https://bugs.webkit.org/show_bug.cgi?id=171549
http://trac.webkit.org/changeset/216069

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

2 years agoWeb Automation: generate resizeWindowOfBrowsingContext and moveWindowOfBrowsingContex...
commit-queue@webkit.org [Tue, 2 May 2017 14:33:57 +0000 (14:33 +0000)]
Web Automation: generate resizeWindowOfBrowsingContext and moveWindowOfBrowsingContext for all platforms
https://bugs.webkit.org/show_bug.cgi?id=171107

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2017-05-02
Reviewed by Brian Burg.

The implementation is actually cross-platform, so it could be moved from WebAutomationSessionMac.mm to
WebAutomationSession.cpp and simply return a NotImplemented error for iOS. This will allow to use these methods
in other platforms.

* UIProcess/Automation/Automation.json:
* UIProcess/Automation/WebAutomationSession.cpp:
(WebKit::WebAutomationSession::resizeWindowOfBrowsingContext):
(WebKit::WebAutomationSession::moveWindowOfBrowsingContext):
* UIProcess/Automation/WebAutomationSession.h:
* UIProcess/Automation/mac/WebAutomationSessionMac.mm:
(WebKit::WebAutomationSession::resizeWindowOfBrowsingContext): Deleted.
(WebKit::WebAutomationSession::moveWindowOfBrowsingContext): Deleted.

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

2 years agoDocument style resolvers should share user rulesets
antti@apple.com [Tue, 2 May 2017 14:30:30 +0000 (14:30 +0000)]
Document style resolvers should share user rulesets
https://bugs.webkit.org/show_bug.cgi?id=171549

Reviewed by Andreas Kling.

Large user stylesheets (like those used by ad blockers) can end up using lots of memory if
a document uses large number of shadow trees. User style is inherently per-document and
the resulting rulesets can be shared between the document and the shadow trees.

* css/DocumentRuleSets.cpp:
(WebCore::DocumentRuleSets::DocumentRuleSets):
(WebCore::DocumentRuleSets::userStyle):

    Return per-document user style for shadow trees.

(WebCore::DocumentRuleSets::collectFeatures):
* css/DocumentRuleSets.h:
(WebCore::DocumentRuleSets::setUsesSharedUserStyle):
(WebCore::DocumentRuleSets::userStyle): Deleted.
* css/StyleResolver.cpp:
(WebCore::StyleResolver::StyleResolver):
(WebCore::StyleResolver::initializeUserStyle):

    Separate user style initialization from construction.

* css/StyleResolver.h:
* style/StyleScope.cpp:
(WebCore::Style::Scope::resolver):

    Don't initialize user style for user agents shadow trees.

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

2 years ago[GTK] Remove undefined nativeImage method from the ImageBuffer's header
yoon@igalia.com [Tue, 2 May 2017 10:52:51 +0000 (10:52 +0000)]
[GTK] Remove undefined nativeImage method from the ImageBuffer's header
https://bugs.webkit.org/show_bug.cgi?id=171502

Unreviewed, remove a dead code accidentally committed in r194630.

* platform/graphics/ImageBuffer.h: Remove nativeImage method.
It is accidentally added during a refectorying at r194630, and there is
no definition for this method.

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

2 years ago[GStreamer] Dailymotion live stream videos don't play
carlosgc@webkit.org [Tue, 2 May 2017 10:05:58 +0000 (10:05 +0000)]
[GStreamer] Dailymotion live stream videos don't play
https://bugs.webkit.org/show_bug.cgi?id=170767

Reviewed by Sergio Villar Senin.

The video shows a message saying that an error occurred and nothing is played. There are actually several
problems with dailymotion. The main issue is that URLs are redirected by the server, and GStreamer needs to
know the redirected URL. Once GStreamer knows the redirected URL the error message no longer appears, the video
starts but it always stops after a few seconds. This is because the source receives an early EOS while still
downloading the fragments. The reason of the early EOS is because dailymotion sends a wrong Content-Length header,
something that is expected to happen and we correctly handle that case when receiving the data, by updating the
size accordingly if the bytes received are longer than the expected content length. This particular case
doesn't work well with GStreamer automatic EOS handling, which is the default. At some point, GStreamer detects
that the bytes received are at least the expected ones and emits a GST_EVENT_EOS that the GstUriDownloader
handles finishing the download early. We should always disable automatic EOS, since we know when EOS actually
happens and we already call gst_app_src_end_of_stream(). This patch also emits a GST_EVENT_CUSTOM_DOWNSTREAM_STICKY
event to let GStreamer know about the HTTP headers sent and received.

* platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:
(webkit_web_src_init): Disable automatic EOS.
(webKitWebSrcGetProperty): Return the redirected URL in case of redirection.
(webKitWebSrcStart): Pass the ResourceRequest to the stream clients.
(webKitWebSrcQueryWithParent): Set the redirected URL in the query in case of redirection.
(webKitWebSrcSetUri): Clear also the redirected URL when setting a new URI.
(StreamingClient::StreamingClient): Use GRefPtr for the source and initialize the request too.
(StreamingClient::~StreamingClient): Remove explicit unref.
(StreamingClient::createReadBuffer):
(StreamingClient::handleResponseReceived): Initialize the redirected URL in case of redirection. Create and push
the HTTP headers event.
(StreamingClient::handleDataReceived):
(StreamingClient::handleNotifyFinished):
(CachedResourceStreamingClient::CachedResourceStreamingClient):
(CachedResourceStreamingClient::responseReceived):
(CachedResourceStreamingClient::accessControlCheckFailed):
(CachedResourceStreamingClient::loadFailed):
(ResourceHandleStreamingClient::ResourceHandleStreamingClient):
(ResourceHandleStreamingClient::didFail):
(ResourceHandleStreamingClient::wasBlocked):
(ResourceHandleStreamingClient::cannotShowURL):

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

2 years agoAdding logging to RTCPeerConnection to allow WebRTC application debugging
commit-queue@webkit.org [Tue, 2 May 2017 08:55:43 +0000 (08:55 +0000)]
Adding logging to RTCPeerConnection to allow WebRTC application debugging
https://bugs.webkit.org/show_bug.cgi?id=171531

Patch by Youenn Fablet <youenn@apple.com> on 2017-05-02
Reviewed by Jon Lee.

No change of behavior.
This allows easier debugging of webrtc-enabled web pages.

* Modules/mediastream/PeerConnectionBackend.cpp:
(WebCore::PeerConnectionBackend::createOfferSucceeded):
(WebCore::PeerConnectionBackend::createOfferFailed):
(WebCore::PeerConnectionBackend::createAnswerSucceeded):
(WebCore::PeerConnectionBackend::createAnswerFailed):
(WebCore::PeerConnectionBackend::setLocalDescriptionSucceeded):
(WebCore::PeerConnectionBackend::setLocalDescriptionFailed):
(WebCore::PeerConnectionBackend::setRemoteDescriptionSucceeded):
(WebCore::PeerConnectionBackend::setRemoteDescriptionFailed):
(WebCore::PeerConnectionBackend::addIceCandidateSucceeded):
(WebCore::PeerConnectionBackend::addIceCandidateFailed):
(WebCore::PeerConnectionBackend::newICECandidate):
(WebCore::PeerConnectionBackend::doneGatheringCandidates):
* Modules/mediastream/RTCPeerConnection.cpp:
(WebCore::RTCPeerConnection::queuedCreateOffer):
(WebCore::RTCPeerConnection::queuedCreateAnswer):
(WebCore::RTCPeerConnection::queuedSetLocalDescription):
(WebCore::RTCPeerConnection::queuedSetRemoteDescription):
(WebCore::RTCPeerConnection::queuedAddIceCandidate):

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

2 years ago[GTK] Crash at WebCore::ResourceHandle::clearClient() when streaming live video from...
carlosgc@webkit.org [Tue, 2 May 2017 08:48:10 +0000 (08:48 +0000)]
[GTK] Crash at WebCore::ResourceHandle::clearClient() when streaming live video from dailymotion
https://bugs.webkit.org/show_bug.cgi?id=169725

Reviewed by Michael Catanzaro.

Make ResourceHandleStreamingClient refcounted and add an invalidate method to do the cleanup in the networking
thread while keeping a reference.

* platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:
(webKitWebSrcStop): Call invalidate before reseting client pointer.
(webKitWebSrcStart): Ditto.
(ResourceHandleStreamingClient::ResourceHandleStreamingClient): Remove all cleanup code after the run loop run call.
(ResourceHandleStreamingClient::~ResourceHandleStreamingClient): Just detach the thread.
(ResourceHandleStreamingClient::invalidate): Schedule a task on the networking thread to clean up and fiish the
run loop, protecting this.
(ResourceHandleStreamingClient::setDefersLoading): Protect this.
(ResourceHandleStreamingClient::didReceiveResponse): Do nothing if client was invalidated.
(ResourceHandleStreamingClient::didReceiveBuffer): Ditto.
(ResourceHandleStreamingClient::didFinishLoading): Ditto.

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

2 years ago[GTK] Web Inspector: Remove GTK+ icon FontVariantSmallCaps.svg
commit-queue@webkit.org [Tue, 2 May 2017 08:39:14 +0000 (08:39 +0000)]
[GTK] Web Inspector: Remove GTK+ icon FontVariantSmallCaps.svg
https://bugs.webkit.org/show_bug.cgi?id=171542

Patch by Fujii Hironori <Hironori.Fujii@sony.com> on 2017-05-02
Reviewed by Carlos Garcia Campos.

This image is not used and Apple's one was removed in Bug 148720.

* UserInterface/Images/gtk/FontVariantSmallCaps.svg: Removed.

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

2 years ago[GTK] Web Inspector: Remove GTK+ icons AnimationPlayStatePaused.svg and AnimationPlay...
commit-queue@webkit.org [Tue, 2 May 2017 08:27:36 +0000 (08:27 +0000)]
[GTK] Web Inspector: Remove GTK+ icons AnimationPlayStatePaused.svg and AnimationPlayStateRunning.svg
https://bugs.webkit.org/show_bug.cgi?id=171540

Patch by Fujii Hironori <Hironori.Fujii@sony.com> on 2017-05-02
Reviewed by Carlos Garcia Campos.

These images aren't used since r204152 (Bug 160566). Instead,
Plus13.svg and Minus.svg are used.

* UserInterface/Images/gtk/BreakpointActionAdd.svg: Removed.
* UserInterface/Images/gtk/BreakpointActionRemove.svg: Removed.

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

2 years ago[GCrypt] ECDSA signing and verification support
zandobersek@gmail.com [Tue, 2 May 2017 06:49:06 +0000 (06:49 +0000)]
[GCrypt] ECDSA signing and verification support
https://bugs.webkit.org/show_bug.cgi?id=171103

Reviewed by Carlos Garcia Campos.

Source/WebCore:

Implement WebCrypto ECDSA support for configurations that
are using libgcrypt.

For signing, the provided data is first hashed with the specified
digest algorithm and embedded into a data s-expression. It's then
passed to gcry_pk_sign() along with the private key, returning a
sig-val s-expression. The r and s parameters are then retrieved from
that sig-val and their data extracted and concatenated in the output
Vector<>.

For verification, the data is again hashed and embedded into a data
s-expression. The r and s parameters are extracted from the passed-in
signature Vector<> and embedded into a sig-val s-expression. The data
and sig-val s-expressions are then passed to gcry_pk_verify() along
with the public key. The verification succeeds if no error is returned
and fails if the returned error code is GPG_ERR_BAD_SIGNATURE.

* crypto/gcrypt/CryptoAlgorithmECDSAGCrypt.cpp:
(WebCore::hashCryptoDigestAlgorithm):
(WebCore::hashAlgorithmName):
(WebCore::mpiData):
(WebCore::gcryptSign):
(WebCore::gcryptVerify):
(WebCore::CryptoAlgorithmECDSA::platformSign):
(WebCore::CryptoAlgorithmECDSA::platformVerify):

LayoutTests:

* platform/gtk/TestExpectations: Enable the passing ECDSA tests under
crypto/subtle/. The ECDSA tests that utilize PKCS #8 and SPKI remain
skipped since support for that hasn't landed yet.

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

2 years ago[GCrypt] HKDF bit derivation support
zandobersek@gmail.com [Tue, 2 May 2017 06:37:07 +0000 (06:37 +0000)]
[GCrypt] HKDF bit derivation support
https://bugs.webkit.org/show_bug.cgi?id=171074

Reviewed by Michael Catanzaro.

Source/WebCore:

Implement bit derivation support for the HKDF algorithm for configurations
that use libgcrypt.

libgcrypt doesn't provide HKDF support out of the box, so we have to
implement the two steps manually. In the first one, we retrieve the
pseudo-random key by using the specified MAC algorithm with the salt data
as the key and the key data as the input keying material.

In the expand step, we do the required amount of iterations to derive
a sufficient amount of data, using the same MAC algorithm with the
pseudo-random key from the previous step on the data we compose from the
previous block data, the info data, and the current iteration value. The
resulting blocks are appended together until they can be clipped to the
desired output length.

* crypto/gcrypt/CryptoAlgorithmHKDFGCrypt.cpp:
(WebCore::macAlgorithmForHashFunction):
(WebCore::gcryptDeriveBits):
(WebCore::CryptoAlgorithmHKDF::platformDeriveBits):

LayoutTests:

The crypto/subtle/hkdf-derive-bits-length-limits.html test is added, testing the
corner-case length values for which the bit derivation operation must succeed or
fail for any specified SHA hash algorithm. With HashLen as the algorithm's output
length, the operation should reject for lengths of 0 or above 255 * HashLen * 8.
The operation should resolve for lengths between the two limits, with testing
performed on lengths of 8 (the minimum output length), HashLen * 8 (matching the
output length of the hash algorithm), and 255 * HashLen * 8 (the maximum
derivation output length).

* crypto/subtle/hkdf-derive-bits-length-limits-expected.txt: Added.
* crypto/subtle/hkdf-derive-bits-length-limits.html: Added.
* platform/gtk/TestExpectations: Enable the HKDF tests under crypto/subtle/.

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

2 years ago[GCrypt] ECDH bit derivation support
zandobersek@gmail.com [Tue, 2 May 2017 06:34:03 +0000 (06:34 +0000)]
[GCrypt] ECDH bit derivation support
https://bugs.webkit.org/show_bug.cgi?id=171070

Reviewed by Michael Catanzaro.

Source/WebCore:

Implement bit derivation support for the ECDH algorithm for configurations
that use libgcrypt.

This is done by retrieving the private key data and wrapping it in a new
data s-expression. That's then encrypted with the public key, and the
returned s-expression contains the shared point data. That data is then
decoded into an EC point, from which the x-coordinate is retrieved. This
coordinate data is finally our bit derivation result.

* crypto/gcrypt/CryptoAlgorithmECDHGCrypt.cpp:
(WebCore::gcryptDerive):
(WebCore::CryptoAlgorithmECDH::platformDeriveBits):

Source/WebCore/PAL:

Add PAL::GCrypt::HandleDeleter specialization for the
gcry_mpi_point_t type.

* pal/crypto/gcrypt/Handle.h:
(PAL::GCrypt::HandleDeleter<gcry_mpi_point_t>::operator()):

LayoutTests:

The crypto/subtle/ecdh-derive-bits-length-limits.html test is added, testing the
corner-case length values for which the bit derivation operation must succeed or
fail. When specifying 0 as the length, the returned result must match the EC key
size in length. 8, tested as the minimum non-zero value, and the key size for
each key must also correctly resolve and return a resulting ArrayBuffer whose
length in bytes must match the requested length. Derivations for byte-aligned
values should start rejecting immediately for length values that are bigger than
the EC key's length.

* crypto/subtle/ecdh-derive-bits-length-limits-expected.txt: Added.
* crypto/subtle/ecdh-derive-bits-length-limits.html: Added.
* platform/gtk/TestExpectations: Enable Web Crypto ECDH tests under crypto/subtle/
that are passing now that the proper implementation has been added. The remaining
failing ECDH tests use PKCS #8 and SPKI key import/export formats, which are not
supported yet.

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

2 years ago[Xcode] It’s easy to accidentally install a WTF header outside /usr/local/include/wtf
mitz@apple.com [Tue, 2 May 2017 05:30:38 +0000 (05:30 +0000)]
[Xcode] It’s easy to accidentally install a WTF header outside /usr/local/include/wtf
https://bugs.webkit.org/show_bug.cgi?id=171533

Reviewed by Andy Estes.

* WTF.xcodeproj/project.pbxproj: Removed the WTF target’s Headers build phase. Its existence
  was making it easy to accidentally add a header to the target and make it Private, which
  would have Xcode install a copy of it right under /usr/local/include, in addition to the
  copy installed under /usr/local/include/wtf by the Copy WTF Headers target.
  Also got rid of INSTALL_PATH_PREFIX in the script build phase in the Copy WTF Headers
  target, because it is being never set anymore.

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

2 years ago[aarch64][Linux] m_allowScratchRegister assert hit in MacroAssemblerARM64 under B3...
zandobersek@gmail.com [Tue, 2 May 2017 04:32:08 +0000 (04:32 +0000)]
[aarch64][Linux] m_allowScratchRegister assert hit in MacroAssemblerARM64 under B3::Air::CCallSpecial::generate()
https://bugs.webkit.org/show_bug.cgi?id=170672

Reviewed by Filip Pizlo.

In Air::CCallSpecial::admitsStack() we reject admitting the callee argument on
the stack for ARM64 because that can lead to disallowed usage of the scratch
register in MacroAssemblerARM64 when generating a call with an address Arg
in Air::CCallSpecial::generate().

The testLinearScanWithCalleeOnStack test is added to testb3. It reproduces the
original issue by force-spilling everything on the stack and enforcing the use
of the linear scan register allocation by using an optimization level of 1.

* b3/air/AirCCallSpecial.cpp:
(JSC::B3::Air::CCallSpecial::admitsStack):
* b3/testb3.cpp:
(JSC::B3::testLinearScanWithCalleeOnStack):
(JSC::B3::run):

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

2 years agoWTF installs an extra copy of a header outside /usr/local/include/wtf
mitz@apple.com [Tue, 2 May 2017 03:14:28 +0000 (03:14 +0000)]
WTF installs an extra copy of a header outside /usr/local/include/wtf

* WTF.xcodeproj/project.pbxproj: Demoted CPUTime.h from Private to Project.

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

2 years agoREGRESSION: LayoutTest workers/wasm-hashset-many.html is a flaky timeout
sbarati@apple.com [Tue, 2 May 2017 02:04:51 +0000 (02:04 +0000)]
REGRESSION: LayoutTest workers/wasm-hashset-many.html is a flaky timeout
https://bugs.webkit.org/show_bug.cgi?id=171449

Unreviewed.

* platform/win/TestExpectations: Skip Wasm tests on Windows.
* workers/wasm-hashset-many-expected.txt:
* workers/wasm-hashset/many-test.js: Make wasm-hashset-many run fewer workers.

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

2 years agoUse RELEASE_LOG_ERROR() to do process termination logging
cdumez@apple.com [Tue, 2 May 2017 01:47:41 +0000 (01:47 +0000)]
Use RELEASE_LOG_ERROR() to do process termination logging
https://bugs.webkit.org/show_bug.cgi?id=171521

Reviewed by Andreas Kling.

Use RELEASE_LOG_ERROR() to do process termination logging instead of RELEASE_LOG().
This makes the issue more visible in Console.

* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::didExceedActiveMemoryLimit):
(WebKit::WebProcessProxy::didExceedInactiveMemoryLimit):
(WebKit::WebProcessProxy::didExceedBackgroundCPULimit):

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

2 years agoEnsure RealtimeOutgoingVideoSource sends a black frame when its related source is...
commit-queue@webkit.org [Tue, 2 May 2017 01:33:37 +0000 (01:33 +0000)]
Ensure RealtimeOutgoingVideoSource sends a black frame when its related source is muted
https://bugs.webkit.org/show_bug.cgi?id=171497

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

Source/WebCore:

Covered by updated test.

When the track is being muted or disabled, send a black frame explicitly.
VideoToolBox sometimes does not output a frame until it receives the other.
That is why we end up sending two frames, the second asynchronously so that libwebrtc will not skip it.
Also storing the rotation so that we keep the same rotation for black frames.
Storing width and height for consistency as well.

* platform/mediastream/mac/RealtimeOutgoingVideoSource.cpp:
(WebCore::RealtimeOutgoingVideoSource::RealtimeOutgoingVideoSource):
(WebCore::RealtimeOutgoingVideoSource::setSource):
(WebCore::RealtimeOutgoingVideoSource::stop):
(WebCore::RealtimeOutgoingVideoSource::sourceMutedChanged):
(WebCore::RealtimeOutgoingVideoSource::sourceEnabledChanged):
(WebCore::RealtimeOutgoingVideoSource::setSizeFromSource):
(WebCore::RealtimeOutgoingVideoSource::sendBlackFrame):
(WebCore::RealtimeOutgoingVideoSource::sendFrame):
(WebCore::RealtimeOutgoingVideoSource::videoSampleAvailable):
* platform/mediastream/mac/RealtimeOutgoingVideoSource.h:

LayoutTests:

* webrtc/video-mute.html: Updating the test to make debugging clearer.

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

2 years agoOnly try to get sandbox extension handle for IndexedDB directory if it is set.
beidson@apple.com [Tue, 2 May 2017 01:28:05 +0000 (01:28 +0000)]
Only try to get sandbox extension handle for IndexedDB directory if it is set.
rdar://problem/31925828 and https://bugs.webkit.org/show_bug.cgi?id=171522

Reviewed by Andy Estes.

* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::resolveDirectoriesIfNecessary):

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

2 years agoEliminate ?pipe=sub from Resource Timing Tests
commit-queue@webkit.org [Tue, 2 May 2017 01:24:20 +0000 (01:24 +0000)]
Eliminate ?pipe=sub from Resource Timing Tests
https://bugs.webkit.org/show_bug.cgi?id=171525

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2017-05-01
Reviewed by Youenn Fablet.

* web-platform-tests/resource-timing/resources/rt-utilities.sub.js: Renamed from LayoutTests/imported/w3c/web-platform-tests/resource-timing/resources/rt-utilities.js.
Rename with ".sub.js" to automatically get substitutions.

* web-platform-tests/resource-timing/resources/rt-iframe-1.html:
* web-platform-tests/resource-timing/resources/rt-iframe-2.html:
* web-platform-tests/resource-timing/resources/rt-worker-resources.js:
* web-platform-tests/resource-timing/rt-cors.html:
* web-platform-tests/resource-timing/rt-cors.worker.js:
* web-platform-tests/resource-timing/rt-initiatorType-css.html:
* web-platform-tests/resource-timing/rt-initiatorType-element.html:
* web-platform-tests/resource-timing/rt-initiatorType-fetch.html:
* web-platform-tests/resource-timing/rt-initiatorType-media.html:
* web-platform-tests/resource-timing/rt-initiatorType-other.html:
* web-platform-tests/resource-timing/rt-initiatorType-script-module.html:
* web-platform-tests/resource-timing/rt-initiatorType-xmlhttprequest.html:
* web-platform-tests/resource-timing/rt-initiatorType.worker.js:
* web-platform-tests/resource-timing/rt-nextHopProtocol.html:
* web-platform-tests/resource-timing/rt-nextHopProtocol.worker.js:
* web-platform-tests/resource-timing/rt-performance-extensions.html:
* web-platform-tests/resource-timing/rt-performance-extensions.worker.js:
* web-platform-tests/resource-timing/rt-resource-errors.html:
* web-platform-tests/resource-timing/rt-resource-ignored.html:
* web-platform-tests/resource-timing/rt-resources-per-frame.html:
* web-platform-tests/resource-timing/rt-resources-per-worker.html:
* web-platform-tests/resource-timing/rt-revalidate-requests.html:
* web-platform-tests/resource-timing/rt-serialization.html:
* web-platform-tests/resource-timing/rt-shared-resource-in-frames.html:
* web-platform-tests/resource-timing/rt-shared-resource-in-workers.html:
Update include of rt-utilities.

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

2 years agoSimplify Resource Timing handling of cached resource
commit-queue@webkit.org [Tue, 2 May 2017 01:16:26 +0000 (01:16 +0000)]
Simplify Resource Timing handling of cached resource
https://bugs.webkit.org/show_bug.cgi?id=171526

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2017-05-01
Reviewed by Youenn Fablet.

* loader/DocumentThreadableLoader.cpp:
(WebCore::DocumentThreadableLoader::loadRequest):
* loader/SubresourceLoader.cpp:
(WebCore::SubresourceLoader::init):
(WebCore::SubresourceLoader::reportResourceTiming):
Use auto in ResourceTiming construction.
Eliminate an outdated comment.

* loader/cache/CachedResourceLoader.cpp:
(WebCore::CachedResourceLoader::requestResource):
We can avoid the checks around the request.origin. It should already
be the cases we were checking and asserting because of login in
CachedResourceLoader::prepareFetch.

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

2 years agoUnreviewed, rolling out r216024.
ryanhaddad@apple.com [Tue, 2 May 2017 01:07:44 +0000 (01:07 +0000)]
Unreviewed, rolling out r216024.

This change caused ios-simulator LayoutTests to exit early
with assertion failures.

Reverted changeset:

"Add audio device change notifications to AudioSession."
https://bugs.webkit.org/show_bug.cgi?id=171403
http://trac.webkit.org/changeset/216024

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

2 years agoStop using sprintf() in JavaScriptCore debugger
ddkilzer@apple.com [Tue, 2 May 2017 01:00:35 +0000 (01:00 +0000)]
Stop using sprintf() in JavaScriptCore debugger
<https://webkit.org/b/171512>

Reviewed by Keith Miller.

Source/JavaScriptCore:

* disassembler/udis86/udis86.c:
(ud_insn_hex): Switch from sprintf() to snprintf().

Tools:

* Scripts/webkitpy/style/checker.py:
(_PATH_RULES_SPECIFIER): Ignore some formatting checkers since
Source/JavaScriptCore/disassembler/udis86/ is generated code.

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

2 years agoMarked LayoutTest/http/tests/preload/not_delaying_window_onload_before_discovery...
ryanhaddad@apple.com [Tue, 2 May 2017 00:51:18 +0000 (00:51 +0000)]
Marked LayoutTest/http/tests/preload/not_delaying_window_onload_before_discovery.html as flaky failure.
https://bugs.webkit.org/show_bug.cgi?id=171528

Unreviewed test Gardening.

Patch by Matt Lewis <jlewis3@apple.com> on 2017-05-01

* platform/ios-wk2/TestExpectations:

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

2 years agoExpose viewport-fit instead of clip-to-safe-area
timothy_horton@apple.com [Tue, 2 May 2017 00:08:23 +0000 (00:08 +0000)]
Expose viewport-fit instead of clip-to-safe-area
https://bugs.webkit.org/show_bug.cgi?id=171503
<rdar://problem/31918249>

Reviewed by Simon Fraser.

Tests: fast/viewport/ios/viewport-fit-auto.html
       fast/viewport/ios/viewport-fit-contain.html
       fast/viewport/ios/viewport-fit-cover.html

* dom/ConstantPropertyMap.cpp:
(WebCore::ConstantPropertyMap::buildValues):
(WebCore::ConstantPropertyMap::updateConstantsForUnobscuredSafeAreaInsets):
(WebCore::ConstantPropertyMap::didChangeSafeAreaInsets):
(WebCore::ConstantPropertyMap::updateConstantsForObscuredInsets): Deleted.
(WebCore::ConstantPropertyMap::didChangeObscuredInsets): Deleted.
* dom/ConstantPropertyMap.h:
Retrieve the safe area insets from page, instead of assuming that we should
just expose the entire obscured inset. Also, do some renames.

* dom/ViewportArguments.cpp:
(WebCore::ViewportArguments::resolve):
(WebCore::parseViewportFitValue):
(WebCore::setViewportFeature):
* dom/ViewportArguments.h:
(WebCore::ViewportArguments::operator==):
* page/ChromeClient.h:
* page/FrameView.cpp:
(WebCore::FrameView::enableSpeculativeTilingIfNeeded):
(WebCore::FrameView::calculateExtendedBackgroundMode):
(WebCore::FrameView::setClipToSafeArea): Deleted.
* page/FrameView.h:
* page/ViewportConfiguration.cpp:
(WebCore::ViewportConfiguration::updateConfiguration):
(WebCore::operator<<):
(WebCore::ViewportConfiguration::description):
(WebCore::ViewportConfiguration::dump):
* page/ViewportConfiguration.h:
(WebCore::ViewportConfiguration::avoidsUnsafeArea):
(WebCore::ViewportConfiguration::Parameters::Parameters):
(WebCore::ViewportConfiguration::clipToSafeArea): Deleted.
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::updateRootContentLayerClipping):
* rendering/RenderObject.cpp:
(WebCore::RenderObject::repaintUsingContainer):
Un-do changes to support clip-to-safe-area, and instead implement
a new viewport-fit argument in the viewport meta tag, which takes
"auto", "contain", and "cover". "auto" and "contain" cause web content
to lay out excluding the safe area inset from the layout size, while
"cover" causes web content to expand into the unsafe area.

* page/Page.cpp:
(WebCore::Page::setUnobscuredSafeAreaInsets):
(WebCore::Page::setObscuredInsets): Deleted.
* page/Page.h:
(WebCore::Page::setObscuredInsets):
(WebCore::Page::unobscuredSafeAreaInsets):
Keep safe area and obscured insets separately.

* Shared/VisibleContentRectUpdateInfo.cpp:
(WebKit::VisibleContentRectUpdateInfo::encode):
(WebKit::VisibleContentRectUpdateInfo::decode):
(WebKit::operator<<):
* Shared/VisibleContentRectUpdateInfo.h:
(WebKit::VisibleContentRectUpdateInfo::VisibleContentRectUpdateInfo):
(WebKit::VisibleContentRectUpdateInfo::unobscuredSafeAreaInsets):
(WebKit::operator==):
Plumb the safe area insets down from the UI process to the Web Content
process inside the visible content rect update, alongside the obscured
insets.

* Shared/mac/RemoteLayerTreeTransaction.h:
(WebKit::RemoteLayerTreeTransaction::avoidsUnsafeArea):
(WebKit::RemoteLayerTreeTransaction::setAvoidsUnsafeArea):
* Shared/mac/RemoteLayerTreeTransaction.mm:
(WebKit::RemoteLayerTreeTransaction::encode):
(WebKit::RemoteLayerTreeTransaction::decode):
(WebKit::RemoteLayerTreeTransaction::description):
* UIProcess/PageClient.h:
* UIProcess/ios/PageClientImplIOS.h:
* UIProcess/ios/PageClientImplIOS.mm:
(WebKit::PageClientImpl::didChangeAvoidsUnsafeArea):
(WebKit::PageClientImpl::didChangeClipToSafeArea): Deleted.
* UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::didCommitLayerTree):
* UIProcess/mac/PageClientImpl.h:
* WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::didChangeClipToSafeArea): Deleted.
* WebProcess/WebCoreSupport/WebChromeClient.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::willCommitLayerTree):
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::viewportConfigurationChanged):
(WebKit::WebPage::updateVisibleContentRects):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::resetState):
(WebKit::WebPageProxy::setAvoidsUnsafeArea):
(WebKit::WebPageProxy::setClipToSafeArea): Deleted.
* UIProcess/WebPageProxy.h:
(WebKit::WebPageProxy::avoidsUnsafeArea):
(WebKit::WebPageProxy::clipToSafeArea): Deleted.
* UIProcess/WebPageProxy.messages.in:
Plumb the effective value of viewport-fit (whether or not to avoid
the safe area for layout purposes) from the Web Content process
to the UI process inside the layer tree transaction.
Also, remove clip-to-safe-area plumbing.

* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _initializeWithConfiguration:]):
(-[WKWebView _computedContentInset]):
(-[WKWebView _computedUnobscuredSafeAreaInset]):
(-[WKWebView _updateVisibleContentRects]):
(-[WKWebView _updateScrollViewInsetAdjustmentBehavior]):
(-[WKWebView _safeAreaShouldAffectObscuredInsets]):
(-[WKWebView _unobscuredSafeAreaInsets]):
(-[WKWebView _setUnobscuredSafeAreaInsets:]):
(-[WKWebView _contentMayDrawInObscuredInsets]): Deleted.
* UIProcess/API/Cocoa/WKWebViewInternal.h:
* UIProcess/API/Cocoa/WKWebViewPrivate.h:
Make use of the effective value of viewport-fit to decide whether to
take the safe area into account when computing the obscured insets,
and expose this to clients (in the case that they need to know
because they push their own obscured insets down). Also expose a
safe area inset setter for that case as well.

* UIProcess/ios/WKContentView.h:
* UIProcess/ios/WKContentView.mm:
(-[WKContentView updateFixedClippingView:]):
(-[WKContentView didUpdateVisibleRect:unobscuredRect:unobscuredRectInScrollViewCoordinates:obscuredInsets:unobscuredSafeAreaInsets:inputViewBounds:scale:minimumScale:inStableState:isChangingObscuredInsetsInteractively:enclosedInScrollableAncestorView:]):
Remove a piece of the clip-to-safe-area implementation, and plumb
safe area insets into the visible content rect update info.

* UIProcess/ios/WKScrollView.h:
* UIProcess/ios/WKScrollView.mm:
(-[WKScrollView initWithFrame:]):
(-[WKScrollView _contentInsetAdjustmentBehaviorWasExternallyOverridden]):
(-[WKScrollView _setContentInsetAdjustmentBehavior:]):
(-[WKScrollView _setContentInsetAdjustmentBehaviorInternal:]):
Keep track of whether the client has ever touched the content inset adjustment
behavior; if they have, we won't manage it ourselves.

* DumpRenderTree/ios/UIScriptControllerIOS.mm:
(WTR::UIScriptController::setSafeAreaInsets):
(WTR::UIScriptController::setObscuredInsets): Deleted.
* TestRunnerShared/UIScriptContext/Bindings/UIScriptController.idl:
* TestRunnerShared/UIScriptContext/UIScriptController.cpp:
(WTR::UIScriptController::setSafeAreaInsets):
(WTR::UIScriptController::setObscuredInsets): Deleted.
* TestRunnerShared/UIScriptContext/UIScriptController.h:
* WebKitTestRunner/cocoa/TestRunnerWKWebView.h:
* WebKitTestRunner/cocoa/TestRunnerWKWebView.mm:
(-[TestRunnerWKWebView setOverrideSafeAreaInsets:]):
(-[TestRunnerWKWebView _safeAreaInsetsForFrame:inSuperview:]):
* WebKitTestRunner/ios/TestControllerIOS.mm:
(WTR::TestController::platformResetStateToConsistentValues):
* WebKitTestRunner/ios/UIKitSPI.h:
* WebKitTestRunner/ios/UIScriptControllerIOS.mm:
(WTR::UIScriptController::setSafeAreaInsets):
(WTR::UIScriptController::setObscuredInsets): Deleted.
Expose a safe area inset setter instead of obscured insets.

* TestExpectations:
* fast/css/variables/constants/ios/safe-area-inset-set-expected.html:
* fast/css/variables/constants/ios/safe-area-inset-set.html:
* fast/viewport/ios/viewport-fit-auto-expected.txt: Added.
* fast/viewport/ios/viewport-fit-auto.html: Added.
* fast/viewport/ios/viewport-fit-contain-expected.txt: Added.
* fast/viewport/ios/viewport-fit-contain.html: Added.
* fast/viewport/ios/viewport-fit-cover-expected.txt: Added.
* fast/viewport/ios/viewport-fit-cover.html: Added.
* tiled-drawing/ios/viewport-clip-to-safe-area-no-gets-margin-tiles-expected.txt: Removed.
* tiled-drawing/ios/viewport-clip-to-safe-area-no-gets-margin-tiles.html: Removed.
* tiled-drawing/ios/viewport-clip-to-safe-area-yes-gets-no-margin-tiles-expected.txt: Removed.
* tiled-drawing/ios/viewport-clip-to-safe-area-yes-gets-no-margin-tiles.html: Removed.
Remove clip-to-safe-area tests and add some viewport-fit tests. Also, adjust
safe-area-inset-set to use the new UIScriptController setSafeAreaInset method.

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

2 years agoDocuments created using DOMParser.parseFromString should inherit their context docume...
cdumez@apple.com [Tue, 2 May 2017 00:02:16 +0000 (00:02 +0000)]
Documents created using DOMParser.parseFromString should inherit their context document's origin / URL
https://bugs.webkit.org/show_bug.cgi?id=171499

Reviewed by Sam Weinig.

LayoutTests/imported/w3c:

Rebaseline web-platform-tests now that more checks are passing.

* web-platform-tests/domparsing/DOMParser-parseFromString-html-expected.txt:
* web-platform-tests/domparsing/DOMParser-parseFromString-xml-expected.txt:

Source/WebCore:

Documents created using DOMParser.parseFromString should inherit their context document's
origin / URL:
- https://w3c.github.io/DOM-Parsing/#dom-domparser-parsefromstring

Test: fast/dom/domparser-parsefromstring-origin.html

* xml/DOMParser.cpp:
(WebCore::DOMParser::parseFromString):

LayoutTests:

Add layout test coverage. I have verified that this test passes in both Firefox and Chrome.

* fast/dom/domparser-parsefromstring-origin-expected.txt: Added.
* fast/dom/domparser-parsefromstring-origin.html: Added.

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

2 years agoMark inspector/debugger/tail-recursion.html as flaky.
ryanhaddad@apple.com [Tue, 2 May 2017 00:01:15 +0000 (00:01 +0000)]
Mark inspector/debugger/tail-recursion.html as flaky.
https://bugs.webkit.org/show_bug.cgi?id=168387

Unreviewed test gardening.

* platform/mac/TestExpectations:

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

2 years agoRebaseline two fast/visual-viewport tests for iOS.
ryanhaddad@apple.com [Tue, 2 May 2017 00:01:13 +0000 (00:01 +0000)]
Rebaseline two fast/visual-viewport tests for iOS.

Unreviewed test gardening.

* platform/ios/fast/visual-viewport/zoomed-fixed-expected.txt:
* platform/ios/fast/visual-viewport/zoomed-fixed-header-and-footer-expected.txt:

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

2 years agoWeb Inspector: ASSERT(!m_startedComposite) fails when recording on non-Cocoa Timeline
commit-queue@webkit.org [Mon, 1 May 2017 23:54:31 +0000 (23:54 +0000)]
Web Inspector: ASSERT(!m_startedComposite) fails when recording on non-Cocoa Timeline
https://bugs.webkit.org/show_bug.cgi?id=171363

Patch by Ross Kirsling <ross.kirsling@sony.com> on 2017-05-01
Reviewed by Matt Baker.

* page/FrameView.cpp:
(WebCore::FrameView::flushCompositingStateIncludingSubframes): Add PLATFORM(COCOA) guard.

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

2 years agoUnreviewed, fix the build on a new internal SDK
wenson_hsieh@apple.com [Mon, 1 May 2017 23:18:15 +0000 (23:18 +0000)]
Unreviewed, fix the build on a new internal SDK

Replace usages of NSItemProviderRepresentationVisibilityAll with
UIItemProviderRepresentationOptionsVisibilityAll.

* TestWebKitAPI/Tests/ios/DataInteractionTests.mm:
(-[UIItemProvider registerDataRepresentationForTypeIdentifier:withData:]):
(TestWebKitAPI::TEST):

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

2 years ago[Cocoa] Replace uses of [get…Class() alloc] in TestWebKitAPI
ddkilzer@apple.com [Mon, 1 May 2017 23:00:39 +0000 (23:00 +0000)]
[Cocoa] Replace uses of [get…Class() alloc] in TestWebKitAPI
<https://webkit.org/b/171493>

Reviewed by Dan Bernstein.

* TestWebKitAPI/Tests/WebKit/ios/AudioSessionCategoryIOS.mm:
Remove UIKit soft-link since TestWebKitAPI links to
UIKit.framework.
(TestWebKitAPI::WebKit1_AudioSessionCategoryIOS_Test): Use
UIWindow and UIWebView classes directly.
* TestWebKitAPI/Tests/WebKit2Cocoa/RequiresUserActionForPlayback.mm:
Remove UIKit soft-link since TestWebKitAPI links to
UIKit.framework.
(RequiresUserActionForPlaybackTest::createWebView): Use UIWindow
class directly.

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

2 years agoStop using strcpy() in fullyQualifiedInfoTableName() from Database.cpp
ddkilzer@apple.com [Mon, 1 May 2017 22:55:38 +0000 (22:55 +0000)]
Stop using strcpy() in fullyQualifiedInfoTableName() from Database.cpp
<https://webkit.org/b/171517>

Reviewed by Brady Eidson.

* Modules/webdatabase/Database.cpp:
(WebCore::fullyQualifiedInfoTableName): Switch from strcpy() to
snprintf().

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

2 years ago[GTK] Two test started to fail after due to unhandled promise rejection reported...
joepeck@webkit.org [Mon, 1 May 2017 22:54:19 +0000 (22:54 +0000)]
[GTK] Two test started to fail after due to unhandled promise rejection reported after r215916
https://bugs.webkit.org/show_bug.cgi?id=171491

Unreviewed test gardening.

* js/promises-tests/promises-tests-2-3-3.html:
Silence unhandled expectation messages for this test.

* media/video-fullscreen-restriction-removed-expected.txt:
Rebaseline expected results with unhandled expectation message.

* platform/gtk/TestExpectations:

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

2 years agoAX: Support time@datetime for verbosity clarification of dates, times, and durations
cfleizach@apple.com [Mon, 1 May 2017 22:52:36 +0000 (22:52 +0000)]
AX: Support time@datetime for verbosity clarification of dates, times, and durations
https://bugs.webkit.org/show_bug.cgi?id=171498
<rdar://problem/12985540>

Reviewed by Joanmarie Diggs.

Source/WebCore:

Expose the datetime attribute value.

Test: accessibility/datetime-attribute.html

* accessibility/AccessibilityObject.cpp:
(WebCore::AccessibilityObject::datetimeAttributeValue):
* accessibility/AccessibilityObject.h:
* accessibility/AccessibilityRenderObject.cpp:
(WebCore::AccessibilityRenderObject::computeAccessibilityIsIgnored):
(WebCore::AccessibilityRenderObject::determineAccessibilityRole):
* accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
(-[WebAccessibilityObjectWrapper determineIsAccessibilityElement]):
(-[WebAccessibilityObjectWrapper accessibilityDatetimeValue]):
* accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
(-[WebAccessibilityObjectWrapper additionalAccessibilityAttributeNames]):
(createAccessibilityRoleMap):
(-[WebAccessibilityObjectWrapper subrole]):
(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]):

LayoutTests:

* accessibility/datetime-attribute.html: Added.
* accessibility/roles-computedRoleString-expected.txt:
* platform/gtk/accessibility/datetime-attribute-expected.txt: Added.
* platform/gtk/accessibility/roles-exposed-expected.txt:
* platform/mac/accessibility/datetime-attribute-expected.txt: Added.
* platform/mac/accessibility/roles-computedRoleString-expected.txt:
* platform/mac/accessibility/roles-exposed-expected.txt:

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

2 years agoUpdate names in WKURLSchemeHandler/WKURLSchemeHandlerTask APIs.
beidson@apple.com [Mon, 1 May 2017 22:41:26 +0000 (22:41 +0000)]
Update names in WKURLSchemeHandler/WKURLSchemeHandlerTask APIs.
<rdar://problem/31824838> and https://bugs.webkit.org/show_bug.cgi?id=171508

Reviewed by Andy Estes.

Source/WebKit2:

This patch:
- Renames WKURLSchemeHandlerTask to WKURLSchemeTask
- Renames the method "startTask" to "startURLSchemeTask"
- Renames the method "stopTask" to "stopURLSchemeTask"

To those effects it's basically a global replace.

* Shared/API/APIObject.h:
* Shared/Cocoa/APIObject.mm:
(API::Object::newObject):
* UIProcess/API/APIURLSchemeTask.cpp: Renamed from Source/WebKit2/UIProcess/API/APIURLSchemeHandlerTask.cpp.
(API::URLSchemeTask::create):
(API::URLSchemeTask::URLSchemeTask):
* UIProcess/API/APIURLSchemeTask.h: Renamed from Source/WebKit2/UIProcess/API/APIURLSchemeHandlerTask.h.
* UIProcess/API/Cocoa/WKURLSchemeHandler.h:
* UIProcess/API/Cocoa/WKURLSchemeTask.h: Renamed from Source/WebKit2/UIProcess/API/Cocoa/WKURLSchemeHandlerTask.h.
* UIProcess/API/Cocoa/WKURLSchemeTask.mm: Renamed from Source/WebKit2/UIProcess/API/Cocoa/WKURLSchemeHandlerTask.mm.
(raiseExceptionIfNecessary):
(-[WKURLSchemeTaskImpl request]):
(-[WKURLSchemeTaskImpl didReceiveResponse:]):
(-[WKURLSchemeTaskImpl didReceiveData:]):
(-[WKURLSchemeTaskImpl didFinish]):
(-[WKURLSchemeTaskImpl didFailWithError:]):
(-[WKURLSchemeTaskImpl _apiObject]):
* UIProcess/API/Cocoa/WKURLSchemeTaskInternal.h: Renamed from Source/WebKit2/UIProcess/API/Cocoa/WKURLSchemeHandlerTaskInternal.h.
(WebKit::wrapper):
* UIProcess/Cocoa/WebURLSchemeHandlerCocoa.h:
* UIProcess/Cocoa/WebURLSchemeHandlerCocoa.mm:
(WebKit::WebURLSchemeHandlerCocoa::platformStartTask):
(WebKit::WebURLSchemeHandlerCocoa::platformStopTask):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::startURLSchemeTask):
(WebKit::WebPageProxy::stopURLSchemeTask):
(WebKit::WebPageProxy::startURLSchemeHandlerTask): Deleted.
(WebKit::WebPageProxy::stopURLSchemeHandlerTask): Deleted.
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* UIProcess/WebURLSchemeHandler.cpp:
(WebKit::WebURLSchemeHandler::startTask):
* UIProcess/WebURLSchemeHandler.h:
* UIProcess/WebURLSchemeTask.cpp: Renamed from Source/WebKit2/UIProcess/WebURLSchemeHandlerTask.cpp.
(WebKit::WebURLSchemeTask::create):
(WebKit::WebURLSchemeTask::WebURLSchemeTask):
(WebKit::WebURLSchemeTask::didReceiveResponse):
(WebKit::WebURLSchemeTask::didReceiveData):
(WebKit::WebURLSchemeTask::didComplete):
(WebKit::WebURLSchemeTask::pageDestroyed):
(WebKit::WebURLSchemeTask::stop):
* UIProcess/WebURLSchemeTask.h: Renamed from Source/WebKit2/UIProcess/WebURLSchemeHandlerTask.h.
(WebKit::WebURLSchemeTask::identifier):
(WebKit::WebURLSchemeTask::request):
* WebKit2.xcodeproj/project.pbxproj:
* WebProcess/Network/WebLoaderStrategy.cpp:
(WebKit::WebLoaderStrategy::addURLSchemeTaskProxy):
(WebKit::WebLoaderStrategy::removeURLSchemeTaskProxy):
(WebKit::WebLoaderStrategy::remove):
(WebKit::WebLoaderStrategy::addURLSchemeHandlerTaskProxy): Deleted.
(WebKit::WebLoaderStrategy::removeURLSchemeHandlerTaskProxy): Deleted.
* WebProcess/Network/WebLoaderStrategy.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::urlSchemeTaskDidReceiveResponse):
(WebKit::WebPage::urlSchemeTaskDidReceiveData):
(WebKit::WebPage::urlSchemeTaskDidComplete):
(WebKit::WebPage::urlSchemeHandlerTaskDidReceiveResponse): Deleted.
(WebKit::WebPage::urlSchemeHandlerTaskDidReceiveData): Deleted.
(WebKit::WebPage::urlSchemeHandlerTaskDidComplete): Deleted.
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:
* WebProcess/WebPage/WebURLSchemeHandlerProxy.cpp:
(WebKit::WebURLSchemeHandlerProxy::startNewTask):
(WebKit::WebURLSchemeHandlerProxy::taskDidComplete):
(WebKit::WebURLSchemeHandlerProxy::taskDidStopLoading):
* WebProcess/WebPage/WebURLSchemeHandlerProxy.h:
* WebProcess/WebPage/WebURLSchemeTaskProxy.cpp: Renamed from Source/WebKit2/WebProcess/WebPage/WebURLSchemeHandlerTaskProxy.cpp.
(WebKit::WebURLSchemeTaskProxy::WebURLSchemeTaskProxy):
(WebKit::WebURLSchemeTaskProxy::startLoading):
(WebKit::WebURLSchemeTaskProxy::stopLoading):
(WebKit::WebURLSchemeTaskProxy::didReceiveResponse):
(WebKit::WebURLSchemeTaskProxy::didReceiveData):
(WebKit::WebURLSchemeTaskProxy::didComplete):
(WebKit::WebURLSchemeTaskProxy::hasLoader):
* WebProcess/WebPage/WebURLSchemeTaskProxy.h: Renamed from Source/WebKit2/WebProcess/WebPage/WebURLSchemeHandlerTaskProxy.h.
(WebKit::WebURLSchemeTaskProxy::request):
(WebKit::WebURLSchemeTaskProxy::identifier):

Tools:

* TestWebKitAPI/Tests/WebKit2Cocoa/WKURLSchemeHandler-1.mm:
(-[SchemeHandler webView:startURLSchemeTask:]):
(-[SchemeHandler webView:stopURLSchemeTask:]):
(-[SchemeHandler webView:startTask:]): Deleted.
(-[SchemeHandler webView:stopTask:]): Deleted.

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

2 years agoMarked fast/mediastream/getUserMedia-webaudio.html as flaky timeout.
ryanhaddad@apple.com [Mon, 1 May 2017 22:29:21 +0000 (22:29 +0000)]
Marked fast/mediastream/getUserMedia-webaudio.html as flaky timeout.
https://bugs.webkit.org/show_bug.cgi?id=170960

Unreviewed test gardening.

Patch by Matt Lewis <jlewis3@apple.com> on 2017-05-01

* platform/mac-wk2/TestExpectations:

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

2 years agoRejectedPromiseTracker should produce better callstacks and avoid capturing callstack...
joepeck@webkit.org [Mon, 1 May 2017 22:24:37 +0000 (22:24 +0000)]
RejectedPromiseTracker should produce better callstacks and avoid capturing callstacks unless there is a debugger/inspector
https://bugs.webkit.org/show_bug.cgi?id=171416
<rdar://problem/31899425>

Reviewed by Saam Barati and Brian Burg.

LayoutTests/imported/w3c:

* web-platform-tests/WebCryptoAPI/derive_bits_keys/test_ecdh_bits-expected.txt:
* web-platform-tests/WebCryptoAPI/derive_bits_keys/test_ecdh_keys-expected.txt:
* web-platform-tests/html/semantics/embedded-content/media-elements/event_pause_noautoplay-expected.txt:
* web-platform-tests/html/semantics/embedded-content/media-elements/event_play_noautoplay-expected.txt:
* web-platform-tests/html/semantics/embedded-content/media-elements/paused_true_during_pause-expected.txt:
* web-platform-tests/streams/piping/close-propagation-forward-expected.txt:
* web-platform-tests/streams/piping/error-propagation-backward-expected.txt:
* web-platform-tests/streams/piping/error-propagation-forward-expected.txt:
* web-platform-tests/streams/piping/flow-control-expected.txt:
* web-platform-tests/streams/piping/general-expected.txt:
Rebaseline results. Better stack trace for errors includes correct line numbers.
Explicit rejections with a value do not include backtraces without a debugger.

Source/WebCore:

Test: inspector/console/message-stack-trace.html

* dom/RejectedPromiseTracker.cpp:
(WebCore::UnhandledPromise::UnhandledPromise):
(WebCore::UnhandledPromise::callStack):
Switch to RefPtr to allow not capturing the stack.

(WebCore::createScriptCallStackFromReason):
Use the VM's lastException if the value in the exception is the
rejected promise value. Using the Exception call stack is important
because uncaught exceptions in promise rejections trigger a built-in
try/catch and re-enter JavaScript before passing the Error through
to the RejectionTracker. When possible, we don't want to capture the
new stack originating from the try/catch. Instead, we want the stack
from before the try/catch when the error was created.

* dom/ScriptExecutionContext.h:
* dom/ScriptExecutionContext.cpp:
(WebCore::ScriptExecutionContext::reportUnhandledPromiseRejection):
Switch to a pointer since the stack could be empty.

LayoutTests:

* inspector/console/message-stack-trace-expected.txt: Added.
* inspector/console/message-stack-trace.html: Added.
Test console stack traces from various places where console messages
are generated and the stacks are important.

* inspector/console/resources/log-console-stack-trace.js: Added.
(TestPage.registerInitializer.logCallFrame):
(TestPage.registerInitializer.window.logConsoleMessageStackTrace):
Like the logger for Debugger StackTrace but for Console StackTrace.

* inspector/debugger/break-on-exception-throw-in-promise-expected.txt:
* inspector/debugger/break-on-uncaught-exception-throw-in-promise-expected.txt:
* fast/mediastream/MediaStream-MediaElement-setObject-null-expected.txt:
* http/tests/security/video-cross-origin-caching-expected.txt:
* js/dom/unhandled-promise-rejection-bindings-type-error-expected.txt:
* js/dom/unhandled-promise-rejection-console-report-expected.txt:
* js/promises-tests/promises-tests-2-2-6-expected.txt:
* streams/reference-implementation/pipe-to-options-expected.txt:
* streams/reference-implementation/readable-stream-templated-expected.txt:
* streams/reference-implementation/writable-stream-abort-expected.txt:
* streams/reference-implementation/writable-stream-expected.txt:
* webrtc/libwebrtc/release-while-creating-offer-expected.txt:
* webrtc/libwebrtc/release-while-setting-local-description-expected.txt:
Rebaseline results. Better stack trace for errors includes correct line numbers.
Explicit rejections with a value do not include backtraces without a debugger.

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

2 years agoUnreviewed build fix after r216033.
jer.noble@apple.com [Mon, 1 May 2017 22:03:15 +0000 (22:03 +0000)]
Unreviewed build fix after r216033.

* platform/mediastream/mac/CoreAudioCaptureSource.cpp:
(WebCore::CoreAudioCaptureSource::create):

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

2 years agoLayoutTest/imported/w3c/web-platform-tests/resource-timing/rt-revalidate-requests...
joepeck@webkit.org [Mon, 1 May 2017 21:53:38 +0000 (21:53 +0000)]
LayoutTest/imported/w3c/web-platform-tests/resource-timing/rt-revalidate-requests.html is a flaky failure.
https://bugs.webkit.org/show_bug.cgi?id=171511

Unreviewed test gardening.

* TestExpectations:

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

2 years agoAdd a new function for getting the Git hash for a pure git directory.
jmarcell@apple.com [Mon, 1 May 2017 21:53:05 +0000 (21:53 +0000)]
Add a new function for getting the Git hash for a pure git directory.
https://bugs.webkit.org/show_bug.cgi?id=171450

Reviewed by David Kilzer.

* Scripts/VCSUtils.pm:
(gitHashForDirectory):

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

2 years agoUpdate TestExpectations for http/tests/fetch/fetch-in-worker-crash.html.
ryanhaddad@apple.com [Mon, 1 May 2017 21:52:54 +0000 (21:52 +0000)]
Update TestExpectations for http/tests/fetch/fetch-in-worker-crash.html.

Unreviewed test gardening.

* TestExpectations:

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

2 years agofix check-webkit-style errors in webkitpy about two blank lines before class definitions
aakash_jain@apple.com [Mon, 1 May 2017 21:49:28 +0000 (21:49 +0000)]
fix check-webkit-style errors in webkitpy about two blank lines before class definitions
https://bugs.webkit.org/show_bug.cgi?id=171509

Reviewed by Alexey Proskuryakov.

* Scripts/webkitpy/common/config/committers.py: Added two blank lines before class definition.
* Scripts/webkitpy/layout_tests/models/test_run_results.py: Ditto.
* Scripts/webkitpy/layout_tests/run_webkit_tests.py: Ditto.
* Scripts/webkitpy/port/base_unittest.py: Ditto.
* Scripts/webkitpy/port/device.py: Ditto.
* Scripts/webkitpy/port/linux_get_crash_log.py: Ditto.
* Scripts/webkitpy/style/checkers/featuredefines.py: Ditto.
* Scripts/webkitpy/style/checkers/jsonchecker.py: Ditto.
* Scripts/webkitpy/tool/bot/patchanalysistask.py: Ditto.
* Scripts/webkitpy/layout_tests/controllers/manager_unittest.py: Ditto.
(ManagerTest.test_uses_custom_device.MockCustomDevicePort): Added blank line before method.
(ManagerTest.test_uses_custom_device): Removed extra blank line at end of file.

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

2 years agoUse AVAudioSession to enumerate audio capture devices on iOS
jer.noble@apple.com [Mon, 1 May 2017 21:38:38 +0000 (21:38 +0000)]
Use AVAudioSession to enumerate audio capture devices on iOS
https://bugs.webkit.org/show_bug.cgi?id=170861
<rdar://problem/31653658>

Reviewed by Eric Carlson.

Hook up the new AVAudioSessionCaptureDeviceManager class to CoreAudioCaptureSource and to the (increasingly ill-named)
RealtimeMediaSourceCenterMac.

* platform/mediastream/mac/CoreAudioCaptureSource.cpp:
(WebCore::CoreAudioCaptureSource::create):
* platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp:
(WebCore::RealtimeMediaSourceCenterMac::setUseAVFoundationAudioCapture):

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

2 years ago[ATK] Expose values of aria-rowcount, aria-colcount, aria-rowindex, aria-colindex...
jdiggs@igalia.com [Mon, 1 May 2017 21:19:09 +0000 (21:19 +0000)]
[ATK] Expose values of aria-rowcount, aria-colcount, aria-rowindex, aria-colindex, aria-rowspan, and aria-colspan as object attributes
https://bugs.webkit.org/show_bug.cgi?id=171496

Reviewed by Chris Fleizach.

Source/WebCore:

Expose valid, author-provided values as an object attribute. In order to distinguish
author-provided values from the default returned by WebCore Accessibility (1), change
the default return value to -1. We cannot return 0 because the ARIA spec states that
0 is a valid value for authors to provide to indicate that the cell spans the remaining
rows in the row group.

Also removed some legacy code. The "layout-guess" attribute was needed and expected
as a way for AT-SPI2-based assistive technologies to identify layout tables. WebCore
Accessibility does not expose tables which are purely for layout as accessible tables,
and WebKitGtk uses that implementation, thus this attribute is no longer relevant.

No new tests. Unskipped existing test which is now passing.

* accessibility/AccessibilityARIAGridCell.cpp:
(WebCore::AccessibilityARIAGridCell::ariaRowSpanWithRowIndex):
(WebCore::AccessibilityARIAGridCell::columnIndexRange):
* accessibility/AccessibilityTableCell.cpp:
(WebCore::AccessibilityTableCell::ariaColumnSpan):
(WebCore::AccessibilityTableCell::ariaRowSpan):
* accessibility/AccessibilityTableCell.h:
* accessibility/atk/WebKitAccessibleWrapperAtk.cpp:
(webkitAccessibleGetAttributes):

Tools:

Add new attribute names so that the values of the object attributes can be tested.

* WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:
(WTR::AccessibilityUIElement::numberAttributeValue):

LayoutTests:

* platform/gtk/TestExpectations: Unskip accessibility/aria-table-attributes.html

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

2 years agoAir::fixObviousSpills should remove totally redundant instructions
fpizlo@apple.com [Mon, 1 May 2017 21:17:24 +0000 (21:17 +0000)]
Air::fixObviousSpills should remove totally redundant instructions
https://bugs.webkit.org/show_bug.cgi?id=171131

Reviewed by Saam Barati.

This is a modest compile-time-neutral improvement to fixObviousSpills. That phase
builds up a classic alias analysis data structure over spills and registers and then
uses it to remove the most common spill pathologies we encounter. For example, if you
use a spill but the spill is aliased to a register or constant, then we can replace the
use of the spill with a use of the register or constant.

But that phase was missing perhaps one of the most obvious fixups that its analysis
allows us to do: if any instruction creates an alias we already know about, then the
instruction is redundant. This turned out to be super important for
https://bugs.webkit.org/show_bug.cgi?id=171075. That patch didn't work out, but this
kind of optimization might be a good clean-up for many other kinds of optimizations.

* b3/air/AirFixObviousSpills.cpp:

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

2 years agoRebaseline fast/visual-viewport/rtl-zoomed-rects.html for mac-wk1.
ryanhaddad@apple.com [Mon, 1 May 2017 21:15:22 +0000 (21:15 +0000)]
Rebaseline fast/visual-viewport/rtl-zoomed-rects.html for mac-wk1.
https://bugs.webkit.org/show_bug.cgi?id=171500

Unreviewed test gardening.

* platform/mac-wk1/fast/visual-viewport/rtl-zoomed-rects-expected.txt:

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

2 years agoRebaselined fast/visual-viewport/ tests.
ryanhaddad@apple.com [Mon, 1 May 2017 21:13:44 +0000 (21:13 +0000)]
Rebaselined fast/visual-viewport/ tests.
https://bugs.webkit.org/show_bug.cgi?id=171500

Unreviewed test gardening.

Patch by Matt Lewis <jlewis3@apple.com> on 2017-05-01

* platform/ios-wk2/fast/visual-viewport/nonzoomed-rects-expected.txt:
* platform/ios-wk2/fast/visual-viewport/rtl-nonzoomed-rects-expected.txt:
* platform/ios-wk2/fast/visual-viewport/rtl-zoomed-rects-expected.txt:
* platform/ios-wk2/fast/visual-viewport/rubberbanding-viewport-rects-expected.txt:
* platform/ios-wk2/fast/visual-viewport/rubberbanding-viewport-rects-extended-background-expected.txt:
* platform/ios-wk2/fast/visual-viewport/rubberbanding-viewport-rects-header-footer-expected.txt:
* platform/ios-wk2/fast/visual-viewport/zoomed-fixed-expected.txt: Added.
* platform/ios-wk2/fast/visual-viewport/zoomed-fixed-header-and-footer-expected.txt: Added.
* platform/ios-wk2/fast/visual-viewport/zoomed-rects-expected.txt:

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

2 years agoAdd audio device change notifications to AudioSession.
jer.noble@apple.com [Mon, 1 May 2017 21:06:39 +0000 (21:06 +0000)]
Add audio device change notifications to AudioSession.
https://bugs.webkit.org/show_bug.cgi?id=171403

Reviewed by Eric Carlson.

Add notifications to AudioSession which fire when the current input and output audio devices
change. Also add a notification when audio services are lost (which will only fire on iOS).
Take this opportunity to make the existing hardwareMutedStateDidChange() notification be
platform agnostic, to move the outputDeviceSupportsLowPowerMode() code from AudioHardwareListener,
and to do a few more clean-ups of the AudioSession code.

* WebCore.xcodeproj/project.pbxproj:
* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::HTMLMediaElement):
(WebCore::HTMLMediaElement::~HTMLMediaElement):
* html/HTMLMediaElement.h:
* platform/audio/AudioSession.cpp:
(WebCore::AudioSession::AudioSession):
* platform/audio/AudioSession.h:
(WebCore::AudioSession::Observer::hardwareMutedStateDidChange):
(WebCore::AudioSession::Observer::audioInputDeviceChanged):
(WebCore::AudioSession::Observer::audioOutputDeviceChanged):
(WebCore::AudioSession::Observer::audioServicesLost):
(WebCore::AudioSession::Observer::audioServicesReset):
(WebCore::AudioSession::MutedStateObserver::~MutedStateObserver): Deleted.
* platform/audio/ios/AudioSessionIOS.mm:
(WebCore::AudioSessionPrivate::AudioSessionPrivate):
(WebCore::AudioSession::AudioSession):
(WebCore::AudioSession::setCategoryOverride):
(WebCore::AudioSession::categoryOverride):
(WebCore::AudioSession::isMuted):
(WebCore::AudioSession::outputDeviceSupportsLowPowerMode):
(WebCore::AudioSession::addObserver):
(WebCore::AudioSession::removeObserver):
* platform/audio/mac/AudioSessionMac.mm: Renamed from Source/WebCore/platform/audio/mac/AudioSessionMac.cpp.
(WebCore::defaultDevice):
(WebCore::AudioSessionPrivate::AudioSessionPrivate):
(WebCore::AudioSession::AudioSession):
(WebCore::AudioSession::~AudioSession):
(WebCore::AudioSession::category):
(WebCore::AudioSession::setCategory):
(WebCore::AudioSession::categoryOverride):
(WebCore::AudioSession::setCategoryOverride):
(WebCore::AudioSession::sampleRate):
(WebCore::AudioSession::bufferSize):
(WebCore::AudioSession::numberOfOutputChannels):
(WebCore::AudioSession::tryToSetActive):
(WebCore::AudioSession::preferredBufferSize):
(WebCore::AudioSession::setPreferredBufferSize):
(WebCore::AudioSession::isMuted):
(WebCore::currentDeviceSupportsLowPowerBufferSize):
(WebCore::AudioSession::outputDeviceSupportsLowPowerMode):
(WebCore::AudioSession::addObserver):
(WebCore::AudioSession::removeObserver):

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

2 years agoDo not dispatch SVG load event in frameless documents
cdumez@apple.com [Mon, 1 May 2017 20:40:23 +0000 (20:40 +0000)]
Do not dispatch SVG load event in frameless documents
https://bugs.webkit.org/show_bug.cgi?id=171505
<rdar://problem/31799776>

Reviewed by Andreas Kling.

Source/WebCore:

We should not dispatch SVG load events in frameless documents. <https://trac.webkit.org/changeset/173028/webkit>
took care of most load events but forgot the SVG load event.

Test: fast/dom/domparser-parsefromstring-svg-load-event.html

* dom/Document.cpp:
(WebCore::Document::implicitClose):

LayoutTests:

Add layout test coverage. I have verified that this test passes on both Firefox and Chrome.

* fast/dom/domparser-parsefromstring-svg-load-event-expected.txt: Added.
* fast/dom/domparser-parsefromstring-svg-load-event.html: Added.

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

2 years agoSkip editing/execCommand/show-modal-dialog-during-execCommand.html on mac-wk1.
ryanhaddad@apple.com [Mon, 1 May 2017 18:50:33 +0000 (18:50 +0000)]
Skip editing/execCommand/show-modal-dialog-during-execCommand.html on mac-wk1.
https://bugs.webkit.org/show_bug.cgi?id=171501

Unreviewed test gardening.

* platform/mac-wk1/TestExpectations:

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

2 years agoRebaseline js/dom/global-constructors-attributes.html after r215956.
ryanhaddad@apple.com [Mon, 1 May 2017 18:45:50 +0000 (18:45 +0000)]
Rebaseline js/dom/global-constructors-attributes.html  after r215956.

Unreviewed test gardening.

* platform/mac-elcapitan/js/dom/global-constructors-attributes-expected.txt:
* platform/mac-wk1/js/dom/global-constructors-attributes-expected.txt:
* platform/mac/js/dom/global-constructors-attributes-expected.txt:

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

2 years agoTweak how long we allow a process to go over its background CPU limit
cdumez@apple.com [Mon, 1 May 2017 18:09:51 +0000 (18:09 +0000)]
Tweak how long we allow a process to go over its background CPU limit
https://bugs.webkit.org/show_bug.cgi?id=170460
<rdar://problem/31433141>

Reviewed by Geoffrey Garen.

Tweak how long we allow a process to go over its background CPU limit. We now use 8 minutes
intervals (instead of previously 15). This is less conservative and aligned with our memory
kills.

* WebProcess/cocoa/WebProcessCocoa.mm:

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

2 years agoRemove some usage of PassRefPtr in editing code
cdumez@apple.com [Mon, 1 May 2017 18:08:07 +0000 (18:08 +0000)]
Remove some usage of PassRefPtr in editing code
https://bugs.webkit.org/show_bug.cgi?id=171490

Reviewed by Darin Adler.

Source/WebCore:

Remove some usage of PassRefPtr in editing code.

* dom/DocumentMarkerController.cpp:
(WebCore::DocumentMarkerController::markersInRange):
(DocumentMarkerController::hasMarkers):
(DocumentMarkerController::clearDescriptionOnMarkersIntersectingRange):
* dom/DocumentMarkerController.h:
* editing/AlternativeTextController.cpp:
(WebCore::AlternativeTextController::isSpellingMarkerAllowed):
(WebCore::AlternativeTextController::show):
(WebCore::AlternativeTextController::applyAlternativeTextToRange):
(WebCore::AlternativeTextController::timerFired):
(WebCore::AlternativeTextController::handleAlternativeTextUIResult):
(WebCore::AlternativeTextController::recordAutocorrectionResponse):
(WebCore::AlternativeTextController::markReversed):
(WebCore::AlternativeTextController::markCorrection):
(WebCore::AlternativeTextController::recordSpellcheckerResponseForModifiedCorrection):
(WebCore::AlternativeTextController::processMarkersOnTextToBeReplacedByResult):
(WebCore::AlternativeTextController::applyDictationAlternative):
* editing/AlternativeTextController.h:
(WebCore::AlternativeTextController::UNLESS_ENABLED):
* editing/ApplyStyleCommand.cpp:
(WebCore::createFontElement):
(WebCore::createStyleSpanElement):
(WebCore::ApplyStyleCommand::ApplyStyleCommand):
(WebCore::copyStyleOrCreateEmpty):
(WebCore::ApplyStyleCommand::applyRelativeFontStyleChange):
(WebCore::ApplyStyleCommand::applyInlineStyleToNodeRange):
(WebCore::ApplyStyleCommand::removeConflictingInlineStyleFromRun):
(WebCore::ApplyStyleCommand::removeInlineStyleFromElement):
(WebCore::ApplyStyleCommand::highestAncestorWithConflictingInlineStyle):
(WebCore::ApplyStyleCommand::applyInlineStyleToPushDown):
(WebCore::ApplyStyleCommand::pushDownInlineStyleAroundNode):
(WebCore::ApplyStyleCommand::removeInlineStyle):
(WebCore::ApplyStyleCommand::shouldSplitTextElement):
(WebCore::ApplyStyleCommand::surroundNodeRangeWithElement):
(WebCore::ApplyStyleCommand::addInlineStyleIfNeeded):
(WebCore::ApplyStyleCommand::positionToComputeInlineStyleChange):
(WebCore::ApplyStyleCommand::applyInlineStyleChange):
* editing/ApplyStyleCommand.h:
(WebCore::ApplyStyleCommand::create):
(WebCore::ApplyStyleCommand::shouldRemoveInlineStyleFromElement):
* editing/CompositeEditCommand.cpp:
(WebCore::CompositeEditCommand::applyCommandToComposite):
(WebCore::CompositeEditCommand::applyStyledElement):
(WebCore::CompositeEditCommand::removeStyledElement):
(WebCore::CompositeEditCommand::replaceElementWithSpanPreservingChildrenAndAttributes):
(WebCore::CompositeEditCommand::inputText):
(WebCore::CompositeEditCommand::replaceTextInNodePreservingMarkers):
(WebCore::CompositeEditCommand::pushAnchorElementDown):
* editing/CompositeEditCommand.h:
* editing/DeleteSelectionCommand.cpp:
(WebCore::DeleteSelectionCommand::originalStringForAutocorrectionAtBeginningOfSelection):
* editing/DictationCommand.cpp:
(WebCore::DictationCommand::insertTextRunWithoutNewlines):
* editing/EditingStyle.cpp:
(WebCore::copyEditingProperties):
(WebCore::copyPropertiesFromComputedStyle):
(WebCore::extractPropertyValue):
(WebCore::HTMLAttributeEquivalent::attributeValueAsCSSValue):
(WebCore::HTMLFontSizeEquivalent::attributeValueAsCSSValue):
(WebCore::EditingStyle::setStyle):
(WebCore::EditingStyle::copy):
(WebCore::EditingStyle::extractAndRemoveBlockProperties):
(WebCore::EditingStyle::extractAndRemoveTextDirection):
(WebCore::EditingStyle::mergeInlineStyleOfElement):
(WebCore::extractEditingProperties):
(WebCore::EditingStyle::styleAtSelectionStart):
(WebCore::getPropertiesNotIn):
* editing/EditingStyle.h:
* editing/Editor.cpp:
(WebCore::Editor::handleTextEvent):
(WebCore::Editor::replaceSelectionWithFragment):
(WebCore::Editor::insertOrderedList):
(WebCore::Editor::insertUnorderedList):
(WebCore::Editor::markAllMisspellingsAndBadGrammarInRanges):
(WebCore::correctSpellcheckingPreservingTextCheckingParagraph):
(WebCore::Editor::markAndReplaceFor):
(WebCore::Editor::changeBackToReplacedString):
(WebCore::Editor::updateMarkersForWordsAffectedByEditing):
(WebCore::Editor::rangeForPoint):
* editing/Editor.h:
* editing/ModifySelectionListLevel.cpp:
(WebCore::IncreaseSelectionListLevelCommand::increaseSelectionListLevel):
(WebCore::IncreaseSelectionListLevelCommand::increaseSelectionListLevelOrdered):
(WebCore::IncreaseSelectionListLevelCommand::increaseSelectionListLevelUnordered):
* editing/ModifySelectionListLevel.h:
* editing/SpellChecker.cpp:
(WebCore::SpellChecker::requestCheckingFor):
(WebCore::SpellChecker::didCheckSucceed):
* editing/SpellChecker.h:
(WebCore::SpellCheckRequest::checkingRange):
(WebCore::SpellCheckRequest::paragraphRange):
(WebCore::SpellCheckRequest::rootEditableElement):
* editing/SpellingCorrectionCommand.cpp:
(WebCore::SpellingCorrectionCommand::SpellingCorrectionCommand):
(WebCore::SpellingCorrectionCommand::willApplyCommand):
(WebCore::SpellingCorrectionCommand::doApply):
(WebCore::SpellingCorrectionCommand::targetRanges):
* editing/SpellingCorrectionCommand.h:
(WebCore::SpellingCorrectionCommand::create):
* editing/SurroundingText.h:
* editing/TextCheckingHelper.cpp:
(WebCore::TextCheckingParagraph::expandRangeToNextEnd):
(WebCore::TextCheckingParagraph::rangeLength):
(WebCore::TextCheckingParagraph::paragraphRange):
(WebCore::TextCheckingParagraph::subrange):
(WebCore::TextCheckingParagraph::offsetTo):
(WebCore::TextCheckingParagraph::offsetAsRange):
(WebCore::TextCheckingParagraph::text):
(WebCore::TextCheckingParagraph::checkingStart):
* editing/TextCheckingHelper.h:
* editing/TypingCommand.cpp:
(WebCore::TypingCommand::insertTextRunWithoutNewlines):
* editing/cocoa/HTMLConverter.mm:
(HTMLConverterCaches::computedStylePropertyForElement):
(HTMLConverterCaches::inlineStylePropertyForElement):
* page/ios/FrameIOS.mm:
(WebCore::Frame::interpretationsForCurrentRoot):

Source/WebKit/ios:

* WebCoreSupport/WebFrameIOS.mm:
(-[WebFrame previousUnperturbedDictationResultBoundaryFromPosition:]):
(-[WebFrame nextUnperturbedDictationResultBoundaryFromPosition:]):

Source/WebKit/mac:

* WebView/WebFrame.mm:
(-[WebFrame dictationResultMetadataForRange:]):
(-[WebFrame _replaceSelectionWithFragment:selectReplacement:smartReplace:matchStyle:]):

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

2 years agoOn-screen panel for candidate bar is in the wrong place when the caret is at the
bdakin@apple.com [Mon, 1 May 2017 17:36:46 +0000 (17:36 +0000)]
On-screen panel for candidate bar is in the wrong place when the caret is at the
start of a paragraph
https://bugs.webkit.org/show_bug.cgi?id=171453
-and corresponding-
rdar://problem/29779764

Reviewed by Tim Horton.

Source/WebKit/mac:

This bug only happens when the caret is at the beginning of the paragraph, and it
is because Range::absoluteTextQuads() returns no quads in this case. I think it
might be correct that absoluteTextQuads() returns no quads in this case, so this
patch fixes the bug at the call site by using absoluteCaretBounds() in this case.

* WebCoreSupport/WebEditorClient.mm:
(WebEditorClient::handleRequestedCandidates):

Source/WebKit2:

This bug only happens when the caret is at the beginning of the paragraph, and it
is because Range::absoluteTextQuads() returns no quads in this case. I think it
might be correct that absoluteTextQuads() returns no quads in this case, so this
patch fixes the bug at the call site by using absoluteCaretBounds() in this case.

SPI for testing.
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _candidateRect]):
* UIProcess/API/Cocoa/WKWebViewPrivate.h:

Bug fix.
* WebProcess/WebPage/mac/WebPageMac.mm:
(WebKit::WebPage::platformEditorState):

Tools:

This test hard-codes the y-coordinate for the expected candidateRect.
* TestWebKitAPI/Tests/WebKit2Cocoa/WKWebViewCandidateTests.mm:
(TEST):

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

2 years agocheck-webkit-style: Enable sprintf(), strcat(), strcpy() and printf() format checks
ddkilzer@apple.com [Mon, 1 May 2017 17:06:40 +0000 (17:06 +0000)]
check-webkit-style: Enable sprintf(), strcat(), strcpy() and printf() format checks
<https://webkit.org/b/171494>

Reviewed by Brent Fulgham.

* Scripts/webkitpy/style/checkers/cpp.py:
(check_language): Change categories for certain checkers from
'runtime/printf' to 'security/printf' so they are no longer
filtered.
(CppChecker.categories): Add 'security/printf'.
* Scripts/webkitpy/style/checkers/cpp_unittest.py:
(CppStyleTest.test_insecure_string_operations): Add new test for
sprintf(), strcat() and strcpy().
(CppStyleTest.test_format_strings): Update test results for new
'security/printf' category use.

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

2 years agoAdd notifications from CaptureDeviceManager (and subclasses) when device lists change
jer.noble@apple.com [Mon, 1 May 2017 17:06:16 +0000 (17:06 +0000)]
Add notifications from CaptureDeviceManager (and subclasses) when device lists change
https://bugs.webkit.org/show_bug.cgi?id=171442

Reviewed by Youenn Fablet.

Add a new callback-based notification to CaptureDeviceManager which fires when the underlying list
of devices changes. Add support for enumerating AVAudioSession capture devices.

* WebCore.xcodeproj/project.pbxproj:
* platform/mediastream/CaptureDeviceManager.cpp:
(nextObserverToken):
(CaptureDeviceManager::addCaptureDeviceChangedObserver):
(CaptureDeviceManager::removeCaptureDeviceChangedObserver):
* platform/mediastream/CaptureDeviceManager.h:
* platform/mediastream/ios/AVAudioSessionCaptureDevice.h: Added.
* platform/mediastream/ios/AVAudioSessionCaptureDevice.mm: Added.
(WebCore::AVAudioSessionCaptureDevice::create):
(WebCore::AVAudioSessionCaptureDevice::AVAudioSessionCaptureDevice):
* platform/mediastream/ios/AVAudioSessionCaptureDeviceManager.h: Added.
* platform/mediastream/ios/AVAudioSessionCaptureDeviceManager.mm: Added.
(-[WebAVAudioSessionAvailableInputsListener initWithCallback:]):
(-[WebAVAudioSessionAvailableInputsListener invalidate]):
(-[WebAVAudioSessionAvailableInputsListener observeValueForKeyPath:ofObject:change:context:]):
(WebCore::AVAudioSessionCaptureDeviceManager::singleton):
(WebCore::AVAudioSessionCaptureDeviceManager::captureDevices):
(WebCore::AVAudioSessionCaptureDeviceManager::audioSessionCaptureDevices):
(WebCore::AVAudioSessionCaptureDeviceManager::audioSessionDeviceWithUID):
(WebCore::AVAudioSessionCaptureDeviceManager::refreshAudioCaptureDevices):
* platform/mediastream/mac/AVCaptureDeviceManager.mm:
(WebCore::AVCaptureDeviceManager::deviceConnected):
(WebCore::AVCaptureDeviceManager::deviceDisconnected):
* platform/mediastream/mac/CoreAudioCaptureDeviceManager.cpp:
(WebCore::CoreAudioCaptureDeviceManager::refreshAudioCaptureDevices):
(WebCore::CoreAudioCaptureDeviceManager::devicesChanged):

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

2 years agoAX: [GTK] Add support to query for aria-current
jdiggs@igalia.com [Mon, 1 May 2017 16:58:00 +0000 (16:58 +0000)]
AX: [GTK] Add support to query for aria-current
https://bugs.webkit.org/show_bug.cgi?id=149016

Reviewed by Chris Fleizach.

Tools:

Implement support for "AXARIACurrent" string attribute value.

* WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:

LayoutTests:

* platform/gtk/TestExpectations: Unskip now-passing test.

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

2 years agoCleanup: Change ASCIICaseInsensitiveHash from a class to a struct
dbates@webkit.org [Mon, 1 May 2017 16:11:24 +0000 (16:11 +0000)]
Cleanup: Change ASCIICaseInsensitiveHash from a class to a struct
https://bugs.webkit.org/show_bug.cgi?id=171460

Reviewed by Sam Weinig.

All of the members of ASCIICaseInsensitiveHash have public visibility.
We are underutilizing the purpose of a class - defaults to private
visibility of members. We should change ASCIICaseInsensitiveHash from
a class to a struct, which by definition defaults to public visibility
for members.

* wtf/text/StringHash.h:

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

2 years agoREGRESSION (r216000): test-webkitpy fails after adding new soft-linked class checker
ddkilzer@apple.com [Mon, 1 May 2017 13:10:14 +0000 (13:10 +0000)]
REGRESSION (r216000): test-webkitpy fails after adding new soft-linked class checker

Unreviewed.

Follow-up fix for:
[Cocoa] Have check-webkit-style advise against use of [get…Class() alloc]
https://bugs.webkit.org/show_bug.cgi?id=171486

* Scripts/webkitpy/style/checkers/cpp.py:
(check_soft_link_class_alloc): Use (\w+) instead of ([^\s]+) to
match and capture the function name.  The latter also mistakenly
matches C-preprocessor directives.
(CppChecker.categories): Add 'runtime/soft-linked-alloc', which
is a requirement for the CppChecker class.

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

2 years agoUnreviewed GTK+ gardening. Rebaseline giantRowspan tests after r215914.
carlosgc@webkit.org [Mon, 1 May 2017 08:41:49 +0000 (08:41 +0000)]
Unreviewed GTK+ gardening. Rebaseline giantRowspan tests after r215914.

* platform/gtk/fast/table/giantRowspan-expected.txt:
* platform/gtk/fast/table/giantRowspan2-expected.txt:

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

2 years agoUnreviewed GTK+ gardening. Update expectations of several test.
carlosgc@webkit.org [Mon, 1 May 2017 08:39:39 +0000 (08:39 +0000)]
Unreviewed GTK+ gardening. Update expectations of several test.

* platform/gtk/TestExpectations:

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

2 years agoUnreviewed GTK+ gardening. Rebaseline several WPT fetch API tests.
carlosgc@webkit.org [Mon, 1 May 2017 08:07:42 +0000 (08:07 +0000)]
Unreviewed GTK+ gardening. Rebaseline several WPT fetch API tests.

* platform/gtk/imported/w3c/web-platform-tests/fetch/api/basic/request-headers.any-expected.txt: Added.
* platform/gtk/imported/w3c/web-platform-tests/fetch/api/basic/request-headers.any.worker-expected.txt: Added.
* platform/gtk/imported/w3c/web-platform-tests/fetch/api/basic/scheme-about.any-expected.txt: Added.
* platform/gtk/imported/w3c/web-platform-tests/fetch/api/cors/cors-basic.any-expected.txt: Added.
* platform/gtk/imported/w3c/web-platform-tests/fetch/api/cors/cors-basic.any.worker-expected.txt: Added.
* platform/gtk/imported/w3c/web-platform-tests/fetch/api/cors/cors-no-preflight.any-expected.txt: Added.
* platform/gtk/imported/w3c/web-platform-tests/fetch/api/cors/cors-no-preflight.any.worker-expected.txt: Added.
* platform/gtk/imported/w3c/web-platform-tests/fetch/api/cors/cors-origin.any-expected.txt: Added.
* platform/gtk/imported/w3c/web-platform-tests/fetch/api/cors/cors-origin.any.worker-expected.txt: Added.

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

2 years agoAX: AccessibilityTable::ariaRowCount() and ariaColumnCount() should not return -1...
jdiggs@igalia.com [Mon, 1 May 2017 07:56:18 +0000 (07:56 +0000)]
AX: AccessibilityTable::ariaRowCount() and ariaColumnCount() should not return -1 unless that is the author-provided value
https://bugs.webkit.org/show_bug.cgi?id=171475

Reviewed by Chris Fleizach.

Source/WebCore:

If the author has provided a valid value, return it. Otherwise, return 0.

No new tests needed. Update existing test expectations to reflect the change.

* accessibility/AccessibilityTable.cpp:
(WebCore::AccessibilityTable::ariaColumnCount):
(WebCore::AccessibilityTable::ariaRowCount):

LayoutTests:

* accessibility/table-detection-expected.txt: Updated.
* accessibility/table-with-rules-expected.txt: Updated.

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

2 years agoUnreviewed GTK+ gardening. Update expectations of several test.
carlosgc@webkit.org [Mon, 1 May 2017 07:53:49 +0000 (07:53 +0000)]
Unreviewed GTK+ gardening. Update expectations of several test.

* platform/gtk/TestExpectations:

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

2 years agoAX: Implement support for ARIA "figure" and "term" roles; update AXRoleDescription...
jdiggs@igalia.com [Mon, 1 May 2017 07:49:23 +0000 (07:49 +0000)]
AX: Implement support for ARIA "figure" and "term" roles; update AXRoleDescription mapping for "feed" role
https://bugs.webkit.org/show_bug.cgi?id=171183

Reviewed by Chris Fleizach.

Source/WebCore:

Create FeedRole, FigureRole, and TermRole and map them on the Mac and Gtk
ports. Also rename AccessibilityObject::isFigure() to isFigureElement()
for clarity as this method is specific to the HTML element and not the role.

No new tests needed: We have existing tests that cover mappings. Add new test cases
to roles-exposed.html, xml-roles-exposed.html, and roles-computedRoleString.html.

* English.lproj/Localizable.strings:
* accessibility/AccessibilityNodeObject.cpp:
(WebCore::AccessibilityNodeObject::captionForFigure):
(WebCore::AccessibilityNodeObject::alternativeText):
* accessibility/AccessibilityObject.cpp:
(WebCore::initializeRoleMap):
(WebCore::AccessibilityObject::isFigureElement): Added.
(WebCore::AccessibilityObject::isFigure): Deleted.
* accessibility/AccessibilityObject.h:
* accessibility/AccessibilityRenderObject.cpp:
(WebCore::AccessibilityRenderObject::exposesTitleUIElement):
(WebCore::AccessibilityRenderObject::titleUIElement):
(WebCore::AccessibilityRenderObject::computeAccessibilityIsIgnored):
(WebCore::AccessibilityRenderObject::determineAccessibilityRole):
* accessibility/atk/WebKitAccessibleWrapperAtk.cpp:
(atkRole):
* accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
(-[WebAccessibilityObjectWrapper determineIsAccessibilityElement]):
* accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
(createAccessibilityRoleMap):
(-[WebAccessibilityObjectWrapper subrole]):
(-[WebAccessibilityObjectWrapper roleDescription]):
* platform/LocalizedStrings.cpp:
(WebCore::AXFeedText):
* platform/LocalizedStrings.h:

LayoutTests:

New test cases added and expectations updated.

* accessibility/gtk/xml-roles-exposed-expected.txt:
* accessibility/gtk/xml-roles-exposed.html:
* accessibility/roles-computedRoleString.html:
* accessibility/roles-exposed.html:
* platform/gtk/accessibility/roles-exposed-expected.txt:
* platform/mac/accessibility/roles-computedRoleString-expected.txt:
* platform/mac/accessibility/roles-exposed-expected.txt:

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

2 years ago[GTK] Add automation session API
carlosgc@webkit.org [Mon, 1 May 2017 07:03:58 +0000 (07:03 +0000)]
[GTK] Add automation session API
https://bugs.webkit.org/show_bug.cgi?id=171428

Reviewed by Carlos Alberto Lopez Perez.

Source/WebCore/platform/gtk/po:

* POTFILES.in: Add WebKitAutomationSession.cpp.

Source/WebKit2:

Add new API to allow WebKitGTK+ to be controlled by automation. By default it's disabled, applications have to
explicitly call webkit_web_context_set_automation_allowed() to enabled it. When a new automation session is
requested, the signal WebKitWebContext::automation-started is emitted with a newly created
WebKitAutomationSession, similar to how WebKitWebContext::download-started works. The user should connect to it
have access to the WebKitAutomationSession and connect it its signals. When a new web view is requested to be
created in a WebKitAutomationSession, the signal WebKitAutomationSession::create-web-view is emitted. The user
should connect to it and return a WebKitWebView. The web views used for automation are special ones and need to
be created with the new WebKitWebView:is-controlled-by-automation construct property enabled, otherwise we will
refuse to create the requested browsing context.

* PlatformGTK.cmake:
* UIProcess/API/gtk/WebKitAutomationSession.cpp: Added.
(webkitAutomationSessionSetProperty):
(webkitAutomationSessionConstructed):
(webkit_automation_session_class_init):
(webkitAutomationSessionCreate):
(webkitAutomationSessionGetSession):
(webkit_automation_session_get_id):
* UIProcess/API/gtk/WebKitAutomationSession.h: Added.
* UIProcess/API/gtk/WebKitAutomationSessionPrivate.h: Added.
* UIProcess/API/gtk/WebKitWebContext.cpp:
(webkitWebContextConstructed):
(webkit_web_context_class_init):
(webkit_web_context_is_automation_allowed):
(webkit_web_context_set_automation_allowed):
(webkitWebContextCreatePageForWebView):
* UIProcess/API/gtk/WebKitWebContext.h:
* UIProcess/API/gtk/WebKitWebView.cpp:
(webkitWebViewConstructed):
(webkitWebViewSetProperty):
(webkitWebViewGetProperty):
(webkit_web_view_class_init):
(webkit_web_view_is_controlled_by_automation):
* UIProcess/API/gtk/WebKitWebView.h:
* UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt:
* UIProcess/API/gtk/docs/webkit2gtk-4.0.types:
* UIProcess/API/gtk/docs/webkit2gtk-docs.sgml:
* UIProcess/API/gtk/webkit2.h:

Tools:

Add an automation mode to MiniBrowser using the new API and add a unit test too.

* MiniBrowser/gtk/BrowserWindow.c:
(webViewTitleChanged):
(webViewDecidePolicy):
(newTabCallback):
(openPrivateWindow):
(browserWindowFinalize):
(browser_window_init):
(browser_window_get_or_create_web_view_for_automation):
* MiniBrowser/gtk/BrowserWindow.h:
* MiniBrowser/gtk/main.c:
(createBrowserTab):
(createWebViewForAutomationCallback):
(automationStartedCallback):
(main):
* TestWebKitAPI/Tests/WebKit2Gtk/CMakeLists.txt:
* TestWebKitAPI/Tests/WebKit2Gtk/TestAutomationSession.cpp: Added.
(testAutomationSessionRequestSession):
(beforeAll):
(afterAll):

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

2 years agoUnreviewed. Fix GTK+ debug build after r216002.
carlosgc@webkit.org [Mon, 1 May 2017 07:02:07 +0000 (07:02 +0000)]
Unreviewed. Fix GTK+ debug build after r216002.

* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMClientRectList.cpp:
(WebKit::wrapClientRectList):

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

2 years agoVersioning.
jmarcell@apple.com [Mon, 1 May 2017 05:02:42 +0000 (05:02 +0000)]
Versioning.

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

2 years agoDrop support for legacy ClientRect / ClientRectList
cdumez@apple.com [Mon, 1 May 2017 00:44:06 +0000 (00:44 +0000)]
Drop support for legacy ClientRect / ClientRectList
https://bugs.webkit.org/show_bug.cgi?id=171418

Reviewed by Sam Weinig.

Source/WebCore:

Drop support for legacy ClientRect / ClientRectList types now we use
DOMRect everywhere.

* CMakeLists.txt:
* DerivedSources.cpp:
* DerivedSources.make:
* WebCore.xcodeproj/project.pbxproj:
* dom/ClientRect.cpp: Removed.
* dom/ClientRect.h: Removed.
* dom/ClientRect.idl: Removed.
* dom/ClientRectList.cpp: Removed.
* dom/ClientRectList.h: Removed.
* dom/ClientRectList.idl: Removed.
* dom/DOMAllInOne.cpp:
* dom/Element.cpp:
* html/HTMLMediaElement.cpp:
* html/track/VTTRegion.cpp:
* page/DragController.cpp:

Source/WebInspectorUI:

Drop ClientRectList-related code.

* UserInterface/Models/NativeFunctionParameters.js:

Source/WebKit2:

GTK build fix.

* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMClientRect.cpp:
(WebKit::kit):
(WebKit::core):
(WebKit::wrapClientRect):
(webkit_dom_client_rect_constructed):
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMClientRectList.cpp:
(ClientRectList::create):
(ClientRectList::items):
(ClientRectList::ClientRectList):
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMClientRectListPrivate.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMClientRectPrivate.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMElement.cpp:
(webkit_dom_element_get_bounding_client_rect):
(webkit_dom_element_get_client_rects):

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

2 years agoInitialize a new layout state while bailing out of simple line layout only when needed.
zalan@apple.com [Mon, 1 May 2017 00:15:38 +0000 (00:15 +0000)]
Initialize a new layout state while bailing out of simple line layout only when needed.
https://bugs.webkit.org/show_bug.cgi?id=171481
<rdar://problem/31906382>

Source/WebCore:

'-webkit-border-fit: lines' requires inline box tree.
We normally bail out of simple line layout early when we see this property.
When this property is dynamically set and we already have a simple line layout context,
RenderBlockFlow::ensureLineBoxes() takes care of the switch by calling layoutLineBoxes().
This patch makes sure that we create the layout state for this (forced)line layout only when
we don't yet have one.

Reviewed by Antti Koivisto.

Test: fast/multicol/simple-line-layout-switch-to-normal-layout-while-inside-layout.html

* rendering/RenderBlockFlow.cpp:
(WebCore::PaginatedLayoutStateMaintainer::PaginatedLayoutStateMaintainer):
(WebCore::PaginatedLayoutStateMaintainer::~PaginatedLayoutStateMaintainer):
(WebCore::RenderBlockFlow::ensureLineBoxes):
* rendering/RenderView.cpp:
(WebCore::RenderView::pushLayoutStateForPaginationIfNeeded):
(WebCore::RenderView::pushLayoutStateForPagination): Deleted.
* rendering/RenderView.h:

LayoutTests:

Reviewed by Antti Koivisto.

* fast/multicol/simple-line-layout-switch-to-normal-layout-while-inside-layout-expected.txt: Added.
* fast/multicol/simple-line-layout-switch-to-normal-layout-while-inside-layout.html: Added.

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

2 years ago[Cocoa] Have check-webkit-style advise against use of [get…Class() alloc]
mitz@apple.com [Sun, 30 Apr 2017 23:39:51 +0000 (23:39 +0000)]
[Cocoa] Have check-webkit-style advise against use of [get…Class() alloc]
https://bugs.webkit.org/show_bug.cgi?id=171486

Reviewed by Sam Weinig.

* Scripts/webkitpy/style/checkers/cpp.py:
(check_soft_link_class_alloc): Added. Looks for [get…Class() alloc] and suggests
  alloc…Instance() instead.
(check_style): Invoke new check.

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

2 years agoMore fixing after r215991
beidson@apple.com [Sun, 30 Apr 2017 21:19:42 +0000 (21:19 +0000)]
More fixing after r215991
https://bugs.webkit.org/show_bug.cgi?id=171483

Source/WebKit2:

* NetworkProcess/cocoa/NetworkProcessCocoa.mm:
(WebKit::NetworkProcess::syncAllCookies):

Tools:

* TestWebKitAPI/Tests/WebKit2Cocoa/WebsiteDataStoreCustomPaths.mm:
(TEST):

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

2 years agoTried to fix the iOS build after r215992
mitz@apple.com [Sun, 30 Apr 2017 21:04:31 +0000 (21:04 +0000)]
Tried to fix the iOS build after r215992

* platform/ios/WebVideoFullscreenControllerAVKit.mm:

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

2 years agoFix r215991
beidson@apple.com [Sun, 30 Apr 2017 20:55:30 +0000 (20:55 +0000)]
Fix r215991
https://bugs.webkit.org/show_bug.cgi?id=171483

Unreviewed.

Source/WebCore:

* platform/spi/cf/CFNetworkSPI.h:

Source/WebKit2:

* NetworkProcess/cocoa/NetworkProcessCocoa.mm:
(WebKit::NetworkProcess::syncAllCookies):

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

2 years agoTried to fix the iOS build after r215992
mitz@apple.com [Sun, 30 Apr 2017 20:53:01 +0000 (20:53 +0000)]
Tried to fix the iOS build after r215992

* platform/ios/WebVideoFullscreenInterfaceAVKit.mm:
(WebAVPlayerLayerView_pictureInPicturePlayerLayerView):
(WebVideoFullscreenInterfaceAVKit::setupFullscreen):

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

2 years ago[Cocoa] Replaces uses of [get…() alloc] with alloc…Instance()
mitz@apple.com [Sun, 30 Apr 2017 20:47:21 +0000 (20:47 +0000)]
[Cocoa] Replaces uses of [get…() alloc] with alloc…Instance()
https://bugs.webkit.org/show_bug.cgi?id=171485

Reviewed by Geoffrey Garen.

Source/WebCore:

* platform/graphics/avfoundation/objc/CDMSessionAVContentKeySession.mm:
(WebCore::CDMSessionAVContentKeySession::contentKeySession):
* platform/graphics/avfoundation/objc/MediaPlaybackTargetPickerMac.mm:
(WebCore::MediaPlaybackTargetPickerMac::devicePicker):
* platform/ios/ValidationBubbleIOS.mm:
(-[WebValidationBubbleTapRecognizer initWithPopoverController:]):
(WebCore::ValidationBubble::ValidationBubble):
* platform/ios/WebVideoFullscreenControllerAVKit.mm:
(WebVideoFullscreenControllerContext::setUpFullscreen):
* platform/ios/WebVideoFullscreenInterfaceAVKit.mm:
(WebAVPlayerLayerView_pictureInPicturePlayerLayerView):
(WebVideoFullscreenInterfaceAVKit::setupFullscreen):
* platform/mac/WebVideoFullscreenInterfaceMac.mm:
(-[WebVideoFullscreenInterfaceMacObjC setUpPIPForVideoView:withFrame:inWindow:]):
* platform/network/ios/PreviewConverter.mm:
(WebCore::PreviewConverter::PreviewConverter):
* rendering/RenderThemeIOS.mm:
(WebCore::iconForAttachment):

Source/WebKit/mac:

* WebView/WebView.mm:
(-[WebUITextIndicatorData initWithImage:textIndicatorData:scale:]):
(-[WebUITextIndicatorData initWithImage:scale:]):

Source/WebKit2:

* Platform/mac/MenuUtilities.mm:
(WebKit::menuItemForTelephoneNumber):
(WebKit::menuForTelephoneNumber):

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

2 years agoUpdates to _WKWebsiteDataStoreConfiguration cookie storage location SPI.
beidson@apple.com [Sun, 30 Apr 2017 20:24:05 +0000 (20:24 +0000)]
Updates to _WKWebsiteDataStoreConfiguration cookie storage location SPI.
<rdar://problem/31906397> and https://bugs.webkit.org/show_bug.cgi?id=171483

Reviewed by Geoff Garen (and kind of Andy Estes).
Source/WebCore:

No new tests (Covered by API test).

* platform/spi/cf/CFNetworkSPI.h:

Source/WebKit2:

Updates include:
-Taking a file path as the config argument instead of a directory.
-Proper sandbox extension handling.
-Proper and thorough API test.

* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::syncAllCookies):
* NetworkProcess/NetworkProcess.h:
* NetworkProcess/NetworkProcess.messages.in:

* NetworkProcess/cocoa/NetworkProcessCocoa.mm:
(WebKit::NetworkProcess::syncAllCookies):

* NetworkProcess/mac/RemoteNetworkingContext.mm:
(WebKit::RemoteNetworkingContext::ensureWebsiteDataStoreSession):

* Shared/WebsiteDataStoreParameters.cpp:
(WebKit::WebsiteDataStoreParameters::encode):
(WebKit::WebsiteDataStoreParameters::decode):
* Shared/WebsiteDataStoreParameters.h:

* UIProcess/API/Cocoa/WKProcessPool.mm:
(-[WKProcessPool _syncNetworkProcessCookies]):
* UIProcess/API/Cocoa/WKProcessPoolPrivate.h:

* UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
(-[WKWebsiteDataStore _initWithConfiguration:]):

* UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h:
* UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm:
(-[_WKWebsiteDataStoreConfiguration _cookieStoragePath]):
(-[_WKWebsiteDataStoreConfiguration _setCookieStoragePath:]):
(-[_WKWebsiteDataStoreConfiguration _cookieStorageDirectory]): Deleted.
(-[_WKWebsiteDataStoreConfiguration _setCookieStorageDirectory:]): Deleted.

* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::syncNetworkProcessCookies):
* UIProcess/WebProcessPool.h:

* UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
(WebKit::WebsiteDataStore::parameters):

* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::resolveDirectoriesIfNecessary):

* UIProcess/WebsiteData/WebsiteDataStore.h:
(WebKit::WebsiteDataStore::resolvedCookieStoragePath):
(WebKit::WebsiteDataStore::resolvedCookieStorageDirectory): Deleted.

Tools:

* TestWebKitAPI/Tests/WebKit2Cocoa/WebsiteDataStoreCustomPaths.mm:
(TEST):

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

2 years ago<rdar://problem/31906525> WebCore-7604.1.19 has failed to build
mitz@apple.com [Sun, 30 Apr 2017 19:52:24 +0000 (19:52 +0000)]
<rdar://problem/31906525> WebCore-7604.1.19 has failed to build

* platform/ios/WebItemProviderPasteboard.mm:
(-[WebItemProviderPasteboard setItemsUsingRegistrationInfoLists:]): Resolved type ambiguity
  by using allocUIItemProviderInstance() instead of [getUIItemProviderClass() alloc].

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

2 years ago[ATK] Implement support for aria-autocomplete
jdiggs@igalia.com [Sun, 30 Apr 2017 18:12:30 +0000 (18:12 +0000)]
[ATK] Implement support for aria-autocomplete
https://bugs.webkit.org/show_bug.cgi?id=171167

Reviewed by Chris Fleizach.

Source/WebCore:

Expose ATK_STATE_SUPPORTS_AUTOCOMPLETION in the state set, and the value
of aria-autocomplete as an object attribute, for elements which indicate
they support autocompletion.

Test: accessibility/gtk/aria-autocomplete.html

* accessibility/AccessibilityObject.cpp:
(WebCore::AccessibilityObject::supportsARIAAutoComplete):
(WebCore::AccessibilityObject::ariaAutoCompleteValue):
* accessibility/AccessibilityObject.h:
* accessibility/atk/WebKitAccessibleWrapperAtk.cpp:
(webkitAccessibleGetAttributes):
(setAtkStateSetFromCoreObject):
* html/HTMLAttributeNames.in:

Tools:

Add "AXSupportsAutoCompletion" attribute so the presence of
ATK_STATE_SUPPORTS_AUTOCOMPLETION can be tested.

* WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:
(WTR::AccessibilityUIElement::boolAttributeValue):

LayoutTests:

* accessibility/gtk/aria-autocomplete-expected.txt: Added.
* accessibility/gtk/aria-autocomplete.html: Added.

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

2 years ago[ATK] ARIA treegrid role should be exposed as ATK_ROLE_TREE_TABLE; not ATK_ROLE_TABLE
jdiggs@igalia.com [Sun, 30 Apr 2017 18:11:56 +0000 (18:11 +0000)]
[ATK] ARIA treegrid role should be exposed as ATK_ROLE_TREE_TABLE; not ATK_ROLE_TABLE
https://bugs.webkit.org/show_bug.cgi?id=171170

Reviewed by Chris Fleizach.

Source/WebCore:

AccessibilityTable::roleValue() was returning GridRole for both grid and treegrid.
Change this so that GridRole is returned for grid and TreeGridRole is returned for
treegrid. Add TreeGridRole to, or call isTable() in, methods where the behavior
should be the same as GridRole.

Test: accessibility/gtk/interface-table.html

* accessibility/AccessibilityRenderObject.cpp:
(WebCore::AccessibilityRenderObject::selectedChildren):
* accessibility/AccessibilityTable.cpp:
(WebCore::AccessibilityTable::roleValue):
* accessibility/atk/WebKitAccessibleWrapperAtk.cpp:
(atkRole):
(getInterfaceMaskFromObject):
* accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
(-[WebAccessibilityObjectWrapper _accessibilityTableAncestor]):
(-[WebAccessibilityObjectWrapper _accessibilityTraitsFromAncestors]):
* accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
(createAccessibilityRoleMap):

Tools:

Add "AXInterfaceTable" attribute to test which elements implement AtkTable.

* WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:
(WTR::AccessibilityUIElement::boolAttributeValue):

LayoutTests:

Add interface-table.html to verify that all roles which have tabular functionality
implement AtkTable. Update other tests to reflect that the ARIA treegrid role maps
to our internal TreeGridRole AccessibilityRole.

* accessibility/gtk/interface-table-cell-expected.txt: Updated.
* accessibility/gtk/interface-table-expected.txt: Added.
* accessibility/gtk/interface-table.html: Added.
* accessibility/roles-computedRoleString.html: Updated.
* platform/gtk/accessibility/aria-selected-expected.txt: Updated.
* platform/gtk/accessibility/roles-exposed-expected.txt: Updated.
* platform/mac/accessibility/roles-computedRoleString-expected.txt: Updated.

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

2 years agoAdd the support for scheduling a A/B testing with a patch.
rniwa@webkit.org [Sun, 30 Apr 2017 18:11:47 +0000 (18:11 +0000)]
Add the support for scheduling a A/B testing with a patch.
https://bugs.webkit.org/show_bug.cgi?id=171209

Reviewed by Chris Dumez.

Added the support for creating a custom test group with a patch applied.

First, each repository in a repository group has a boolean indicating whether a given repository can have
a patch applied or not. When any configuration in a test group contains a patch, we create build requests
without a test specified in order to "build" those patches. These build requests have negative order numbers
to differentiate them from regular build requests. We can't simply build ones with patches since there could
be differences in SDK, build options, etc... when patches are applied.

The JSON format for commit sets returned by /api/build-requests have been changed from using an array of
commit IDs to an array of dictionaries indicate commit and acceptsPatch boolean. /api/update-triggerable now
uses a dictionary with two keys: repository and acceptsPatch to specify a set of repositories associated with
a repository group, and /privileged-api-create-test-group uses a dictionary with two keys: revision and patch
instead of a revision string to specify commit sets.

Furthermore, the syncing script's configuration have been updated to use a dictionary of repository names to
an options dictionary instead of an array of repositories names. For now, the only supported option is
acceptsPatch but will be extended when we add the support for rolling back system components.
e.g. {"WebKit": {acceptsPatch: true}, "macOS": {}} instead of ["WebKit", "macOS"]

On the UI side, InstantFileUploader has been changed to accept only one file by default, and added a new method
allowMultipleFiles() to allow multiple files to be selected for custom roots. Also replaced the input element
with type=file by a button with a custom label to show labels such as "Apply a patch" or "Add a new root"
instead of the generic label like "choose a file".

* init-database.sql: Added trigrepo_accepts_patch to triggerable_repositories to indicate whether a given
repository can have a patch applied or not. Made request_test optional in build_requests for when a build
request is created to build patches. Such a build request have a negative request_order. Updated the related
constraints accordingly.

* public/admin/triggerables.php: Added the support for updating whether a given repository can have a patch
applied in each repository group. Only show the repositories in the repository group for this purpose since
there is no way to accept a patch on a repository without it being a part of the group.
(generate_repository_form): Now takes the markup for checkboxes instead of generating one itself.
(generate_repository_checkboxes): Now takes an array of repositories to generate checkboxes. The checkbox is
shown when the repository ID exists as a key in this array, and is checked when its value is true. The new
capability to skip repositories not in the array is used to hide repositories not associated with the group
in the list of checkboxes to indicate a repository accepts a patch.

* public/api/update-triggerable.php:
(main): Now updates the description and acceptsRoots states of each repository group, and sets acceptsPatch
boolean for each repository in the group if set in the update.
(validate_repository_groups): Use a reference to $repository_groups in order to set repository_id_list, which
contains an array of repository IDs to find the existing repository group that matches the set via
RepositoryGroupFinder's find_by_repositories. Also added a various validations for acceptsRoots, a dictionary
specifying repository and acceptsPatch.

* public/include/build-requests-fetcher.php:
(BuildRequestsFetcher::fetch_commits_for_set_if_needed): Instead of returning an array of commit IDs as
"commits", it now returns an array of dictionaries with "commit" and "patch" keys specifying the commit ID
and the patch file's ID respectively as "revisionItems".
(BuildRequestsFetcher::add_uploaded_file): Added. Extracted from fetch_commits_for_set_if_needed. Used to
add either a patch file or a custom root file in the list of uploaded files in the result.

* public/include/manifest-generator.php:
(fetch_triggerables): Each element in repository group's "repositories" field is now an array of dictionaries
with "repository" and "acceptsPatch" as keys.

* public/include/repository-group-finder.php:
(RepositoryGroupFinder::__construct): Added a map for boolean indicating whether a given repository group
allows a patch on a repository. Used in /privileged-api/create-test-group.
(RepositoryGroupFinder::accepts_patch): Added.
(RepositoryGroupFinder::populate_map): Build up the map for acceptsPatch boolean per repository per group.

* public/privileged-api/create-test-group.php:
(main): Fixed a bug that we were not explicitly checking for a duplicate test group name (with a test). Create
build requests to "build" patches if there is any patch file specified.
(commit_sets_from_revision_sets): Updated to take a dictionary with "revision" and "patch" as keys to specify
a revision and a patch if any instead of just a revision string for each repository. Also validate that each
repository is allowed to have a patch once the repository group has been found for the set of repositories.
(ensure_commit_sets):

* public/v3/components/custom-analysis-task-configurator.js:
(CustomAnalysisTaskConfigurator): Added _patchUploaders as an instance variable, which is a dictionary of
configuration names to a map of InstantFileUploader's used to upload a patch. Also renamed _fileUploaders to
_customRootUploaders for clarity.
(CustomAnalysisTaskConfigurator.prototype.setCommitSets):
(CustomAnalysisTaskConfigurator.prototype.didConstructShadowTree.createRootUploader): Added.
(CustomAnalysisTaskConfigurator.prototype.didConstructShadowTree):
(CustomAnalysisTaskConfigurator.prototype._ensurePatchUploader): Added. Creates an instant file uploader for
patches. We only allow a single patch per repository.
(CustomAnalysisTaskConfigurator.prototype._computeCommitSet): Include a patch in the commit set as needed.
(CustomAnalysisTaskConfigurator.prototype._buildRevisionTable): Show the patch file uploader for repositories
which can have patches in the current repository group.
(CustomAnalysisTaskConfigurator.cssTemplate): Show borders between every rows instead of just between tbody's
now that each row can have a patch file uploader.

* public/v3/components/instant-file-uploader.js:
(InstantFileUploader): Added _fileInput and _allowMultipleFiles as instance variables. We now show a button
in the UI instead of an input with type=file. _fileInput is a hidden input with type=file used inside a click
event of the button to let the user pick a file.
(InstantFileUploader.prototype.allowMultipleFiles): Added. Allows this instance to accept multiple files.
(InstantFileUploader.prototype.didConstructShadowTree): Synthetically click on the hidden input element when
the newly added button element is clicked to open the browser's file picker.
(InstantFileUploader.prototype.render): Hide the button to add a file if this instance can only select one file
and there is already some file being uploaded in this instance.
(InstantFileUploader.htmlTemplate): Replaced the input element with type=file with a button. Its label comes
from the default slot content.

* public/v3/models/build-request.js:
(BuildRequest): Made the test optional.
(BuildRequest.prototype.isBuild): Returns true if this is a build request for building a patch.
(BuildRequest.prototype.isTest): Returns true if this is a build request for running tests.
(BuildRequest.constructBuildRequestsFromData): Create each commit log here instead of relying on CommitSet's
constructor to construct its commit logs. Also updated per the replacement of an array of commit IDs by
an array of dictionaries with commit and patch properties.

* public/v3/models/commit-set.js:
(CommitSet): Made _repositoryToCommitMap a real Map object. Also added _repositoryToPatchMap. Also got rid of
the code to instantiate commit logs since that's now done in BuildRequest.constructBuildRequestsFromData.
(CommitSet.prototype.commitForRepository):
(CommitSet.prototype.revisionForRepository):
(CommitSet.prototype.patchForRepository): Added.
(CommitSet.prototype.latestCommitTime): Modernized the code.
(CommitSet.prototype.equals): Modernized the code. Also added the check for patches.
(MeasurementCommitSet): Updated per the change to make _repositoryToCommitMap a real Map.
(CustomCommitSet.prototype.setRevisionForRepository):
(CustomCommitSet.prototype.equals): Added the check for patches.
(CustomCommitSet.prototype.revisionForRepository):
(CustomCommitSet.prototype.patchForRepository): Added.

* public/v3/models/manifest.js:
(Manifest._didFetchManifest): Updated per the replacement of an array of commit IDs by an array of dictionaries
with commit and patch properties.

* public/v3/models/repository.js:
(Repository.prototype.ownerId): Renamed from owner for clarity.

* public/v3/models/test-group.js:
(TestGroup): Modernized the code by using LazilyEvaluatedFunction. Removed _requestsAreInOrder since it's not
necessary anymore with LazilyEvaluatedFunction.
(TestGroup.prototype.addBuildRequest):
(TestGroup.prototype.test): Use the last build request's test since the first few requests could be requests to
build patches.
(TestGroup.prototype.platform): Ditto.
(TestGroup.prototype._lastRequest): Added.
(TestGroup.prototype._orderedBuildRequests): Added.
(TestGroup.prototype.repetitionCount): Only count the build requests for testing (skipping any requests to
build patches).
(TestGroup.prototype.requestedCommitSets): Simply call _computeRequestedCommitSetsLazily.
(TestGroup.prototype._computeRequestedCommitSets): Extracted from requestedCommitSets.
(TestGroup.prototype.requestsForCommitSet):
(TestGroup.prototype.labelForCommitSet): Rewritten. Just compute the label here instead of relying on
_commitSetToLabel since requestedSets is always of the length two at the moment.
(TestGroup._revisionSetsFromCommitSets): Specify both the revision and the patch in the revision set.

* public/v3/models/triggerable.js:
(TriggerableRepositoryGroup): Added _patchAcceptingSet as an instance variable. Use
sortByNamePreferringOnesWithURL to sort repositories instead of simple sortByName.
(TriggerableRepositoryGroup.prototype.accepts): Added checks for the custom roots and patches.
(TriggerableRepositoryGroup.prototype.acceptsPatchForRepository): Added.

* server-tests/api-build-requests-tests.js: Updated the test cases per the replacement of an array of commit
IDs by an array of dictionaries with commit and patch properties.

* server-tests/api-manifest-tests.js: Updated the test case per the name of Repository's owner to ownerId.

* server-tests/api-update-triggerable.js: Updated the test case per the name of Repository's owner to ownerId,
and added a test case for updating whether a given repository group allows custom roots as well as patches
on repositories via /api/update-triggerable.
(.updateWithOSXRepositoryGroup): Updated the sample syncing script configuration per the format change.
(.refetchManifest): Added.

* server-tests/privileged-api-create-test-group-tests.js: Updated per the syncing script configuration format
change. Also added a test for creating a test group with a duplicate name, which is expected to fail with
DuplicateTestGroupName, and creating a test group with a patch both when it's allowed and when it's not allowed
in the matching repository group.
(.addTriggerableAndCreateTask): Updated per the format change.

* server-tests/resources/mock-data.js:
(MockData.addEmptyTriggerable): Added a metric and its configuration to make it appear in the manifest file.
The new test case in api-update-triggerable.js requires this.
(MockData.mockTestSyncConfigWithSingleBuilder): Updated per the syncing script configuration format change.
(MockData.mockTestSyncConfigWithTwoBuilders): Ditto.

* server-tests/tools-buildbot-triggerable-tests.js: Removed the useless assertions about test configurations,
and added assertions about custom roots and patches in the test case for updateTriggerables.

* tools/js/buildbot-syncer.js:
(BuildbotSyncer._parseRepositoryGroup): Made each assertion explicitly refer to the specific repository group
to make it more user friendly. Now each repository group uses a dictionary of repository names to its options
in the syncing script configurations. When parsed, we insert it as an array of dictionaries with repository ID
and acceptsPatch boolean specified separately since this is the format /api/update-triggerable expects.

* tools/js/buildbot-triggerable.js:
(BuildbotTriggerable.prototype.updateTriggerable):

* unit-tests/build-request-tests.js:
(sampleBuildRequestData): Updated per the commit sets format change in /api/build-requests.

* unit-tests/buildbot-syncer-tests.js: Updated the existing tests per various format changes and added a couple
of new test cases for the syncing script's configuration validation.
(sampleiOSConfig):
(smallConfiguration):
(createSampleBuildRequest):

* unit-tests/resources/mock-v3-models.js:
(MockModels.inject): Updated per the repository group format change.

* unit-tests/test-groups-tests.js:
(sampleTestGroup): Updated per the commit sets format change in /api/build-requests.

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

2 years agoInitialize functions too early in an eval
gskachkov@gmail.com [Sun, 30 Apr 2017 14:51:27 +0000 (14:51 +0000)]
Initialize functions too early in an eval
https://bugs.webkit.org/show_bug.cgi?id=161099

Reviewed by Saam Barati.

JSTests:

* stress/eval-func-decl-with-let-const-class.js: Added.

Source/JavaScriptCore:

Current patch allow to fix problem with scope in function that is
declared within eval. Before scope was set inside Interpretator.cpp and it
was scope where eval is executed, but in this case function would not
see let/const variables and classes declated in eval.
This patch devide declaration and binding in two operation, first just declare
variable with function name, and second bind variable to function with correct
scope

* bytecompiler/BytecodeGenerator.cpp:
(JSC::BytecodeGenerator::generate):
(JSC::BytecodeGenerator::BytecodeGenerator):
* bytecompiler/BytecodeGenerator.h:
* interpreter/Interpreter.cpp:
(JSC::Interpreter::execute):

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

2 years ago[ATK] Emit object:state-changed:busy event when aria-busy value changes
jdiggs@igalia.com [Sun, 30 Apr 2017 09:56:31 +0000 (09:56 +0000)]
[ATK] Emit object:state-changed:busy event when aria-busy value changes
https://bugs.webkit.org/show_bug.cgi?id=171181

Reviewed by Chris Fleizach.

Source/WebCore:

Emit object:state-changed:busy for AXElementBusyChanged notifications.

Test: accessibility/gtk/aria-busy-changed-notification.html

* accessibility/atk/AXObjectCacheAtk.cpp:
(WebCore::AXObjectCache::postPlatformNotification):

Tools:

Add handler for AXElementBusyChanged notifications.

* WebKitTestRunner/InjectedBundle/atk/AccessibilityNotificationHandlerAtk.cpp:

LayoutTests:

New test. Also update the expectations for menu-list-unfocused-notifications.html
because the addition of the handler for AXElementBusyChanged results in that
notification being output in the test results.

* accessibility/gtk/aria-busy-changed-notification-expected.txt: Added.
* accessibility/gtk/aria-busy-changed-notification.html: Added.
* accessibility/gtk/menu-list-unfocused-notifications-expected.txt: Updated.

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

2 years ago[ES6]. Implement Annex B.3.3 function hoisting rules for eval
gskachkov@gmail.com [Sun, 30 Apr 2017 08:06:23 +0000 (08:06 +0000)]
[ES6]. Implement Annex B.3.3 function hoisting rules for eval
https://bugs.webkit.org/show_bug.cgi?id=163208

Reviewed by Saam Barati.

JSTests:

* stress/eval-func-decl-block-scoping-reassign.js: Added.
(assert):
(throw.new.Error.f):
(throw.new.Error):
* stress/eval-func-decl-block-with-remove.js: Added.
(assert):
(foo.boo):
(foo):
* stress/eval-func-decl-block-with-var-and-remove.js: Added.
(assert):
(assertThrow):
(foo):
(boo):
(joo):
(koo):
* stress/eval-func-decl-block-with-var-sinthesize.js: Added.
(assert):
(assertThrow):
(foo):
(boo):
(hoo):
(joo):
(koo):
* stress/eval-func-decl-in-block-scope-and-bind-to-top-eval-scope.js: Added.
* stress/eval-func-decl-in-eval-within-block-with-let.js: Added.
(assert):
(assertThrow):
(foo):
(boo):
(goo):
* stress/eval-func-decl-in-eval-within-with-scope.js: Added.
(assert):
(assertThrow):
(foo):
(boo):
(boo.let.val2):
(boo.let.val3):
* stress/eval-func-decl-in-frozen-global.js: Added.
(assert):
(assertThrow):
(throw.new.Error):
(Object.freeze):
* stress/eval-func-decl-in-global-of-eval.js: Added.
(assert):
(assertThrow):
(bar):
(baz):
(foobar):
* stress/eval-func-decl-in-global.js: Added.
(assert):
(assertThrow):
* stress/eval-func-decl-in-if.js: Added.
(assert):
* stress/eval-func-decl-within-eval-with-reassign-to-var.js: Added.
(assert):
(assertThrow):
(foo):
(boo):
(foobar):
(hoo):
(joo):
(koo):
(loo):
* stress/eval-func-decl-within-eval-without-reassign-to-let.js: Added.
(assert):
(assertThrow):
(foo):
(boo):
(goo):
* stress/variable-under-tdz-eval-tricky.js:
(assert):
* test262.yaml:

Source/JavaScriptCore:

Current patch implements Annex B.3.3 that is related to
hoisting of function declaration in eval.
https://tc39.github.io/ecma262/#sec-web-compat-evaldeclarationinstantiation
Function declaration in eval should create variable with
function name in function scope where eval is invoked
or bind to variable if it declared outside of the eval.
If variable is created it can be removed by 'delete a;' command.
If eval is invoke in block scope that contains let/const
variable with the same name as function declaration
we do not bind. This patch leads to the following behavior:
'''
function foo() {
   {
     print(boo); // undefined
     eval('{ function boo() {}}');
     print(boo); // function boo() {}
   }
   print(boo); // function boo() {}
}

function foobar() {
  {
    let boo = 10;
    print(boo); // 10;
    eval('{ function boo() {}}');
    print(boo); // 10;
  }
  print(boo) // 10
}

function bar() {
   {
      var boo = 10;
      print(boo); // 10
      eval('{ function boo() {} }');
      print(boo); // function boo() {}
   }
   print(boo); // function boo() {}
}

function bas() {
    {
         let boo = 10;
         eval(' { function boo() {} } ');
         print(boo); // 10
    }
    print(boo); //Reference Error
}
'''

Current implementation relies on already implemented
'hoist function in sloppy mode' feature, with small changes.
In short it works in following way: during hoisting of function
with name S in eval, we are looking for first scope that
contains space for variable with name S and if this scope
has var type we bind function there

To implement this feature was added bytecode ops:
op_resolve_scope_for_hoisting_func_decl_in_eval - get variable scope
or return undefined if variable can't be binded there.

There is a corner case, hoist function in eval within catch block,
that is not covered by this patch, and will be fixed in
https://bugs.webkit.org/show_bug.cgi?id=168184

* bytecode/BytecodeDumper.cpp:
(JSC::BytecodeDumper<Block>::dumpBytecode):
* bytecode/BytecodeList.json:
* bytecode/BytecodeUseDef.h:
(JSC::computeUsesForBytecodeOffset):
(JSC::computeDefsForBytecodeOffset):
* bytecode/CodeBlock.cpp:
(JSC::CodeBlock::finalizeLLIntInlineCaches):
* bytecode/EvalCodeBlock.h:
(JSC::EvalCodeBlock::functionHoistingCandidate):
(JSC::EvalCodeBlock::numFunctionHoistingCandidates):
* bytecode/UnlinkedEvalCodeBlock.h:
* bytecompiler/BytecodeGenerator.cpp:
(JSC::BytecodeGenerator::BytecodeGenerator):
(JSC::BytecodeGenerator::hoistSloppyModeFunctionIfNecessary):
(JSC::BytecodeGenerator::emitResolveScopeForHoistingFuncDeclInEval):
* bytecompiler/BytecodeGenerator.h:
* dfg/DFGAbstractInterpreterInlines.h:
(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):
* dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::parseBlock):
* dfg/DFGCapabilities.cpp:
(JSC::DFG::capabilityLevel):
* dfg/DFGClobberize.h:
(JSC::DFG::clobberize):
* dfg/DFGDoesGC.cpp:
(JSC::DFG::doesGC):
* dfg/DFGFixupPhase.cpp:
(JSC::DFG::FixupPhase::fixupNode):
* dfg/DFGNode.h:
(JSC::DFG::Node::hasIdentifier):
* dfg/DFGNodeType.h:
* dfg/DFGOperations.cpp:
* dfg/DFGOperations.h:
* dfg/DFGPredictionPropagationPhase.cpp:
* dfg/DFGSafeToExecute.h:
(JSC::DFG::safeToExecute):
* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compileResolveScopeForHoistingFuncDeclInEval):
* dfg/DFGSpeculativeJIT.h:
(JSC::DFG::SpeculativeJIT::callOperation):
* dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
* dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
* ftl/FTLCapabilities.cpp:
(JSC::FTL::canCompile):
* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compileNode):
(JSC::FTL::DFG::LowerDFGToB3::compileResolveScopeForHoistingFuncDeclInEval):
* interpreter/Interpreter.cpp:
(JSC::Interpreter::execute):
* jit/JIT.cpp:
(JSC::JIT::privateCompileMainPass):
* jit/JIT.h:
* jit/JITOperations.h:
* jit/JITPropertyAccess.cpp:
(JSC::JIT::emit_op_resolve_scope_for_hoisting_func_decl_in_eval):
* jit/JITPropertyAccess32_64.cpp:
(JSC::JIT::emit_op_resolve_scope_for_hoisting_func_decl_in_eval):
* llint/LowLevelInterpreter.asm:
* parser/Parser.cpp:
(JSC::Parser<LexerType>::parseFunctionDeclarationStatement):
* parser/Parser.h:
(JSC::Scope::getSloppyModeHoistedFunctions):
(JSC::Parser::declareFunction):
* runtime/CommonSlowPaths.cpp:
(JSC::SLOW_PATH_DECL):
* runtime/CommonSlowPaths.h:
* runtime/EvalExecutable.h:
(JSC::EvalExecutable::numFunctionHoistingCandidates):
(JSC::EvalExecutable::numTopLevelFunctionDecls):
(JSC::EvalExecutable::numberOfFunctionDecls): Deleted.
* runtime/JSScope.cpp:
(JSC::JSScope::resolve):
(JSC::JSScope::resolveScopeForHoistingFuncDeclInEval):
* runtime/JSScope.h:

LayoutTests:

* inspector/runtime/evaluate-CommandLineAPI-expected.txt:
* inspector/runtime/evaluate-CommandLineAPI.html:
* js/parser-syntax-check-expected.txt:
* js/script-tests/parser-syntax-check.js:

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

2 years agoRegression (r215941) Unexpected logging causes perf tests to fail.
beidson@apple.com [Sun, 30 Apr 2017 07:21:23 +0000 (07:21 +0000)]
Regression (r215941) Unexpected logging causes perf tests to fail.
<rdar://problem/31907269> and https://bugs.webkit.org/show_bug.cgi?id=171482

Reviewed by Alexey Proskuryakov.

* Shared/mac/SandboxExtensionMac.mm:
(WebKit::resolveAndCreateReadWriteDirectoryForSandboxExtension):

* UIProcess/Cocoa/WebProcessPoolCocoa.mm:
(WebKit::WebProcessPool::networkingCachesDirectory):
(WebKit::WebProcessPool::webContentCachesDirectory):

* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::resolveDirectoriesIfNecessary): Only resolve the cookie storage directory
  if a custom one has been set.

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

2 years agoUse PEP8 style guide for raising exceptions in webkitpy.
aakash_jain@apple.com [Sun, 30 Apr 2017 05:02:20 +0000 (05:02 +0000)]
Use PEP8 style guide for raising exceptions in webkitpy.
https://bugs.webkit.org/show_bug.cgi?id=171439

Reviewed by Daniel Bates.

As per https://www.python.org/dev/peps/pep-0008/
"When raising an exception in Python 2, use raise ValueError('message')
instead of the older form raise ValueError, 'message'"

* Scripts/webkitpy/common/net/irc/ircbot.py: Using new style for raising exceptions.
* Scripts/webkitpy/common/thread/messagepump.py: Same.
* Scripts/webkitpy/tool/bot/queueengine.py: Same.
* Scripts/webkitpy/tool/commands/queues.py: Same.
* Scripts/webkitpy/tool/commands/stepsequence.py: Same.
* Scripts/webkitpy/tool/multicommandtool.py: Same.
* Scripts/webkitpy/tool/steps/abstractstep.py: Same.

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

2 years agoZero out PerformanceResourceTiming properties for cached cross-origin responses witho...
commit-queue@webkit.org [Sun, 30 Apr 2017 03:32:58 +0000 (03:32 +0000)]
Zero out PerformanceResourceTiming properties for cached cross-origin responses without Timing-Allow-Origin
https://bugs.webkit.org/show_bug.cgi?id=171394

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2017-04-29
Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

WebKit doesn't create multiple PerformanceResourceTiming entries for
loads that use the same CachedResource. However for revalidation
requests, which may happen for cached entries, we will send new
network requests. These tests cover whether revalidation requests
include timing data or not.

* web-platform-tests/resource-timing/resources/rt-revalidation-response.py: Added.
* web-platform-tests/resource-timing/rt-cors-expected.txt:
* web-platform-tests/resource-timing/rt-cors.js:
* web-platform-tests/resource-timing/rt-cors.worker-expected.txt:
* web-platform-tests/resource-timing/rt-revalidate-requests-expected.txt: Added.
* web-platform-tests/resource-timing/rt-revalidate-requests.html: Added.

Source/WebCore:

* loader/ResourceTiming.cpp:
(WebCore::ResourceTiming::fromCache):
(WebCore::ResourceTiming::ResourceTiming):
* loader/ResourceTiming.h:
* loader/cache/CachedResourceLoader.cpp:
(WebCore::CachedResourceLoader::requestResource):
Include the timing-allow-origin check for cached responses.
Also, avoid including an extra entry for an ongoing cached resource
load, since when that load completes it should be reported.

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

2 years agoReadd assertion removed accidentally in r215955
commit-queue@webkit.org [Sun, 30 Apr 2017 03:30:32 +0000 (03:30 +0000)]
Readd assertion removed accidentally in r215955
https://bugs.webkit.org/show_bug.cgi?id=171466

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

Source/WebCore:

Unreviewed.

* platform/mediastream/mac/MockRealtimeVideoSourceMac.mm:
(WebCore::MockRealtimeVideoSourceMac::orientationChanged): Improved FIXME after review.

Source/WebKit2:

* WebProcess/WebPage/WebBackForwardListProxy.cpp:
(WebKit::WebBackForwardListProxy::addItemFromUIProcess):

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

2 years ago[macOS] Picture-in-picture should be disabled in WebPlaybackControlsManager during...
aestes@apple.com [Sun, 30 Apr 2017 03:28:27 +0000 (03:28 +0000)]
[macOS] Picture-in-picture should be disabled in WebPlaybackControlsManager during external media playback
https://bugs.webkit.org/show_bug.cgi?id=171468
<rdar://problem/31900349>

Reviewed by Eric Carlson.

Source/WebCore:

* platform/mac/WebPlaybackControlsManager.h: Declared canTogglePictureInPicture as a
readwrite property.
* platform/mac/WebPlaybackControlsManager.mm: Synthesize canTogglePictureInPicture.
(-[WebPlaybackControlsManager canTogglePictureInPicture]): Deleted.
* platform/mac/WebPlaybackSessionInterfaceMac.h:
* platform/mac/WebPlaybackSessionInterfaceMac.mm:
(WebCore::WebPlaybackSessionInterfaceMac::externalPlaybackChanged): Called
-[WebPlaybackControlsManager setCanTogglePictureInPicture:].

Source/WebKit2:

* UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::updateMediaTouchBar): Set canTogglePictureInPicture to YES by default
on WebPlaybackControlsManager.

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

2 years agoFix tests broken by r215964.
simon.fraser@apple.com [Sun, 30 Apr 2017 03:06:09 +0000 (03:06 +0000)]
Fix tests broken by r215964.

Fix copy-paste error that caused the wrong paint phase to get passed to the fire writeLayerRenderers()
call, causing extra renderer dumping.

Also remove unused default arguments.

* rendering/RenderTreeAsText.cpp:
(WebCore::writeLayerRenderers):
(WebCore::writeLayers):

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

2 years agoDeep nesting is leading to ReferenceError for hoisted function
gskachkov@gmail.com [Sat, 29 Apr 2017 21:25:50 +0000 (21:25 +0000)]
Deep nesting is leading to ReferenceError for hoisted function
https://bugs.webkit.org/show_bug.cgi?id=171456

Reviewed by Yusuke Suzuki.

Current patch fix error that appears during hoisting of the function
in block scope. Error happens only when exist some deep scope that lead
to increase scope stack, after which list of the hosted candidates do not
copied to updated scope stack.

Source/JavaScriptCore:
* parser/Parser.h:
(JSC::Scope::Scope):

LayoutTests:
* js/function-declaration-statement-expected.txt:
* js/script-tests/function-declaration-statement.js:
(deepNesting.foo):
(deepNesting):
(deepNestingForFunctionDeclaration.foo):
(deepNestingForFunctionDeclaration):
(eval.deepNestingInEval.foo):
(eval.deepNestingInEval):
(eval.deepNestingForFunctionDeclarationInEval.foo):
(eval.deepNestingForFunctionDeclarationInEval):

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

2 years agoiBooks text can overlap, sometimes columns are shifted splitting words.
zalan@apple.com [Sat, 29 Apr 2017 21:16:44 +0000 (21:16 +0000)]
iBooks text can overlap, sometimes columns are shifted splitting words.
https://bugs.webkit.org/show_bug.cgi?id=171472
<rdar://problem/31096037>

Reviewed by Antti Koivisto.

Source/WebCore:

Instead of just checking if the glyph is taller than the line, we need to ensure that both the
ascent and the descent have enough space (this is for -webkit-line-box-contain: glyph).

Test: fast/text/simple-line-layout-glyph-overflows-line.html

* rendering/SimpleLineLayout.cpp:
(WebCore::SimpleLineLayout::canUseForText): compute the available space for the ascent/descent
and check them against the ceil-ed(see FontCascade::floatWidthForSimpleText) glyph min/max y.

LayoutTests:

* fast/text/simple-line-layout-glyph-overflows-line-expected.html: Added.
* fast/text/simple-line-layout-glyph-overflows-line.html: Added.

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