WebKit-https.git
4 months agoWeb Inspector: Search: allow DOM searches to be case sensitive
drousso@apple.com [Wed, 20 Mar 2019 16:21:37 +0000 (16:21 +0000)]
Web Inspector: Search: allow DOM searches to be case sensitive
https://bugs.webkit.org/show_bug.cgi?id=194673
<rdar://problem/48087577>

Reviewed by Timothy Hatcher.

Source/JavaScriptCore:

Since `DOM.performSearch` also searches by selector and XPath, some results may appear
as unexpected. As an example, searching for "BoDy" will still return the <body> as a result,
as although the literal node name ("BODY") didn't match, it did match via selector/XPath.

* inspector/protocol/DOM.json:
Allow `DOM.performSearch` to be case sensitive.

Source/WebCore:

Tests: inspector/dom/dom-search.html
       inspector/dom/dom-search-caseSensitive.html

Since `DOM.performSearch` also searches by selector and XPath, some results may appear
as unexpected. As an example, searching for "BoDy" will still return the <body> as a result,
as although the literal node name ("BODY") didn't match, it did match via selector/XPath.

* inspector/agents/InspectorDOMAgent.h:
* inspector/agents/InspectorDOMAgent.cpp:
(WebCore::InspectorDOMAgent::performSearch):

* inspector/InspectorNodeFinder.h:
* inspector/InspectorNodeFinder.cpp:
(WebCore::InspectorNodeFinder::InspectorNodeFinder):
(WebCore::InspectorNodeFinder::searchUsingDOMTreeTraversal):
(WebCore::InspectorNodeFinder::checkEquals): Added.
(WebCore::InspectorNodeFinder::checkContains): Added.
(WebCore::InspectorNodeFinder::checkStartsWith): Added.
(WebCore::InspectorNodeFinder::checkEndsWith): Added.
(WebCore::InspectorNodeFinder::matchesAttribute):
(WebCore::InspectorNodeFinder::matchesElement):
(WebCore::InspectorNodeFinder::searchUsingXPath):
(WebCore::InspectorNodeFinder::searchUsingCSSSelectors):

Source/WebInspectorUI:

* UserInterface/Views/SearchSidebarPanel.js:
(WI.SearchSidebarPanel.prototype.performSearch):

* UserInterface/Views/DOMTreeContentView.js:
(WI.DOMTreeContentView.prototype.performSearch.contextNodesReady):

* UserInterface/Controllers/DOMManager.js:
(WI.DOMManager.prototype.performSearch.callback): Deleted.
(WI.DOMManager.prototype.performSearch): Deleted.
(WI.DOMManager.prototype.searchResult.mycallback): Deleted.
(WI.DOMManager.prototype.searchResult): Deleted.
(WI.DOMManager.prototype.cancelSearch): Deleted.
Drive-by: remove unused code.
LayoutTests:

* inspector/dom/dom-search-caseSensitive.html: Copied from LayoutTests/inspector/dom/dom-search.html.
* inspector/dom/dom-search-caseSensitive-expected.txt: Copied from LayoutTests/inspector/dom/dom-search-expected.txt.
* inspector/dom/dom-search-expected.txt:
* inspector/dom/resources/dom-search-queries.js:
(TestPage.registerInitializer):

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

4 months agoAI rule for ValueBitNot/ValueBitXor/ValueBitAnd/ValueBitOr is wrong
sbarati@apple.com [Wed, 20 Mar 2019 16:17:44 +0000 (16:17 +0000)]
AI rule for ValueBitNot/ValueBitXor/ValueBitAnd/ValueBitOr is wrong
https://bugs.webkit.org/show_bug.cgi?id=195980

Reviewed by Yusuke Suzuki.

They were all saying they could be type: (SpecBoolInt32, SpecBigInt)
However, they should have been type: (SpecInt32Only, SpecBigInt)

* dfg/DFGAbstractInterpreterInlines.h:
(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):

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

4 months agoUnreviewed, fix typo in comment added in r243156.
cdumez@apple.com [Wed, 20 Mar 2019 16:17:21 +0000 (16:17 +0000)]
Unreviewed, fix typo in comment added in r243156.

* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::postMessageToInjectedBundle):

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

4 months agoRemove copyRef() calls added in r243163
cdumez@apple.com [Wed, 20 Mar 2019 16:13:30 +0000 (16:13 +0000)]
Remove copyRef() calls added in r243163
https://bugs.webkit.org/show_bug.cgi?id=195962

Patch by Michael Catanzaro <mcatanzaro@igalia.com> on 2019-03-20
Reviewed by Chris Dumez.

Source/JavaScriptCore:

As best I can tell, may be a GCC 9 bug. It shouldn't warn about this case because the return
value is noncopyable and the WTFMove() is absolutely required. We can avoid the warning
without refcount churn by introducing an intermediate variable.

* inspector/scripts/codegen/cpp_generator_templates.py:

Source/WebCore:

The first two cases here can just directly return the RefPtr.

In the third case, we have to work around a GCC 6 bug because GCC 6 is unable to pick the
right constructor to use, unlike modern compilers.

* Modules/fetch/FetchBody.cpp:
(WebCore::FetchBody::bodyAsFormData const):
(WebCore::FetchBody::take):

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

4 months agoUnreviewed, drop invalid assertions landed in r243163.
cdumez@apple.com [Wed, 20 Mar 2019 16:10:17 +0000 (16:10 +0000)]
Unreviewed, drop invalid assertions landed in r243163.

Those assertions were causing some API tests to crash.
Also include some post-review suggestions from Darin.

* Shared/CallbackID.h:
(WebKit::CallbackID::operator=):
* Shared/OptionalCallbackID.h:
(WebKit::OptionalCallbackID::operator=):

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

4 months agoUnreviewed, fix assertion failures in API tests after r243159.
cdumez@apple.com [Wed, 20 Mar 2019 15:59:40 +0000 (15:59 +0000)]
Unreviewed, fix assertion failures in API tests after r243159.

* UIProcess/VisitedLinkStore.cpp:
(WebKit::VisitedLinkStore::removeProcess):

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

4 months agoUnreviewed test gardening.
zalan@apple.com [Wed, 20 Mar 2019 14:25:04 +0000 (14:25 +0000)]
Unreviewed test gardening.

* TestExpectations: This test case asserts on all platforms.
* platform/mac/TestExpectations:

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

4 months ago[GLIB] Optimize jsc_value_object_define_property_data|accessor
carlosgc@webkit.org [Wed, 20 Mar 2019 13:55:54 +0000 (13:55 +0000)]
[GLIB] Optimize jsc_value_object_define_property_data|accessor
https://bugs.webkit.org/show_bug.cgi?id=195679

Reviewed by Saam Barati.

Use direct C++ call instead of using the JSC GLib API to create the descriptor object and invoke Object.defineProperty().

* API/glib/JSCValue.cpp:
(jsc_value_object_define_property_data):
(jsc_value_object_define_property_accessor):

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

4 months ago[MSE][GStreamer] Fix handling of resolution changes in AppendPipeline
aboya@igalia.com [Wed, 20 Mar 2019 13:11:08 +0000 (13:11 +0000)]
[MSE][GStreamer] Fix handling of resolution changes in AppendPipeline
https://bugs.webkit.org/show_bug.cgi?id=195855

Reviewed by Xabier Rodriguez-Calvar.

Source/WebCore:

MediaSample instances produced by the AppendPipeline were not
accounting for resolution changes. The causes of this are twofold:

1) m_presentationSize is set by connectDemuxerSrcPadToAppsink() (by
calling parseDemuxerSrcPadCaps()), but not by appsinkCapsChanged().

2) appsinkCapsChanged() was being called in the main thread as an
asynchronous task. In consequence, even if m_presentationSize is set
there, many samples with the new resolution would still be wrapped in
a MediaSampleGStreamer using the old resolution by the main thread
running consumeAppsinkAvailableSamples() before appsinkCapsChanged()
is dispatched.

This patch fixes these problems by updating m_presentationSize in
appsinkCapsChanged() and making the streaming thread block until the
main thread has dispatched appsinkCapsChanged(). This way the handling
of caps changes is serialized with the handling of frames.

Test: media/media-source/media-source-samples-resolution-change.html

* platform/graphics/gstreamer/mse/AppendPipeline.cpp:
(WebCore::AppendPipeline::AppendPipeline):
(WebCore::AppendPipeline::appsinkCapsChanged):

LayoutTests:

* media/media-source/content/test-green-6s-320x240.mp4: Added.
* media/media-source/content/test-red-3s-480x360.mp4: Added.
* media/media-source/media-source-samples-resolution-change-expected.txt: Added.
* media/media-source/media-source-samples-resolution-change.html: Added.

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

4 months agoAX: Implement support for new meter ARIA role
jdiggs@igalia.com [Wed, 20 Mar 2019 13:09:02 +0000 (13:09 +0000)]
AX: Implement support for new meter ARIA role
https://bugs.webkit.org/show_bug.cgi?id=195966

Reviewed by Chris Fleizach.

Source/WebCore:

Add the new ARIA role to the internal rolemap so that it is treated
in the same fashion as its HTML element counterpart.

No new tests. Instead add the role to the existing role-exposure tests.

* accessibility/AccessibilityObject.cpp:
(WebCore::AccessibilityObject::isMeter const):
(WebCore::initializeRoleMap):
(WebCore::AccessibilityObject::computedRoleString const):
* accessibility/atk/WebKitAccessibleWrapperAtk.cpp:
(atkRole):

Tools:

Update Core role for ATK_ROLE_LEVEL_BAR from AXProgressIndicator
to AXLevelIndicator.

* WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:

LayoutTests:

Add new role to the existing role exposure tests and update the
expectations accordingly.

* 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-computedRoleString-expected.txt:
* platform/gtk/accessibility/roles-exposed-expected.txt:
* platform/mac/accessibility/roles-computedRoleString-expected.txt:
* platform/mac/accessibility/roles-exposed-expected.txt:
* platform/mac-wk2/accessibility/roles-exposed-expected.txt:

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

4 months ago[GStreamer] Switch back to webkitwebsrc for adaptive streaming fragments downloading
philn@webkit.org [Wed, 20 Mar 2019 11:22:57 +0000 (11:22 +0000)]
[GStreamer] Switch back to webkitwebsrc for adaptive streaming fragments downloading
https://bugs.webkit.org/show_bug.cgi?id=195948

Reviewed by Xabier Rodriguez-Calvar.

The webkitwebsrc element now behaves much better when used through
GStreamer's adaptivedemux, so use it for all WebKit media
downloads. The MediaPlayer needed by the webkitwebsrc element now
travels through GstContext messages and queries so that it can be
shared by multiple elements, typically the first webkitwebsrc
element downloads the HLS manifest and then adaptivedemux, through
uridownloader, will create new webkitwebsrc elements for fragments
downloading. Those new elements will query the first webkitwebsrc
element for its context.

The previous hack used to check SecurityOrigins can
also be cleaned-up. The origins are now cached upon reception of
the HTTP headers message from webkitwebsrc.

No new tests, existing http/tests/media/hls tests cover this change.

* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::setPlaybinURL):
(WebCore::MediaPlayerPrivateGStreamer::loadFull):
(WebCore::MediaPlayerPrivateGStreamer::handleMessage):
(WebCore::MediaPlayerPrivateGStreamer::loadNextLocation):
(WebCore::MediaPlayerPrivateGStreamer::wouldTaintOrigin const):
(WebCore::convertToInternalProtocol): Deleted.
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
(WebCore::MediaPlayerPrivateGStreamerBase::handleSyncMessage):
* platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:
(webkit_web_src_class_init):
(webKitWebSrcSetContext):
(webKitWebSrcStart):
(webKitWebSrcGetProtocols):
(webKitWebSrcSetUri):
(CachedResourceStreamingClient::responseReceived):
(convertPlaybinURI): Deleted.
(webKitSrcWouldTaintOrigin): Deleted.
* platform/graphics/gstreamer/WebKitWebSourceGStreamer.h:

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

4 months ago[GStreamer][WebRTC]: Refactor to make the encoding happen synchronously
commit-queue@webkit.org [Wed, 20 Mar 2019 09:47:26 +0000 (09:47 +0000)]
[GStreamer][WebRTC]: Refactor to make the encoding happen synchronously
https://bugs.webkit.org/show_bug.cgi?id=195674

This simplifies the code and make sure that everything is called from the right
thread. It also makes it so we follow the same way of doing things as other libwebrtc
encoders.

Also "s/codecSpecifiInfos/codecSpecificInfos/"

Patch by Thibault Saunier <tsaunier@igalia.com> on 2019-03-20
Reviewed by Philippe Normand.

No new test as this is just a refactoring

* platform/mediastream/libwebrtc/GStreamerVideoEncoderFactory.cpp:
(WebCore::GStreamerVideoEncoder::InitEncode):
(WebCore::GStreamerVideoEncoder::returnFromFlowReturn):

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

4 months agoAdd an platform-driven spell-checking mechanism
timothy_horton@apple.com [Wed, 20 Mar 2019 07:32:40 +0000 (07:32 +0000)]
Add an platform-driven spell-checking mechanism
https://bugs.webkit.org/show_bug.cgi?id=195795

Reviewed by Ryosuke Niwa.

Source/WebCore:

* dom/Document.cpp:
(WebCore::Document::textInserted):
PlatformTextChecking markers are not expected
to propagate to newly inserted text, so remove them.

* dom/DocumentMarker.h:
(WebCore::DocumentMarker::allMarkers):
Add a new type of DocumentMarker, PlatformTextChecking,
and a new data variant that stores a key value pair of strings.

* dom/DocumentMarkerController.cpp:
(WebCore::DocumentMarkerController::addPlatformTextCheckingMarker):
(WebCore::DocumentMarkerController::removeMarkers):
(WebCore::DocumentMarkerController::filterMarkers):
(WebCore::shouldInsertAsSeparateMarker):
* dom/DocumentMarkerController.h:
Export some things.
Add addPlatformTextCheckingMarker, like the others.
Make it possible to filter out markers of a particular type
in a range with a predicate function.

* editing/CompositeEditCommand.cpp:
(WebCore::CompositeEditCommand::replaceTextInNodePreservingMarkers):
Propagate PlatformTextChecking data.
A future change should probably make it possible for
any DocumentMarker to copy its data here, instead of
special-casing each type that is important.

* editing/Editor.cpp:
(WebCore::Editor::markMisspellingsAfterTypingToWord):
(WebCore::Editor::markAllMisspellingsAndBadGrammarInRanges):
(WebCore::Editor::markMisspellingsAndBadGrammar):
* editing/TextCheckingHelper.cpp:
(WebCore::TextCheckingHelper::findFirstMisspellingOrBadGrammar):
(WebCore::TextCheckingHelper::guessesForMisspelledOrUngrammaticalRange const):
(WebCore::platformDrivenTextCheckerEnabled):
* editing/TextCheckingHelper.h:
Bail from traditional spell checking if this mechanism is
enabled. (I wrote it this way to make it runtime switchable
in the near future, and to be similar to unifiedTextCheckerEnabled).

Source/WebKit:

* DerivedSources-input.xcfilelist:
* DerivedSources-output.xcfilelist:
* DerivedSources.make:
* SourcesCocoa.txt:
* UIProcess/Cocoa/TextCheckingController.h: Added.
* UIProcess/Cocoa/TextCheckingController.mm: Added.
(WebKit::TextCheckingController::TextCheckingController):
(WebKit::TextCheckingController::replaceRelativeToSelection):
(WebKit::TextCheckingController::removeAnnotationRelativeToSelection):
* UIProcess/ios/WKContentViewInteraction.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView setupInteraction]):
(-[WKContentView replaceSelectionOffset:length:withAnnotatedString:relativeReplacementRange:]):
(-[WKContentView removeAnnotation:forSelectionOffset:length:]):
* WebKit.xcodeproj/project.pbxproj:
* WebProcess/WebPage/WebPage.cpp:
* WebProcess/WebPage/WebPage.h:
(WebKit::WebPage::textCheckingController):
Plumb two UITextInput methods through to the Web Content process.
I added a new object instead of just sticking things on WebPage
because there are quite a few more related ones coming down the pipeline,
and will also end up being messages going in the opposite direction.

* WebProcess/WebPage/Cocoa/TextCheckingControllerProxy.h: Added.
* WebProcess/WebPage/Cocoa/TextCheckingControllerProxy.messages.in: Added.
* WebProcess/WebPage/Cocoa/TextCheckingControllerProxy.mm: Added.
(WebKit::TextCheckingControllerProxy::TextCheckingControllerProxy):
(WebKit::TextCheckingControllerProxy::~TextCheckingControllerProxy):
(WebKit::relevantMarkerTypes):
(WebKit::TextCheckingControllerProxy::rangeAndOffsetRelativeToSelection):
(WebKit::TextCheckingControllerProxy::replaceRelativeToSelection):
(WebKit::TextCheckingControllerProxy::removeAnnotationRelativeToSelection):
Make it possible for the platform to maintain arbitrary key-value pairs
attached to document ranges, as a way for it to keep track of various
text checking context (e.g. if something has been checked, replaced,
what language it might be, ...).

Allow it to replace the text of a range and the annotations in that range,
or remove annotations in a range. Ranges are specified relative to
the selection.

One large missing piece is giving the platform the ability to retrieve
annotations in a range; that is coming in a future patch.

We translate certain annotations into traditional WebCore spelling
and grammar document markers, for normal display-time treatment.

* WebProcess/WebPage/mac/WKAccessibilityWebPageObjectMac.mm:
(-[WKAccessibilityWebPageObject convertScreenPointToRootView:]):
(-[WKAccessibilityWebPageObject accessibilityHitTest:]):
Unified sources fixes.

Source/WTF:

* wtf/Platform.h:
Add an ENABLE flag.

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

4 months agoUnreviewed test gardening for macOS.
ryanhaddad@apple.com [Wed, 20 Mar 2019 06:51:19 +0000 (06:51 +0000)]
Unreviewed test gardening for macOS.

* platform/mac/TestExpectations:

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

4 months ago[WebAuthN] Implement FIDO AppID extension
jiewen_tan@apple.com [Wed, 20 Mar 2019 06:11:57 +0000 (06:11 +0000)]
[WebAuthN] Implement FIDO AppID extension
https://bugs.webkit.org/show_bug.cgi?id=143491
<rdar://problem/48298273>

Reviewed by Brent Fulgham.

Source/WebCore:

This patch adds support for FIDO AppID extension: https://www.w3.org/TR/webauthn/#sctn-appid-extension.
To be noticed, this implementation follows what spec suggested in the 'Note' session and what Chrome/Firefox
do in practice to avoid some unnecessary steps of
https://fidoalliance.org/specs/fido-v2.0-id-20180227/fido-appid-and-facets-v2.0-id-20180227.html#determining-if-a-caller-s-facetid-is-authorized-for-an-appid.

In fido::convertToU2fSignCommand, the checkOnly flag is deleted as it is never used.

Covered by new tests in existing files.

* CMakeLists.txt:
* DerivedSources-input.xcfilelist:
* DerivedSources-output.xcfilelist:
* DerivedSources.make:
* Modules/webauthn/AuthenticationExtensionsClientInputs.h: Copied from Source/WebCore/Modules/webauthn/PublicKeyCredential.idl.
(WebCore::AuthenticationExtensionsClientInputs::encode const):
(WebCore::AuthenticationExtensionsClientInputs::decode):
* Modules/webauthn/AuthenticationExtensionsClientInputs.idl: Copied from Source/WebCore/Modules/webauthn/PublicKeyCredentialRequestOptions.idl.
* Modules/webauthn/AuthenticatorCoordinator.cpp:
(WebCore::AuthenticatorCoordinatorInternal::processAppIdExtension):
(WebCore::AuthenticatorCoordinator::create const):
(WebCore::AuthenticatorCoordinator::discoverFromExternalSource const):
* Modules/webauthn/PublicKeyCredential.cpp:
(WebCore::PublicKeyCredential::tryCreate):
(WebCore::PublicKeyCredential::PublicKeyCredential):
(WebCore::PublicKeyCredential::getClientExtensionResults const):
(WebCore::PublicKeyCredential::create): Deleted.
* Modules/webauthn/PublicKeyCredential.h:
* Modules/webauthn/PublicKeyCredential.idl:
* Modules/webauthn/PublicKeyCredentialCreationOptions.h:
* Modules/webauthn/PublicKeyCredentialCreationOptions.idl:
* Modules/webauthn/PublicKeyCredentialData.h:
(WebCore::PublicKeyCredentialData::encode const):
(WebCore::PublicKeyCredentialData::decode):
* Modules/webauthn/PublicKeyCredentialRequestOptions.h:
(WebCore::PublicKeyCredentialRequestOptions::encode const):
(WebCore::PublicKeyCredentialRequestOptions::decode):
* Modules/webauthn/PublicKeyCredentialRequestOptions.idl:
* Modules/webauthn/fido/DeviceResponseConverter.cpp:
(fido::readCTAPMakeCredentialResponse):
(fido::readCTAPGetAssertionResponse):
* Modules/webauthn/fido/U2fCommandConstructor.cpp:
(fido::convertToU2fSignCommand):
* Modules/webauthn/fido/U2fCommandConstructor.h:
* Modules/webauthn/fido/U2fResponseConverter.cpp:
(fido::readU2fRegisterResponse):
(fido::readU2fSignResponse):
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:

Source/WebKit:

In U2fHidAuthenticator::continueSignCommandAfterResponseReceived, it will retry the current command
with the AppID if it exists when SW_WRONG_DATA is received from devices. Noted, it will not set
the AuthenticationExtensionsClientOutputs::appid to false in any circumstances. In other words, the
field will be empty if AppID is supplied in AuthenticationExtensionsClientInputs and not used.

* UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm:
(WebKit::LocalAuthenticator::continueMakeCredentialAfterAttested):
(WebKit::LocalAuthenticator::continueGetAssertionAfterUserConsented):
* UIProcess/WebAuthentication/fido/U2fHidAuthenticator.cpp:
(WebKit::U2fHidAuthenticator::issueSignCommand):
(WebKit::U2fHidAuthenticator::continueSignCommandAfterResponseReceived):
* UIProcess/WebAuthentication/fido/U2fHidAuthenticator.h:

Tools:

Add a test that covers the new flag of convertToU2fSignCommand.

* TestWebKitAPI/Tests/WebCore/CtapRequestTest.cpp:
(TestWebKitAPI::TEST):
* TestWebKitAPI/Tests/WebCore/FidoTestData.h:
* TestWebKitAPI/Tests/WebCore/U2fCommandConstructorTest.cpp:
(TestWebKitAPI::TEST):

LayoutTests:

* http/wpt/webauthn/public-key-credential-create-success-hid.https.html:
* http/wpt/webauthn/public-key-credential-create-success-local.https.html:
* http/wpt/webauthn/public-key-credential-create-success-u2f.https.html:
* http/wpt/webauthn/public-key-credential-get-failure-u2f.https-expected.txt:
* http/wpt/webauthn/public-key-credential-get-failure-u2f.https.html:
* http/wpt/webauthn/public-key-credential-get-failure.https-expected.txt:
* http/wpt/webauthn/public-key-credential-get-failure.https.html:
* http/wpt/webauthn/public-key-credential-get-success-hid.https.html:
* http/wpt/webauthn/public-key-credential-get-success-local.https.html:
* http/wpt/webauthn/public-key-credential-get-success-u2f.https-expected.txt:
* http/wpt/webauthn/public-key-credential-get-success-u2f.https.html:

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

4 months agoWeb Inspector: Debugger: lazily create the agent
drousso@apple.com [Wed, 20 Mar 2019 05:40:11 +0000 (05:40 +0000)]
Web Inspector: Debugger: lazily create the agent
https://bugs.webkit.org/show_bug.cgi?id=195973
<rdar://problem/49039674>

Reviewed by Joseph Pecoraro.

Source/JavaScriptCore:

* inspector/JSGlobalObjectInspectorController.cpp:
(Inspector::JSGlobalObjectInspectorController::JSGlobalObjectInspectorController):
(Inspector::JSGlobalObjectInspectorController::frontendInitialized):
(Inspector::JSGlobalObjectInspectorController::createLazyAgents):

* inspector/JSGlobalObjectConsoleClient.h:
(Inspector::JSGlobalObjectConsoleClient::setInspectorDebuggerAgent): Added.
* inspector/JSGlobalObjectConsoleClient.cpp:
(Inspector::JSGlobalObjectConsoleClient::JSGlobalObjectConsoleClient):
(Inspector::JSGlobalObjectConsoleClient::startConsoleProfile):
(Inspector::JSGlobalObjectConsoleClient::stopConsoleProfile):

* inspector/agents/InspectorDebuggerAgent.h:
(Inspector::InspectorDebuggerAgent::addListener): Added.
(Inspector::InspectorDebuggerAgent::removeListener): Added.
(Inspector::InspectorDebuggerAgent::setListener): Deleted.
* inspector/agents/InspectorDebuggerAgent.cpp:
(Inspector::InspectorDebuggerAgent::InspectorDebuggerAgent):
(Inspector::InspectorDebuggerAgent::enable):
(Inspector::InspectorDebuggerAgent::disable):
(Inspector::InspectorDebuggerAgent::getScriptSource):
(Inspector::InspectorDebuggerAgent::schedulePauseOnNextStatement):
(Inspector::InspectorDebuggerAgent::didPause):
(Inspector::InspectorDebuggerAgent::breakProgram):
(Inspector::InspectorDebuggerAgent::clearBreakDetails):
Drive-by: reorder some member variables for better sizing.
Drive-by: rename some member variables for clarity.
Source/WebCore:

No change in functionality.

* inspector/WorkerInspectorController.cpp:
(WebCore::WorkerInspectorController::WorkerInspectorController):
(WebCore::WorkerInspectorController::createLazyAgents):

* inspector/agents/WebDebuggerAgent.cpp:
(WebCore::WebDebuggerAgent::disable):

* inspector/agents/InspectorDOMDebuggerAgent.cpp:
(WebCore::InspectorDOMDebuggerAgent::InspectorDOMDebuggerAgent):
(WebCore::InspectorDOMDebuggerAgent::discardAgent):

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

4 months agoUnreviewed, reduce # of iterations to avoid timing out after r242991
ysuzuki@apple.com [Wed, 20 Mar 2019 04:30:38 +0000 (04:30 +0000)]
Unreviewed, reduce # of iterations to avoid timing out after r242991
https://bugs.webkit.org/show_bug.cgi?id=195791

To avoid timing out, this patch reduces it from 3e7 to 1e7. 1e7 iteration counts still reproduce the issue at 60%.

* stress/symbol-is-destructed-before-refing-underlying-symbol-impl.js:

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

4 months agoAdd support for more platforms to generate-xcfilelists
krollin@apple.com [Wed, 20 Mar 2019 03:56:16 +0000 (03:56 +0000)]
Add support for more platforms to generate-xcfilelists
https://bugs.webkit.org/show_bug.cgi?id=195977

Reviewed by Alexey Proskuryakov.

generate-xcfilelists incorrectly complains when involved with building
WebKit for iphonesimulator:

    $ make debug SDKROOT=iphonesimulator.internal -C Internal/
    …
    ### (die get_canonical_platform_name main main) Unrecognized platform name: iphonesimulator

Address this by teaching generate-xcfilelists about more platforms.

* Scripts/generate-xcfilelists:

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

4 months agoSimplify Cocoa platform user agent logic by using string constants instead of functio...
mjs@apple.com [Wed, 20 Mar 2019 02:52:33 +0000 (02:52 +0000)]
Simplify Cocoa platform user agent logic by using string constants instead of function calls for the frozen parts
https://bugs.webkit.org/show_bug.cgi?id=195936

Reviewed by Dean Jackson.

No new tests because no behavior changes. Existing behavior is tested by fast/dom/navigator-userAgent-frozen.html

* platform/UserAgent.h: Remove prototype of removed function.
* platform/cocoa/UserAgentCocoa.mm:
(WebCore::userAgentBundleVersion): Deleted.
* platform/ios/UserAgentIOS.mm:
* platform/ios/UserAgentIOS.mm:
(WebCore::osNameForUserAgent): Use WTF String instead of NSString
(WebCore::deviceNameForUserAgent): dutto
(WebCore::standardUserAgentWithApplicationName): Simplify this
function to account for WebKit version now being frozen. Also
use String instead of NSString.
* platform/mac/UserAgentMac.mm:
(WebCore::standardUserAgentWithApplicationName): Simplify this
function to account for CPU and WEbKit version now being
frozen. Also avoid two separate but very similar calls to
makeString().

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

4 months agoUnreviewed adjustment to r242842 per Darin's request.
ross.kirsling@sony.com [Wed, 20 Mar 2019 02:01:41 +0000 (02:01 +0000)]
Unreviewed adjustment to r242842 per Darin's request.

Source/WebCore:

* platform/win/LoggingWin.cpp:
(WebCore::logLevelString):

Source/WebCore/PAL:

* pal/win/LoggingWin.cpp:
(PAL::logLevelString):

Source/WebKit:

* Platform/win/LoggingWin.cpp:
(WebKit::logLevelString):

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

4 months agoRemove the SVG property tear off objects of SVGAnimatedPreserveAspectRatio
commit-queue@webkit.org [Wed, 20 Mar 2019 01:49:29 +0000 (01:49 +0000)]
Remove the SVG property tear off objects of SVGAnimatedPreserveAspectRatio
https://bugs.webkit.org/show_bug.cgi?id=195960

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2019-03-19
Reviewed by Simon Fraser.

-- Define SVGAnimatedPreserveAspectRatio to be SVGAnimatedValueProperty<
   SVGPreserveAspectRatio>.

-- Make SVGPreserveAspectRatio be derived form SVGValueProperty<
   SVGPreserveAspectRatioValue>.

-- Add SVGAnimatedPreserveAspectRatioAccessor to access the animated
   property.

-- Add SVGAnimatedPreserveAspectRatioAnimator to animate the animated
   property of the target element and all its instances.

-- Add SVGAnimationPreserveAspectRatioFunction to progress animVal of
   animated property in a period of time.

SVGFilterPrimitiveStandardAttributes::build() should be const function.
This is required for this patch because SVGFEImageElement::build() calls
SVGFEImageElement::preserveAspectRatio() which is const.

* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* svg/SVGAnimatedPreserveAspectRatio.cpp: Removed.
* svg/SVGAnimatedPreserveAspectRatio.h: Removed.
* svg/SVGAnimatorFactory.h:
(WebCore::SVGAnimatorFactory::create):
* svg/SVGFEBlendElement.cpp:
(WebCore::SVGFEBlendElement::build const):
(WebCore::SVGFEBlendElement::build): Deleted.
* svg/SVGFEBlendElement.h:
* svg/SVGFEColorMatrixElement.cpp:
(WebCore::SVGFEColorMatrixElement::build const):
(WebCore::SVGFEColorMatrixElement::build): Deleted.
* svg/SVGFEColorMatrixElement.h:
* svg/SVGFEComponentTransferElement.cpp:
(WebCore::SVGFEComponentTransferElement::build const):
(WebCore::SVGFEComponentTransferElement::build): Deleted.
* svg/SVGFEComponentTransferElement.h:
* svg/SVGFECompositeElement.cpp:
(WebCore::SVGFECompositeElement::build const):
(WebCore::SVGFECompositeElement::build): Deleted.
* svg/SVGFECompositeElement.h:
* svg/SVGFEConvolveMatrixElement.cpp:
(WebCore::SVGFEConvolveMatrixElement::build const):
(WebCore::SVGFEConvolveMatrixElement::build): Deleted.
* svg/SVGFEConvolveMatrixElement.h:
* svg/SVGFEDiffuseLightingElement.cpp:
(WebCore::SVGFEDiffuseLightingElement::build const):
(WebCore::SVGFEDiffuseLightingElement::build): Deleted.
* svg/SVGFEDiffuseLightingElement.h:
* svg/SVGFEDisplacementMapElement.cpp:
(WebCore::SVGFEDisplacementMapElement::build const):
(WebCore::SVGFEDisplacementMapElement::build): Deleted.
* svg/SVGFEDisplacementMapElement.h:
* svg/SVGFEDropShadowElement.cpp:
(WebCore::SVGFEDropShadowElement::build const):
(WebCore::SVGFEDropShadowElement::build): Deleted.
* svg/SVGFEDropShadowElement.h:
* svg/SVGFEFloodElement.cpp:
(WebCore::SVGFEFloodElement::build const):
(WebCore::SVGFEFloodElement::build): Deleted.
* svg/SVGFEFloodElement.h:
* svg/SVGFEGaussianBlurElement.cpp:
(WebCore::SVGFEGaussianBlurElement::build const):
(WebCore::SVGFEGaussianBlurElement::build): Deleted.
* svg/SVGFEGaussianBlurElement.h:
* svg/SVGFEImageElement.cpp:
(WebCore::SVGFEImageElement::SVGFEImageElement):
(WebCore::SVGFEImageElement::parseAttribute):
(WebCore::SVGFEImageElement::build const):
(WebCore::SVGFEImageElement::registerAttributes): Deleted.
(WebCore::SVGFEImageElement::build): Deleted.
* svg/SVGFEImageElement.h:
* svg/SVGFEMergeElement.cpp:
(WebCore::SVGFEMergeElement::build const):
(WebCore::SVGFEMergeElement::build): Deleted.
* svg/SVGFEMergeElement.h:
* svg/SVGFEMorphologyElement.cpp:
(WebCore::SVGFEMorphologyElement::build const):
(WebCore::SVGFEMorphologyElement::build): Deleted.
* svg/SVGFEMorphologyElement.h:
* svg/SVGFEOffsetElement.cpp:
(WebCore::SVGFEOffsetElement::build const):
(WebCore::SVGFEOffsetElement::build): Deleted.
* svg/SVGFEOffsetElement.h:
* svg/SVGFESpecularLightingElement.cpp:
(WebCore::SVGFESpecularLightingElement::build const):
(WebCore::SVGFESpecularLightingElement::build): Deleted.
* svg/SVGFESpecularLightingElement.h:
* svg/SVGFETileElement.cpp:
(WebCore::SVGFETileElement::build const):
(WebCore::SVGFETileElement::build): Deleted.
* svg/SVGFETileElement.h:
* svg/SVGFETurbulenceElement.cpp:
(WebCore::SVGFETurbulenceElement::build const):
(WebCore::SVGFETurbulenceElement::build): Deleted.
* svg/SVGFETurbulenceElement.h:
* svg/SVGFilterPrimitiveStandardAttributes.h:
* svg/SVGFitToViewBox.cpp:
(WebCore::SVGFitToViewBox::SVGFitToViewBox):
(WebCore::SVGFitToViewBox::parseViewBox):
(WebCore::SVGFitToViewBox::registerAttributes): Deleted.
* svg/SVGFitToViewBox.h:
(WebCore::SVGFitToViewBox::preserveAspectRatio const):
(WebCore::SVGFitToViewBox::preserveAspectRatioAnimated):
(WebCore::SVGFitToViewBox::setPreserveAspectRatio):
(WebCore::SVGFitToViewBox::resetPreserveAspectRatio):
(WebCore::SVGFitToViewBox::preserveAspectRatioString const):
* svg/SVGImageElement.cpp:
(WebCore::SVGImageElement::SVGImageElement):
(WebCore::SVGImageElement::registerAttributes):
(WebCore::SVGImageElement::parseAttribute):
* svg/SVGImageElement.h:
* svg/SVGMarkerElement.h:
* svg/SVGPatternElement.h:
* svg/SVGPreserveAspectRatio.h:
(WebCore::SVGPreserveAspectRatio::create):
(WebCore::SVGPreserveAspectRatio::align const):
(WebCore::SVGPreserveAspectRatio::setAlign):
(WebCore::SVGPreserveAspectRatio::meetOrSlice const):
(WebCore::SVGPreserveAspectRatio::setMeetOrSlice):
(WebCore::SVGPreserveAspectRatio::align): Deleted.
(WebCore::SVGPreserveAspectRatio::meetOrSlice): Deleted.
(WebCore::SVGPreserveAspectRatio::SVGPreserveAspectRatio): Deleted.
* svg/SVGSVGElement.h:
* svg/SVGStringList.h:
* svg/SVGSymbolElement.h:
* svg/SVGViewSpec.h:
* svg/properties/SVGAnimatedPropertyAccessorImpl.h:
* svg/properties/SVGAnimatedPropertyAnimatorImpl.h:
* svg/properties/SVGAnimatedPropertyImpl.h:
* svg/properties/SVGAnimationDiscreteFunctionImpl.h:
* svg/properties/SVGAttributeRegistry.h:
* svg/properties/SVGPropertyOwnerRegistry.h:
(WebCore::SVGPropertyOwnerRegistry::registerProperty):

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

4 months ago[WPE] Fix build warnings because of missing an argument when initializing wpe_input_a...
commit-queue@webkit.org [Wed, 20 Mar 2019 01:38:12 +0000 (01:38 +0000)]
[WPE] Fix build warnings because of missing an argument when initializing wpe_input_axis_event
https://bugs.webkit.org/show_bug.cgi?id=195931

Patch by Gyuyoung Kim <gyuyoung.kim@lge.com> on 2019-03-19
Reviewed by Michael Catanzaro.

There are still build warnings when building wpe port. It looks like
these build warnings have been caused by missing to set an argument
for the modifier parameter of wpe_input_axis_event. This patch sets 0
for the modifier argument to avoid the build warnings.

* UIProcess/API/wpe/ScrollGestureController.cpp:
(WebKit::ScrollGestureController::handleEvent):

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

4 months agoRemove the SVG property tear off objects of SVGAnimatedRect
commit-queue@webkit.org [Wed, 20 Mar 2019 00:59:50 +0000 (00:59 +0000)]
Remove the SVG property tear off objects of SVGAnimatedRect
https://bugs.webkit.org/show_bug.cgi?id=195949

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2019-03-19
Reviewed by Simon Fraser.

SVGRect is an SVG type, so we need to introduce two classes to represent
it and its animated property SVGAnimatedRect.

-- SVGValueProperty: It is derived from SVGProperty and it will be the
   base class of all the SVG type based properties. It is basically a
   RefCounted object with m_value member. For SVGRect, m_value will be
   of type FloatRect.

-- SVGAnimatedValueProperty: It is derived from SVGAnimatedProperty and
   it will be the base class of all the animated SVG type based properties.
   It is RefCounted object with two RefCounted members: baseVal and animVal.
   These two members are of type SVGValueProperty. For SVGAnimatedRect,
   baseVal and animVal will be of type SVGRect.

SVGAnimatedValueProperty will be responsible for:

1) Providing access to its baseVal and animVal. Note the same interface
   is used internally and used by the DOM.

2) Managing the animation of the property by starting and stopping it.

3) Coordinating the changes in its baseVal and animVal with the owner
   element.

* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* svg/SVGAnimatedRect.cpp: Removed.
* svg/SVGAnimatedRect.h: Removed.
* svg/SVGAnimatorFactory.h:
(WebCore::SVGAnimatorFactory::create):
* svg/SVGAttributeAnimationController.cpp:
(WebCore::SVGAttributeAnimationController::calculateAnimatedValue):
This is a bug from r243036. The <set> can be the tag of m_animationElement
not m_targetElement.
* svg/SVGAttributeAnimationController.h:
* svg/SVGAttributeAnimationControllerBase.h:
* svg/SVGFitToViewBox.cpp:
(WebCore::SVGFitToViewBox::SVGFitToViewBox):
(WebCore::SVGFitToViewBox::registerAttributes):
(WebCore::SVGFitToViewBox::setViewBox):
(WebCore::SVGFitToViewBox::resetViewBox):
* svg/SVGFitToViewBox.h:
(WebCore::SVGFitToViewBox::viewBox const):
(WebCore::SVGFitToViewBox::viewBoxAnimated):
(WebCore::SVGFitToViewBox::viewBoxString const):
* svg/SVGMarkerElement.h:
* svg/SVGPatternElement.h:
* svg/SVGRect.h:
(WebCore::SVGRect::create):
(WebCore::SVGRect::x):
(WebCore::SVGRect::setX):
(WebCore::SVGRect::y):
(WebCore::SVGRect::setY):
(WebCore::SVGRect::width):
(WebCore::SVGRect::setWidth):
(WebCore::SVGRect::height):
(WebCore::SVGRect::setHeight):
(WebCore::SVGRect::SVGRect): Deleted.
* svg/SVGSVGElement.cpp:
(WebCore::checkIntersectionWithoutUpdatingLayout):
(WebCore::checkEnclosureWithoutUpdatingLayout):
* svg/SVGSVGElement.h:
* svg/SVGSymbolElement.h:
* svg/SVGViewSpec.cpp:
(WebCore::SVGViewSpec::SVGViewSpec):
* svg/SVGViewSpec.h:
* svg/properties/SVGAnimatedPropertyAccessorImpl.h:
* svg/properties/SVGAnimatedPropertyAnimatorImpl.h:
* svg/properties/SVGAnimatedPropertyImpl.h:
* svg/properties/SVGAnimatedValueProperty.h: Added.
(WebCore::SVGAnimatedValueProperty::create):
(WebCore::SVGAnimatedValueProperty::~SVGAnimatedValueProperty):
(WebCore::SVGAnimatedValueProperty::setBaseValInternal):
(WebCore::SVGAnimatedValueProperty::baseVal const):
(WebCore::SVGAnimatedValueProperty::baseVal):
(WebCore::SVGAnimatedValueProperty::setAnimVal):
(WebCore::SVGAnimatedValueProperty::animVal const):
(WebCore::SVGAnimatedValueProperty::animVal):
(WebCore::SVGAnimatedValueProperty::currentValue const):
(WebCore::SVGAnimatedValueProperty::SVGAnimatedValueProperty):
(WebCore::SVGAnimatedValueProperty::ensureAnimVal):
* svg/properties/SVGAnimationAdditiveValueFunctionImpl.h:
(WebCore::SVGAnimationRectFunction::progress):
* svg/properties/SVGAttributeRegistry.h:
* svg/properties/SVGPropertyOwnerRegistry.h:
(WebCore::SVGPropertyOwnerRegistry::registerProperty):
* svg/properties/SVGValueProperty.h: Added.
(WebCore::SVGValueProperty::create):
(WebCore::SVGValueProperty::value const):
(WebCore::SVGValueProperty::setValue):
(WebCore::SVGValueProperty::value):
(WebCore::SVGValueProperty::SVGValueProperty):

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

4 months agoRebaseline the test after r243175. It got somehow landed with failing expectations.
rniwa@webkit.org [Wed, 20 Mar 2019 00:28:10 +0000 (00:28 +0000)]
Rebaseline the test after r243175. It got somehow landed with failing expectations.

* fast/dom/replace-child-with-mutation-event-removal-and-circular-template-insertion-expected.txt:

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

4 months agoResource Load Statistics (experimental): Clear non-cookie website data for sites...
wilander@apple.com [Wed, 20 Mar 2019 00:22:09 +0000 (00:22 +0000)]
Resource Load Statistics (experimental): Clear non-cookie website data for sites that have been navigated to, with link decoration, by a prevalent resource
https://bugs.webkit.org/show_bug.cgi?id=195923
<rdar://problem/49001272>

Reviewed by Alex Christensen.

Source/WebCore:

Adds a new experimental feature.

Test: http/tests/resourceLoadStatistics/website-data-removal-for-site-navigated-to-with-link-decoration.html

* page/RuntimeEnabledFeatures.h:
(WebCore::RuntimeEnabledFeatures::setIsITPFirstPartyWebsiteDataRemovalEnabled):
(WebCore::RuntimeEnabledFeatures::isITPFirstPartyWebsiteDataRemovalEnabled const):

Source/WebKit:

Cross-site trackers abuse link query parameters to transport user identifiers and then store
them in first-party storage space. To address this, we've done three things:
- r236448 capped all persistent client-side cookies to seven days of storage.
- r242288 further capped persistent client-side cookies for navigations with link decoration from prevalent resources.
- r242603 added logging of navigations with link decoration from prevalent resources.

This patch introduces an experimental feature that removes non-cookie website data for sites
that have been navigated to, with link decoration, by a prevalent resource.

To achieve this, resource domains to remove website data for are now marked with an enum called
WebsiteDataToRemove with values All, AllButHttpOnlyCookies, AllButCookies. As resources are
iterated, they are marked for either of these values and the new function
ResourceLoadStatisticsMemoryStore::shouldRemoveAllButCookiesFor() leads to the marking with
WebsiteDataToRemove::AllButCookies.

Then NetworkProcess::deleteWebsiteDataForRegistrableDomains() looks at this setting and removes
website data accordingly.

The thinking behind this is that the lifetime cap applied in r236448 and r242288 take care of
script writable cookies, and this patch takes care of all other script writable storage.

The infrastructure to handle user interaction expiration is now parameterized so that multiple
expiries can be applied. In this particular case, seven days of browser use.

* NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:
(WebKit::ResourceLoadStatisticsDatabaseStore::grantStorageAccess):
(WebKit::ResourceLoadStatisticsDatabaseStore::grantStorageAccessInternal):
(WebKit::ResourceLoadStatisticsDatabaseStore::hasHadUserInteraction):
(WebKit::ResourceLoadStatisticsDatabaseStore::shouldRemoveAllWebsiteDataFor const):
(WebKit::ResourceLoadStatisticsDatabaseStore::shouldRemoveAllButCookiesFor const):
(WebKit::ResourceLoadStatisticsDatabaseStore::registrableDomainsToRemoveWebsiteDataFor):
* NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h:
* NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp:
(WebKit::ResourceLoadStatisticsMemoryStore::hasHadUserInteraction):
(WebKit::ResourceLoadStatisticsMemoryStore::hasHadUnexpiredRecentUserInteraction const):
(WebKit::ResourceLoadStatisticsMemoryStore::shouldRemoveAllWebsiteDataFor const):
(WebKit::ResourceLoadStatisticsMemoryStore::shouldRemoveAllButCookiesFor const):
(WebKit::ResourceLoadStatisticsMemoryStore::registrableDomainsToRemoveWebsiteDataFor):
* NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.h:
* NetworkProcess/Classifier/ResourceLoadStatisticsStore.cpp:
(WebKit::domainsToString):
(WebKit::ResourceLoadStatisticsStore::removeDataRecords):
(WebKit::ResourceLoadStatisticsStore::statisticsEpirationTime const):
(WebKit::ResourceLoadStatisticsStore::mergeOperatingDates):
(WebKit::ResourceLoadStatisticsStore::includeTodayAsOperatingDateIfNecessary):
(WebKit::ResourceLoadStatisticsStore::hasStatisticsExpired const):
* NetworkProcess/Classifier/ResourceLoadStatisticsStore.h:
* NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:
(WebKit::WebResourceLoadStatisticsStore::hasHadUserInteraction):
(WebKit::WebResourceLoadStatisticsStore::deleteWebsiteDataForRegistrableDomains):
(WebKit::WebResourceLoadStatisticsStore::deleteWebsiteDataForRegistrableDomainsInAllPersistentDataStores): Deleted.
   Renamed to reflect that it actually takes a parameter for which types of data to remove.
* NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h:
* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::initializeNetworkProcess):
(WebKit::NetworkProcess::setCrossSiteLoadWithLinkDecorationForTesting):
(WebKit::NetworkProcess::deleteWebsiteDataForRegistrableDomains):
(WebKit::NetworkProcess::deleteCookiesForTesting):
(WebKit::NetworkProcess::deleteWebsiteDataForRegistrableDomainsInAllPersistentDataStores): Deleted.
   Renamed to reflect that it actually takes a parameter for which types of data to remove.
* NetworkProcess/NetworkProcess.h:
* NetworkProcess/NetworkProcess.messages.in:
* NetworkProcess/NetworkProcessCreationParameters.cpp:
(WebKit::NetworkProcessCreationParameters::encode const):
(WebKit::NetworkProcessCreationParameters::decode):
* NetworkProcess/NetworkProcessCreationParameters.h:
* NetworkProcess/NetworkSession.cpp:
(WebKit::NetworkSession::deleteWebsiteDataForRegistrableDomains):
(WebKit::NetworkSession::deleteWebsiteDataForRegistrableDomainsInAllPersistentDataStores): Deleted.
   Renamed to reflect that it actually takes a parameter for which types of data to remove.
* NetworkProcess/NetworkSession.h:
* Shared/WebPreferences.yaml:
* UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
(WKWebsiteDataStoreSetStatisticsCrossSiteLoadWithLinkDecoration):
(WKWebsiteDataStoreSetStatisticsTimeToLiveUserInteraction):
(WKWebsiteDataStoreStatisticsProcessStatisticsAndDataRecords):
* UIProcess/API/C/WKWebsiteDataStoreRef.h:
* UIProcess/Cocoa/WebProcessPoolCocoa.mm:
(WebKit::WebProcessPool::platformInitializeNetworkProcess):
* UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::setCrossSiteLoadWithLinkDecorationForTesting):
* UIProcess/Network/NetworkProcessProxy.h:
* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::setCrossSiteLoadWithLinkDecorationForTesting):
* UIProcess/WebsiteData/WebsiteDataStore.h:

Tools:

This patch does the following to the TestRunner:
- Adds setStatisticsCrossSiteLoadWithLinkDecoration().
- Makes setStatisticsTimeToLiveUserInteraction() wait for completion.
- Makes statisticsProcessStatisticsAndDataRecords() wait for completion.

* WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
* WebKitTestRunner/InjectedBundle/TestRunner.cpp:
(WTR::TestRunner::setStatisticsCrossSiteLoadWithLinkDecoration):
* WebKitTestRunner/InjectedBundle/TestRunner.h:
* WebKitTestRunner/TestController.cpp:
(WTR::TestController::setStatisticsCrossSiteLoadWithLinkDecoration):
(WTR::TestController::setStatisticsTimeToLiveUserInteraction):
(WTR::TestController::statisticsProcessStatisticsAndDataRecords):
* WebKitTestRunner/TestController.h:
* WebKitTestRunner/TestInvocation.cpp:
(WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle):

LayoutTests:

* http/tests/resourceLoadStatistics/website-data-removal-for-site-navigated-to-with-link-decoration-expected.txt: Added.
* http/tests/resourceLoadStatistics/website-data-removal-for-site-navigated-to-with-link-decoration.html: Added.

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

4 months agoWeb Inspector: Sources: provide option to group by path
drousso@apple.com [Tue, 19 Mar 2019 23:35:20 +0000 (23:35 +0000)]
Web Inspector: Sources: provide option to group by path
https://bugs.webkit.org/show_bug.cgi?id=195203
<rdar://problem/27340680>

Reviewed by Timothy Hatcher.

Create top-level folders for each origin and nest all resources (in a folder chain) underneath.

* UserInterface/Views/SourcesNavigationSidebarPanel.js:
(WI.SourcesNavigationSidebarPanel):
(WI.SourcesNavigationSidebarPanel.prototype.closed):
(WI.SourcesNavigationSidebarPanel.prototype.treeElementForRepresentedObject.searchTreeOutline): Added.
(WI.SourcesNavigationSidebarPanel.prototype.treeElementForRepresentedObject):
(WI.SourcesNavigationSidebarPanel.prototype._compareTreeElements):
(WI.SourcesNavigationSidebarPanel.prototype._updateMainFrameTreeElement):
(WI.SourcesNavigationSidebarPanel.prototype._addResource):
(WI.SourcesNavigationSidebarPanel.prototype._addScript):
(WI.SourcesNavigationSidebarPanel.prototype._addWorkerTargetWithMainResource):
(WI.SourcesNavigationSidebarPanel.prototype._handleResourceGroupingModeMouseDown.addOption): Added.
(WI.SourcesNavigationSidebarPanel.prototype._handleResourceGroupingModeMouseDown): Added.
(WI.SourcesNavigationSidebarPanel.prototype._handleTreeSelectionDidChange):
(WI.SourcesNavigationSidebarPanel.prototype._handleResourceGroupingModeChanged):
(WI.SourcesNavigationSidebarPanel.prototype._handleFrameMainResourceDidChange):
(WI.SourcesNavigationSidebarPanel.prototype._handleMainFrameDidChange):
* UserInterface/Views/SourcesNavigationSidebarPanel.css:
(.sidebar > .panel.navigation.sources > .content):
(.sidebar > .panel.navigation.sources > .content > .details-section.paused-reason.collapsed > .header > .options,):
(.sidebar > .panel.navigation.sources > .content > .details-section.breakpoints > .header > .options .create-breakpoint): Added.
(.sidebar > .panel.navigation.sources > .content > .resources): Added.
(.sidebar > .panel.navigation.sources > .content .tree-outline.single-thread): Added.
(.sidebar > .panel.navigation.sources > .content .tree-outline.single-thread > .item.thread): Added.
(.sidebar > .panel.navigation.sources > .content > .details-section.scripts:not(.collapsed)): Deleted.
(.sidebar > .panel.navigation.sources > .content > .tree-outline.single-thread): Deleted.
(.sidebar > .panel.navigation.sources > .content > .tree-outline.single-thread > .item.thread): Deleted.
Drive-by: fix "No Filter Results" message view to not overlap eachother.
Drive-by: try to be more smart about what tree we focus when selecting a represented object.
* UserInterface/Views/ResourceTreeElement.js:
(WI.ResourceTreeElement):
(WI.ResourceTreeElement.prototype.get mainTitleText):
(WI.ResourceTreeElement.prototype._updateTitles):
* UserInterface/Base/URLUtilities.js:
(WI.displayNameForURL):
Provide a way for the display name to use a directory "/" instead of the last path component.
This is needed in cases where the loaded resource is an implicit "index.*".

* UserInterface/Views/GeneralTreeElement.js:
(WI.GeneralTreeElement.prototype.createFoldersAsNeededForSubpath): Added.
* UserInterface/Views/SourceCodeTreeElement.js:
(WI.SourceCodeTreeElement.prototype.createFoldersAsNeededForSubpath): Deleted.

* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Models/Resource.js:

* UserInterface/Views/DetailsSection.css:
(.details-section > .header .go-to-arrow):
Drive-by: vertically center go-to-arrow.
* UserInterface/Protocol/InspectorFrontendAPI.js:
(InspectorFrontendAPI.contextMenuItemSelected):

* UserInterface/Base/Setting.js:
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView):
(WI.NetworkTableContentView.prototype.get filterNavigationItems):
(WI.NetworkTableContentView.prototype._populateNameCell):
(WI.NetworkTableContentView.prototype._generateSortComparator):
(WI.NetworkTableContentView.prototype._insertResourceAndReloadTable):
(WI.NetworkTableContentView.prototype._updateFilteredEntries):
(WI.NetworkTableContentView.prototype._handleGroupMediaRequestsByDOMNodeCheckedDidChange): Added.
(WI.NetworkTableContentView.prototype._handleGroupByDOMNodeCheckedDidChange): Deleted.
Rename the `groupByNode` setting to be more specific.

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

4 months ago[CMake] Support more clang and gcc sanitizers
chris.reid@sony.com [Tue, 19 Mar 2019 23:34:03 +0000 (23:34 +0000)]
[CMake] Support more clang and gcc sanitizers
https://bugs.webkit.org/show_bug.cgi?id=195956

Reviewed by Michael Catanzaro.

.:

Add support to compile with undefined, thread, memory, and leak sanitizers in cmake.
Also add ubsan and asan support when compiling with clang-cl on WinCairo.
This changes ENABLE_ADDRESS_SANITIZER flag to a generic ENABLE_SANITIZERS
which takes a semicolon separated list of sanitizers to enable.
e.g. `-DENABLE_SANITIZERS=address;undefined`

Building WinCairo with sanitizers enabled also needs CLANG_LIB_PATH set to the clang compiler runtime library folder.
e.g. pass `--cmakeargs="-DCLANG_LIB_PATH=\"C:\Program Files\LLVM\lib\clang\7.0.1\lib\windows\""` to build-webkit

* Source/cmake/WebKitCompilerFlags.cmake:

Tools:

* Scripts/webkitdirs.pm: Updating ENABLE_ADDRESS_SANITIZER to ENABLE_SANITIZERS=address

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

4 months agoUnreviewed build fix after r243173.
cdumez@apple.com [Tue, 19 Mar 2019 23:22:11 +0000 (23:22 +0000)]
Unreviewed build fix after r243173.

* UIProcess/Cocoa/UIDelegate.mm:
(WebKit::UIDelegate::UIClient::requestStorageAccessConfirm):

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

4 months ago[ews-build] Improve summary for PrintConfiguration step
aakash_jain@apple.com [Tue, 19 Mar 2019 23:02:26 +0000 (23:02 +0000)]
[ews-build] Improve summary for PrintConfiguration step
https://bugs.webkit.org/show_bug.cgi?id=195945

Reviewed by Lucas Forschler.

* BuildSlaveSupport/ews-build/steps.py:
(PrintConfiguration.getResultSummary): Override getResultSummary.

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

4 months agoPrune code after ForceOSRExit
sbarati@apple.com [Tue, 19 Mar 2019 22:53:40 +0000 (22:53 +0000)]
Prune code after ForceOSRExit
https://bugs.webkit.org/show_bug.cgi?id=195913

Reviewed by Keith Miller.

I removed our original implementation of this in r242989 because
it was not sound. It broke backwards propagation because it removed
uses of a node that backwards propagation relied on to be sound.
Essentially, backwards propagation relies on being able to see uses
that would exist in bytecode to be sound.

The rollout in r242989 was a 1% Speedometer2 regression. This patch
rolls back in the optimization in a sound way.

This patch augments the code we had prior to r242989 to be sound. In
addition to preserving liveness, we now also convert all uses after
the ForceOSRExit to be Phantom. This may pessimize the optimizations
we do in backwards propagation, but it will prevent that phase from
making unsound optimizations.

* dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::addToGraph):
(JSC::DFG::ByteCodeParser::parse):

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

4 months agoReparenting during a mutation event inside appendChild could result in a circular...
rniwa@webkit.org [Tue, 19 Mar 2019 22:25:44 +0000 (22:25 +0000)]
Reparenting during a mutation event inside appendChild could result in a circular DOM tree
https://bugs.webkit.org/show_bug.cgi?id=192825

Reviewed by Zalan Bujtas.

Source/WebCore:

The bug was caused by appendChildWithoutPreInsertionValidityCheck, insertBefore and replaceChild
checking the circular dependency against newChild instead of targets even though when newChild
is a document fragment, appendChildWithoutPreInsertionValidityCheck inserts the children of
the document fragment. Fixed the bug by checking the circular dependency against each target child.

Also fixed the bug that checkAcceptChildGuaranteedNodeTypes was not considering shadow inclusive
ancestors or template host elements.

Tests: fast/dom/append-child-with-mutation-event-removal-and-circular-insertion.html
       fast/dom/append-child-with-mutation-event-removal-and-circular-shadow-insertion.html
       fast/dom/append-child-with-mutation-event-removal-and-circular-template-insertion.html
       fast/dom/insert-child-with-mutation-event-removal-and-circular-insertion.html
       fast/dom/insert-child-with-mutation-event-removal-and-circular-shadow-insertion.html
       fast/dom/insert-child-with-mutation-event-removal-and-circular-template-insertion.html
       fast/dom/replace-child-with-mutation-event-removal-and-circular-insertion.html
       fast/dom/replace-child-with-mutation-event-removal-and-circular-shadow-insertion.html
       fast/dom/replace-child-with-mutation-event-removal-and-circular-template-insertion.html

* dom/ContainerNode.cpp:
(WebCore::checkAcceptChildGuaranteedNodeTypes):
(WebCore::ContainerNode::insertBefore):
(WebCore::ContainerNode::replaceChild):
(WebCore::ContainerNode::appendChildWithoutPreInsertionValidityCheck):

LayoutTests:

Added regression tests.

* fast/dom/append-child-with-mutation-event-removal-and-circular-insertion-expected.txt: Added.
* fast/dom/append-child-with-mutation-event-removal-and-circular-insertion.html: Added.
* fast/dom/append-child-with-mutation-event-removal-and-circular-shadow-insertion-expected.txt: Added.
* fast/dom/append-child-with-mutation-event-removal-and-circular-shadow-insertion.html: Added.
* fast/dom/append-child-with-mutation-event-removal-and-circular-template-insertion-expected.txt: Added.
* fast/dom/append-child-with-mutation-event-removal-and-circular-template-insertion.html: Added.
* fast/dom/insert-child-with-mutation-event-removal-and-circular-insertion-expected.txt: Added.
* fast/dom/insert-child-with-mutation-event-removal-and-circular-insertion.html: Added.
* fast/dom/insert-child-with-mutation-event-removal-and-circular-shadow-insertion-expected.txt: Added.
* fast/dom/insert-child-with-mutation-event-removal-and-circular-shadow-insertion.html: Added.
* fast/dom/insert-child-with-mutation-event-removal-and-circular-template-insertion-expected.txt: Added.
* fast/dom/insert-child-with-mutation-event-removal-and-circular-template-insertion.html: Added.
* fast/dom/replace-child-with-mutation-event-removal-and-circular-insertion-expected.txt: Added.
* fast/dom/replace-child-with-mutation-event-removal-and-circular-insertion.html: Added.
* fast/dom/replace-child-with-mutation-event-removal-and-circular-shadow-insertion-expected.txt: Added.
* fast/dom/replace-child-with-mutation-event-removal-and-circular-shadow-insertion.html: Added.
* fast/dom/replace-child-with-mutation-event-removal-and-circular-template-insertion-expected.txt: Added.
* fast/dom/replace-child-with-mutation-event-removal-and-circular-template-insertion.html: Added.

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

4 months ago[ews-build] Improve summary for CheckOutSource step
aakash_jain@apple.com [Tue, 19 Mar 2019 22:22:50 +0000 (22:22 +0000)]
[ews-build] Improve summary for CheckOutSource step
https://bugs.webkit.org/show_bug.cgi?id=195963

Reviewed by Lucas Forschler.

* BuildSlaveSupport/ews-build/steps.py:
(CheckOutSource.getResultSummary):

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

4 months agoAdd default prompt implementation for the Storage Access API
bfulgham@apple.com [Tue, 19 Mar 2019 22:11:00 +0000 (22:11 +0000)]
Add default prompt implementation for the Storage Access API
https://bugs.webkit.org/show_bug.cgi?id=195866
<rdar://problem/45150009>

Reviewed by Chris Dumez.

Source/WebCore:

* en.lproj/Localizable.strings: Update with new strings used by the
Storage Access API dialog.

Source/WebKit:

This patch revises the UIDelegate implementation with a default permission dialog
for the Storage Access API. This allows us to use and test the API in MiniBrowser,
rather than requiring a full-fledged web browser to drive testing.

* UIProcess/Cocoa/UIDelegate.h:
* UIProcess/Cocoa/UIDelegate.mm:
(WebKit::UIDelegate::UIClient::presentStorageAccessConfirmDialog): Added.
(WebKit::UIDelegate::UIClient::requestStorageAccessConfirm): Modify to call new default
implementation if the WKWebVIew client doesn't implement the necessary SPI.
* UIProcess/Cocoa/WKStorageAccessAlert.h: Added.
* UIProcess/Cocoa/WKStorageAccessAlert.mm: Added.
(WebKit::presentStorageAccessAlert):
* WebKit.xcodeproj/project.pbxproj:

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

4 months agoVersioning.
bshafiei@apple.com [Tue, 19 Mar 2019 22:10:26 +0000 (22:10 +0000)]
Versioning.

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

4 months ago[GStreamer][WebRTC] Create sps/pps for all frames to please libwebrtc
commit-queue@webkit.org [Tue, 19 Mar 2019 21:39:05 +0000 (21:39 +0000)]
[GStreamer][WebRTC] Create sps/pps for all frames to please libwebrtc
https://bugs.webkit.org/show_bug.cgi?id=195677

Patch by Thibault Saunier <tsaunier@igalia.com> on 2019-03-19
Reviewed by Xabier Rodriguez-Calvar.

* platform/mediastream/libwebrtc/GStreamerVideoEncoder.cpp:
(gst_webrtc_video_encoder_set_format):
(register_known_encoder):
(setup_x264enc):
(setup_openh264enc):
(setup_omxh264enc):
(set_bitrate_bit_per_sec):
(gst_webrtc_video_encoder_class_init):

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

4 months agoREGRESSION (r239904): Update dark mode defines in a few places that got missed.
timothy@apple.com [Tue, 19 Mar 2019 20:56:31 +0000 (20:56 +0000)]
REGRESSION (r239904): Update dark mode defines in a few places that got missed.
https://bugs.webkit.org/show_bug.cgi?id=195958

Reviewed by Megan Gardner.

Source/WebCore:

* DerivedSources.make: Support HAVE_OS_DARK_MODE_SUPPORT in html.css.
* css/html.css: Update dark mode defines.
* page/FrameView.cpp:
(WebCore::FrameView::updateBackgroundRecursively): Ditto.

LayoutTests:

* inspector/css/shadow-scoped-style-expected.txt: Rebaseline.
* platform/mac/printing/width-overflow-expected.txt: Rebaseline.

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

4 months agoREGRESSION (r242369): Only use picker-supported UTIs when creating image picker
conrad_shultz@apple.com [Tue, 19 Mar 2019 20:35:14 +0000 (20:35 +0000)]
REGRESSION (r242369): Only use picker-supported UTIs when creating image picker
https://bugs.webkit.org/show_bug.cgi?id=195955

Reviewed by Chris Dumez and Wenson Hsieh.

r242369 started passing UTIs to -[UIImagePickerController setMediaTypes:] that correspond to types accepted by the
file input element. However, UIImagePickerController expects a specific subset of UTIs. In the worst case, if no
expected types are passed, this can cause a crash.

* UIProcess/ios/forms/WKFileUploadPanel.mm:
(UTIsForMIMETypes):
Return a set rather than an array.
(-[WKFileUploadPanel _mediaTypesForPickerSourceType:]):
Rather than hardcode specific UTIs, ask UIImagePickerController for its available types. If an accepted type
is in the list of available types, use it. Otherwise, if an accepted type conforms to an available type,
use the available type. This is an O(n^2) process, but there typically are only a handful of types, so
this seems acceptable.
(-[WKFileUploadPanel _showDocumentPickerMenu]):
Convert the set from UTIsForMIMETypes() to an array.

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

4 months agoREGRESSION(r241586:r241590): [GTK] Accessibility tests in need of rebase
jdiggs@igalia.com [Tue, 19 Mar 2019 20:27:51 +0000 (20:27 +0000)]
REGRESSION(r241586:r241590): [GTK] Accessibility tests in need of rebase
https://bugs.webkit.org/show_bug.cgi?id=195129

Reviewed by Žan Doberšek.

* accessibility/gtk/object-attributes-expected.txt:
* accessibility/gtk/xml-roles-exposed-expected.txt:
* platform/gtk/TestExpectations:
* platform/gtk/accessibility/image-link-expected.txt:
* platform/gtk/accessibility/image-map2-expected.txt:
* platform/gtk/accessibility/lists-expected.txt:
* platform/gtk/accessibility/math-multiscript-attributes-expected.txt:
* platform/gtk/accessibility/roles-exposed-expected.txt:
* platform/gtk/accessibility/table-attributes-expected.txt:
* platform/gtk/accessibility/table-cell-spans-expected.txt:
* platform/gtk/accessibility/table-cells-expected.txt:
* platform/gtk/accessibility/table-one-cell-expected.txt:
* platform/gtk/accessibility/table-sections-expected.txt:
* platform/gtk/accessibility/table-with-rules-expected.txt:
* platform/gtk/accessibility/transformed-element-expected.txt:

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

4 months agoWeb Inspector: CPU Usage Timeline - the right edge of each column should align with...
drousso@apple.com [Tue, 19 Mar 2019 20:13:03 +0000 (20:13 +0000)]
Web Inspector: CPU Usage Timeline - the right edge of each column should align with a CPU measurement
https://bugs.webkit.org/show_bug.cgi?id=195789
<rdar://problem/48915271>

Reviewed by Joseph Pecoraro.

Right now, each column is rendered such that the middle of the column is aligned with the
time of the CPU measurement. This could potentially be misleading, as the width/position of
the bar implies that there was a period of time after the actual time of the CPU measurement
that should be "attributed" to that same CPU measurement.

   1      2      3
       _______
       [  *  ]
       [  *  ]_______
       [  *  ][  *  ]
_______[  *  ][  *  ]
[  *  ][  *  ][  *  ]
[__*__][__*__][__*__]
 A   B  C   D  E   F

In this example, one might "attribute" any work done at time B to record 1, when in reality,
it should be "attributed" to record 2, since the CPU measurement had already been taken by
the time B was captured, meaning that the work for B hadn't yet been done and could
therefore not have affected the CPU measurement for record 1.

We should be rendering the columns such that the CPU measurement aligns with the trailing
edge of the column, so that all of the work that could be "attributed" to a given CPU
measurement comes before it.

  1      2      3
    _______       ___
    [    *]       [
    [    *]_______[
    [    *][    *][
____[    *][    *][
  *][    *][    *][
__*][____*][____*][__
 A   B  C   D  E   F

        NOTE: this "rendering" isn't exactly accurate, as the `*` should overlap the `]`.

Legend:
 - `[     ]` represents a column for a CPU measurement
 - `*` represents the time when the measurement actually takes place

* UserInterface/Views/CPUTimelineOverviewGraph.js:
(WI.CPUTimelineOverviewGraph.prototype.layout):
(WI.CPUTimelineOverviewGraph.prototype._handleChartClick):
* UserInterface/Views/TimelineOverview.js:
(WI.TimelineOverview.prototype._recordSelected):

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

4 months agoUnreviewed, fix -Wformat warning
mcatanzaro@igalia.com [Tue, 19 Mar 2019 20:07:51 +0000 (20:07 +0000)]
Unreviewed, fix -Wformat warning
https://bugs.webkit.org/show_bug.cgi?id=195895
<rdar://problem/48517629>

* bmalloc/Scavenger.cpp:
(bmalloc::Scavenger::threadRunLoop):

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

4 months agomedia/track/track-in-band-style.html is flaky
cdumez@apple.com [Tue, 19 Mar 2019 20:05:33 +0000 (20:05 +0000)]
media/track/track-in-band-style.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=195922

Reviewed by Eric Carlson.

Source/WebCore:

* platform/graphics/avfoundation/InbandTextTrackPrivateAVF.cpp:
(WebCore::InbandTextTrackPrivateAVF::processCueAttributes):
Small optimization: some of the if checks were missing their "continue;"
statement. This would cause us to keep checking following keys even though
we already got a match.

LayoutTests:

* media/track/track-in-band-style-expected.txt:
* media/track/track-in-band-style.html:
- Check element.style instead of getComputedStyle(element) to get the
  CSS colors as this seems more reliable.
- For the foreground text color, check cueNode.style.color instead of
  cueDisplayElement given that the implementation sets the CSS attribute
  on the cueNode, not the cueDisplayElement.

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

4 months agoBuild cleanly with GCC 9
mcatanzaro@igalia.com [Tue, 19 Mar 2019 20:04:34 +0000 (20:04 +0000)]
Build cleanly with GCC 9
https://bugs.webkit.org/show_bug.cgi?id=195920

Reviewed by Chris Dumez.

WebKit triggers three new GCC 9 warnings:

"""
-Wdeprecated-copy, implied by -Wextra, warns about the C++11 deprecation of implicitly
declared copy constructor and assignment operator if one of them is user-provided.
"""

Solution is to either add a copy constructor or copy assignment operator, if required, or
else remove one if it is redundant.

"""
-Wredundant-move, implied by -Wextra, warns about redundant calls to std::move.
-Wpessimizing-move, implied by -Wall, warns when a call to std::move prevents copy elision.
"""

These account for most of this patch. Solution is to just remove the bad WTFMove().

Additionally, -Wclass-memaccess has been enhanced to catch a few cases that GCC 8 didn't.
These are solved by casting nontrivial types to void* before using memcpy. (Of course, it
would be safer to not use memcpy on nontrivial types, but that's too complex for this
patch. Searching for memcpy used with static_cast<void*> will reveal other cases to fix.)

Source/JavaScriptCore:

* b3/B3ValueRep.h:
* bindings/ScriptValue.cpp:
(Inspector::jsToInspectorValue):
* bytecode/GetterSetterAccessCase.cpp:
(JSC::GetterSetterAccessCase::create):
(JSC::GetterSetterAccessCase::clone const):
* bytecode/InstanceOfAccessCase.cpp:
(JSC::InstanceOfAccessCase::clone const):
* bytecode/IntrinsicGetterAccessCase.cpp:
(JSC::IntrinsicGetterAccessCase::clone const):
* bytecode/ModuleNamespaceAccessCase.cpp:
(JSC::ModuleNamespaceAccessCase::clone const):
* bytecode/ProxyableAccessCase.cpp:
(JSC::ProxyableAccessCase::clone const):
* bytecode/StructureSet.h:
* debugger/Breakpoint.h:
* dfg/DFGRegisteredStructureSet.h:
* inspector/agents/InspectorDebuggerAgent.cpp:
(Inspector::buildDebuggerLocation):
* inspector/scripts/codegen/cpp_generator_templates.py:
* parser/UnlinkedSourceCode.h:
* wasm/WasmAirIRGenerator.cpp:
(JSC::Wasm::parseAndCompileAir):
* wasm/WasmB3IRGenerator.cpp:
(JSC::Wasm::parseAndCompile):
* wasm/WasmNameSectionParser.cpp:
(JSC::Wasm::NameSectionParser::parse):
* wasm/WasmStreamingParser.cpp:
(JSC::Wasm::StreamingParser::consume):

Source/WebCore:

* Modules/encryptedmedia/CDM.cpp:
(WebCore::CDM::getSupportedConfiguration):
* Modules/encryptedmedia/MediaKeys.cpp:
(WebCore::MediaKeys::createSession):
* Modules/entriesapi/DOMFileSystem.cpp:
(WebCore::listDirectoryWithMetadata):
(WebCore::toFileSystemEntries):
* Modules/fetch/FetchBody.cpp:
(WebCore::FetchBody::fromFormData):
(WebCore::FetchBody::bodyAsFormData const):
(WebCore::FetchBody::take):
* Modules/fetch/FetchRequest.cpp:
(WebCore::FetchRequest::create):
(WebCore::FetchRequest::clone):
* Modules/fetch/FetchResponse.cpp:
(WebCore::FetchResponse::create):
(WebCore::FetchResponse::redirect):
(WebCore::FetchResponse::clone):
* Modules/indexeddb/IDBCursor.cpp:
(WebCore::IDBCursor::update):
(WebCore::IDBCursor::deleteFunction):
* Modules/indexeddb/IDBDatabase.cpp:
(WebCore::IDBDatabase::transaction):
* Modules/indexeddb/IDBDatabaseIdentifier.h:
(WebCore::IDBDatabaseIdentifier::decode):
* Modules/indexeddb/IDBKeyData.h:
(WebCore::IDBKeyData::decode):
* Modules/indexeddb/IDBObjectStore.cpp:
(WebCore::IDBObjectStore::createIndex):
(WebCore::IDBObjectStore::index):
* Modules/indexeddb/IDBValue.h:
(WebCore::IDBValue::decode):
* Modules/indexeddb/shared/IDBError.cpp:
(WebCore::IDBError::operator=): Deleted.
* Modules/indexeddb/shared/IDBError.h:
* Modules/indexeddb/shared/IDBResultData.h:
(WebCore::IDBResultData::decode):
* Modules/mediarecorder/MediaRecorder.cpp:
(WebCore::MediaRecorder::create):
* Modules/mediasource/MediaSource.cpp:
(WebCore::MediaSource::addSourceBuffer):
* Modules/mediastream/RTCPeerConnection.cpp:
(WebCore::iceServersFromConfiguration):
(WebCore::RTCPeerConnection::certificatesFromConfiguration):
(WebCore::certificateTypeFromAlgorithmIdentifier):
* Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
(WebCore::LibWebRTCMediaEndpoint::getStats):
* Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:
(WebCore::LibWebRTCPeerConnectionBackend::addTrack):
(WebCore::LibWebRTCPeerConnectionBackend::addUnifiedPlanTransceiver):
* Modules/webaudio/AudioBuffer.cpp:
(WebCore::AudioBuffer::create):
* Modules/webaudio/AudioContext.cpp:
(WebCore::AudioContext::createMediaElementSource):
(WebCore::AudioContext::createMediaStreamSource):
(WebCore::AudioContext::createScriptProcessor):
* Modules/webaudio/OfflineAudioContext.cpp:
(WebCore::OfflineAudioContext::create):
* Modules/webdatabase/DatabaseManager.cpp:
(WebCore::DatabaseManager::tryToOpenDatabaseBackend):
* Modules/webdatabase/DatabaseTracker.cpp:
(WebCore::DatabaseTracker::canEstablishDatabase):
(WebCore::DatabaseTracker::retryCanEstablishDatabase):
* Modules/webdatabase/SQLResultSetRowList.cpp:
(WebCore::SQLResultSetRowList::item const):
* Modules/websockets/WebSocket.cpp:
(WebCore::WebSocket::create):
* accessibility/AXObjectCache.cpp:
(WebCore::AXObjectCache::rangeForNodeContents):
(WebCore::AXObjectCache::rangeForUnorderedCharacterOffsets):
* animation/KeyframeEffect.cpp:
(WebCore::KeyframeEffect::create):
(WebCore::KeyframeEffect::backingAnimationForCompositedRenderer const):
* bindings/js/JSCustomElementInterface.cpp:
(WebCore::JSCustomElementInterface::constructElementWithFallback):
* bindings/js/JSDOMConvertVariadic.h:
(WebCore::VariadicConverter::convert):
(WebCore::convertVariadicArguments):
* bindings/js/SerializedScriptValue.cpp:
(WebCore::CloneDeserializer::readDOMPointInit):
(WebCore::transferArrayBuffers):
* bindings/scripts/CodeGeneratorJS.pm:
(GenerateCallbackImplementationContent):
* bindings/scripts/test/JS/JSTestCallbackFunction.cpp:
(WebCore::JSTestCallbackFunction::handleEvent):
* bindings/scripts/test/JS/JSTestCallbackFunctionRethrow.cpp:
(WebCore::JSTestCallbackFunctionRethrow::handleEvent):
* bindings/scripts/test/JS/JSTestCallbackInterface.cpp:
(WebCore::JSTestCallbackInterface::callbackWithAReturnValue):
(WebCore::JSTestCallbackInterface::callbackThatRethrowsExceptions):
(WebCore::JSTestCallbackInterface::callbackThatSkipsInvokeCheck):
(WebCore::JSTestCallbackInterface::callbackWithThisObject):
* contentextensions/ContentExtensionParser.cpp:
(WebCore::ContentExtensions::getStringList):
(WebCore::ContentExtensions::loadTrigger):
(WebCore::ContentExtensions::loadEncodedRules):
(WebCore::ContentExtensions::parseRuleList):
* crypto/SubtleCrypto.cpp:
(WebCore::normalizeCryptoAlgorithmParameters):
* crypto/gcrypt/CryptoAlgorithmHMACGCrypt.cpp:
(WebCore::calculateSignature):
* crypto/keys/CryptoKeyEC.cpp:
(WebCore::CryptoKeyEC::exportJwk const):
* css/CSSComputedStyleDeclaration.cpp:
(WebCore::computedTransform):
(WebCore::ComputedStyleExtractor::valueForShadow):
(WebCore::ComputedStyleExtractor::valueForFilter):
(WebCore::specifiedValueForGridTrackSize):
(WebCore::valueForGridTrackList):
(WebCore::valueForGridPosition):
(WebCore::willChangePropertyValue):
(WebCore::fontVariantLigaturesPropertyValue):
(WebCore::fontVariantNumericPropertyValue):
(WebCore::fontVariantEastAsianPropertyValue):
(WebCore::touchActionFlagsToCSSValue):
(WebCore::renderTextDecorationFlagsToCSSValue):
(WebCore::renderEmphasisPositionFlagsToCSSValue):
(WebCore::speakAsToCSSValue):
(WebCore::hangingPunctuationToCSSValue):
(WebCore::fillRepeatToCSSValue):
(WebCore::fillSizeToCSSValue):
(WebCore::counterToCSSValue):
(WebCore::fontVariantFromStyle):
(WebCore::fontSynthesisFromStyle):
(WebCore::shapePropertyValue):
(WebCore::paintOrder):
(WebCore::ComputedStyleExtractor::valueForPropertyinStyle):
(WebCore::ComputedStyleExtractor::getCSSPropertyValuesFor2SidesShorthand):
(WebCore::ComputedStyleExtractor::getCSSPropertyValuesFor4SidesShorthand):
* css/CSSFontFaceSet.cpp:
(WebCore::CSSFontFaceSet::matchingFacesExcludingPreinstalledFonts):
* css/CSSGradientValue.cpp:
(WebCore::CSSGradientValue::image):
* css/CSSStyleSheet.cpp:
(WebCore::CSSStyleSheet::rules):
* css/DOMMatrixReadOnly.cpp:
(WebCore::DOMMatrixReadOnly::parseStringIntoAbstractMatrix):
* css/FontFace.cpp:
(WebCore::FontFace::create):
* css/FontVariantBuilder.cpp:
(WebCore::computeFontVariant):
* css/PropertySetCSSStyleDeclaration.cpp:
(WebCore::PropertySetCSSStyleDeclaration::removeProperty):
* css/SVGCSSComputedStyleDeclaration.cpp:
(WebCore::strokeDashArrayToCSSValueList):
(WebCore::ComputedStyleExtractor::adjustSVGPaintForCurrentColor const):
* css/StyleBuilderConverter.h:
(WebCore::StyleBuilderConverter::convertReflection):
* css/WebKitCSSMatrix.cpp:
(WebCore::WebKitCSSMatrix::create):
(WebCore::WebKitCSSMatrix::multiply const):
* css/parser/CSSPropertyParser.cpp:
(WebCore::consumeFontVariationSettings):
(WebCore::consumeBasicShapePath):
(WebCore::consumeImplicitGridAutoFlow):
* cssjit/StackAllocator.h:
* dom/DOMImplementation.cpp:
(WebCore::DOMImplementation::createDocument):
* dom/Document.cpp:
(WebCore::Document::cloneNodeInternal):
* dom/DocumentFragment.cpp:
(WebCore::DocumentFragment::cloneNodeInternal):
* dom/Element.cpp:
(WebCore::Element::setAttributeNode):
(WebCore::Element::setAttributeNodeNS):
(WebCore::Element::removeAttributeNode):
(WebCore::Element::parseAttributeName):
(WebCore::Element::animate):
* dom/MessagePort.cpp:
(WebCore::MessagePort::disentanglePorts):
* dom/NodeIterator.cpp:
(WebCore::NodeIterator::nextNode):
(WebCore::NodeIterator::previousNode):
* dom/Range.cpp:
(WebCore::Range::processContents):
(WebCore::processContentsBetweenOffsets):
(WebCore::processAncestorsAndTheirSiblings):
* dom/RangeBoundaryPoint.h:
* dom/ScriptDisallowedScope.h:
(WebCore::ScriptDisallowedScope::operator=):
* dom/Text.cpp:
(WebCore::Text::splitText):
* dom/TextDecoder.cpp:
(WebCore::TextDecoder::create):
(WebCore::TextDecoder::decode):
* editing/CompositeEditCommand.cpp:
(WebCore::CompositeEditCommand::insertBlockPlaceholder):
(WebCore::CompositeEditCommand::moveParagraphContentsToNewBlockIfNecessary):
* editing/Editing.cpp:
(WebCore::createTabSpanElement):
* editing/EditingStyle.cpp:
(WebCore::EditingStyle::styleAtSelectionStart):
* editing/TextIterator.cpp:
(WebCore::TextIterator::rangeFromLocationAndLength):
* editing/VisibleSelection.cpp:
(WebCore::makeSearchRange):
* editing/markup.cpp:
(WebCore::styleFromMatchedRulesAndInlineDecl):
(WebCore::createFragmentForInnerOuterHTML):
(WebCore::createContextualFragment):
* html/FormController.cpp:
(WebCore::deserializeFormControlState):
* html/HTMLCanvasElement.cpp:
(WebCore::HTMLCanvasElement::captureStream):
* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::mediaPlayerCreateResourceLoader):
* html/HTMLOptionElement.cpp:
(WebCore::HTMLOptionElement::createForJSConstructor):
* html/HTMLPlugInImageElement.cpp:
(WebCore::HTMLPlugInImageElement::createElementRenderer):
* html/HTMLTableElement.cpp:
(WebCore::HTMLTableElement::createSharedCellStyle):
* html/HTMLTableRowElement.cpp:
(WebCore::HTMLTableRowElement::insertCell):
* html/ImageData.cpp:
(WebCore::ImageData::create):
* html/OffscreenCanvas.cpp:
(WebCore::OffscreenCanvas::transferToImageBitmap):
* html/canvas/CanvasRenderingContext2DBase.cpp:
(WebCore::CanvasRenderingContext2DBase::createLinearGradient):
(WebCore::CanvasRenderingContext2DBase::createRadialGradient):
* html/canvas/OESVertexArrayObject.cpp:
(WebCore::OESVertexArrayObject::createVertexArrayOES):
* html/canvas/WebGLRenderingContextBase.cpp:
(WebCore::WebGLRenderingContextBase::createBuffer):
(WebCore::WebGLRenderingContextBase::createFramebuffer):
(WebCore::WebGLRenderingContextBase::createTexture):
(WebCore::WebGLRenderingContextBase::createProgram):
(WebCore::WebGLRenderingContextBase::createRenderbuffer):
(WebCore::WebGLRenderingContextBase::createShader):
(WebCore::WebGLRenderingContextBase::getContextAttributes):
(WebCore::WebGLRenderingContextBase::getUniform):
* html/shadow/TextControlInnerElements.cpp:
(WebCore::TextControlInnerContainer::resolveCustomStyle):
(WebCore::TextControlPlaceholderElement::resolveCustomStyle):
* html/track/BufferedLineReader.cpp:
(WebCore::BufferedLineReader::nextLine):
* html/track/VTTCue.cpp:
(WebCore::VTTCue::getCueAsHTML):
(WebCore::VTTCue::createCueRenderingTree):
* html/track/WebVTTElement.cpp:
(WebCore::WebVTTElement::cloneElementWithoutAttributesAndChildren):
* inspector/InspectorStyleSheet.cpp:
(WebCore::asCSSRuleList):
(WebCore::InspectorStyle::buildObjectForStyle const):
(WebCore::InspectorStyleSheet::buildObjectForStyleSheet):
(WebCore::InspectorStyleSheet::buildObjectForRule):
* inspector/agents/InspectorCSSAgent.cpp:
(WebCore::InspectorCSSAgent::buildArrayForMatchedRuleList):
* inspector/agents/InspectorDOMAgent.cpp:
(WebCore::InspectorDOMAgent::buildArrayForPseudoElements):
(WebCore::InspectorDOMAgent::buildObjectForAccessibilityProperties):
* inspector/agents/InspectorNetworkAgent.cpp:
(WebCore::InspectorNetworkAgent::buildObjectForResourceResponse):
* loader/FetchOptions.h:
(WebCore::FetchOptions::decode):
* loader/MediaResourceLoader.cpp:
(WebCore::MediaResourceLoader::requestResource):
* loader/appcache/ApplicationCacheStorage.cpp:
(WebCore::ApplicationCacheStorage::loadCache):
(WebCore::ApplicationCacheStorage::manifestURLs):
* loader/archive/mhtml/MHTMLParser.cpp:
(WebCore::MHTMLParser::parseArchiveWithHeader):
* loader/cache/CachedResourceLoader.cpp:
(WebCore::CachedResourceLoader::requestResource):
* page/DOMWindow.cpp:
(WebCore::DOMWindow::getMatchedCSSRules const):
* page/DragController.cpp:
(WebCore::documentFragmentFromDragData):
* page/EventSource.cpp:
(WebCore::EventSource::create):
* page/PerformanceUserTiming.cpp:
(WebCore::UserTiming::mark):
(WebCore::UserTiming::measure):
* page/SecurityOrigin.h:
(WebCore::SecurityOrigin::decode):
* page/scrolling/ScrollingConstraints.h:
(WebCore::FixedPositionViewportConstraints::FixedPositionViewportConstraints):
(WebCore::LayoutConstraints::LayoutConstraints): Deleted.
* platform/Length.h:
(WebCore::Length::Length):
* platform/animation/TimingFunction.cpp:
(WebCore::TimingFunction::createFromCSSText):
* platform/encryptedmedia/clearkey/CDMClearKey.cpp:
(WebCore::parseLicenseFormat):
* platform/graphics/FloatPoint3D.h:
* platform/graphics/Font.cpp:
(WebCore::createAndFillGlyphPage):
* platform/graphics/GLContext.cpp:
(WebCore::GLContext::createContextForWindow):
(WebCore::GLContext::createSharingContext):
* platform/graphics/GraphicsContext.cpp:
* platform/graphics/HEVCUtilities.cpp:
(WebCore::parseHEVCCodecParameters):
* platform/graphics/gtk/ImageGtk.cpp:
(WebCore::loadImageFromGResource):
(WebCore::loadMissingImageIconFromTheme):
* platform/graphics/wayland/PlatformDisplayWayland.cpp:
(WebCore::PlatformDisplayWayland::create):
* platform/mediastream/MediaConstraints.h:
(WebCore::MediaTrackConstraintSetMap::decode):
* platform/mediastream/MediaStreamRequest.h:
(WebCore::MediaStreamRequest::decode):
* platform/mediastream/gstreamer/GStreamerVideoFrameLibWebRTC.cpp:
(WebCore::GStreamerSampleFromLibWebRTCVideoFrame):
* platform/mediastream/gstreamer/RealtimeIncomingAudioSourceLibWebRTC.cpp:
(WebCore::RealtimeIncomingAudioSource::create):
* platform/mediastream/gstreamer/RealtimeIncomingVideoSourceLibWebRTC.cpp:
(WebCore::RealtimeIncomingVideoSource::create):
* platform/mock/MockRealtimeMediaSourceCenter.cpp:
(WebCore::MockRealtimeMediaSourceCenter::captureDeviceWithPersistentID):
* platform/mock/mediasource/MockSourceBufferPrivate.cpp:
(WebCore::MockMediaSample::createNonDisplayingCopy const):
* platform/network/BlobRegistryImpl.cpp:
(WebCore::BlobRegistryImpl::createResourceHandle):
* platform/network/CookieRequestHeaderFieldProxy.h:
(WebCore::CookieRequestHeaderFieldProxy::decode):
* platform/network/FormData.h:
(WebCore::FormData::decode):
* platform/network/MIMEHeader.cpp:
(WebCore::MIMEHeader::parseHeader):
* platform/network/ResourceHandle.cpp:
(WebCore::ResourceHandle::create):
* platform/network/soup/DNSResolveQueueSoup.cpp:
(WebCore::DNSResolveQueueSoup::takeCompletionAndCancelHandlers):
* rendering/RenderElement.cpp:
(WebCore::RenderElement::createFor):
* rendering/shapes/Shape.cpp:
(WebCore::Shape::createRasterShape):
(WebCore::Shape::createBoxShape):
* rendering/style/BasicShapes.cpp:
(WebCore::BasicShapeCircle::blend const):
(WebCore::BasicShapeEllipse::blend const):
(WebCore::BasicShapePolygon::blend const):
(WebCore::BasicShapePath::blend const):
(WebCore::BasicShapeInset::blend const):
* rendering/style/BasicShapes.h:
(WebCore::BasicShapeRadius::BasicShapeRadius):
* rendering/style/ContentData.cpp:
(WebCore::ImageContentData::createContentRenderer const):
(WebCore::TextContentData::createContentRenderer const):
(WebCore::QuoteContentData::createContentRenderer const):
* rendering/style/ContentData.h:
* rendering/svg/RenderSVGInline.cpp:
(WebCore::RenderSVGInline::createInlineFlowBox):
* rendering/svg/RenderSVGInlineText.cpp:
(WebCore::RenderSVGInlineText::createTextBox):
* rendering/svg/RenderSVGText.cpp:
(WebCore::RenderSVGText::createRootInlineBox):
* svg/SVGFEBlendElement.cpp:
(WebCore::SVGFEBlendElement::build):
* svg/SVGFEColorMatrixElement.cpp:
(WebCore::SVGFEColorMatrixElement::build):
* svg/SVGFEComponentTransferElement.cpp:
(WebCore::SVGFEComponentTransferElement::build):
* svg/SVGFECompositeElement.cpp:
(WebCore::SVGFECompositeElement::build):
* svg/SVGFEConvolveMatrixElement.cpp:
(WebCore::SVGFEConvolveMatrixElement::build):
* svg/SVGFEDiffuseLightingElement.cpp:
(WebCore::SVGFEDiffuseLightingElement::build):
* svg/SVGFEDisplacementMapElement.cpp:
(WebCore::SVGFEDisplacementMapElement::build):
* svg/SVGFEDropShadowElement.cpp:
(WebCore::SVGFEDropShadowElement::build):
* svg/SVGFEGaussianBlurElement.cpp:
(WebCore::SVGFEGaussianBlurElement::build):
* svg/SVGFEMergeElement.cpp:
(WebCore::SVGFEMergeElement::build):
* svg/SVGFEMorphologyElement.cpp:
(WebCore::SVGFEMorphologyElement::build):
* svg/SVGFEOffsetElement.cpp:
(WebCore::SVGFEOffsetElement::build):
* svg/SVGFESpecularLightingElement.cpp:
(WebCore::SVGFESpecularLightingElement::build):
* svg/SVGFETileElement.cpp:
(WebCore::SVGFETileElement::build):
* svg/SVGTransformList.h:
* svg/properties/SVGList.h:
(WebCore::SVGList::initialize):
(WebCore::SVGList::insertItemBefore):
(WebCore::SVGList::replaceItem):
(WebCore::SVGList::removeItem):
(WebCore::SVGList::appendItem):
* svg/properties/SVGListProperty.h:
(WebCore::SVGListProperty::initializeValuesAndWrappers):
(WebCore::SVGListProperty::insertItemBeforeValuesAndWrappers):
(WebCore::SVGListProperty::replaceItemValuesAndWrappers):
(WebCore::SVGListProperty::removeItemValues):
(WebCore::SVGListProperty::appendItemValuesAndWrappers):
* svg/properties/SVGPrimitiveList.h:
* testing/Internals.cpp:
(WebCore::Internals::elementRenderTreeAsText):
(WebCore::parseFindOptions):
* workers/AbstractWorker.cpp:
(WebCore::AbstractWorker::resolveURL):
* workers/Worker.cpp:
(WebCore::Worker::create):
* workers/service/ServiceWorkerJobData.h:
(WebCore::ServiceWorkerJobData::decode):
* xml/DOMParser.cpp:
(WebCore::DOMParser::parseFromString):
* xml/XPathExpression.cpp:
(WebCore::XPathExpression::evaluate):

Source/WebKit:

* NetworkProcess/cache/CacheStorageEngineCache.cpp:
(WebKit::CacheStorage::Cache::decode):
* Platform/IPC/ArgumentCoders.h:
* Shared/CallbackID.h:
(WebKit::CallbackID::operator=):
* Shared/OptionalCallbackID.h:
(WebKit::OptionalCallbackID::operator=):
* Shared/Plugins/NPIdentifierData.cpp:
(WebKit::NPIdentifierData::decode):
* Shared/Plugins/NPVariantData.cpp:
(WebKit::NPVariantData::decode):
* Shared/Plugins/Netscape/NetscapePluginModule.cpp:
(WebKit::NetscapePluginModule::getOrCreate):
* Shared/RTCNetwork.cpp:
(WebKit::RTCNetwork::IPAddress::decode):
* Shared/SessionState.cpp:
(WebKit::HTTPBody::Element::decode):
(WebKit::FrameState::decode):
(WebKit::BackForwardListItemState::decode):
* Shared/WebCompiledContentRuleListData.cpp:
(WebKit::WebCompiledContentRuleListData::decode):
* Shared/WebCoreArgumentCoders.cpp:
(IPC::ArgumentCoder<FloatPoint>::decode):
(IPC::ArgumentCoder<FloatRect>::decode):
(IPC::ArgumentCoder<FloatQuad>::decode):
(IPC::ArgumentCoder<ViewportArguments>::decode):
(IPC::ArgumentCoder<IntPoint>::decode):
(IPC::ArgumentCoder<IntRect>::decode):
(IPC::ArgumentCoder<IntSize>::decode):
(IPC::ArgumentCoder<MimeClassInfo>::decode):
(IPC::ArgumentCoder<PluginInfo>::decode):
(IPC::ArgumentCoder<SelectionRect>::decode):
(IPC::ArgumentCoder<CompositionUnderline>::decode):
(IPC::ArgumentCoder<BlobPart>::decode):
(IPC::ArgumentCoder<TextIndicatorData>::decode):
(IPC::ArgumentCoder<ResourceLoadStatistics>::decode):
(IPC::ArgumentCoder<ScrollOffsetRange<float>>::decode):
* Shared/WebPageCreationParameters.cpp:
(WebKit::WebPageCreationParameters::decode):
* Shared/WebPlatformTouchPoint.cpp:
(WebKit::WebPlatformTouchPoint::decode):
* Shared/WebsiteData/WebsiteData.cpp:
(WebKit::WebsiteData::Entry::decode):
* Shared/WebsiteDataStoreParameters.cpp:
(WebKit::WebsiteDataStoreParameters::decode):
* UIProcess/API/APIContentRuleListStore.cpp:
(API::decodeContentRuleListMetaData):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::launchProcessForReload):
(WebKit::WebPageProxy::launchProcessWithItem):
(WebKit::WebPageProxy::loadRequest):
(WebKit::WebPageProxy::loadFile):
(WebKit::WebPageProxy::loadData):
(WebKit::WebPageProxy::reload):
* UIProcess/WebProcessCache.cpp:
(WebKit::WebProcessCache::takeProcess):
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::findReusableSuspendedPageProcess):
* WebProcess/InjectedBundle/DOM/InjectedBundleCSSStyleDeclarationHandle.cpp:
(WebKit::InjectedBundleCSSStyleDeclarationHandle::getOrCreate):
* WebProcess/InjectedBundle/DOM/InjectedBundleRangeHandle.cpp:
(WebKit::InjectedBundleRangeHandle::getOrCreate):
* WebProcess/InjectedBundle/InjectedBundle.cpp:
(WebKit::InjectedBundle::create):
* WebProcess/Network/WebLoaderStrategy.cpp:
(WebKit::WebLoaderStrategy::tryLoadingSynchronouslyUsingURLSchemeHandler):
* WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp:
(WebKit::CompositingCoordinator::createGraphicsLayer):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::pdfSnapshotAtSize):
(WebKit::WebPage::createDocumentLoader):
* WebProcess/WebStorage/StorageNamespaceImpl.cpp:
(WebKit::StorageNamespaceImpl::copy):

Source/WTF:

* wtf/CheckedArithmetic.h:
(WTF::Checked::Checked):
* wtf/MetaAllocator.cpp:
(WTF::MetaAllocator::allocate):
* wtf/URLParser.cpp:
(WTF::CodePointIterator::operator!= const):
(WTF::CodePointIterator::operator=): Deleted.
* wtf/text/StringView.h:
(WTF::StringView::CodePoints::Iterator::operator=): Deleted.

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

4 months agoStyle fix: remove C style cast in Instruction.h
sbarati@apple.com [Tue, 19 Mar 2019 19:45:42 +0000 (19:45 +0000)]
Style fix: remove C style cast in Instruction.h
https://bugs.webkit.org/show_bug.cgi?id=195917

Reviewed by Filip Pizlo.

* bytecode/Instruction.h:
(JSC::Instruction::wide const):

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

4 months agoWeb Inspector: Provide $event in the console when paused on an event listener
drousso@apple.com [Tue, 19 Mar 2019 19:31:31 +0000 (19:31 +0000)]
Web Inspector: Provide $event in the console when paused on an event listener
https://bugs.webkit.org/show_bug.cgi?id=188672

Reviewed by Timothy Hatcher.

Source/JavaScriptCore:

* inspector/InjectedScript.h:
* inspector/InjectedScript.cpp:
(Inspector::InjectedScript::setEventValue): Added.
(Inspector::InjectedScript::clearEventValue): Added.

* inspector/InjectedScriptManager.h:
* inspector/InjectedScriptManager.cpp:
(Inspector::InjectedScriptManager::clearEventValue): Added.

* inspector/InjectedScriptSource.js:
(WI.InjectedScript.prototype.setEventValue): Added.
(WI.InjectedScript.prototype.clearEventValue): Added.
(BasicCommandLineAPI):

Source/WebCore:

Implement similiar methods/logic as to the way that `$exception` is set.

* inspector/CommandLineAPIModuleSource.js:
(CommandLineAPI):

* inspector/InspectorInstrumentation.h:
(WebCore::InspectorInstrumentation::willHandleEvent):
* inspector/InspectorInstrumentation.cpp:
(WebCore::InspectorInstrumentation::willHandleEventImpl):
(WebCore::InspectorInstrumentation::didHandleEventImpl):

* inspector/agents/InspectorDOMDebuggerAgent.cpp:
* inspector/agents/InspectorDOMDebuggerAgent.h:
(WebCore::InspectorDOMDebuggerAgent::InspectorDOMDebuggerAgent):
(WebCore::InspectorDOMDebuggerAgent::willHandleEvent):
(WebCore::InspectorDOMDebuggerAgent::didHandleEvent): Added.

Source/WebInspectorUI:

* UserInterface/Controllers/JavaScriptRuntimeCompletionProvider.js:
(WI.JavaScriptRuntimeCompletionProvider.prototype.completionControllerCompletionsNeeded.receivedPropertyNames):

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

4 months agoWeb Inspector: ScriptProfiler: lazily create the agent
drousso@apple.com [Tue, 19 Mar 2019 19:25:52 +0000 (19:25 +0000)]
Web Inspector: ScriptProfiler: lazily create the agent
https://bugs.webkit.org/show_bug.cgi?id=195591
<rdar://problem/48791756>

Reviewed by Joseph Pecoraro.

Source/JavaScriptCore:

* inspector/JSGlobalObjectConsoleClient.h:
(Inspector::JSGlobalObjectConsoleClient::setInspectorScriptProfilerAgent): Added.
* inspector/JSGlobalObjectConsoleClient.cpp:
(Inspector::JSGlobalObjectConsoleClient::JSGlobalObjectConsoleClient):
(Inspector::JSGlobalObjectConsoleClient::startConsoleProfile):
(Inspector::JSGlobalObjectConsoleClient::stopConsoleProfile):

* inspector/JSGlobalObjectInspectorController.cpp:
(Inspector::JSGlobalObjectInspectorController::JSGlobalObjectInspectorController):
(Inspector::JSGlobalObjectInspectorController::createLazyAgents):

Source/WebCore:

No change in functionality.

* inspector/InspectorController.cpp:
(WebCore::InspectorController::InspectorController):
(WebCore::InspectorController::createLazyAgents):

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

4 months agoSpew: Unhandled web process message 'VisitedLinkTableController:VisitedLinkStateChanged'
cdumez@apple.com [Tue, 19 Mar 2019 19:19:21 +0000 (19:19 +0000)]
Spew: Unhandled web process message 'VisitedLinkTableController:VisitedLinkStateChanged'
https://bugs.webkit.org/show_bug.cgi?id=194787
<rdar://problem/48175520>

Reviewed by Geoff Garen.

The unhandled 'VisitedLinkTableController:VisitedLinkStateChanged' message logging happens
when IPC is sent to a WebProcess which does not have a VisitedLinkTableController with the
given identifier. VisitedLinkTableController are kept alive by the WebPage in the WebProcess
side so this indicates that there is no WebPage using this VisitedLinkTableController anymore.

In the UIProcess side, our tracking of who is using which VisitedLinkStore was very poor.
WebPageProxy objects would ask their process to register itself with the page's visitedLinkStore
as soon as the WebPage object has been created on the WebProcess side. This part was fine.
However, unregistration from the visitedLinkStores would only happen when either the
visitedLinkStore would get destroyed or when the WebProcess would shutdown. This means that
WebProcess could stay registered with a visitedLinkStore even after the page that was using it
has been closed, which would lead to such logging.

To address the issue, the WebProcessProxy now keeps track for which pages are using which
visitedLinkStore. When a visitedLinkStore is used by a page for the first time, the
WebProcessProxy will register itself with the visitedLinkStore. Similarly, when the last page
using a given visitedLinkStore is closed, the process unregisters itself from the
visitedLinkStore, thus avoiding the bug.

I also simplified a lot the logic for having a page telling the WebProcessProxy it started
using a visitedLinkStore. Previously, it would have to wait until the process is done launching
before notifying the WebProcessProxy. Now, the WebPageProxy merely tells the WebProcessProxy
that it is starting to use a visitedLinkStore as soon as it sent the CreateWebPage IPC to the
WebProcess (no matter if the process is still launching or not). At this point, the
WebProcessProxy registers the page as a user of the visitedLinkStore and takes care of waiting
until it is done launching before registering itself with the visitedLinkStore.

* UIProcess/ProvisionalPageProxy.cpp:
(WebKit::ProvisionalPageProxy::~ProvisionalPageProxy):
(WebKit::ProvisionalPageProxy::initializeWebPage):
(WebKit::ProvisionalPageProxy::processDidFinishLaunching): Deleted.
(WebKit::ProvisionalPageProxy::finishInitializingWebPageAfterProcessLaunch): Deleted.
* UIProcess/ProvisionalPageProxy.h:
* UIProcess/VisitedLinkStore.cpp:
(WebKit::VisitedLinkStore::~VisitedLinkStore):
(WebKit::VisitedLinkStore::addProcess):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::finishAttachingToWebProcess):
(WebKit::WebPageProxy::initializeWebPage):
(WebKit::WebPageProxy::resetStateAfterProcessExited):
(WebKit::WebPageProxy::finishInitializingWebPageAfterProcessLaunch): Deleted.
(WebKit::WebPageProxy::processDidFinishLaunching): Deleted.
* UIProcess/WebPageProxy.h:
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::shutDown):
(WebKit::WebProcessProxy::removeWebPage):
(WebKit::WebProcessProxy::addVisitedLinkStoreUser):
(WebKit::WebProcessProxy::removeVisitedLinkStoreUser):
(WebKit::WebProcessProxy::addWebUserContentControllerProxy):
(WebKit::WebProcessProxy::didFinishLaunching):
(WebKit::WebProcessProxy::addVisitedLinkStore): Deleted.
(WebKit::WebProcessProxy::didDestroyVisitedLinkStore): Deleted.
* UIProcess/WebProcessProxy.h:

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

4 months agoWeb Inspector: DOMStorage: lazily create the agent
drousso@apple.com [Tue, 19 Mar 2019 19:11:07 +0000 (19:11 +0000)]
Web Inspector: DOMStorage: lazily create the agent
https://bugs.webkit.org/show_bug.cgi?id=195588
<rdar://problem/48791878>

Reviewed by Joseph Pecoraro.

No change in functionality.

Make functions used by `CommandLineAPIHost` static so that an `InspectorDOMStorageAgent`
doesn't need to be created to call them.

* inspector/agents/InspectorDOMStorageAgent.h:
* inspector/agents/InspectorDOMStorageAgent.cpp:
(WebCore::InspectorDOMStorageAgent::InspectorDOMStorageAgent):
(WebCore::InspectorDOMStorageAgent::enable):
(WebCore::InspectorDOMStorageAgent::disable):
(WebCore::InspectorDOMStorageAgent::storageId):
(WebCore::InspectorDOMStorageAgent::didDispatchDOMStorageEvent):
(WebCore::InspectorDOMStorageAgent::findStorageArea):
(WebCore::InspectorDOMStorageAgent::~InspectorDOMStorageAgent): Deleted.

* inspector/CommandLineAPIHost.h:
(WebCore::CommandLineAPIHost::init):
* inspector/CommandLineAPIHost.cpp:
(WebCore::CommandLineAPIHost::disconnect):
(WebCore::CommandLineAPIHost::storageId):

* inspector/InspectorController.cpp:
(WebCore::InspectorController::InspectorController):
(WebCore::InspectorController::createLazyAgents):
* inspector/WorkerInspectorController.cpp:
(WebCore::WorkerInspectorController::WorkerInspectorController):

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

4 months agoREGRESSION: Layout Test http/tests/security/cross-origin-indexeddb.html is crashing
youenn@apple.com [Tue, 19 Mar 2019 18:54:58 +0000 (18:54 +0000)]
REGRESSION: Layout Test http/tests/security/cross-origin-indexeddb.html is crashing
https://bugs.webkit.org/show_bug.cgi?id=195779

Reviewed by Chris Dumez.

When requesting space, we might delay execution of the task.
In such a case, a task to close the database might be done before the task continues.
Check that the database is not closing to continue the task.
This should ensure that the cross thread queue is not already killed.

* Modules/indexeddb/server/UniqueIDBDatabase.cpp:
(WebCore::IDBServer::UniqueIDBDatabase::requestSpace):

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

4 months agoREGRESSION (r243094): internal media test fairplay-hls-error.html is failing
cdumez@apple.com [Tue, 19 Mar 2019 18:44:18 +0000 (18:44 +0000)]
REGRESSION (r243094): internal media test fairplay-hls-error.html is failing
https://bugs.webkit.org/show_bug.cgi?id=195954
<rdar://problem/49005981>

Reviewed by Geoffrey Garen.

TestController::resetStateToConsistentValues() tries to send a "reset" message to its
injected bundle. Part of the "reset" message sets the external hosts that we're allowed
to load. If there is no WebProcess yet when WKPagePostMessageToInjectedBundle() is called,
then this message does not get sent and the allowed hosts do not get set, causing this
test failure.

To address the issue, make sure we launch the initial process if necessary when
WebPageProxy::postMessageToInjectedBundle() is called, in order to maintain backward
compatibility.

* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::postMessageToInjectedBundle):

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

4 months agoUnreviewed, fix test failures after r243119.
drousso@apple.com [Tue, 19 Mar 2019 18:41:37 +0000 (18:41 +0000)]
Unreviewed, fix test failures after r243119.

* inspector/timeline/line-column.html:
* inspector/timeline/setInstruments-programmatic-capture.html:
Make sure to call `enable` for any ancillary agents.

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

4 months agoUnreviewed, rolling out r243142.
cdumez@apple.com [Tue, 19 Mar 2019 18:38:59 +0000 (18:38 +0000)]
Unreviewed, rolling out r243142.

Caused assertion hits in WK2 Debug

Reverted changeset:

"Spew: Unhandled web process message
'VisitedLinkTableController:VisitedLinkStateChanged'"
https://bugs.webkit.org/show_bug.cgi?id=194787
https://trac.webkit.org/changeset/243142

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

4 months ago[iOS] Focus not preserved when switching between tabs
dbates@webkit.org [Tue, 19 Mar 2019 18:25:21 +0000 (18:25 +0000)]
[iOS] Focus not preserved when switching between tabs
https://bugs.webkit.org/show_bug.cgi?id=195820
<rdar://problem/43614450>

Reviewed by Brent Fulgham.

Source/WebKit:

Fixes a usability annoyance when using a hardware keyboard; focus is not preserved when switching between tabs.
Do not unconditionally tell the WebProcess to blur the currently focused element when the content view (WKContentView)
resigns first responder. Instead only tell it to blur when the content view is resigning because either the
accessory view was dismissed (Done button was pressed) or the keyboard was dismissed (the hide keyboard button
was pressed).

* UIProcess/ios/WKContentViewInteraction.h:
* UIProcess/ios/WKContentViewInteraction.mm: Add new ivar to track whether the content view is resigning
first responder status because the accessory view is being dismissed.
(-[WKContentView resignFirstResponderForWebView]): Only tell WebKit to blur the focused element if we are
resigning because the accessory view is being dismissed or the keyboard was hidden. We continue to do all
other steps when resigning, including hiding the keyboard. Note that by not telling WebKit to blur the
focused element we let it's focus controller manage the focused element with respect to the current
page activation state (i.e. whether the content view is first responder or not). When the content view
becomes the first responder then WebKit's focus controller will be told that the page has become activated
and will tell the UIProcess to focus the currently focused element, which will bring up the keyboard.
(-[WKContentView accessoryDone]): Update state so we know that a subsequent call to resign first responder
was due to the accessory view being dismissed.

Tools:

Add tests to ensure that we restore focus when resigning and becoming first responder.

* TestWebKitAPI/Tests/ios/KeyboardInputTestsIOS.mm:
(TestWebKitAPI::TEST):

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

4 months agoWeb Inspector: DOM: "Capture Screenshot" should only be shown if the node is attached
drousso@apple.com [Tue, 19 Mar 2019 18:03:33 +0000 (18:03 +0000)]
Web Inspector: DOM: "Capture Screenshot" should only be shown if the node is attached
https://bugs.webkit.org/show_bug.cgi?id=195793
<rdar://problem/48916594>

Reviewed by Joseph Pecoraro.

* UserInterface/Models/DOMNode.js:
(WI.DOMNode.prototype.get attached): Added.

* UserInterface/Views/ContextMenuUtilities.js:
(WI.appendContextMenuItemsForDOMNode):
* UserInterface/Views/DOMTreeElement.js:
(WI.DOMTreeElement.prototype._populateTagContextMenu):

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

4 months agoRenderElement::startAnimation should take const Animation&
zalan@apple.com [Tue, 19 Mar 2019 17:59:24 +0000 (17:59 +0000)]
RenderElement::startAnimation should take const Animation&
https://bugs.webkit.org/show_bug.cgi?id=195929

Reviewed by Daniel Bates.

* animation/KeyframeEffect.cpp:
(WebCore::KeyframeEffect::applyPendingAcceleratedActions):
* page/animation/KeyframeAnimation.cpp:
(WebCore::KeyframeAnimation::startAnimation):
(WebCore::KeyframeAnimation::endAnimation):
* rendering/RenderElement.h:
(WebCore::RenderElement::startAnimation):
(WebCore::RenderElement::animationFinished):
* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::startAnimation):
* rendering/RenderLayerBacking.h:
* rendering/RenderLayerModelObject.cpp:
(WebCore::RenderLayerModelObject::startAnimation):
(WebCore::RenderLayerModelObject::animationFinished):
* rendering/RenderLayerModelObject.h:

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

4 months agoWeb Inspector: Heap: lazily create the agent
drousso@apple.com [Tue, 19 Mar 2019 17:50:19 +0000 (17:50 +0000)]
Web Inspector: Heap: lazily create the agent
https://bugs.webkit.org/show_bug.cgi?id=195590
<rdar://problem/48791750>

Reviewed by Joseph Pecoraro.

Source/JavaScriptCore:

* inspector/agents/InspectorHeapAgent.h:
* inspector/agents/InspectorHeapAgent.cpp:
(Inspector::InspectorHeapAgent::~InspectorHeapAgent): Deleted.

* inspector/agents/InspectorConsoleAgent.h:
(Inspector::InspectorConsoleAgent::setInspectorHeapAgent): Added.
* inspector/agents/InspectorConsoleAgent.cpp:
(Inspector::InspectorConsoleAgent::InspectorConsoleAgent):
(Inspector::InspectorConsoleAgent::takeHeapSnapshot):
(Inspector::InspectorConsoleAgent::~InspectorConsoleAgent): Deleted.

* inspector/JSGlobalObjectInspectorController.cpp:
(Inspector::JSGlobalObjectInspectorController::JSGlobalObjectInspectorController):
(Inspector::JSGlobalObjectInspectorController::createLazyAgents):

Source/WebCore:

No change in functionality.

* inspector/agents/page/PageHeapAgent.cpp:
(WebCore::PageHeapAgent::disable):
* inspector/agents/WebHeapAgent.h:
* inspector/agents/WebHeapAgent.cpp:
(WebCore::WebHeapAgent::WebHeapAgent):
(WebCore::WebHeapAgent::enable): Added.
(WebCore::WebHeapAgent::disable):

* inspector/agents/page/PageConsoleAgent.h:
* inspector/agents/page/PageConsoleAgent.cpp:
(WebCore::PageConsoleAgent::PageConsoleAgent):
* inspector/agents/WebConsoleAgent.h:
* inspector/agents/WebConsoleAgent.cpp:
(WebCore::WebConsoleAgent::WebConsoleAgent):
* inspector/agents/worker/WorkerConsoleAgent.h:
* inspector/agents/worker/WorkerConsoleAgent.cpp:
(WebCore::WorkerConsoleAgent::WorkerConsoleAgent):

* inspector/InspectorController.cpp:
(WebCore::InspectorController::InspectorController):
(WebCore::InspectorController::createLazyAgents):
* inspector/WorkerInspectorController.cpp:
(WebCore::WorkerInspectorController::WorkerInspectorController):
(WebCore::WorkerInspectorController::createLazyAgents):

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

4 months ago[iOS] Remove overridden rules in sandbox
pvollan@apple.com [Tue, 19 Mar 2019 17:49:21 +0000 (17:49 +0000)]
[iOS] Remove overridden rules in sandbox
https://bugs.webkit.org/show_bug.cgi?id=193840
<rdar://problem/47558526>

Reviewed by Brent Fulgham.

On iOS, there are some rules overridden in the same sandbox file. The overridden rules
should be removed.

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

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

4 months ago[JSC] microbenchmarks/generate-multiple-llint-entrypoints.js is running out of execut...
ticaiolima@gmail.com [Tue, 19 Mar 2019 17:44:55 +0000 (17:44 +0000)]
[JSC] microbenchmarks/generate-multiple-llint-entrypoints.js is running out of executable memory on ARMv7
https://bugs.webkit.org/show_bug.cgi?id=195950

Unreviewed, reducing the amount of memory used on this test to avoid
OOM on devices with memory restrictions.

* microbenchmarks/generate-multiple-llint-entrypoints.js:

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

4 months agoMake WebKit/NSAttributedString.h a public header.
timothy@apple.com [Tue, 19 Mar 2019 17:44:15 +0000 (17:44 +0000)]
Make WebKit/NSAttributedString.h a public header.
https://bugs.webkit.org/show_bug.cgi?id=195944

Reviewed by Dean Jackson.

* WebKit.xcodeproj/project.pbxproj:

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

4 months agoFix GraphicsLayer-related crashes after r243129
simon.fraser@apple.com [Tue, 19 Mar 2019 17:37:39 +0000 (17:37 +0000)]
Fix GraphicsLayer-related crashes after r243129
https://bugs.webkit.org/show_bug.cgi?id=195953

Reviewed by Dean Jackson.

Extending the lifetime of GraphicsLayers by referencing them in the scrolling tree (r243129)
revealed a bug where RenderLayerCompositor was failing to clear itself as the client of
GraphicsLayers that it owned, causing crashes.

Fix by using the GraphicsLayer::unparentAndClear() helper to clean up all the GraphicsLayers
owned by RenderLayerCompositor.

* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::~RenderLayerCompositor):
* rendering/RenderLayerCompositor.h:

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

4 months ago[Async overflow] Handle positioned nodes in a few more places
simon.fraser@apple.com [Tue, 19 Mar 2019 17:37:35 +0000 (17:37 +0000)]
[Async overflow] Handle positioned nodes in a few more places
https://bugs.webkit.org/show_bug.cgi?id=195946

Reviewed by Zalan Bujtas.

When I added support for positioned nodes in the scrolling tree I missed handling
the ScrollCoordinationRole::Positioning in a few places.

I wasn't able to come up with a test for this; when a positioned node toggles between
tiled and non-tiled, hitting the code in didChangePlatformLayerForLayer(), we already
update the node with the new layer.

* rendering/RenderLayer.cpp:
(WebCore::outputPaintOrderTreeRecursive): Logging.
* rendering/RenderLayerBacking.cpp:
(WebCore::operator<<): Logging.
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::didChangePlatformLayerForLayer): Update the node's layer.
(WebCore::RenderLayerCompositor::detachScrollCoordinatedLayer): Handle detaching of this node type.

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

4 months ago[BMalloc] Scavenger should react to recent memory activity
msaboff@apple.com [Tue, 19 Mar 2019 17:31:01 +0000 (17:31 +0000)]
[BMalloc] Scavenger should react to recent memory activity
https://bugs.webkit.org/show_bug.cgi?id=195895

Reviewed by Geoffrey Garen.

This change adds a recently used bit to objects that are scavenged.  When an object is allocated, that bit is set.
When we scavenge, if the bit is set, we clear it.  If the bit was already clear, we decommit the object.  The timing
to scavenging has been changed as well.  We perform our first scavne almost immediately after bmalloc is initialized
(10ms later).  Subsequent scavenging is done as a multiple of the time it took to scavenge.  We bound this computed
time between a minimum and maximum.  Through empirical testing, the multiplier, minimum and maximum are
150x, 100ms and 10,000ms respectively.  For mini-mode, when the JIT is disabled, we use much more aggressive values of
50x, 25ms and 500ms.

Eliminated partial scavenging since this change allows for any scavenge to be partial or full based on recent use of
the objects on the various free lists.

* bmalloc/Chunk.h:
(bmalloc::Chunk::usedSinceLastScavenge):
(bmalloc::Chunk::clearUsedSinceLastScavenge):
(bmalloc::Chunk::setUsedSinceLastScavenge):
* bmalloc/Heap.cpp:
(bmalloc::Heap::scavenge):
(bmalloc::Heap::allocateSmallChunk):
(bmalloc::Heap::allocateSmallPage):
(bmalloc::Heap::splitAndAllocate):
(bmalloc::Heap::tryAllocateLarge):
(bmalloc::Heap::scavengeToHighWatermark): Deleted.
* bmalloc/Heap.h:
* bmalloc/IsoDirectory.h:
* bmalloc/IsoDirectoryInlines.h:
(bmalloc::passedNumPages>::takeFirstEligible):
(bmalloc::passedNumPages>::scavenge):
(bmalloc::passedNumPages>::scavengeToHighWatermark): Deleted.
* bmalloc/IsoHeapImpl.h:
* bmalloc/IsoHeapImplInlines.h:
(bmalloc::IsoHeapImpl<Config>::scavengeToHighWatermark): Deleted.
* bmalloc/LargeRange.h:
(bmalloc::LargeRange::LargeRange):
(bmalloc::LargeRange::usedSinceLastScavenge):
(bmalloc::LargeRange::clearUsedSinceLastScavenge):
(bmalloc::LargeRange::setUsedSinceLastScavenge):
(): Deleted.
* bmalloc/Scavenger.cpp:
(bmalloc::Scavenger::Scavenger):
(bmalloc::Scavenger::threadRunLoop):
(bmalloc::Scavenger::timeSinceLastPartialScavenge): Deleted.
(bmalloc::Scavenger::partialScavenge): Deleted.
* bmalloc/Scavenger.h:
* bmalloc/SmallPage.h:
(bmalloc::SmallPage::usedSinceLastScavenge):
(bmalloc::SmallPage::clearUsedSinceLastScavenge):
(bmalloc::SmallPage::setUsedSinceLastScavenge):

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

4 months agoDrop NetworkCacheStatistics code
cdumez@apple.com [Tue, 19 Mar 2019 17:05:55 +0000 (17:05 +0000)]
Drop NetworkCacheStatistics code
https://bugs.webkit.org/show_bug.cgi?id=195910

Reviewed by Antti Koivisto.

Drop NetworkCacheStatistics code. It was a temporary experiment and has not been used in a long time.

* NetworkProcess/NetworkProcessCreationParameters.cpp:
(WebKit::NetworkProcessCreationParameters::encode const):
(WebKit::NetworkProcessCreationParameters::decode):
* NetworkProcess/NetworkProcessCreationParameters.h:
* NetworkProcess/cache/NetworkCache.cpp:
(WebKit::NetworkCache::Cache::Cache):
(WebKit::NetworkCache::Cache::retrieve):
(WebKit::NetworkCache::Cache::store):
(WebKit::NetworkCache::Cache::storeRedirect):
(WebKit::NetworkCache::Cache::update):
(WebKit::NetworkCache::Cache::clear):
* NetworkProcess/cache/NetworkCache.h:
* NetworkProcess/cache/NetworkCacheStatistics.cpp: Removed.
* NetworkProcess/cache/NetworkCacheStatistics.h: Removed.
* NetworkProcess/cache/NetworkCacheStorage.cpp:
(WebKit::NetworkCache::traverseRecordsFiles):
* NetworkProcess/cache/NetworkCacheStorage.h:
* NetworkProcess/cocoa/NetworkProcessCocoa.mm:
(WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa):
* NetworkProcess/soup/NetworkProcessSoup.cpp:
(WebKit::NetworkProcess::platformInitializeNetworkProcess):
* Sources.txt:
* UIProcess/Cocoa/WebProcessPoolCocoa.mm:
(WebKit::registerUserDefaultsIfNeeded):
(WebKit::WebProcessPool::platformInitializeNetworkProcess):
* UIProcess/soup/WebProcessPoolSoup.cpp:
(WebKit::WebProcessPool::platformInitializeNetworkProcess):
* WebKit.xcodeproj/project.pbxproj:

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

4 months agoSpew: Unhandled web process message 'VisitedLinkTableController:VisitedLinkStateChanged'
cdumez@apple.com [Tue, 19 Mar 2019 16:48:40 +0000 (16:48 +0000)]
Spew: Unhandled web process message 'VisitedLinkTableController:VisitedLinkStateChanged'
https://bugs.webkit.org/show_bug.cgi?id=194787
<rdar://problem/48175520>

Reviewed by Geoffrey Garen.

The unhandled 'VisitedLinkTableController:VisitedLinkStateChanged' message logging happens
when IPC is sent to a WebProcess which does not have a VisitedLinkTableController with the
given identifier. VisitedLinkTableController are kept alive by the WebPage in the WebProcess
side so this indicates that there is no WebPage using this VisitedLinkTableController anymore.

In the UIProcess side, our tracking of who is using which VisitedLinkStore was very poor.
WebPageProxy objects would ask their process to register itself with the page's visitedLinkStore
as soon as the WebPage object has been created on the WebProcess side. This part was fine.
However, unregistration from the visitedLinkStores would only happen when either the
visitedLinkStore would get destroyed or when the WebProcess would shutdown. This means that
WebProcess could stay registered with a visitedLinkStore even after the page that was using it
has been closed, which would lead to such logging.

To address the issue, the WebProcessProxy now keeps track for which pages are using which
visitedLinkStore. When a visitedLinkStore is used by a page for the first time, the
WebProcessProxy will register itself with the visitedLinkStore. Similarly, when the last page
using a given visitedLinkStore is closed, the process unregisters itself from the
visitedLinkStore, thus avoiding the bug.

I also simplified a lot the logic for having a page telling the WebProcessProxy it started
using a visitedLinkStore. Previously, it would have to wait until the process is done launching
before notifying the WebProcessProxy. Now, the WebPageProxy merely tells the WebProcessProxy
that it is starting to use a visitedLinkStore as soon as it sent the CreateWebPage IPC to the
WebProcess (no matter if the process is still launching or not). At this point, the
WebProcessProxy registers the page as a user of the visitedLinkStore and takes care of waiting
until it is done launching before registering itself with the visitedLinkStore.

* UIProcess/ProvisionalPageProxy.cpp:
(WebKit::ProvisionalPageProxy::~ProvisionalPageProxy):
(WebKit::ProvisionalPageProxy::initializeWebPage):
(WebKit::ProvisionalPageProxy::processDidFinishLaunching): Deleted.
(WebKit::ProvisionalPageProxy::finishInitializingWebPageAfterProcessLaunch): Deleted.
* UIProcess/ProvisionalPageProxy.h:
* UIProcess/VisitedLinkStore.cpp:
(WebKit::VisitedLinkStore::~VisitedLinkStore):
(WebKit::VisitedLinkStore::addProcess):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::finishAttachingToWebProcess):
(WebKit::WebPageProxy::initializeWebPage):
(WebKit::WebPageProxy::resetStateAfterProcessExited):
(WebKit::WebPageProxy::finishInitializingWebPageAfterProcessLaunch): Deleted.
(WebKit::WebPageProxy::processDidFinishLaunching): Deleted.
* UIProcess/WebPageProxy.h:
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::shutDown):
(WebKit::WebProcessProxy::removeWebPage):
(WebKit::WebProcessProxy::addVisitedLinkStoreUser):
(WebKit::WebProcessProxy::removeVisitedLinkStoreUser):
(WebKit::WebProcessProxy::addWebUserContentControllerProxy):
(WebKit::WebProcessProxy::didFinishLaunching):
(WebKit::WebProcessProxy::addVisitedLinkStore): Deleted.
(WebKit::WebProcessProxy::didDestroyVisitedLinkStore): Deleted.
* UIProcess/WebProcessProxy.h:

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

4 months agoMake WTFLogChannelState and WTFLogLevel enum classes
commit-queue@webkit.org [Tue, 19 Mar 2019 16:47:04 +0000 (16:47 +0000)]
Make WTFLogChannelState and WTFLogLevel enum classes
https://bugs.webkit.org/show_bug.cgi?id=195904

Patch by Alex Christensen <achristensen@webkit.org> on 2019-03-19
Reviewed by Eric Carlson.

Source/WebCore:

* Modules/mediasource/SourceBuffer.cpp:
(WebCore::removeSamplesFromTrackBuffer):
* Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
(WebCore::LibWebRTCMediaEndpoint::OnStatsDelivered):
(WebCore::LibWebRTCMediaEndpoint::statsLogInterval const):
* dom/Document.cpp:
(WebCore::messageLevelFromWTFLogLevel):
* html/FTPDirectoryDocument.cpp:
(WebCore::FTPDirectoryDocument::FTPDirectoryDocument):
* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::seekTask):
(WebCore::HTMLMediaElement::selectNextSourceChild):
(WebCore::HTMLMediaElement::sourceWasAdded):
(WebCore::HTMLMediaElement::sourceWasRemoved):
* inspector/agents/WebConsoleAgent.cpp:
(WebCore::WebConsoleAgent::getLoggingChannels):
(WebCore::channelConfigurationForString):
* platform/Logging.cpp:
(WebCore::isLogChannelEnabled):
(WebCore::setLogChannelToAccumulate):
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
(-[WebCoreAVFMovieObserver observeValueForKeyPath:ofObject:change:context:]):
* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::enqueueVideoSample):
* platform/mediastream/libwebrtc/LibWebRTCProvider.cpp:
(WebCore::initializePeerConnectionFactoryAndThreads):
* rendering/RenderLayerCompositor.cpp:
(WebCore::compositingLogEnabled):

Source/WebKit:

* NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp:
(WebKit::NetworkCache::logSpeculativeLoadingDiagnosticMessage):
* NetworkProcess/webrtc/NetworkRTCProvider.cpp:
(WebKit::NetworkRTCProvider::NetworkRTCProvider):

Source/WTF:

* wtf/Assertions.cpp:
* wtf/Assertions.h:
* wtf/Logger.h:
(WTF::Logger::logAlways const):
(WTF::Logger::error const):
(WTF::Logger::warning const):
(WTF::Logger::info const):
(WTF::Logger::debug const):
(WTF::Logger::willLog const):
(WTF::Logger::log):
* wtf/MemoryPressureHandler.cpp:
* wtf/RefCountedLeakCounter.cpp:

Tools:

* TestWebKitAPI/Tests/WebCore/Logging.cpp:
(TestWebKitAPI::TEST_F):

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

4 months agoREGRESSION(r243058): [GStreamer] 3 tests now timing out
philn@webkit.org [Tue, 19 Mar 2019 14:53:09 +0000 (14:53 +0000)]
REGRESSION(r243058): [GStreamer] 3 tests now timing out
https://bugs.webkit.org/show_bug.cgi?id=195888

Reviewed by Xabier Rodriguez-Calvar.

A breaking change was introduced in r243058. Now on-disk-buffering
is disabled when the reported Content-Length is 0 or not present
at all. This broke the progress event logic in didLoadProgress()
because leading to progress events not being fired as expected.

The proposed solution is to make webkitwebsrc notify the player
every time the network process receives data from the network. So
the player can now easily determine if the load progressed by
checking the reported statistics.

No new tests, existing media tests cover this change.

* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::handleMessage):
(WebCore::MediaPlayerPrivateGStreamer::didLoadingProgress const):
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:
* platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:
(CachedResourceStreamingClient::dataReceived):

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

4 months ago[GStreamer][EME] Backported mssdemux protection data crash fix
calvaris@igalia.com [Tue, 19 Mar 2019 14:48:49 +0000 (14:48 +0000)]
[GStreamer][EME] Backported mssdemux protection data crash fix
https://bugs.webkit.org/show_bug.cgi?id=195918

Reviewed by Philippe Normand.

* gstreamer/jhbuild.modules:
* gstreamer/patches/gst-plugins-bad-0005-mssdemux-fix-protection-data-double-free.patch: Added.

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

4 months ago[MSE] Use tolerance in eraseBeginTime
aboya@igalia.com [Tue, 19 Mar 2019 14:38:45 +0000 (14:38 +0000)]
[MSE] Use tolerance in eraseBeginTime
https://bugs.webkit.org/show_bug.cgi?id=195911

Reviewed by Jer Noble.

Source/WebCore:

https://bugs.webkit.org/show_bug.cgi?id=190085 introduced tolerance
when erasing frames during the Coded Frame Processing algorithm in
such a way that, in files with less than perfect timestamps, a frame
existing before after the current append is not erased accidentally
due to small overlaps.

This patch takes care of the opposite problem: we don't want an old
frame being accidentally NOT erased by a new one with the same
timestamps just because these overlaps make
highestPresentationTimestamp very slightly higher than the frame PTS.

This bug in practice causes some frames of the old quality to not be
erased when the new quality is appended, resulting in some seemingly
still frames from a different quality appearing at some points during
WebM video in presence of quality changes.

This bug can be reduced to this minimal test case that illustrates the
timestamp imprecission of a typical WebM file:

function sampleRun(generation) {
    return concatenateSamples([
        makeASample(     0,      0, 166667, 1000000, 1, SAMPLE_FLAG.SYNC, generation),
        makeASample(167000, 167000, 166667, 1000000, 1, SAMPLE_FLAG.NONE, generation),
        makeASample(333000, 333000, 166667, 1000000, 1, SAMPLE_FLAG.SYNC, generation), // overlaps previous frame
        makeASample(500000, 500000, 166667, 1000000, 1, SAMPLE_FLAG.NONE, generation),
    ]);
}

After appending this twice it would be expected that the second
generation takes fully over the first, since the timestamps are
completely the same. Due to the bug, sync frames with an overlap, like
the third one in that list, actually persist from the first
generation, due to lack of tolerance when comparing the start of a new
frame with highestPresentationTimestamp.

This patch introduces the tolerance in that case too to fix this
problem.

Test: media/media-source/media-source-append-twice-overlapping-sync-frame.html

* Modules/mediasource/SourceBuffer.cpp:
(WebCore::SourceBuffer::sourceBufferPrivateDidReceiveSample):

LayoutTests:

* media/media-source/media-source-append-twice-overlapping-sync-frame-expected.txt: Added.
* media/media-source/media-source-append-twice-overlapping-sync-frame.html: Added.

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

4 months agoUnreviewed GTK build fix
mcatanzaro@igalia.com [Tue, 19 Mar 2019 13:46:25 +0000 (13:46 +0000)]
Unreviewed GTK build fix
https://bugs.webkit.org/show_bug.cgi?id=195863
<rdar://problem/49006248>

Patch by Diego Pino.

* svg/SVGTests.h:

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

4 months ago[JSC] LLIntEntryPoint creates same DirectJITCode for all functions
ticaiolima@gmail.com [Tue, 19 Mar 2019 13:36:05 +0000 (13:36 +0000)]
[JSC] LLIntEntryPoint creates same DirectJITCode for all functions
https://bugs.webkit.org/show_bug.cgi?id=194648

Reviewed by Keith Miller.

JSTests:

* microbenchmarks/generate-multiple-llint-entrypoints.js: Added.

Source/JavaScriptCore:

1. Making LLIntThunks singleton.

Motivation: Former implementation has one LLIntThunk per type per VM.
However, the generated code for every kind of thunk is essentially the
same and we end up wasting memory (right now jitAllocationGranule = 32 bytes)
when we have 2 or more VM instantiated. Turn these thunks into
singleton will avoid such wasting.

Tradeoff: This change comes with a price, because we will keep thunks
allocated even when there is no VM instantiated. Considering WebCore use case,
the situation of having no VM instantiated is uncommon, since once a
VM is created through `commomVM()`, it will never be destroyed. Given
that, this change does not impact the overall memory comsumption of
WebCore/JSC. It also doesn't impact memory footprint, since thunks are
generated lazily (see results below).

Since we are keeping a static `MacroAssemblerCodeRef<JITThunkPtrTag>`,
we have the assurance that JITed code will never be deallocated,
given it is being pointed by `RefPtr<ExecutableMemoryHandle> m_executableMemory`.
To understand why we decided to make LLIntThunks singleton instead of
removing them, please see the comment on `llint/LLIntThunks.cpp`.

2. Making all LLIntEntrypoints singleton

Motivation: With singleton LLIntThunks, we also can have singleton
DirectJITCodes and NativeJITCodes for each LLIntEntrypoint type and
avoid multiple allocations of objects with the same content.

Tradeoff: As explained before, once we allocate an entrypoint, it
will be alive until the program exits. However, the gains we can
achieve in some use cases justifies such allocations.

As DirectJITCode and NativeJITCode are ThreadSafeRefCounted and we are using
`codeBlock->setJITCode(makeRef(*jitCode))`, their reference counter
will never be less than 1.

3. Memory usage analysis

This change reduces memory usage on stress/generate-multiple-llint-entrypoints.js
by 2% and is neutral on JetStream 2. Following results were generated
running each benchmark 6 times and using 95% Student's t distribution
confidence interval.

microbenchmarks/generate-multiple-llint-entrypoints.js (Changes uses less memory):
    Mean of memory peak on ToT: 122576896 bytes (confidence interval: 67747.2316)
    Mean of memory peak on Changes: 119248213.33 bytes (confidence interval: 50251.2718)

JetStream2 (Neutral):
    Mean of memory peak on ToT: 5442742272 bytes (confidence interval: 134381565.9117)
    Mean of memory peak on Changes: 5384949760 bytes (confidence interval: 158413904.8352)

4. Performance Analysis

This change is performance neutral on JetStream 2 and Speedometer 2.
See results below.:

JetStream 2 (Neutral):
    Mean of score on ToT: 139.58 (confidence interval: 2.44)
    Mean of score on Changes: 141.46 (confidence interval: 4.24)

Speedometer run #1
   ToT: 110 +- 2.9
   Changes: 110 +- 1.8

Speedometer run #2
   ToT: 110 +- 1.6
   Changes: 108 +- 2.3

Speedometer run #3
   ToT: 110 +- 3.0
   Changes: 110 +- 1.4

* jit/JSInterfaceJIT.h:
(JSC::JSInterfaceJIT::JSInterfaceJIT):
* llint/LLIntEntrypoint.cpp:

Here we are changing the usage or DirectJITCode by NativeJITCode on cases
where there is no difference from address of calls with and without
ArithCheck.

(JSC::LLInt::setFunctionEntrypoint):
(JSC::LLInt::setEvalEntrypoint):
(JSC::LLInt::setProgramEntrypoint):
(JSC::LLInt::setModuleProgramEntrypoint):
(JSC::LLInt::setEntrypoint):
* llint/LLIntEntrypoint.h:
* llint/LLIntThunks.cpp:
(JSC::LLInt::generateThunkWithJumpTo):
(JSC::LLInt::functionForCallEntryThunk):
(JSC::LLInt::functionForConstructEntryThunk):
(JSC::LLInt::functionForCallArityCheckThunk):
(JSC::LLInt::functionForConstructArityCheckThunk):
(JSC::LLInt::evalEntryThunk):
(JSC::LLInt::programEntryThunk):
(JSC::LLInt::moduleProgramEntryThunk):
(JSC::LLInt::functionForCallEntryThunkGenerator): Deleted.
(JSC::LLInt::functionForConstructEntryThunkGenerator): Deleted.
(JSC::LLInt::functionForCallArityCheckThunkGenerator): Deleted.
(JSC::LLInt::functionForConstructArityCheckThunkGenerator): Deleted.
(JSC::LLInt::evalEntryThunkGenerator): Deleted.
(JSC::LLInt::programEntryThunkGenerator): Deleted.
(JSC::LLInt::moduleProgramEntryThunkGenerator): Deleted.
* llint/LLIntThunks.h:
* runtime/ScriptExecutable.cpp:
(JSC::setupLLInt):
(JSC::ScriptExecutable::prepareForExecutionImpl):

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

4 months agoUnreviewed, rolling out r243132.
mcatanzaro@igalia.com [Tue, 19 Mar 2019 13:25:16 +0000 (13:25 +0000)]
Unreviewed, rolling out r243132.

Broke GTK build

Reverted changeset:

"Make WTFLogChannelState and WTFLogLevel enum classes"
https://bugs.webkit.org/show_bug.cgi?id=195904
https://trac.webkit.org/changeset/243132

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

4 months agoLayer with no backing store should still hit-test over a scroller
antti@apple.com [Tue, 19 Mar 2019 11:07:42 +0000 (11:07 +0000)]
Layer with no backing store should still hit-test over a scroller
https://bugs.webkit.org/show_bug.cgi?id=195378
<rdar://problem/48652078>

Reviewed by Simon Fraser.

Source/WebCore:

Tests: fast/scrolling/ios/overflow-scroll-overlap-3.html
       fast/scrolling/ios/overflow-scroll-overlap-4.html

Move collecting event region from paint to compositing update time.
This solves a number of problems including regions for non-painting layers.

* platform/graphics/GraphicsLayer.h:
* rendering/RenderBlock.cpp:
(WebCore::RenderBlock::paintObject):

Use the existing visibleToHitTesting() helper.

* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::paintLayerContents):

Use flag for event region collecting, don't paint content.

(WebCore::RenderLayer::paintList):

We can bail out immediately if there is no overflow.

(WebCore::RenderLayer::paintForegroundForFragments):
(WebCore::RenderLayer::paintForegroundForFragmentsWithPhase):
(WebCore::RenderLayer::collectEventRegionForFragments):

Move to a separate function.

* rendering/RenderLayer.h:
* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::updateConfiguration):

Update event region on backing configuration update. This is called after anything interesting changes on a sublayer.

(WebCore::RenderLayerBacking::updateEventRegion):
(WebCore::RenderLayerBacking::paintIntoLayer):
* rendering/RenderLayerBacking.h:

Source/WebKit:

* UIProcess/RemoteLayerTree/ios/RemoteLayerTreeHostIOS.mm:
(WebKit::RemoteLayerTreeHost::makeNode):
* UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.h:
* UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.mm:
(WebKit::collectDescendantViewsAtPoint):

No need for special WKTiledBackingView, tiled views now have correct event regions.

LayoutTests:

Reorganize the tests a bit and add some new ones.

* fast/scrolling/ios/overflow-scroll-overlap-2-expected.txt:
* fast/scrolling/ios/overflow-scroll-overlap-2.html:
* fast/scrolling/ios/overflow-scroll-overlap-3-expected.txt: Added.
* fast/scrolling/ios/overflow-scroll-overlap-3.html: Added.
* fast/scrolling/ios/overflow-scroll-overlap-4-expected.txt: Added.
* fast/scrolling/ios/overflow-scroll-overlap-4.html: Added.
* fast/scrolling/ios/overflow-scroll-overlap.html:
* fast/scrolling/resources/overflow-scroll-overlap.js: Added.
(sleep):
(async.runTest):
(logScroll):
(outputCase):

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

4 months agoUnreviewed follow-up to r243073, fixing WPE MiniBrowser launching.
zandobersek@gmail.com [Tue, 19 Mar 2019 08:31:05 +0000 (08:31 +0000)]
Unreviewed follow-up to r243073, fixing WPE MiniBrowser launching.

* Scripts/webkitdirs.pm:
(builtDylibPathForName): Adjust the shared library name that's changed
with the API version bump in r243073.

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

4 months agoMake WTFLogChannelState and WTFLogLevel enum classes
commit-queue@webkit.org [Tue, 19 Mar 2019 06:36:11 +0000 (06:36 +0000)]
Make WTFLogChannelState and WTFLogLevel enum classes
https://bugs.webkit.org/show_bug.cgi?id=195904

Patch by Alex Christensen <achristensen@webkit.org> on 2019-03-18
Reviewed by Eric Carlson.

Source/WebCore:

* Modules/mediasource/SourceBuffer.cpp:
(WebCore::removeSamplesFromTrackBuffer):
* Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
(WebCore::LibWebRTCMediaEndpoint::OnStatsDelivered):
(WebCore::LibWebRTCMediaEndpoint::statsLogInterval const):
* dom/Document.cpp:
(WebCore::messageLevelFromWTFLogLevel):
* html/FTPDirectoryDocument.cpp:
(WebCore::FTPDirectoryDocument::FTPDirectoryDocument):
* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::seekTask):
(WebCore::HTMLMediaElement::selectNextSourceChild):
(WebCore::HTMLMediaElement::sourceWasAdded):
(WebCore::HTMLMediaElement::sourceWasRemoved):
* inspector/agents/WebConsoleAgent.cpp:
(WebCore::WebConsoleAgent::getLoggingChannels):
(WebCore::channelConfigurationForString):
* platform/Logging.cpp:
(WebCore::isLogChannelEnabled):
(WebCore::setLogChannelToAccumulate):
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
(-[WebCoreAVFMovieObserver observeValueForKeyPath:ofObject:change:context:]):
* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::enqueueVideoSample):
* platform/mediastream/libwebrtc/LibWebRTCProvider.cpp:
(WebCore::initializePeerConnectionFactoryAndThreads):
* rendering/RenderLayerCompositor.cpp:
(WebCore::compositingLogEnabled):

Source/WebKit:

* NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp:
(WebKit::NetworkCache::logSpeculativeLoadingDiagnosticMessage):
* NetworkProcess/webrtc/NetworkRTCProvider.cpp:
(WebKit::NetworkRTCProvider::NetworkRTCProvider):

Source/WTF:

* wtf/Assertions.cpp:
* wtf/Assertions.h:
* wtf/Logger.h:
(WTF::Logger::logAlways const):
(WTF::Logger::error const):
(WTF::Logger::warning const):
(WTF::Logger::info const):
(WTF::Logger::debug const):
(WTF::Logger::willLog const):
(WTF::Logger::log):
* wtf/MemoryPressureHandler.cpp:
* wtf/RefCountedLeakCounter.cpp:

Tools:

* TestWebKitAPI/Tests/WebCore/Logging.cpp:
(TestWebKitAPI::TEST_F):

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

4 months agoDisable flaky test added in r2431100
achristensen@apple.com [Tue, 19 Mar 2019 05:46:42 +0000 (05:46 +0000)]
Disable flaky test added in r2431100
https://webkit.org/b/195785

* TestWebKitAPI/Tests/WebKitCocoa/Download.mm:
(TestWebKitAPI::TEST):
Apparently bots don't hit 150kb/s as reliably as I do locally.  Can't say I'm too surprised.

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

4 months agoRemove the SVG property tear off objects for SVGStringList
commit-queue@webkit.org [Tue, 19 Mar 2019 04:23:27 +0000 (04:23 +0000)]
Remove the SVG property tear off objects for SVGStringList
https://bugs.webkit.org/show_bug.cgi?id=195863

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2019-03-18
Reviewed by Simon Fraser.

SVGStringList is not animated list. So we need to introduce two new classes:

-- SVGProperty: This will be the base of all the non-animated properties.
   Like the SVGAnimatedProperty, SVGProperty will be registered with the
   attribute name in SVGPropertyRegistery. It will also commit changes
   to the reflecting attribute. And it will provide a synchronize string
   for lazy attribute update.

-- SVGList: It will be the base of all the list properties. It can hold
   primitive types or SVG types. In this patch primitive types will be
   supported only. To do that, a superclass called SVGPrimitiveList is
   added. Its items are of primitive type such as String type.

* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* svg/SVGElement.cpp:
(WebCore::SVGElement::synchronizeAnimatedSVGAttribute const):
(WebCore::SVGElement::commitPropertyChange):
* svg/SVGElement.h:
* svg/SVGStringList.h:
* svg/SVGStringListValues.cpp: Removed.
* svg/SVGStringListValues.h: Removed.
* svg/SVGTests.cpp:
(WebCore::SVGTests::SVGTests):
(WebCore::SVGTests::isKnownAttribute):
(WebCore::SVGTests::isValid const):
(WebCore::SVGTests::parseAttribute):
(WebCore::SVGTests::registerAttributes): Deleted.
(WebCore::SVGTests::requiredFeatures): Deleted.
(WebCore::SVGTests::requiredExtensions): Deleted.
(WebCore::SVGTests::systemLanguage): Deleted.
* svg/SVGTests.h:
(WebCore::SVGTests::requiredFeatures):
(WebCore::SVGTests::requiredExtensions):
(WebCore::SVGTests::systemLanguage):
(): Deleted.
* svg/SVGTests.idl:
* svg/SVGTextPositioningElement.h:
* svg/SVGViewElement.cpp:
(WebCore::SVGViewElement::SVGViewElement):
(WebCore::SVGViewElement::parseAttribute):
(WebCore::SVGViewElement::viewTarget): Deleted.
* svg/SVGViewElement.h:
* svg/properties/SVGAnimatedListPropertyTearOff.h:
* svg/properties/SVGAnimatedPrimitiveProperty.h:
(WebCore::SVGAnimatedPrimitiveProperty::setBaseVal):
* svg/properties/SVGAnimatedProperty.cpp:
(WebCore::SVGAnimatedProperty::commitPropertyChange):
* svg/properties/SVGAnimatedProperty.h:
* svg/properties/SVGAttributeRegistry.h:
* svg/properties/SVGList.h: Added.
(WebCore::SVGList::numberOfItems const):
(WebCore::SVGList::clear):
(WebCore::SVGList::getItem):
(WebCore::SVGList::initialize):
(WebCore::SVGList::insertItemBefore):
(WebCore::SVGList::replaceItem):
(WebCore::SVGList::removeItem):
(WebCore::SVGList::appendItem):
(WebCore::SVGList::items):
(WebCore::SVGList::items const):
(WebCore::SVGList::size const):
(WebCore::SVGList::isEmpty const):
(WebCore::SVGList::clearItems):
(WebCore::SVGList::canAlterList const):
(WebCore::SVGList::canGetItem):
(WebCore::SVGList::canReplaceItem):
(WebCore::SVGList::canRemoveItem):
(WebCore::SVGList::detachItems):
* svg/properties/SVGMemberAccessor.h:
(WebCore::SVGMemberAccessor::matches const):
* svg/properties/SVGPrimitiveList.h: Added.
* svg/properties/SVGProperty.h:
(WebCore::SVGProperty::isAttached const):
(WebCore::SVGProperty::attach):
(WebCore::SVGProperty::detach):
(WebCore::SVGProperty::contextElement const):
(WebCore::SVGProperty::commitChange):
(WebCore::SVGProperty::access const):
(WebCore::SVGProperty::isReadOnly const):
(WebCore::SVGProperty::isDirty const):
(WebCore::SVGProperty::setDirty):
(WebCore::SVGProperty::synchronize):
(WebCore::SVGProperty::valueAsString const):
(WebCore::SVGProperty::SVGProperty):
* svg/properties/SVGPropertyAccessor.h: Added.
* svg/properties/SVGPropertyAccessorImpl.h: Added.
* svg/properties/SVGPropertyOwner.h:
(WebCore::SVGPropertyOwner::commitPropertyChange):
* svg/properties/SVGPropertyOwnerRegistry.h:
(WebCore::SVGPropertyOwnerRegistry::registerProperty):
* svg/properties/SVGPropertyRegistry.h:
* svg/properties/SVGStaticListPropertyTearOff.h: Removed.

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

4 months agoUnreviewed followup to r243126.
simon.fraser@apple.com [Tue, 19 Mar 2019 04:13:37 +0000 (04:13 +0000)]
Unreviewed followup to r243126.

LayerRepresentation operator=() needs to copy m_graphicsLayer now that it doesn't
share a pointer with m_typelessPlatformLayer. Also make the LayerRepresentation construction
from a GraphiscLayer* explicit.

* page/scrolling/ScrollingStateNode.h:
(WebCore::LayerRepresentation::operator=):
(WebCore::LayerRepresentation::toRepresentation const):

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

5 months ago[JSC] Add missing exception checks revealed by newly added exception checks, follow...
ysuzuki@apple.com [Tue, 19 Mar 2019 03:00:26 +0000 (03:00 +0000)]
[JSC] Add missing exception checks revealed by newly added exception checks, follow-up after r243081
https://bugs.webkit.org/show_bug.cgi?id=195927

Reviewed by Mark Lam.

r243081 adds more exception checks which are previously missing, and it reveals missing exception checks in the caller.
This patch is a follow-up patch after r243081, adding missing exception checks more to fix debug test failures.

* runtime/RegExpConstructor.cpp:
(JSC::setRegExpConstructorInput):
(JSC::setRegExpConstructorMultiline):
* runtime/RegExpGlobalData.cpp:
(JSC::RegExpGlobalData::getBackref):
(JSC::RegExpGlobalData::getLastParen):

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

5 months ago[JSC] Generator should not create JSLexicalEnvironment if it is not necessary
ysuzuki@apple.com [Tue, 19 Mar 2019 02:21:10 +0000 (02:21 +0000)]
[JSC] Generator should not create JSLexicalEnvironment if it is not necessary
https://bugs.webkit.org/show_bug.cgi?id=195901

Reviewed by Saam Barati.

It is not rare that generators do not need to have any registers to be suspended and resumed.
Since currently we always emit op_create_lexical_environment for generator code, we sometimes
create empty JSLexicalEnvironment while it is not required. We can see that a lot of empty JSLexicalEnvironment
are allocated in RAMification's Basic test.

This patch removes this unnecessary allocation. We introduce op_create_generator_frame_environment, which is
a marker, similar to op_yield. And generatorification phase decides whether we should actually emit op_create_lexical_environment,
based on the result of the analysis in generatorification. This can remove unnecessary JSLexicalEnvironment allocations.

We run RAMification in 6 times, use average of them.
RAMification's Basic in JIT mode shows 1.4% improvement.
ToT
    Current: 55076864.00, Peak: 55080960.00
Patched
    Current: 54325930.67, Peak: 54329344.00

RAMification's Basic in non-JIT mode shows 5.0% improvement.
ToT
    Current: 12485290.67, Peak: 12485290.67
Patched
    Current: 11894101.33, Peak: 11894101.33

* bytecode/BytecodeGeneratorification.cpp:
(JSC::BytecodeGeneratorification::BytecodeGeneratorification):
(JSC::BytecodeGeneratorification::generatorFrameData const):
(JSC::BytecodeGeneratorification::run):
* bytecode/BytecodeList.rb:
* bytecode/BytecodeUseDef.h:
(JSC::computeUsesForBytecodeOffset):
(JSC::computeDefsForBytecodeOffset):
* bytecompiler/BytecodeGenerator.cpp:
(JSC::BytecodeGenerator::BytecodeGenerator):
* dfg/DFGCapabilities.cpp:
(JSC::DFG::capabilityLevel):
* llint/LowLevelInterpreter.asm:

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

5 months agoScrolling state nodes should hold references to GraphicsLayers
simon.fraser@apple.com [Tue, 19 Mar 2019 02:05:23 +0000 (02:05 +0000)]
Scrolling state nodes should hold references to GraphicsLayers
https://bugs.webkit.org/show_bug.cgi?id=195844
<rdar://problem/48949634>

Reviewed by Tim Horton.

GraphicsLayers are refcounted, and the scrolling tree keeps GraphicsLayer pointers,
so for safely the scrolling tree should store RefPtr<GraphicsLayer> instead.

I removed the union (since it would be weird with a RefPtr and raw pointer). This code
should probably use WTF::Variant<> in future.

* page/scrolling/ScrollingStateNode.h:
(WebCore::LayerRepresentation::LayerRepresentation):
(WebCore::LayerRepresentation::operator GraphicsLayer* const):

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

5 months agoUnreviewed, rolling out r243092 and r243096.
commit-queue@webkit.org [Tue, 19 Mar 2019 01:58:05 +0000 (01:58 +0000)]
Unreviewed, rolling out r243092 and r243096.
https://bugs.webkit.org/show_bug.cgi?id=195926

Caused assertions in tests (Requested by smfr on #webkit).

Reverted changesets:

"Layer with no backing store should still hit-test over a
scroller"
https://bugs.webkit.org/show_bug.cgi?id=195378
https://trac.webkit.org/changeset/243092

"Try to fix Windows build."
https://trac.webkit.org/changeset/243096

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

5 months agoSmart Insert for paragraphs.
megan_gardner@apple.com [Tue, 19 Mar 2019 01:56:39 +0000 (01:56 +0000)]
Smart Insert for paragraphs.
https://bugs.webkit.org/show_bug.cgi?id=194880

Reviewed by Ryosuke Niwa.

Source/WebCore:

Add additional newlines to maintain spacing around paragraphs.

Tests: editing/pasteboard/smart-paste-paragraph-001.html
       editing/pasteboard/smart-paste-paragraph-002.html
       editing/pasteboard/smart-paste-paragraph-003.html
       editing/pasteboard/smart-paste-paragraph-004.html

* dom/Document.cpp:
(WebCore::Document::editingBehavior const):
* dom/Document.h:

Expose editing behaviour through document so that is can be access from the selection commands
and allow the editing behaviour to be used.

* editing/CompositeEditCommand.h:
* editing/EditingBehavior.h:
(WebCore::EditingBehavior::shouldSmartInsertDeleteParagraphs const):

Only have editing insert paragraphs on iOS and in editing elements that support multiple lines.

* editing/ReplaceSelectionCommand.cpp:
(WebCore::ReplaceSelectionCommand::doApply):
(WebCore::ReplaceSelectionCommand::shouldPerformSmartParagraphReplace const):
(WebCore::ReplaceSelectionCommand::addNewLinesForSmartReplace):
* editing/ReplaceSelectionCommand.h:

Add addititional newlines when pasting full paragraphs to maintian two newlines between paragraphs
if that is what the original document had. If there are not multiple lines between paragraphs, do not
add additional new lines.

LayoutTests:

List tests are covered by paste-list-00*.
Table tests are covered by paste-table-00* and paste-into-table-*.

* editing/pasteboard/smart-paste-paragraph-001-expected.txt: Added.
* editing/pasteboard/smart-paste-paragraph-001.html: Added.
* editing/pasteboard/smart-paste-paragraph-002-expected.txt: Added.
* editing/pasteboard/smart-paste-paragraph-002.html: Added.
* editing/pasteboard/smart-paste-paragraph-003-expected.txt: Added.
* editing/pasteboard/smart-paste-paragraph-003.html: Added.
* editing/pasteboard/smart-paste-paragraph-004-expected.txt: Added.
* editing/pasteboard/smart-paste-paragraph-004.html: Added.
* platform/ios-wk2/editing/pasteboard/paste-text-016-expected.txt:
This needed to be rebaselined to match the new behaviour.
* platform/ios/editing/pasteboard/smart-paste-paragraph-001-expected.txt: Added.
* platform/ios/editing/pasteboard/smart-paste-paragraph-002-expected.txt: Added.
* platform/ios/editing/pasteboard/smart-paste-paragraph-003-expected.txt: Added.
* platform/ios/editing/pasteboard/smart-paste-paragraph-004-expected.txt: Added.

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

5 months agoFix a bug from r226303 that latest build time is not correctly calculated.
dewei_zhu@apple.com [Tue, 19 Mar 2019 01:55:13 +0000 (01:55 +0000)]
Fix a bug from r226303 that latest build time is not correctly calculated.
https://bugs.webkit.org/show_bug.cgi?id=195912

Reviewed by Ryosuke Niwa.

Time series is ordered by revision time which does not grantee the build time is
monotonically increasing.

* public/v3/pages/test-freshness-page.js: Use the latest build time instead of the build time of
last point on the chart.

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

5 months agoReduce the size of Node::deref by eliminating an explicit parentNode check
rniwa@webkit.org [Tue, 19 Mar 2019 01:32:04 +0000 (01:32 +0000)]
Reduce the size of Node::deref by eliminating an explicit parentNode check
https://bugs.webkit.org/show_bug.cgi?id=195776

Reviewed by Geoffrey Garen.

This patch eliminates the nullity check of m_parentNode in Node::deref as well as the store to
m_refCount in the case of invoking Node::removedLastRef() as done for RefCounted in r30042.
Together, this patch shrinks WebCore's size by 46KB or ~0.7%.

To do this, we take we take a similar approach as WTF::String by using the lowest bit of m_refCount
to indicate whether a node has a parent or not. Regular ref-counting is done on the upper 31 bits.
Node::setParentNode updates this flag, and Node::deref() would only `delete this` if m_refCount
is identically equal to 0.

For a Document, we set m_refCounted to 0 before in the case of non-zero m_referencingNodeCount
since decrementReferencingNodeCount needs to be able to tell if there is an outstanding Ref/RefPtr
or not when m_referencingNodeCount becomes 0.

No new tests since there should be no behavioral change.

* dom/Document.cpp:
(WebCore::Document::removedLastRef):
* dom/Document.h:
(WebCore::Document::decrementReferencingNodeCount):
* dom/Node.cpp:
(WebCore::Node::Node): Moved the initialization of m_refCount to the member variable declaration.
(WebCore::Node::~Node):
(WebCore::Node::removedLastRef):
* dom/Node.h:
(WebCore::Node): Changed the type of m_refCount from signed int to uint32_t. It was changed from
unsigned int to signed int back in r11492 but I don't think the signedness is needed.
(WebCore::Node::ref): Increment the ref count by 2 (upper 31-bit).
(WebCore::Node::deref): Implemented the optimization. This is what shrinks the WebCore binary size.
(WebCore::Node::hasOneRef const):
(WebCore::Node::refCount const): Ignore the lowest bit. Without this fix, the optimization in
replaceChildrenWithFragment to avoid replacing the text node is disabled whenever there is a parent.
(WebCore::Node::setParentNode): Sets the lowest bit to 1 if the node has a parent and 0 otherwise.

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

5 months agoRemove the SVG property tear off objects for SVGAnimatedBoolean
commit-queue@webkit.org [Tue, 19 Mar 2019 00:39:41 +0000 (00:39 +0000)]
Remove the SVG property tear off objects for SVGAnimatedBoolean
https://bugs.webkit.org/show_bug.cgi?id=195862

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2019-03-18
Reviewed by Simon Fraser.

-- SVGAnimatedBoolean will be defined as SVGAnimatedPrimitiveProperty<bool>.
-- SVGAnimatedBooleanAccessor is added to access a member of this type.
-- A function registerProperty() is added to SVGPropertyOwnerRegistry
   to register this type.
-- SVGAnimatedBooleanAnimator is added to animate a member of this type.
-- SVGAnimationBooleanFunction is added to handle the progress of this
   new type over a period of time.

SVGAnimationDiscreteFunction is the base class of SVGAnimationBooleanFunction.
It will be the base class of all the discrete animation function types:
string, bool, enum and PreserveAspectRatio types.

* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* svg/SVGAnimationElement.h:
* svg/SVGAnimatorFactory.h:
(WebCore::SVGAnimatorFactory::create):
* svg/SVGClipPathElement.h:
* svg/SVGCursorElement.h:
* svg/SVGDefsElement.h:
* svg/SVGExternalResourcesRequired.cpp:
(WebCore::SVGExternalResourcesRequired::SVGExternalResourcesRequired):
(WebCore::SVGExternalResourcesRequired::parseAttribute):
(WebCore::SVGExternalResourcesRequired::registerAttributes): Deleted.
* svg/SVGExternalResourcesRequired.h:
(WebCore::SVGExternalResourcesRequired::externalResourcesRequired const):
(WebCore::SVGExternalResourcesRequired::externalResourcesRequiredAnimated):
(WebCore::SVGExternalResourcesRequired::setExternalResourcesRequired): Deleted.
* svg/SVGFEConvolveMatrixElement.cpp:
(WebCore::SVGFEConvolveMatrixElement::SVGFEConvolveMatrixElement):
(WebCore::SVGFEConvolveMatrixElement::registerAttributes):
(WebCore::SVGFEConvolveMatrixElement::parseAttribute):
* svg/SVGFEConvolveMatrixElement.h:
* svg/SVGFEImageElement.h:
* svg/SVGFontElement.h:
* svg/SVGForeignObjectElement.h:
* svg/SVGGElement.h:
* svg/SVGGradientElement.h:
* svg/SVGMPathElement.h:
* svg/SVGMarkerElement.h:
* svg/SVGMaskElement.h:
* svg/SVGPathElement.h:
* svg/SVGPatternElement.h:
* svg/SVGRectElement.h:
* svg/SVGSVGElement.h:
* svg/SVGScriptElement.h:
* svg/SVGSwitchElement.h:
* svg/SVGSymbolElement.h:
* svg/SVGTextContentElement.h:
* svg/SVGUseElement.h:
* svg/properties/SVGAnimatedPropertyAccessorImpl.h:
* svg/properties/SVGAnimatedPropertyAnimatorImpl.h:
* svg/properties/SVGAnimatedPropertyImpl.h:
* svg/properties/SVGAnimationDiscreteFunction.h: Added.
(WebCore::SVGAnimationDiscreteFunction::SVGAnimationDiscreteFunction):
(WebCore::SVGAnimationDiscreteFunction::progress):
* svg/properties/SVGAnimationDiscreteFunctionImpl.h: Added.
* svg/properties/SVGAttributeRegistry.h:
* svg/properties/SVGPropertyOwnerRegistry.h:
(WebCore::SVGPropertyOwnerRegistry::registerProperty):

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

5 months agoCrash when reloading test with async overflow scrolling
simon.fraser@apple.com [Tue, 19 Mar 2019 00:33:16 +0000 (00:33 +0000)]
Crash when reloading test with async overflow scrolling
https://bugs.webkit.org/show_bug.cgi?id=195629
<rdar://problem/48814045>

Reviewed by Antoine Quint.

RenderLayerCompositor::removeFromScrollCoordinatedLayers needs to pass the Positioning
bit to make sure we remove RenderLayers added m_scrollingNodeToLayerMap for Positioning
scrolling nodes.

Fixes crashes seen in compositing/clipping/border-radius-async-overflow-non-stacking.html
and scrollingcoordinator/scrolling-tree/remove-coordinated-frame.html.

* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::~RenderLayerBacking):
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::removeFromScrollCoordinatedLayers):

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

5 months agoWeb Inspector: Timeline: lazily create the agent
drousso@apple.com [Tue, 19 Mar 2019 00:31:24 +0000 (00:31 +0000)]
Web Inspector: Timeline: lazily create the agent
https://bugs.webkit.org/show_bug.cgi?id=195865
<rdar://problem/48965403>

Reviewed by Joseph Pecoraro.

No change in functionality.

* inspector/agents/InspectorTimelineAgent.h:
* inspector/agents/InspectorTimelineAgent.cpp:
(WebCore::InspectorTimelineAgent::InspectorTimelineAgent):
(WebCore::InspectorTimelineAgent::toggleScriptProfilerInstrument):
(WebCore::InspectorTimelineAgent::toggleHeapInstrument):
(WebCore::InspectorTimelineAgent::setFrameIdentifier):

* inspector/InspectorInstrumentation.h:
(WebCore::InspectorInstrumentation::startProfiling):
(WebCore::InspectorInstrumentation::stopProfiling):
(WebCore::InspectorInstrumentation::didRequestAnimationFrame):
(WebCore::InspectorInstrumentation::didCancelAnimationFrame):

* inspector/InstrumentingAgents.h:
(WebCore::InstrumentingAgents::inspectorScriptProfilerAgent const): Added.
(WebCore::InstrumentingAgents::setInspectorScriptProfilerAgent): Added.
* inspector/InstrumentingAgents.cpp:
(WebCore::InstrumentingAgents::reset):

* inspector/InspectorController.cpp:
(WebCore::InspectorController::InspectorController):
(WebCore::InspectorController::createLazyAgents):

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

5 months agoCut down on use of StringBuffer, possibly leading toward removing it entirely
darin@apple.com [Tue, 19 Mar 2019 00:27:10 +0000 (00:27 +0000)]
Cut down on use of StringBuffer, possibly leading toward removing it entirely
https://bugs.webkit.org/show_bug.cgi?id=195870

Reviewed by Daniel Bates.

Source/WebCore:

* dom/Document.cpp:
(WebCore::canonicalizedTitle): Fixed all the problems mentioned in "FIXME".
Made this a single function rather than a function template. Switch to
StringBuilder instead of StringBuffer. Return the original string if the
canonicalize operation doesn't change anything.
(WebCore::Document::updateTitle): Updated for the change above.

* platform/Length.cpp:
(WebCore::newCoordsArray): Use createUninitialized instead of StringBuffer.
Also got rid of unneeded use of upconvertedCharacters on a temporary string
that we explicitly created with 16-bit characters. The performance of this
function could be considerably simplified by not copying the original string
at all, but didn't do that at this time.

* platform/text/TextCodecUTF16.cpp:
(WebCore::TextCodecUTF16::decode): Use createUninitialized instead of
StringBuffer. Also renamed numChars to numCodeUnits to both switch to complete
words and to be slightly more accurate.

* rendering/RenderText.cpp:
(WebCore::convertNoBreakSpace): Added.
(WebCore::capitalize): Use Vector instead of StringBuffer. Simplify code by
using convertNoBreakSpace function. Removed code that was using StringImpl
directly for a tiny speed boost; if we want to optimize the performance of
this function we would need to do more than that. Return the original string
if it happens to already be capitalized.

Source/WTF:

* wtf/URL.cpp: Remove a now-inaccurate comment mentioning StringBuffer.

* wtf/text/StringView.cpp:
(WTF::convertASCIICase): Use createUninitialized instead of StringBuffer.

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

5 months agoUnreviewed. Rename JetStream directory to JetStream1.1
sbarati@apple.com [Tue, 19 Mar 2019 00:10:30 +0000 (00:10 +0000)]
Unreviewed. Rename JetStream directory to JetStream1.1

* JetStream: Removed.
* JetStream1.1: Copied from Websites/browserbench.org/JetStream.

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

5 months agoWKWebView.GetContentsShouldReturnAttributedString is crashing on iOS Simulator.
timothy@apple.com [Mon, 18 Mar 2019 23:54:38 +0000 (23:54 +0000)]
WKWebView.GetContentsShouldReturnAttributedString is crashing on iOS Simulator.
https://bugs.webkit.org/show_bug.cgi?id=195916

Reviewed by Tim Horton.

Source/WebCore:

* WebCore.xcodeproj/project.pbxproj: Make ColorIOS.h a private header.
* platform/ios/ColorIOS.h: Export colorFromUIColor.

Source/WebKit:

Add direct support for UIColor so it does not try to use the NSSecureCoding path.
This avoids needs to list the classes when decoding the attributes NSDictionary
and matches the macOS NSColor encoder/decoder.

* Shared/Cocoa/ArgumentCodersCocoa.mm:
(IPC::typeFromObject):
(IPC::encodeColorInternal):
(IPC::decodeColorInternal):
(IPC::encodeObject):
(IPC::decodeObject):

Tools:

* TestWebKitAPI/Tests/WebKitCocoa/WKWebViewGetContents.mm:
(TEST(WKWebView, GetContentsShouldReturnAttributedString): Fix iOS code path to pass.

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

5 months ago[WTF] Remove redundant std::move in StringConcatenate
commit-queue@webkit.org [Mon, 18 Mar 2019 23:51:42 +0000 (23:51 +0000)]
[WTF] Remove redundant std::move in StringConcatenate
https://bugs.webkit.org/show_bug.cgi?id=195798

Patch by Xan Lopez <xan@igalia.com> on 2019-03-18
Reviewed by Darin Adler.

Remove redundant calls to WTFMove in return values for this
method. C++ will already do an implicit move here since we are
returning a local value where copy/move elision is not applicable.

* wtf/text/StringConcatenate.h:
(WTF::tryMakeStringFromAdapters):

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

5 months agoDefine the type of SVGPropertyOwnerRegistry for all SVG elements
commit-queue@webkit.org [Mon, 18 Mar 2019 23:33:10 +0000 (23:33 +0000)]
Define the type of SVGPropertyOwnerRegistry for all SVG elements
https://bugs.webkit.org/show_bug.cgi?id=195859

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2019-03-18
Reviewed by Simon Fraser.

SVGPropertyOwnerRegistry will eventually replace SVGAttributeOwnerProxyImpl.

* svg/SVGAElement.h:
* svg/SVGAltGlyphElement.h:
* svg/SVGAnimationElement.h:
* svg/SVGCircleElement.h:
* svg/SVGClipPathElement.h:
* svg/SVGComponentTransferFunctionElement.h:
(WebCore::SVGComponentTransferFunctionElement::attributeRegistry):
(WebCore::SVGComponentTransferFunctionElement::isKnownAttribute):
* svg/SVGCursorElement.h:
* svg/SVGDefsElement.h:
* svg/SVGElement.h:
* svg/SVGEllipseElement.h:
* svg/SVGExternalResourcesRequired.h:
(WebCore::SVGExternalResourcesRequired::isKnownAttribute):
* svg/SVGFEBlendElement.h:
* svg/SVGFEColorMatrixElement.h:
* svg/SVGFEComponentTransferElement.h:
* svg/SVGFECompositeElement.h:
* svg/SVGFEConvolveMatrixElement.h:
* svg/SVGFEDiffuseLightingElement.h:
* svg/SVGFEDisplacementMapElement.h:
* svg/SVGFEDropShadowElement.h:
* svg/SVGFEGaussianBlurElement.h:
* svg/SVGFEImageElement.h:
* svg/SVGFELightElement.h:
(WebCore::SVGFELightElement::attributeRegistry):
(WebCore::SVGFELightElement::isKnownAttribute):
* svg/SVGFEMergeNodeElement.h:
* svg/SVGFEMorphologyElement.h:
* svg/SVGFEOffsetElement.h:
* svg/SVGFESpecularLightingElement.h:
* svg/SVGFETileElement.h:
* svg/SVGFETurbulenceElement.cpp:
(WebCore::SVGFETurbulenceElement::svgAttributeChanged):
* svg/SVGFETurbulenceElement.h:
* svg/SVGFilterElement.h:
* svg/SVGFilterPrimitiveStandardAttributes.h:
(WebCore::SVGFilterPrimitiveStandardAttributes::isKnownAttribute):
* svg/SVGFitToViewBox.h:
(WebCore::SVGFitToViewBox::isKnownAttribute):
* svg/SVGFontElement.h:
* svg/SVGForeignObjectElement.h:
* svg/SVGGElement.h:
* svg/SVGGeometryElement.h:
(WebCore::SVGGeometryElement::isKnownAttribute):
* svg/SVGGlyphRefElement.h:
* svg/SVGGradientElement.h:
(WebCore::SVGGradientElement::isKnownAttribute):
* svg/SVGGraphicsElement.h:
(WebCore::SVGGraphicsElement::isKnownAttribute):
* svg/SVGImageElement.h:
* svg/SVGLineElement.h:
* svg/SVGLinearGradientElement.h:
* svg/SVGMPathElement.h:
* svg/SVGMarkerElement.h:
* svg/SVGMaskElement.h:
* svg/SVGPathElement.h:
* svg/SVGPatternElement.h:
* svg/SVGPolyElement.h:
(WebCore::SVGPolyElement::attributeRegistry):
(WebCore::SVGPolyElement::isKnownAttribute):
* svg/SVGRadialGradientElement.h:
* svg/SVGRectElement.h:
* svg/SVGSVGElement.h:
* svg/SVGScriptElement.h:
* svg/SVGStopElement.h:
* svg/SVGSwitchElement.h:
* svg/SVGSymbolElement.h:
* svg/SVGTRefElement.h:
* svg/SVGTests.h:
* svg/SVGTextContentElement.h:
(WebCore::SVGTextContentElement::isKnownAttribute):
* svg/SVGTextPathElement.h:
* svg/SVGTextPositioningElement.h:
(WebCore::SVGTextPositioningElement::isKnownAttribute):
* svg/SVGURIReference.h:
* svg/SVGUseElement.h:
* svg/SVGViewElement.h:
* svg/SVGViewSpec.h:
* svg/SVGZoomAndPan.cpp:
(WebCore::SVGZoomAndPan::parseZoomAndPan):
(WebCore::SVGZoomAndPan::parseAttribute):
(WebCore::SVGZoomAndPan::SVGZoomAndPan): Deleted.
(WebCore::SVGZoomAndPan::registerAttributes): Deleted.
* svg/SVGZoomAndPan.h:
(WebCore::SVGZoomAndPan::zoomAndPan const):
(WebCore::SVGZoomAndPan::setZoomAndPan):
(WebCore::SVGZoomAndPan::reset):
(WebCore::SVGZoomAndPan::attributeRegistry): Deleted.
(WebCore::SVGZoomAndPan::isKnownAttribute): Deleted.

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

5 months agoAdd new NSAttributedString API for converting HTML.
timothy@apple.com [Mon, 18 Mar 2019 23:32:20 +0000 (23:32 +0000)]
Add new NSAttributedString API for converting HTML.
https://bugs.webkit.org/show_bug.cgi?id=195636
rdar://problem/45055697

Reviewed by Tim Horton.

Source/WebCore:

* en.lproj/Localizable.strings: Updated.

Source/WebKit:

* Platform/spi/ios/UIKitSPI.h:
* SourcesCocoa.txt:
* UIProcess/API/Cocoa/NSAttributedString.h: Added.
* UIProcess/API/Cocoa/NSAttributedString.mm: Added.
(-[_WKAttributedStringNavigationDelegate webView:decidePolicyForNavigationAction:decisionHandler:]):
(-[_WKAttributedStringNavigationDelegate webView:didFailProvisionalNavigation:withError:]):
(-[_WKAttributedStringNavigationDelegate webView:didFailNavigation:withError:]):
(-[_WKAttributedStringNavigationDelegate webView:didFinishNavigation:]):
(+[_WKAttributedStringWebViewCache cache]):
(+[_WKAttributedStringWebViewCache configuration]):
(+[_WKAttributedStringWebViewCache clearConfiguration]):
(+[_WKAttributedStringWebViewCache retrieveOrCreateWebView]):
(+[_WKAttributedStringWebViewCache cacheWebView:]):
(+[_WKAttributedStringWebViewCache resetPurgeDelay]):
(+[_WKAttributedStringWebViewCache purgeSingleWebView]):
(+[_WKAttributedStringWebViewCache purgeAllWebViews]):
(+[NSAttributedString _loadFromHTMLWithOptions:contentLoader:completionHandler:]):
(+[NSAttributedString loadFromHTMLWithRequest:options:completionHandler:]):
(+[NSAttributedString loadFromHTMLWithFileURL:options:completionHandler:]):
(+[NSAttributedString loadFromHTMLWithString:options:completionHandler:]):
(+[NSAttributedString loadFromHTMLWithData:options:completionHandler:]):
* UIProcess/API/Cocoa/NSAttributedStringPrivate.h: Copied from Source/WebKit/UIProcess/API/Cocoa/WKErrorInternal.h.
* UIProcess/API/Cocoa/WKError.h:
* UIProcess/API/Cocoa/WKError.mm:
(localizedDescriptionForErrorCode):
(createNSError):
* UIProcess/API/Cocoa/WKErrorInternal.h:
* WebKit.xcodeproj/project.pbxproj:
* WebProcess/WebPage/Cocoa/WebPageCocoa.mm:
(WebKit::WebPage::getContentsAsAttributedString):

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

5 months agoCall transition and animation callbacks on non-composited renderers too.
zalan@apple.com [Mon, 18 Mar 2019 22:45:47 +0000 (22:45 +0000)]
Call transition and animation callbacks on non-composited renderers too.
https://bugs.webkit.org/show_bug.cgi?id=195907

Reviewed by Simon Fraser.

These callbacks are not composited specific functions.

* page/animation/AnimationBase.cpp:
(WebCore::AnimationBase::freezeAtTime):
(WebCore::AnimationBase::compositedRenderer const): Deleted.
* page/animation/AnimationBase.h:
* page/animation/ImplicitAnimation.cpp:
(WebCore::ImplicitAnimation::startAnimation):
(WebCore::ImplicitAnimation::pauseAnimation):
(WebCore::ImplicitAnimation::endAnimation):
* page/animation/KeyframeAnimation.cpp:
(WebCore::KeyframeAnimation::startAnimation):
(WebCore::KeyframeAnimation::pauseAnimation):
(WebCore::KeyframeAnimation::endAnimation):
* rendering/RenderLayerModelObject.cpp:
(WebCore::RenderLayerModelObject::startTransition):
(WebCore::RenderLayerModelObject::transitionPaused):
(WebCore::RenderLayerModelObject::transitionFinished):
(WebCore::RenderLayerModelObject::startAnimation):
(WebCore::RenderLayerModelObject::animationPaused):
(WebCore::RenderLayerModelObject::animationSeeked):
(WebCore::RenderLayerModelObject::animationFinished):
(WebCore::RenderLayerModelObject::suspendAnimations):

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

5 months agoAdd a secondary e-mail address for Fujii Hironori to make tools happier.
ap@apple.com [Mon, 18 Mar 2019 22:42:11 +0000 (22:42 +0000)]
Add a secondary e-mail address for Fujii Hironori to make tools happier.

* Scripts/webkitpy/common/config/contributors.json:

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

5 months agoImplement DownloadMonitor to prevent long-running slow downloads from background...
commit-queue@webkit.org [Mon, 18 Mar 2019 22:38:55 +0000 (22:38 +0000)]
Implement DownloadMonitor to prevent long-running slow downloads from background apps
https://bugs.webkit.org/show_bug.cgi?id=195785

Patch by Alex Christensen <achristensen@webkit.org> on 2019-03-18
Reviewed by Geoffrey Garen.

Source/WebKit:

This is similar to what was updated in <rdar://problem/42677685> but for WebKit Downloads.
To test it I implemented a throttled TCP server, SPI to speed up DownloadMonitor's timer,
and SPI to synthesize the application going into the background and foreground, which
NSNotificationCenter does on iOS.

* NetworkProcess/Downloads/Download.cpp:
(WebKit::Download::didReceiveData):
(WebKit::Download::didFinish):
(WebKit::Download::didFail):
(WebKit::Download::didCancel):
* NetworkProcess/Downloads/Download.h:
(WebKit::Download::applicationEnteredBackground):
(WebKit::Download::applicationEnteredForeground):
(WebKit::Download::manager const):
* NetworkProcess/Downloads/DownloadManager.cpp:
(WebKit::DownloadManager::downloadFinished):
(WebKit::DownloadManager::applicationDidEnterBackground):
(WebKit::DownloadManager::applicationWillEnterForeground):
* NetworkProcess/Downloads/DownloadManager.h:
* NetworkProcess/Downloads/DownloadMap.cpp:
(WebKit::DownloadMap::values):
* NetworkProcess/Downloads/DownloadMap.h:
* NetworkProcess/Downloads/DownloadMonitor.cpp: Added.
(WebKit::operator _kbps):
(WebKit::timeUntilNextInterval):
(WebKit::DownloadMonitor::DownloadMonitor):
(WebKit::DownloadMonitor::measuredThroughputRate const):
(WebKit::DownloadMonitor::downloadReceivedBytes):
(WebKit::DownloadMonitor::applicationEnteredForeground):
(WebKit::DownloadMonitor::applicationEnteredBackground):
(WebKit::DownloadMonitor::speedMultiplier const):
(WebKit::DownloadMonitor::timerFired):
* NetworkProcess/Downloads/DownloadMonitor.h: Added.
* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::initializeNetworkProcess):
(WebKit::NetworkProcess::applicationDidEnterBackground):
(WebKit::NetworkProcess::applicationWillEnterForeground):
* NetworkProcess/NetworkProcess.h:
* NetworkProcess/NetworkProcess.messages.in:
* NetworkProcess/NetworkProcessCreationParameters.cpp:
(WebKit::NetworkProcessCreationParameters::encode const):
(WebKit::NetworkProcessCreationParameters::decode):
* NetworkProcess/NetworkProcessCreationParameters.h:
* Sources.txt:
* SourcesCocoa.txt:
* UIProcess/API/APIProcessPoolConfiguration.cpp:
(API::ProcessPoolConfiguration::copy):
* UIProcess/API/APIProcessPoolConfiguration.h:
* UIProcess/API/C/WKContext.cpp:
(WKContextDownloadURLRequest):
(WKContextResumeDownload):
* UIProcess/API/Cocoa/WKProcessPool.mm:
(-[WKProcessPool _synthesizeAppIsBackground:]):
(-[WKProcessPool _downloadURLRequest:originatingWebView:]):
* UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
* UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h:
* UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm:
(-[_WKProcessPoolConfiguration downloadMonitorSpeedMultiplier]):
(-[_WKProcessPoolConfiguration setDownloadMonitorSpeedMultiplier:]):
* UIProcess/Cocoa/DownloadProxyMapCocoa.mm: Added.
(WebKit::DownloadProxyMap::platformCreate):
(WebKit::DownloadProxyMap::platformDestroy):
* UIProcess/Cocoa/WebProcessPoolCocoa.mm:
(WebKit::WebProcessPool::platformInitializeNetworkProcess):
* UIProcess/Downloads/DownloadProxy.cpp:
(WebKit::DownloadProxy::didFinish):
(WebKit::DownloadProxy::didFail):
(WebKit::DownloadProxy::didCancel):
* UIProcess/Downloads/DownloadProxyMap.cpp:
(WebKit::DownloadProxyMap::DownloadProxyMap):
(WebKit::DownloadProxyMap::~DownloadProxyMap):
(WebKit::DownloadProxyMap::platformCreate):
(WebKit::DownloadProxyMap::platformDestroy):
(WebKit::DownloadProxyMap::applicationDidEnterBackground):
(WebKit::DownloadProxyMap::applicationWillEnterForeground):
(WebKit::DownloadProxyMap::createDownloadProxy):
(WebKit::DownloadProxyMap::downloadFinished):
* UIProcess/Downloads/DownloadProxyMap.h:
* UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::synthesizeAppIsBackground):
(WebKit::NetworkProcessProxy::createDownloadProxy):
* UIProcess/Network/NetworkProcessProxy.h:
* UIProcess/PageClient.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::receivedPolicyDecision):
(WebKit::WebPageProxy::handleDownloadRequest):
* UIProcess/WebPageProxy.h:
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::download):
(WebKit::WebProcessPool::resumeDownload):
(WebKit::WebProcessPool::createDownloadProxy):
(WebKit::WebProcessPool::synthesizeAppIsBackground):
* UIProcess/WebProcessPool.h:
* UIProcess/ios/PageClientImplIOS.h:
* UIProcess/ios/PageClientImplIOS.mm:
(WebKit::PageClientImpl::handleDownloadRequest):
* UIProcess/mac/PageClientImplMac.h:
* UIProcess/mac/PageClientImplMac.mm:
(WebKit::PageClientImpl::handleDownloadRequest):
* WebKit.xcodeproj/project.pbxproj:

Tools:

* TestWebKitAPI/TCPServer.cpp: Added.
(TestWebKitAPI::TCPServer::TCPServer):
(TestWebKitAPI::TCPServer::~TCPServer):
(TestWebKitAPI::TCPServer::socketBindListen):
(TestWebKitAPI::TCPServer::waitForAndReplyToRequests):
* TestWebKitAPI/TCPServer.h: Added.
(TestWebKitAPI::TCPServer::port const):
* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebKitCocoa/Download.mm:
(-[DownloadMonitorTestDelegate _downloadDidStart:]):
(-[DownloadMonitorTestDelegate _downloadDidCancel:]):
(-[DownloadMonitorTestDelegate _download:decideDestinationWithSuggestedFilename:completionHandler:]):
(-[DownloadMonitorTestDelegate _download:didReceiveData:]):
(TestWebKitAPI::respondSlowly):
(TestWebKitAPI::webViewWithDownloadMonitorSpeedMultiplier):
(TestWebKitAPI::downloadAtRate):
(TestWebKitAPI::TEST):

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

5 months agoAdd experimental "alphaChannel" property to VideoConfiguration
jer.noble@apple.com [Mon, 18 Mar 2019 22:29:55 +0000 (22:29 +0000)]
Add experimental "alphaChannel" property to VideoConfiguration
https://bugs.webkit.org/show_bug.cgi?id=195853

Reviewed by Eric Carlson.

Source/WebCore:

Test: media/mediacapabilities/mock-decodingInfo-alphaChannel.html

Add a new, experimental addition to Media Capabilities to allow pages to query for
alpha channel support.

* Modules/mediacapabilities/MediaCapabilities.cpp:
(WebCore::MediaCapabilities::decodingInfo):
* Modules/mediacapabilities/MediaCapabilities.h:
* Modules/mediacapabilities/MediaCapabilities.idl:
* Modules/mediacapabilities/VideoConfiguration.idl:
* SourcesCocoa.txt:
* WebCore.xcodeproj/project.pbxproj:
* platform/cocoa/VideoToolboxSoftLink.cpp:
* platform/cocoa/VideoToolboxSoftLink.h:
* platform/graphics/cocoa/HEVCUtilitiesCocoa.h:
* platform/graphics/cocoa/HEVCUtilitiesCocoa.mm: Renamed from Source/WebCore/platform/graphics/cocoa/HEVCUtilitiesCocoa.cpp.
(WebCore::validateHEVCParameters):
* platform/graphics/cocoa/MediaEngineConfigurationFactoryCocoa.cpp:
(WebCore::createMediaPlayerDecodingConfigurationCocoa):
* platform/mediacapabilities/VideoConfiguration.h:
* platform/mock/MediaEngineConfigurationFactoryMock.cpp:
(WebCore::canDecodeMedia):
(WebCore::canEncodeMedia):

LayoutTests:

* media/mediacapabilities/mock-decodingInfo-alphaChannel-expected.txt: Added.
* media/mediacapabilities/mock-decodingInfo-alphaChannel.html: Added.

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

5 months agoRemove unused webkitEditableContentChanged event
rniwa@webkit.org [Mon, 18 Mar 2019 21:57:54 +0000 (21:57 +0000)]
Remove unused webkitEditableContentChanged event
https://bugs.webkit.org/show_bug.cgi?id=195909

Reviewed by Wenson Hsieh.

Removed webkitEditableContentChanged event which is no longer used after r206944.

Note that only WebKit's C++ code can fire events in TextControlInnerElements
since the element is an implementation detail of input and textarea elements.

* dom/EventNames.h:
* html/shadow/TextControlInnerElements.cpp:
(WebCore::TextControlInnerTextElement::defaultEventHandler):

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

5 months ago[WHLSL] Hook up the compiler to our WebGPU implementation
mmaxfield@apple.com [Mon, 18 Mar 2019 21:30:58 +0000 (21:30 +0000)]
[WHLSL] Hook up the compiler to our WebGPU implementation
https://bugs.webkit.org/show_bug.cgi?id=195509

Unreviewed.

Update after r243091.

Source/WebCore:

* Modules/webgpu/WHLSL/WHLSLSynthesizeConstructors.cpp:
* platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm:
(WebCore::trySetWHLSLFunctionsForPipelineDescriptor):

LayoutTests:

* webgpu/whlsl.html:

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

5 months agoREGRESSION(r236862): early frame decoupling leaves JSC ArrayBuffer objects lingering
cdumez@apple.com [Mon, 18 Mar 2019 21:27:09 +0000 (21:27 +0000)]
REGRESSION(r236862): early frame decoupling leaves JSC ArrayBuffer objects lingering
https://bugs.webkit.org/show_bug.cgi?id=195322

Reviewed by Ryosuke Niwa.

Since r236862, DOMWindow objects get disconnected from their Frame object as soon as
their iframe element gets removed from the document. Previously, DOMWindow was a
FrameDestructionObserver and would stay connected to its frame until the frame died.

This means that some of the work that we were doing in DOMWindow::frameDestroyed() and
Document::willDetachPage() no longer happens for subframe windows because they get
disconnected from their frame because they get a chance to get such notifications.
To address this issue, we now also do this work in DOMWindow::willDetachDocumentFromFrame()
which gets called when the iframe gets removed from the document and the document / window
get disconnected from the Frame element.

No new tests, verified locally that the leak is gone on JetStream.

* page/DOMWindow.cpp:
(WebCore::DOMWindow::willDetachDocumentFromFrame):

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

5 months agoMove animation and transition functions from RenderBoxModelObject to RenderElement
zalan@apple.com [Mon, 18 Mar 2019 21:25:37 +0000 (21:25 +0000)]
Move animation and transition functions from RenderBoxModelObject to RenderElement
https://bugs.webkit.org/show_bug.cgi?id=195903

Reviewed by Simon Fraser.

Transitions and animations do not require RenderBoxModelObject. Move these functions to RenderElement and override them at RenderLayerModelObject to support
composition related callbacks.

* page/animation/AnimationBase.cpp:
(WebCore::AnimationBase::compositedRenderer const):
* page/animation/AnimationBase.h:
* rendering/RenderBoxModelObject.cpp:
(WebCore::RenderBoxModelObject::startTransition): Deleted.
(WebCore::RenderBoxModelObject::transitionPaused): Deleted.
(WebCore::RenderBoxModelObject::transitionFinished): Deleted.
(WebCore::RenderBoxModelObject::startAnimation): Deleted.
(WebCore::RenderBoxModelObject::animationPaused): Deleted.
(WebCore::RenderBoxModelObject::animationSeeked): Deleted.
(WebCore::RenderBoxModelObject::animationFinished): Deleted.
(WebCore::RenderBoxModelObject::suspendAnimations): Deleted.
* rendering/RenderBoxModelObject.h:
* rendering/RenderElement.cpp:
(WebCore::RenderElement::startTransition):
(WebCore::RenderElement::transitionPaused):
(WebCore::RenderElement::transitionFinished):
(WebCore::RenderElement::startAnimation):
(WebCore::RenderElement::animationPaused):
(WebCore::RenderElement::animationSeeked):
(WebCore::RenderElement::animationFinished):
(WebCore::RenderElement::suspendAnimations):
* rendering/RenderElement.h:

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