WebKit-https.git
18 months agoResource Load Statistics: Immediately forward cookie access at user interaction when...
wilander@apple.com [Tue, 13 Mar 2018 02:05:56 +0000 (02:05 +0000)]
Resource Load Statistics: Immediately forward cookie access at user interaction when there's an opener document
https://bugs.webkit.org/show_bug.cgi?id=183577
<rdar://problem/38266987>

Reviewed by Brent Fulgham.

Source/WebCore:

Tested manually on live websites.
No new automated tests because of a bug in WebKitTestRunner:
https://bugs.webkit.org/show_bug.cgi?id=183578
The event sender triggers gestures in the opener rather than
in the popup.

* dom/Document.cpp:
(WebCore::Document::removedLastRef):
    Clears the new m_primaryDomainsGrantedPageSpecificStorageAccess.
(WebCore::Document::hasGrantedPageSpecificStorageAccess):
(WebCore::Document::setHasGrantedPageSpecificStorageAccess):
* dom/Document.h:
    Added member m_primaryDomainsGrantedPageSpecificStorageAccess
    where we store domains that have been granted access.
* loader/ResourceLoadObserver.cpp:
(WebCore::ResourceLoadObserver::setGrantStorageAccessUnderOpenerCallback):
(WebCore::ResourceLoadObserver::logUserInteractionWithReducedTimeResolution):
    Now checks if there is a cross-origin opener and if so, immediately
    grants cookie access to the popup's domain if it is partitioned or
    blocked.
* loader/ResourceLoadObserver.h:
* platform/network/NetworkStorageSession.h:
    Added member m_pagesGrantedStorageAccess.
* platform/network/cf/NetworkStorageSessionCFNet.cpp:
(WebCore::NetworkStorageSession::cookieStoragePartition const):
(WebCore::NetworkStorageSession::hasStorageAccess const):
    Renamed from hasStorageAccessForFrame since the frameID now is optional.
(WebCore::NetworkStorageSession::grantStorageAccess):
    Renamed from grantStorageAccessForFrame since the frameID now is optional.
(WebCore::NetworkStorageSession::removeStorageAccessForAllFramesOnPage):
    Now removes the pageID entry in m_pagesGrantedStorageAccess.
(WebCore::NetworkStorageSession::hasStorageAccessForFrame const): Deleted.
    Renamed since the frameID now is optional.
(WebCore::NetworkStorageSession::grantStorageAccessForFrame): Deleted.
    Renamed since the frameID now is optional.

Source/WebKit:

* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::hasStorageAccessForFrame):
    Now also checks for general page access.
(WebKit::NetworkProcess::grantStorageAccess):
    Renamed from grantStorageAccessForFrame since the frameID now is optional.
(WebKit::NetworkProcess::grantStorageAccessForFrame): Deleted.
    Renamed since the frameID now is optional.
* NetworkProcess/NetworkProcess.h:
    Renaming since the frameID now is optional.
* NetworkProcess/NetworkProcess.messages.in:
    Renaming since the frameID now is optional.
* NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::logCookieInformation):
    Consequence of function renaming.
* UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::grantStorageAccess):
(WebKit::NetworkProcessProxy::grantStorageAccessForFrame): Deleted.
    Renaming since the frameID now is optional.
* UIProcess/Network/NetworkProcessProxy.h:
* UIProcess/WebResourceLoadStatisticsStore.cpp:
(WebKit::WebResourceLoadStatisticsStore::WebResourceLoadStatisticsStore):
    Renaming since the frameID now is optional.
(WebKit::WebResourceLoadStatisticsStore::requestStorageAccess):
    Handler renaming since the frameID now is optional.
(WebKit::WebResourceLoadStatisticsStore::grantStorageAccessUnderOpener):
    New function for that grants cookie access under a whole page.
* UIProcess/WebResourceLoadStatisticsStore.h:
    Member renaming since the frameID now is optional.
* UIProcess/WebResourceLoadStatisticsStore.messages.in:
    New message received straight from WebCore::ResourceLoadObserver.
* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::grantStorageAccessHandler):
    Renamed and made frameID optional.
(WebKit::WebsiteDataStore::enableResourceLoadStatisticsAndSetTestingCallback):
    Consequence of renaming and making frameID optional.
(WebKit::WebsiteDataStore::grantStorageAccessForFrameHandler): Deleted.
    Renamed and made frameID optional.
* UIProcess/WebsiteData/WebsiteDataStore.h:
* WebProcess/WebProcess.cpp:
(WebProcess::WebProcess):
    Now calls setGrantStorageAccessUnderOpenerCallback() on the shared
    WebCore::ResourceLoadObserver.

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

18 months agoStop using SDK conditionals to control feature definitions
timothy_horton@apple.com [Tue, 13 Mar 2018 01:38:34 +0000 (01:38 +0000)]
Stop using SDK conditionals to control feature definitions
https://bugs.webkit.org/show_bug.cgi?id=183430
<rdar://problem/38251619>

Reviewed by Dan Bernstein.

Source/JavaScriptCore:

* Configurations/FeatureDefines.xcconfig:
* Configurations/WebKitTargetConditionals.xcconfig: Renamed.

Source/ThirdParty/libwebrtc:

* Configurations/WebKitTargetConditionals.xcconfig: Renamed.
* Configurations/opus.xcconfig:

Source/WebCore:

* Configurations/FeatureDefines.xcconfig:
* Configurations/WebKitTargetConditionals.xcconfig: Renamed.

Source/WebCore/PAL:

* Configurations/FeatureDefines.xcconfig:
* Configurations/WebKitTargetConditionals.xcconfig: Renamed.

Source/WebKit:

* Configurations/FeatureDefines.xcconfig:
* Configurations/WebKitTargetConditionals.xcconfig: Renamed.

Source/WebKitLegacy/mac:

* Configurations/FeatureDefines.xcconfig:
* Configurations/WebKitTargetConditionals.xcconfig: Renamed.

Tools:

* TestWebKitAPI/Configurations/FeatureDefines.xcconfig:
* TestWebKitAPI/Configurations/WebKitTargetConditionals.xcconfig: Renamed.

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

18 months agoReturn boolean from DOMTokenList's replace() method
cdumez@apple.com [Tue, 13 Mar 2018 01:37:23 +0000 (01:37 +0000)]
Return boolean from DOMTokenList's replace() method
https://bugs.webkit.org/show_bug.cgi?id=183567

Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

Rebaseline web platform test now that all checks are passing.

* web-platform-tests/dom/nodes/Element-classlist-expected.txt:

Source/WebCore:

Have DOMTokenList's replace() method return a boolean indicating if the
token was replaced, as per:
- https://dom.spec.whatwg.org/#dom-domtokenlist-replace

This is a recent addition to the DOM specification:
- https://github.com/whatwg/dom/pull/582

No new tests, rebaselined existing test.

* html/DOMTokenList.cpp:
(WebCore::replaceInOrderedSet):
(WebCore::DOMTokenList::replace):
* html/DOMTokenList.h:
* html/DOMTokenList.idl:

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

18 months ago[DRT] TestOptions should not be ObjC.
ross.kirsling@sony.com [Tue, 13 Mar 2018 01:29:46 +0000 (01:29 +0000)]
[DRT] TestOptions should not be ObjC.
https://bugs.webkit.org/show_bug.cgi?id=183487

Reviewed by Per Arne Vollan.

* DumpRenderTree/CMakeLists.txt:
* DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
* DumpRenderTree/PlatformMac.cmake:
Move TestOptions to platform-agnostic sources.

* DumpRenderTree/TestOptions.h:
* DumpRenderTree/TestOptions.cpp: Renamed from Tools/DumpRenderTree/TestOptions.mm.
* DumpRenderTree/mac/DumpRenderTree.mm:
Remove NSURL dependency and align with WTR as much as possible.

* DumpRenderTree/win/DumpRenderTree.cpp:
Consume TestOptions (recognizing just the ones that have WebPreferences defined for now).

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

18 months agoIgnore some deprecation warnings encountered when compiling with newer versions of ICU
bburg@apple.com [Mon, 12 Mar 2018 23:46:06 +0000 (23:46 +0000)]
Ignore some deprecation warnings encountered when compiling with newer versions of ICU
https://bugs.webkit.org/show_bug.cgi?id=183584
<rdar://problem/38395317>

Reviewed by Daniel Bates.

Ignore new deprecation warnings. Where a function has more than one
deprecation warning, mark out the entire function so it remains readable.

* editing/TextIterator.cpp:
* platform/graphics/SurrogatePairAwareTextIterator.cpp:
(WebCore::SurrogatePairAwareTextIterator::normalizeVoicingMarks):
* platform/text/TextEncoding.cpp:

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

18 months agoRuntime flag for link prefetch and remove link subresource.
yoav@yoav.ws [Mon, 12 Mar 2018 23:28:45 +0000 (23:28 +0000)]
Runtime flag for link prefetch and remove link subresource.
https://bugs.webkit.org/show_bug.cgi?id=183540

Reviewed by Chris Dumez.

.:

Remove the LINK_PREFETCH build time flag.

* Source/cmake/OptionsWin.cmake:
* Source/cmake/WebKitFeatures.cmake:
* Source/cmake/tools/vsprops/FeatureDefines.props:
* Source/cmake/tools/vsprops/FeatureDefinesCairo.props:

Source/JavaScriptCore:

Remove the LINK_PREFETCH build time flag.

* Configurations/FeatureDefines.xcconfig:

Source/WebCore:

This patch removes the LINK_PREFETCH build time flag, removes
link subresource, adds an off-by-default runtime flag for link
prefetch and makes sure link prefetch only works when this flag is on.

Subresource is removed as it's not a part of any spec, nor supported by any
other browser. It was replaced by link preload.

No new tests as this is not adding any new functionality.

* Configurations/FeatureDefines.xcconfig: Remove the LINK_PREFETCH flag.
* html/LinkRelAttribute.cpp:
(WebCore::LinkRelAttribute::LinkRelAttribute): Put prefetch support behind the runtime flag.
(WebCore::LinkRelAttribute::isSupported): Add prefetch.
* html/LinkRelAttribute.h: Remove the LINK_PREFETCH flag.
* loader/LinkLoader.cpp:
(WebCore::createLinkPreloadResourceClient): Remove the LINK_PREFETCH flag.
(WebCore::LinkLoader::prefetchIfNeeded): Move the prefetch code to `prefetchIfNeeded()`. Remove subresource bits.
(WebCore::LinkLoader::loadLink): Call `prefetchIfNeeded()`.
* loader/LinkLoader.h:
* loader/ResourceLoadInfo.cpp:
(WebCore::toResourceType): Remove the LINK_PREFETCH flag as well as subresource.
* loader/SubresourceLoader.cpp:
(WebCore::logResourceLoaded): Remove the LINK_PREFETCH flag as well as subresource.
* loader/cache/CachedResource.cpp:
(WebCore::CachedResource::defaultPriorityForResourceType): Remove the LINK_PREFETCH flag as well as subresource.
(WebCore::CachedResource::load): Remove the LINK_PREFETCH flag.
* loader/cache/CachedResource.h:
(WebCore::CachedResource::ignoreForRequestCount const): Remove the LINK_PREFETCH flag as well as subresource.
* loader/cache/CachedResourceLoader.cpp:
(WebCore::createResource): Remove the LINK_PREFETCH flag as well as subresource.
(WebCore::CachedResourceLoader::requestLinkResource): Remove subresource.
(WebCore::contentTypeFromResourceType): Remove the LINK_PREFETCH flag as well as subresource.
(WebCore::CachedResourceLoader::checkInsecureContent const): Remove the LINK_PREFETCH flag as well as subresource.
(WebCore::CachedResourceLoader::shouldUpdateCachedResourceWithCurrentRequest): Remove the LINK_PREFETCH flag as well as subresource.
* loader/cache/CachedResourceLoader.h:
* page/RuntimeEnabledFeatures.h:
(WebCore::RuntimeEnabledFeatures::setLinkPrefetchEnabled): Set the prefetch flag.
(WebCore::RuntimeEnabledFeatures::linkPrefetchEnabled const): Get the prefetch flag.

Source/WebCore/PAL:

Remove the LINK_PREFETCH build time flag.

* Configurations/FeatureDefines.xcconfig:

Source/WebKit:

Remove the LINK_PREFETCH build time flag.

* Configurations/FeatureDefines.xcconfig:
* WebProcess/Network/WebLoaderStrategy.cpp:
(WebKit::maximumBufferingTime):

Source/WebKitLegacy/mac:

Remove the LINK_PREFETCH build time flag.

* Configurations/FeatureDefines.xcconfig:

Source/WTF:

Remove the LINK_PREFETCH build time flag.

* wtf/FeatureDefines.h:

Tools:

Remove the LINK_PREFETCH build time flag.

* TestWebKitAPI/Configurations/FeatureDefines.xcconfig:

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

18 months agoVersioning.
jmarcell@apple.com [Mon, 12 Mar 2018 23:21:32 +0000 (23:21 +0000)]
Versioning.

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

18 months agoLoad may get committed before receiving policy for the resource response
cdumez@apple.com [Mon, 12 Mar 2018 23:06:51 +0000 (23:06 +0000)]
Load may get committed before receiving policy for the resource response
https://bugs.webkit.org/show_bug.cgi?id=183579
<rdar://problem/38268780>

Reviewed by Youenn Fablet.

Source/WebKit:

r228852 updated WebResourceLoader::didReceiveResponse to only send the
ContinueDidReceiveResponse IPC back to the Networkprocess *after* the
policy decision for the resource response has been made. This is necessary
now that policy decisions can be made asynchronously.

However, one of the 2 code paths in NetworkProcess side (code path when
the resource is already in the HTTP disk cache) failed to wait for the
ContinueDidReceiveResponse IPC before sending over the data to the WebProcess.
As a result, the WebProcess could commit the load before even receiving the
policy response from the client.

* NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::continueDidReceiveResponse):
(WebKit::NetworkResourceLoader::didRetrieveCacheEntry):
(WebKit::NetworkResourceLoader::continueProcessingCachedEntryAfterDidReceiveResponse):
* NetworkProcess/NetworkResourceLoader.h:
Make sure NetworkResourceLoader::didRetrieveCacheEntry() does not start sending the data
until the network process gets the ContinueDidReceiveResponse IPC back from the WebProcess.

* WebProcess/Network/WebResourceLoader.cpp:
(WebKit::WebResourceLoader::didReceiveResponse):
(WebKit::WebResourceLoader::didReceiveData):
* WebProcess/Network/WebResourceLoader.h:
Add assertion to make sure didReceiveData() never gets called before didReceiveResponse's
completion handler has been called. If this hits, then the load may get committed even
though the client did not reply to the policy for the resource response yet.

LayoutTests:

Add layout test coverage.

* http/tests/cache/cachedEntry-waits-for-response-policy-expected.txt: Added.
* http/tests/cache/cachedEntry-waits-for-response-policy.html: Added.

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

18 months agoUnreviewed, rebaseline two cssom tests after r229544.
ryanhaddad@apple.com [Mon, 12 Mar 2018 23:01:26 +0000 (23:01 +0000)]
Unreviewed, rebaseline two cssom tests after r229544.

* web-platform-tests/cssom-view/interfaces-expected.txt:
* web-platform-tests/cssom/interfaces-expected.txt:

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

18 months agohttp/tests/workers/service/service-worker-download.https.html times out with async...
ajuma@chromium.org [Mon, 12 Mar 2018 22:58:54 +0000 (22:58 +0000)]
http/tests/workers/service/service-worker-download.https.html times out with async policy delegates
https://bugs.webkit.org/show_bug.cgi?id=183479

Reviewed by Youenn Fablet.

Source/WebKit:

Ensure that ServiceWorkerFetchClient::m_isCheckingResponse is set before code that depends on it
executes. This bit was set by code that's posted to the runloop using 'callOnMainThread' in
ServiceWorkerFetchClient::didReceiveResponse. But when didReceiveResponse is executing, tasks for
handling didReceiveData, didFail, or didFinish may already have been posted to the runloop, and in
that case would execute before m_isCheckingResponse gets set, and then incorrectly fail to
early-out. Fix this by directly setting m_isCheckingResponse in didReceiveResponse.

* WebProcess/Storage/ServiceWorkerClientFetch.cpp:
(WebKit::ServiceWorkerClientFetch::start):
(WebKit::ServiceWorkerClientFetch::didReceiveResponse):

LayoutTests:

Add layout test coverage.

* http/tests/workers/service/service-worker-download-async-delegates.https-expected.txt: Added.
* http/tests/workers/service/service-worker-download-async-delegates.https.html: Added.

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

18 months agoGardening: speculative build fix for Windows.
mark.lam@apple.com [Mon, 12 Mar 2018 22:24:37 +0000 (22:24 +0000)]
Gardening: speculative build fix for Windows.
https://bugs.webkit.org/show_bug.cgi?id=183573

Not reviewed.

* runtime/NativeFunction.h:
(JSC::TaggedNativeFunction::TaggedNativeFunction):

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

18 months agoAdd another PtrTag.
mark.lam@apple.com [Mon, 12 Mar 2018 21:50:29 +0000 (21:50 +0000)]
Add another PtrTag.
https://bugs.webkit.org/show_bug.cgi?id=183580
<rdar://problem/38390584>

Reviewed by Keith Miller.

* runtime/PtrTag.h:

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

18 months agoRemove empty cpp files in Source/ThirdParty/libwebrtc
youenn@apple.com [Mon, 12 Mar 2018 21:43:19 +0000 (21:43 +0000)]
Remove empty cpp files in Source/ThirdParty/libwebrtc
https://bugs.webkit.org/show_bug.cgi?id=183529

Unreviewed.

Removing further empty files.

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

18 months agoRTCPeerConnection's close method should update signalingState
youenn@apple.com [Mon, 12 Mar 2018 21:16:35 +0000 (21:16 +0000)]
RTCPeerConnection's close method should update signalingState
https://bugs.webkit.org/show_bug.cgi?id=174314
<rdar://problem/33267977>

Reviewed by Eric Carlson.

LayoutTests/imported/w3c:

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

Source/WebCore:

Covered by rebased test.
Add closed as signalingState enum value.
Set peer connection signaling state to closed once close is called.

* Modules/mediastream/RTCPeerConnection.cpp:
(WebCore::RTCPeerConnection::doClose):
* Modules/mediastream/RTCSignalingState.idl:
* platform/mediastream/RTCSignalingState.h:

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

18 months agoMake a NativeFunction into a class to support pointer profiling.
mark.lam@apple.com [Mon, 12 Mar 2018 21:06:42 +0000 (21:06 +0000)]
Make a NativeFunction into a class to support pointer profiling.
https://bugs.webkit.org/show_bug.cgi?id=183573
<rdar://problem/38384697>

Reviewed by Filip Pizlo.

Source/JavaScriptCore:

1. NativeFunction is now a class, and introducing RawNativeFunction and
   TaggedNativeFunction.

   RawNativeFunction is the raw pointer type (equivalent
   to the old definition of NativeFunction).  This is mainly used for underlying
   storage inside the NativeFunction class, and also for global data tables that
   cannot embed non-trivially constructed objects.

   NativeFunction's role is mainly to encapsulate a pointer to a C function that
   we pass into the VM.

   TaggedNativeFunction encapsulates the tagged version of a pointer to a C
   function that we track in the VM.

2. Added a convenience constructor for TrustedImmPtr so that we don't have to
   cast function pointers to void* anymore when constructing a TrustedImmPtr.

3. Removed the unused CALL_RETURN macro in CommonSlowPaths.cpp.

4. Added more PtrTag utility functions.

* CMakeLists.txt:
* JavaScriptCore.xcodeproj/project.pbxproj:
* assembler/AbstractMacroAssembler.h:
(JSC::AbstractMacroAssembler::TrustedImmPtr::TrustedImmPtr):
* create_hash_table:
* interpreter/Interpreter.cpp:
(JSC::Interpreter::executeCall):
(JSC::Interpreter::executeConstruct):
* interpreter/InterpreterInlines.h:
(JSC::Interpreter::getOpcodeID):
* jit/JITThunks.cpp:
(JSC::JITThunks::hostFunctionStub):
* jit/JITThunks.h:
* llint/LLIntData.cpp:
(JSC::LLInt::initialize):
* llint/LLIntSlowPaths.cpp:
(JSC::LLInt::setUpCall):
* llint/LowLevelInterpreter.asm:
* llint/LowLevelInterpreter.cpp:
(JSC::CLoop::execute):
* llint/LowLevelInterpreter64.asm:
* offlineasm/ast.rb:
* runtime/CallData.h:
* runtime/CommonSlowPaths.cpp:
* runtime/ConstructData.h:
* runtime/InternalFunction.h:
(JSC::InternalFunction::nativeFunctionFor):
* runtime/JSCell.cpp:
(JSC::JSCell::getCallData):
(JSC::JSCell::getConstructData):
* runtime/JSFunction.h:
* runtime/JSFunctionInlines.h:
(JSC::JSFunction::nativeFunction):
(JSC::JSFunction::nativeConstructor):
(JSC::isHostFunction):
* runtime/Lookup.h:
(JSC::HashTableValue::function const):
(JSC::HashTableValue::accessorGetter const):
(JSC::HashTableValue::accessorSetter const):
(JSC::nonCachingStaticFunctionGetter):
* runtime/NativeExecutable.cpp:
(JSC::NativeExecutable::create):
(JSC::NativeExecutable::NativeExecutable):
* runtime/NativeExecutable.h:
* runtime/NativeFunction.h: Added.
(JSC::NativeFunction::NativeFunction):
(JSC::NativeFunction::operator intptr_t const):
(JSC::NativeFunction::operator bool const):
(JSC::NativeFunction::operator! const):
(JSC::NativeFunction::operator== const):
(JSC::NativeFunction::operator!= const):
(JSC::NativeFunction::operator()):
(JSC::NativeFunction::rawPointer const):
(JSC::NativeFunctionHash::hash):
(JSC::NativeFunctionHash::equal):
(JSC::TaggedNativeFunction::TaggedNativeFunction):
(JSC::TaggedNativeFunction::operator bool const):
(JSC::TaggedNativeFunction::operator! const):
(JSC::TaggedNativeFunction::operator== const):
(JSC::TaggedNativeFunction::operator!= const):
(JSC::TaggedNativeFunction::operator()):
(JSC::TaggedNativeFunction::operator NativeFunction):
(JSC::TaggedNativeFunction::rawPointer const):
(JSC::TaggedNativeFunctionHash::hash):
(JSC::TaggedNativeFunctionHash::equal):
* runtime/PtrTag.h:
(JSC::tagCFunctionPtr):
(JSC::untagCFunctionPtr):
* runtime/VM.h:
(JSC::VM::targetMachinePCForThrowOffset): Deleted.

Source/WebCore:

No new tests because there's no new behavior.  Only updating bindings.

* bindings/scripts/CodeGeneratorJS.pm:
(GenerateHashTableValueArray):
* bindings/scripts/test/JS/JSMapLike.cpp:
* bindings/scripts/test/JS/JSReadOnlyMapLike.cpp:
* bindings/scripts/test/JS/JSTestActiveDOMObject.cpp:
* bindings/scripts/test/JS/JSTestCEReactions.cpp:
* bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp:
* bindings/scripts/test/JS/JSTestCallTracer.cpp:
* bindings/scripts/test/JS/JSTestDOMJIT.cpp:
* bindings/scripts/test/JS/JSTestEnabledBySetting.cpp:
* bindings/scripts/test/JS/JSTestEventTarget.cpp:
* bindings/scripts/test/JS/JSTestGlobalObject.cpp:
* bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.cpp:
* bindings/scripts/test/JS/JSTestInterface.cpp:
* bindings/scripts/test/JS/JSTestIterable.cpp:
* bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp:
* bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp:
* bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.cpp:
* bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.cpp:
* bindings/scripts/test/JS/JSTestNamedGetterWithIdentifier.cpp:
* bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.cpp:
* bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.cpp:
* bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.cpp:
* bindings/scripts/test/JS/JSTestNamedSetterWithUnforgableProperties.cpp:
* bindings/scripts/test/JS/JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins.cpp:
* bindings/scripts/test/JS/JSTestNode.cpp:
* bindings/scripts/test/JS/JSTestObj.cpp:
* bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp:
* bindings/scripts/test/JS/JSTestSerialization.cpp:
* bindings/scripts/test/JS/JSTestSerializationInherit.cpp:
* bindings/scripts/test/JS/JSTestSerializationInheritFinal.cpp:
* bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp:
* bindings/scripts/test/JS/JSTestStringifier.cpp:
* bindings/scripts/test/JS/JSTestStringifierAnonymousOperation.cpp:
* bindings/scripts/test/JS/JSTestStringifierNamedOperation.cpp:
* bindings/scripts/test/JS/JSTestStringifierOperationImplementedAs.cpp:
* bindings/scripts/test/JS/JSTestStringifierOperationNamedToString.cpp:
* bindings/scripts/test/JS/JSTestStringifierReadOnlyAttribute.cpp:
* bindings/scripts/test/JS/JSTestStringifierReadWriteAttribute.cpp:
* bindings/scripts/test/JS/JSTestTypedefs.cpp:

Source/WTF:

Changed Poisoned so that it can be used on tagged pointers as well.

* wtf/Poisoned.h:

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

18 months agoUse a different SPI header for some AudioToolbox enums
timothy_horton@apple.com [Mon, 12 Mar 2018 20:51:41 +0000 (20:51 +0000)]
Use a different SPI header for some AudioToolbox enums
https://bugs.webkit.org/show_bug.cgi?id=183574
<rdar://problem/38385889>

Reviewed by Anders Carlsson.

Source/WebCore:

* platform/audio/ios/AudioDestinationIOS.cpp:
* platform/mediastream/mac/AudioTrackPrivateMediaStreamCocoa.cpp:
Adjust SPI imports.

Source/WebCore/PAL:

* PAL.xcodeproj/project.pbxproj:
* pal/spi/cocoa/AudioToolboxSPI.h: Added.

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

18 months agoUnreviewed, fix simple goof that was causing 32-bit DFG crashes.
fpizlo@apple.com [Mon, 12 Mar 2018 20:19:53 +0000 (20:19 +0000)]
Unreviewed, fix simple goof that was causing 32-bit DFG crashes.

* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compileCreateDirectArguments):

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

18 months ago183570_dom_wpt_resync
cdumez@apple.com [Mon, 12 Mar 2018 19:44:17 +0000 (19:44 +0000)]
183570_dom_wpt_resync

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

18 months agoWeb Inspector: Remove redundant tooltips
jond@apple.com [Mon, 12 Mar 2018 19:35:00 +0000 (19:35 +0000)]
Web Inspector: Remove redundant tooltips
https://bugs.webkit.org/show_bug.cgi?id=183099

Reviewed by Matt Baker.

* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Base/Main.js:
(WI.contentLoaded):
Instantiate ConsoleDrawer so the keyboard shortcuts for FindBanner are available.

* UserInterface/Views/BreakpointTreeElement.js:
(WI.BreakpointTreeElement):
Suppress tooltips by setting the tooltipHandledSeprately flag with no custom handler.

* UserInterface/Views/ButtonNavigationItem.js:
(WI.ButtonNavigationItem):
Only show tooltips when the button style is an image.

* UserInterface/Views/ConsoleDrawer.js:
(WI.ConsoleDrawer):
(WI.ConsoleDrawer.prototype.toggleButtonShortcutTooltip):
Added helper to set the toggle button keyboard shortcut tooltip.

* UserInterface/Views/DOMBreakpointTreeElement.js:
(WI.DOMBreakpointTreeElement):
Suppress tooltips by setting the tooltipHandledSeprately flag with no custom handler.

* UserInterface/Views/DOMNodeTreeElement.js:
(WI.DOMNodeTreeElement):
Suppress tooltips by setting the tooltipHandledSeprately flag with no custom handler.

* UserInterface/Views/FindBanner.js:
(WI.FindBanner):
* UserInterface/Views/HierarchicalPathComponent.js:
(WI.HierarchicalPathComponent):
(WI.HierarchicalPathComponent.prototype.get tooltip):
(WI.HierarchicalPathComponent.prototype.set tooltip):
(WI.HierarchicalPathComponent.prototype.get hideTooltip):
(WI.HierarchicalPathComponent.prototype.set hideTooltip):
(WI.HierarchicalPathComponent.prototype._updateElementTitleAndText):
Add tooltip management features to manage tooltips separately of the displayName,
and provide a behavior to hide tooltips while retaining the tooltip data.

* UserInterface/Views/HierarchicalPathNavigationItem.js:
(WI.HierarchicalPathNavigationItem.prototype.updateLayout):
Hide tooltips when fully visible, show tooltips for collapsed items.

* UserInterface/Views/PinnedTabBarItem.js:
(WI.PinnedTabBarItem.prototype.titleDidChange):
Set tooltips for pinned tab bar items.

* UserInterface/Views/QuickConsole.js:
(WI.QuickConsole):
Set the ConsoleDrawer toggle button tooltip after the keyboard shortcut is registered.

* UserInterface/Views/StorageTreeElement.js:
(WI.StorageTreeElement):
Suppress tooltips by setting the tooltipHandledSeprately flag with no custom handler.

* UserInterface/Views/TabBarItem.js:
(WI.TabBarItem.prototype.get title):
(WI.TabBarItem.prototype.set title):
(WI.TabBarItem.prototype.titleDidChange):
(WI.TabBarItem):
Add title property management with an overridable titleDidChange handler for
setting tooltips when needed.

* UserInterface/Views/TimelineTreeElement.js:
(WI.TimelineTreeElement):
Suppress tooltips by setting the tooltipHandledSeprately flag with no custom handler.

* UserInterface/Views/ToggleButtonNavigationItem.js:
(WI.ToggleButtonNavigationItem.prototype.set defaultToolTip):
Added a setter for manging the default tooltip of a toggle button.

* UserInterface/Views/XHRBreakpointTreeElement.js:
(WI.XHRBreakpointTreeElement):
Suppress tooltips by setting the tooltipHandledSeprately flag with no custom handler.

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

18 months agoREGRESSION(r211643): Dismissing WKActionSheet should not also dismiss its presenting...
wenson_hsieh@apple.com [Mon, 12 Mar 2018 19:25:19 +0000 (19:25 +0000)]
REGRESSION(r211643): Dismissing WKActionSheet should not also dismiss its presenting view controller
https://bugs.webkit.org/show_bug.cgi?id=183549
<rdar://problem/34960698>

Reviewed by Andy Estes.

Source/WebKit:

Fixes the bug by dismissing the presented view controller (i.e. the action sheet or the view controller being
presented during rotation) rather than the presenting view controller.

Test: ActionSheetTests.DismissingActionSheetShouldNotDismissPresentingViewController

* UIProcess/ios/WKActionSheet.mm:
(-[WKActionSheet doneWithSheet:]):

Tools:

Add TestWebKitAPI support for testing WKWebViews embedded within presented view controllers, and use this to
check that dismissing an action sheet does not additionally cause the view controller being used to present the
web view to also dismiss.

* TestWebKitAPI/ClassMethodSwizzler.h: Added.
* TestWebKitAPI/ClassMethodSwizzler.mm: Added.
(TestWebKitAPI::ClassMethodSwizzler::ClassMethodSwizzler):
(TestWebKitAPI::ClassMethodSwizzler::~ClassMethodSwizzler):

Add ClassMethodSwizzler, an RAII which swizzles an Objective-C class method over its lifetime.

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/ios/ActionSheetTests.mm:

Add a new API test that loads a view controller which embeds a WKWebView, and verifies that presenting and then
dismissing an action sheet from that web view does not cause the view controller to also dismiss.

(TestWebKitAPI::setOverrideViewControllerForFullscreenPresentation):
(TestWebKitAPI::overrideViewControllerForFullscreenPresentation):

Mock +[UIViewController _viewControllerForFullScreenPresentationFromView:] to return the web view. This works
around the fact that TestWebKitAPI is not a UI application, so certain pieces of UIKit API and SPI need to be
stubbed or mocked to simulate being a UI application. We can remove these workarounds once
https://webkit.org/b/175204 is addressed, and TestWebKitAPI becomes a UI application that can actually maintain
a root view controller and key window.

(TestWebKitAPI::TEST):
* TestWebKitAPI/cocoa/TestWKWebView.h:
* TestWebKitAPI/cocoa/TestWKWebView.mm:
(-[TestWKWebView initWithFrame:configuration:addToWindow:]):

Add a new initializer for TestWKWebView that doesn't force the view to be hosted within a UIWindow. This is used
by TestWKWebViewController to create a TestWKWebView in -loadView.

* TestWebKitAPI/ios/TestWKWebViewController.h: Added.
* TestWebKitAPI/ios/TestWKWebViewController.mm: Added.
(-[TestWKWebViewControllerWindow _beginKeyWindowDeferral]):
(-[TestWKWebViewControllerWindow _endKeyWindowDeferral]):

Stub out these methods to prevent UIKit from hitting assertions when making this UIWindow the key window. This
can also be removed once TestWebKitAPI is a UI application.

(-[TestWKWebViewController initWithFrame:configuration:]):
(-[TestWKWebViewController loadView]):
(-[TestWKWebViewController webView]):
(-[TestWKWebViewController dismissViewControllerAnimated:completion:]):
(-[TestWKWebViewController dismissalHandler]):
(-[TestWKWebViewController setDismissalHandler:]):

Add a UIViewController helper subclass whose -view is a WKWebView. The new API test presents this view
controller. Tests may also provide a dismissalHandler, which is invoked when the view controller is being
dismissed. The new API test uses this hook to verify that the view controller containing the web view isn't also
dismissed after the action sheet goes away.

* TestWebKitAPI/ios/UIKitSPI.h:

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

18 months ago[webkitpy] Remove openssl command dependency.
commit-queue@webkit.org [Mon, 12 Mar 2018 18:05:36 +0000 (18:05 +0000)]
[webkitpy] Remove openssl command dependency.
https://bugs.webkit.org/show_bug.cgi?id=183494

Patch by Basuke Suzuki <Basuke.Suzuki@sony.com> on 2018-03-12
Reviewed by Ryosuke Niwa.

Added Python implementation of PEM file perser and switched to use that
from external `openssl` command.

* Scripts/webkitpy/common/system/pemfile.py: Added.
(load):
(BadFormatError):
(Pem):
(Pem.__init__):
(Pem.get):
(Pem.get_all):
(Pem.certificate):
(Pem.private_key):
(Pem.csr):
(Pem.certificate_request):
(Pem.certificate_signing_request):
(_parse_pem_format):
(_parse_pem_format.find_begin):
(_parse_pem_format.find_end):
(_parse_pem_format.sections):
* Scripts/webkitpy/common/system/pemfile_unittest.py: Added.
(PemFileTest):
(PemFileTest.test_parse):
(PemFileTest.test_parse_bad_format):
* Scripts/webkitpy/port/base.py:
(Port.start_websocket_server):
(Port._extract_certificate_from_pem): Deleted.
(Port._extract_private_key_from_pem): Deleted.

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

18 months agoAdd a query and fragment exception to history API's unique origin restriction.
commit-queue@webkit.org [Mon, 12 Mar 2018 17:53:39 +0000 (17:53 +0000)]
Add a query and fragment exception to history API's unique origin restriction.
https://bugs.webkit.org/show_bug.cgi?id=183028

Patch by Danyao Wang <danyao@chromium.org> on 2018-03-12
Reviewed by Brent Fulgham.

Tests: http/tests/navigation/pushstate-at-unique-origin-denied.php
       Tools/TestWebKitAPI/Tests/WebCore/URL.cpp

* page/History.cpp:
(WebCore::History::stateObjectAdded):

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

18 months agohttp/tests/security/frame-loading-via-document-write-async-delegates.html fails with...
cdumez@apple.com [Mon, 12 Mar 2018 17:50:53 +0000 (17:50 +0000)]
http/tests/security/frame-loading-via-document-write-async-delegates.html fails with async delegates
https://bugs.webkit.org/show_bug.cgi?id=183460

Reviewed by Alex Christensen.

The test has 3 frames which all initially load "about:blank". Then using document.write(), it inserts
HTML in each frame.
Frame 1: body has an onload event handler, which calls JS is click an anchor link to navigate the frame.
Frame 2: body has an onload event handler to do some logging
Frame 3: body has an onload event handler and finishes the test (calls testRunner.notifyDone())

The issue is that with asynchronous policy delegates, the first frame may not have navigated yet by the
time the third frame is loaded. Indeed, the onload event of the first frame merely clicks am anchor link
which will trigger a navigation policy check and then later navigate.

To make the test more robust, we now count the number of loads and call testRunner.notifyDone() when
we've reached the expected number of loads.

* http/tests/security/frame-loading-via-document-write-async-delegates-expected.txt: Added.
* http/tests/security/frame-loading-via-document-write-async-delegates.html: Copied from LayoutTests/http/tests/security/frame-loading-via-document-write.html.
* http/tests/security/frame-loading-via-document-write.html:
* http/tests/security/resources/frame-loading-via-document-write.js:

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

18 months agoRemove empty cpp files in Source/ThirdParty/libwebrtc
youenn@apple.com [Mon, 12 Mar 2018 16:47:59 +0000 (16:47 +0000)]
Remove empty cpp files in Source/ThirdParty/libwebrtc
https://bugs.webkit.org/show_bug.cgi?id=183529

Unreviewed.

* libwebrtc.xcodeproj/project.pbxproj: fix the build.

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

18 months agoDon't invalidate descendants for nth pseudo classes unless needed
antti@apple.com [Mon, 12 Mar 2018 16:15:46 +0000 (16:15 +0000)]
Don't invalidate descendants for nth pseudo classes unless needed
https://bugs.webkit.org/show_bug.cgi?id=183566

Reviewed by Zalan Bujtas.

We currently invalidate the whole subtrees that may match :nth-child and similar. In many common
cases we know that only the direct siblings may be affected.

* css/SelectorChecker.cpp:
(WebCore::localContextForParent):
(WebCore::SelectorChecker::matchRecursively const):

    Track if the context matches the subject element if the selector or its siblings only.

(WebCore::SelectorChecker::checkOne const):

    Use different bits of descendant and child invalidation cases.

* cssjit/SelectorCompiler.cpp:
(WebCore::SelectorCompiler::fragmentMatchesRightmostOrAdjacentElement):
(WebCore::SelectorCompiler::constructFragmentsInternal):

    Track if the context matches the subject element if the selector or its siblings only.

(WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementIsNthChild):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementIsNthChildOf):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementIsNthLastChild):

    Use different bits of descendant and child invalidation cases.

* dom/Element.cpp:
(WebCore::invalidateForForwardPositionalRules):
(WebCore::invalidateForBackwardPositionalRules):

    Invalidate more precisely based on the new bits.

(WebCore::checkForSiblingStyleChanges):
(WebCore::Element::setDescendantsAffectedByForwardPositionalRules):
(WebCore::Element::setDescendantsAffectedByBackwardPositionalRules):
(WebCore::Element::hasFlagsSetDuringStylingOfChildren const):
(WebCore::Element::rareDataDescendantsAffectedByForwardPositionalRules const):
(WebCore::Element::rareDataDescendantsAffectedByBackwardPositionalRules const):

    New bits.

* dom/Element.h:
(WebCore::Element::descendantsAffectedByForwardPositionalRules const):
(WebCore::Element::descendantsAffectedByBackwardPositionalRules const):
* dom/ElementRareData.h:
(WebCore::ElementRareData::descendantsAffectedByForwardPositionalRules const):
(WebCore::ElementRareData::setDescendantsAffectedByForwardPositionalRules):
(WebCore::ElementRareData::descendantsAffectedByBackwardPositionalRules const):
(WebCore::ElementRareData::setDescendantsAffectedByBackwardPositionalRules):
(WebCore::ElementRareData::ElementRareData):
(WebCore::ElementRareData::resetStyleRelations):
* style/StyleRelations.cpp:
(WebCore::Style::commitRelationsToRenderStyle):
(WebCore::Style::commitRelations):
* style/StyleRelations.h:

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

18 months agoRemove empty cpp files in Source/ThirdParty/libwebrtc
youenn@apple.com [Mon, 12 Mar 2018 16:14:03 +0000 (16:14 +0000)]
Remove empty cpp files in Source/ThirdParty/libwebrtc
https://bugs.webkit.org/show_bug.cgi?id=183529

Reviewed by Eric Carlson.

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

18 months agoImport WPT tests for blocked modal dialogs in sanboxed documents
fred.wang@free.fr [Mon, 12 Mar 2018 16:11:48 +0000 (16:11 +0000)]
Import WPT tests for blocked modal dialogs in sanboxed documents
https://bugs.webkit.org/show_bug.cgi?id=183568

Patch by Frederic Wang <fwang@igalia.com> on 2018-03-12
Reviewed by Youenn Fablet.

* resources/import-expectations.json:
* resources/resource-files.json:
* web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_block_modals-1-expected.txt: Added.
* web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_block_modals-1.html: Added.
* web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_block_modals-2-expected.txt: Added.
* web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_block_modals-2.html: Added.
* web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_block_modals-3-expected.txt: Added.
* web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_block_modals-3.html: Added.
* web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_block_modals-4-expected.txt: Added.
* web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_block_modals-4.html: Added.
* web-platform-tests/html/semantics/embedded-content/the-iframe-element/support/iframe-that-opens-modals.html: Added.
* web-platform-tests/html/semantics/embedded-content/the-iframe-element/support/iframe_sandbox_block_modals.js: Added.
(runTest):
* web-platform-tests/html/semantics/embedded-content/the-iframe-element/support/w3c-import.log:
* web-platform-tests/html/semantics/embedded-content/the-iframe-element/w3c-import.log:

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

18 months agoMark webanimations/css-animations.html and webanimations/css-transitions.html as...
pvollan@apple.com [Mon, 12 Mar 2018 15:42:29 +0000 (15:42 +0000)]
Mark webanimations/css-animations.html and webanimations/css-transitions.html as failures on Windows.
https://bugs.webkit.org/show_bug.cgi?id=183569

Unreviewed test gardening.

* platform/win/TestExpectations:

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

18 months agoDo not rely on Latin Modern Math to test fraction/radical bars
fred.wang@free.fr [Mon, 12 Mar 2018 14:13:03 +0000 (14:13 +0000)]
Do not rely on Latin Modern Math to test fraction/radical bars
https://bugs.webkit.org/show_bug.cgi?id=183446

Patch by Frederic Wang <fwang@igalia.com> on 2018-03-12
Reviewed by Manuel Rego Casasnovas.

mathml/opentype/fraction-line.html was added in bug 155639 to test OpenType MATH parameters
for fraction but relies on the presence of the Latin Modern Math font, which is not available
on several platforms. Since these features are now already covered by the Web Platform
tests in Layout/imported/mathml-in-html5/mathml/presentation-markup/fractions/ we just remove
the test. Similarly, mathml/presentation/fractions-linethickness.html relies on Latin Modern
Math to ensure correct linethickness and we rewrite that test to use the web font
fraction-rulethickness10000.woff instead. We perform similar rewriting for
radical-bar-visibility.html, using a WOFF font with a specified radical line thickness.
Finally, we update the test expectations accordingly on iOS, macOS and Windows platform.

* mathml/opentype/fraction-line.html: Removed. Already tested by other tests.
* mathml/opentype/fraction-line-expected.html: Ditto.
* mathml/presentation/fractions-linethickness.html: Use fraction-rulethickness10000.woff
* mathml/presentation/fractions-linethickness-expected.html: Ditto.
* mathml/presentation/radical-bar-visibility.html: Use radical-degreebottomraisepercent25-rulethickness1000.woff
* platform/ios/TestExpectations: Update expectations.
* platform/mac/TestExpectations: Ditto.
* platform/win/TestExpectations: Ditto.

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

18 months agoUnreviewed. Unbreak the WPE layout testing that's been broken since
zandobersek@gmail.com [Mon, 12 Mar 2018 13:50:36 +0000 (13:50 +0000)]
Unreviewed. Unbreak the WPE layout testing that's been broken since
r229470. Due to disassociation between ENABLE(ACCESSIBILITY) and
HAVE(ACCESSIBILITY), the injected bundle for the WPE port was left with
undefined symbols. This is fixed with ENABLE_ACCESSIBILITY being enabled
for the WPE port as well.

* Source/cmake/OptionsWPE.cmake:

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

18 months agoRemove GridLayout runtime flag
jfernandez@igalia.com [Mon, 12 Mar 2018 13:48:01 +0000 (13:48 +0000)]
Remove GridLayout runtime flag
https://bugs.webkit.org/show_bug.cgi?id=183484

Reviewed by Myles C. Maxfield.

Source/WebCore:

The Grid Layout feature has been enabled by default for almost a
year, so I think it's time to remove the runtime flag and the
codepath run when the feature is disabled.

No new tests, because there are no changes in functionality.

* css/CSSComputedStyleDeclaration.cpp:
(WebCore::valueForContentPositionAndDistributionWithOverflowAlignment):
(WebCore::ComputedStyleExtractor::valueForPropertyinStyle):
* css/StyleBuilderConverter.h:
(WebCore::StyleBuilderConverter::convertContentAlignmentData):
* css/parser/CSSParser.cpp:
(WebCore::CSSParserContext::CSSParserContext):
(WebCore::operator==):
* css/parser/CSSParserFastPaths.cpp:
(WebCore::CSSParserFastPaths::isValidKeywordPropertyAndValue):
(WebCore::CSSParserFastPaths::isKeywordPropertyID):
* css/parser/CSSParserMode.h:
(WebCore::CSSParserContextHash::hash):
* css/parser/CSSPropertyParser.cpp:
(WebCore::CSSPropertyParser::parseSingleValue):
* dom/Document.cpp:
* dom/Document.h:
* page/RuntimeEnabledFeatures.h:
* rendering/RenderFlexibleBox.cpp:
(WebCore::alignmentOffset):
* rendering/style/RenderStyle.cpp:
* rendering/style/RenderStyle.h:
(WebCore::RenderStyle::initialDefaultAlignment):
* testing/InternalSettings.cpp:
(WebCore::InternalSettings::Backup::Backup):
(WebCore::InternalSettings::Backup::restoreTo):
* testing/InternalSettings.h:
* testing/InternalSettings.idl:

Source/WebKit:

The Grid Layout feature has been enabled by default for almost a
year, so I think it's time to remove the runtime flag and the
codepath run when the feature is disabled.

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

Source/WebKitLegacy/mac:

The Grid Layout feature has been enabled by default for almost a
year, so I think it's time to remove the runtime flag and the

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

Tools:

The Grid Layout feature has been enabled by default for almost a
year, so I think it's time to remove the runtime flag and the
codepath run when the feature is disabled.

* DumpRenderTree/mac/DumpRenderTree.mm:
(enableExperimentalFeatures):

LayoutTests:

Since the GridLayout runtime flag is removed and the feature
enabled by default, we don't need the tests verifying the
codepaths run when the feature is disabled.

* css3/flexbox/flexbox-lines-must-be-stretched-by-default.html:
* css3/flexbox/new-alignment-values-invalid-if-grid-not-enabled-expected.txt: Removed.
* css3/flexbox/new-alignment-values-invalid-if-grid-not-enabled.html: Removed.
* fast/css-grid-layout/grid-disable-expected.txt: Removed.
* fast/css-grid-layout/grid-disable.html: Removed.
* fast/css/ensure-flexbox-compatibility-with-initial-values-expected.txt: Removed.
* fast/css/ensure-flexbox-compatibility-with-initial-values.html: Removed.

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

18 months ago[Web Animations] Implement CSS Animations and CSS Transitions as Web Animations
graouts@webkit.org [Mon, 12 Mar 2018 12:56:14 +0000 (12:56 +0000)]
[Web Animations] Implement CSS Animations and CSS Transitions as Web Animations
https://bugs.webkit.org/show_bug.cgi?id=183504
<rdar://problem/38372965>

LayoutTests/imported/w3c:

Reviewed by Dean Jackson and Jon Lee.

Since we've improved our implementation of getAnimations() we updated the expectations to mark
the progressions. Both tests for getAnimations() now pass 100%. Another test now fails at a later
stage and needed its expectation updated.

* web-platform-tests/web-animations/interfaces/Animatable/animate-expected.txt:
* web-platform-tests/web-animations/interfaces/Animatable/getAnimations-expected.txt:
* web-platform-tests/web-animations/interfaces/Document/getAnimations-expected.txt:

Source/WebCore:

Reviewed by Dean Jackson and Jon Lee.

Tests: webanimations/css-animations.html
       webanimations/css-transitions.html

This patch implements CSS Animations and CSS Transitions as Web Animations. The main changes are:

* StyleTreeResolver: StyleTreeResolver now has a code path to add CSSAnimation and CSSTransition objects onto the DocumentTimeline
to be picked up by the Web Animations engine. The previous CSSAnimationController code path is preserved if the runtime flag is disabled.

* AnimationTimeline: we add two new methods, updateCSSAnimationsForElement() and updateCSSTransitionsForElement() which are called from
TreeResolver::createAnimatedElementUpdate(). These look at the AnimationList for the old and new RenderStyle objects and create, update
and remove matching CSSAnimation and CSSTransition instances.

* DeclarativeAnimation: a new superclass to both CSSAnimation and CSSTransition which introduces the concept of a backingAnimation(),
which is an Animation held by the RenderStyle objects, and two virtual methods with base implementations, initialize() which is called
upon creating by create() methods in subclasses, and syncPropertiesWithBackingAnimation() which ensures that properties on the
DeclarativeAnimation objects (Web Animations side) match the backing animation (CSS side).

* KeyframeEffectReadOnly: two new important methods to create blending keyframes (KeyframeList) based on backing Animation objects,
computeCSSAnimationBlendingKeyframes() and computeCSSTransitionBlendingKeyframes().

* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* animation/AnimationEffectReadOnly.h:
(WebCore::AnimationEffectReadOnly::isKeyframeEffectReadOnly const): We fix this method such that calling it on a KeyframeEffect, which
is a subclass of KeyframeEffectReadOnly, returns true.
* animation/AnimationEffectTimingReadOnly.cpp: In order for DeclarativeAnimation::syncPropertiesWithBackingAnimation() to set the timing
function for a declarative animation's effect, we need a public method to set an effect's timing function outside of just the "easing"
property setter exposed via the JS API. So we introduce a setTimingFunction() method and call it from setEasing().
(WebCore::AnimationEffectTimingReadOnly::setEasing):
(WebCore::AnimationEffectTimingReadOnly::setTimingFunction):
* animation/AnimationEffectTimingReadOnly.h:
* animation/AnimationTimeline.cpp:
(WebCore::AnimationTimeline::~AnimationTimeline): Clear all maps and sets containing WebAnimation references to ensure these get destructed
when the AnimationTimeline is being destructed and should no longer hold a reference to them.
(WebCore::AnimationTimeline::relevantMapForAnimation): We store various subclasses of WebAnimation in dedicated maps so we can composite
animations in the correct order when animating. This function returns the correct map for a given animation such that animationWasAddedToElement()
and animationWasRemovedFromElement() mutate the right map.
(WebCore::AnimationTimeline::animationWasAddedToElement):
(WebCore::AnimationTimeline::animationWasRemovedFromElement):
(WebCore::AnimationTimeline::animationsForElement): Make sure to look for animations in the lists of CSS Animations and CSS Transitions as well
as Web Animations.
(WebCore::AnimationTimeline::updateCSSAnimationsForElement): This method is called by TreeResolver::createAnimatedElementUpdate() during style
resolution. It compares the AnimationList of the previous style and the new style for a given element, checks that animations with a given name
that were not present in the old AnimationList have a new matching CSSAnimation object for them added to the AnimationTimeline, that animations
with a given name that are no longer present in the new AnimationList have their matching CSSAnimation object removed from the AnimationTimeline,
and that animations with a given name that are present in both the old and new AnimationList have their matching CSSAnimation updated to match
the current state of the animation in the AnimationList.
(WebCore::AnimationTimeline::updateCSSTransitionsForElement): Similarly to updateCSSAnimationsForElement(), this method is called during style
resolution by TreeResolver::createAnimatedElementUpdate(). Its role is to create or remove CSSTransition objects based on the AnimationList found
in the old and new styles for a given element. It follows a slightly different logic than updateCSSAnimationsForElement() since for CSS Transitions,
there is no need to update CSSTransition objects for a CSS property existing in both the old and new AnimationList, since when a CSS transitions
property is changed, a whole new transition is initiated. However, it's important to check that different Animation objects and styles would actually
result in different timing properties and blending keyframes, so check for this as well before creating new CSSTransition objects.
* animation/AnimationTimeline.h:
(WebCore::AnimationTimeline::animations const): Change the m_animations type from HashSet to ListHashSet to guarantee we preserve the insertion order which is
required by getAnimations().
(WebCore::AnimationTimeline::hasElementAnimations const): Indicates to DocumentTimeline::updateAnimations() that there are animations targeting the provided element.
(WebCore::AnimationTimeline::elementToAnimationsMap):
(WebCore::AnimationTimeline::elementToCSSAnimationsMap):
(WebCore::AnimationTimeline::elementToCSSTransitionsMap):
* animation/CSSAnimation.cpp: CSSAnimation is now a subclass of DeclarativeAnimation and subclasses initialize() and syncPropertiesWithBackingAnimation()
to perform work specific to CSS Animations.
(WebCore::CSSAnimation::create): Set the animationName property based on the provided backing animation.
(WebCore::CSSAnimation::CSSAnimation):
(WebCore::CSSAnimation::initialize): Create the blending keyframes for this CSSAnimation.
(WebCore::CSSAnimation::syncPropertiesWithBackingAnimation): Reflect the animation-fill-mode, animation-direction, animation-iteration-count and
animation-play-state CSS properties on the AnimationEffectTimingReadOnly object associated with this CSSAnimation.
* animation/CSSAnimation.h:
* animation/CSSTransition.cpp: CSSTransition is now a subclass of DeclarativeAnimation.
(WebCore::CSSTransition::create): Set the transitionProperty property based on the provided backing animation.
(WebCore::CSSTransition::CSSTransition):
(WebCore::CSSTransition::matchesBackingAnimationAndStyles const):
(WebCore::CSSTransition::canBeListed const): Subclass this method such that we also check that we have blending keyframes for a CSSTransition to be
listed by calls to getAnimations().
* animation/CSSTransition.h:
* animation/DeclarativeAnimation.cpp: Added. This new WebAnimation subclass now is the common base class for both CSSAnimation and CSSTransition.
It establishes a relationship with a "backing animation", which is an Animation obtained from a style's AnimationList while resolving styles.
These backing animations contain all of the parsed CSS styles related to CSS Animations and CSS Transitions and we use those to set matching properties
of the Web Animations timing model in the new syncPropertiesWithBackingAnimation() virtual method, which subclasses can override to perform further
work that is specific to a given declarative animation type. The initialize() method is called during create() methods to perform common animation
setup work. Note that while both initialize() and syncPropertiesWithBackingAnimation() are called, we suspend invalidation to that animation's effect
since these methods are meant to be called during style invalidation and we would hit an assertion if we followed the usual route of calling
updateStyleIfNeeded() on the target's document during invalidation.
(WebCore::DeclarativeAnimation::DeclarativeAnimation):
(WebCore::DeclarativeAnimation::setBackingAnimation):
(WebCore::DeclarativeAnimation::initialize): Create a KeyframeEffectReadOnly for this animation and set the provided element as its target, set that
element's document's timeline and play the animation if the backing animation's play state is playing.
(WebCore::DeclarativeAnimation::syncPropertiesWithBackingAnimation): Reflect the {animation|transition}-delay, {animation|transition}-duration and
{animation|transition}-timing-function properties as set on the backing animation.
* animation/DeclarativeAnimation.h: Added.
(WebCore::DeclarativeAnimation::backingAnimation const):
* animation/DocumentTimeline.cpp:
(WebCore::DocumentTimeline::updateAnimations): Trigger style invalidation for elements targeted not just by WebAnimation instances, but also by any
of the DeclarativeAnimation subclasses. We also remove the call to updateFinishedState() which should have been removed when we implemented correct
support for asynchronous WebAnimation operations.
(WebCore::DocumentTimeline::animatedStyleForRenderer): Declarative animations are backed by KeyframeEffectReadOnly effects, so make sure we check
for KeyframeEffectReadOnly or one of its subclasses and not just KeyframeEffect since there now are animation types that use the ReadOnly variant.
(WebCore::DocumentTimeline::runningAnimationsForElementAreAllAccelerated): Same as for animatedStyleForRenderer, check for KeyframeEffectReadOnly
and not simply KeyframeEffect.
* animation/KeyframeEffectReadOnly.cpp:
(WebCore::invalidateElement): Stop forcing a style resolution as we invalidate element, marking them as dirty is sufficient. Calls to getAnimations()
already force a style resolution as needed.
(WebCore::KeyframeEffectReadOnly::create): Add a new create() method that only provides a target and which is used by DeclarativeAnimation::initialize().
(WebCore::KeyframeEffectReadOnly::getKeyframes): The previous implementation of getKeyframes() used the ParsedKeyframe list held as m_parsedKeyframes
to compute keyframes. In the case of declarative animations, there are no ParsedKeyframe since the JS API was not involved, so we use the blending keyframes
to look for keyframe data.
(WebCore::KeyframeEffectReadOnly::computeCSSAnimationBlendingKeyframes): Called by CSSAnimation::initialize(), this function creates blending keyframes by
looking up the keyframes date obtained from the @keyframes rule with this backing animation's name.
(WebCore::KeyframeEffectReadOnly::computeCSSTransitionBlendingKeyframes): Called by CSSTransition::create(), this function creates blending keyframes by
creating a 0-offset keyframe with the old style and a 1-offset keyframe with the new style as provided during TreeResolver::createAnimatedElementUpdate().
(WebCore::KeyframeEffectReadOnly::stylesWouldYieldNewCSSTransitionsBlendingKeyframes const): Called by AnimationTimeline::updateCSSTransitionsForElement()
to check that a provided backing Animation and a pair of old and new RenderStyles that may be different objects actually would yield different timing
properties and keyframe CSS values for a given CSS transition to avoid the deletion and creation of CSSTransition objects.
(WebCore::KeyframeEffectReadOnly::shouldRunAccelerated): We mistakenly assumed we always had blending keyframes, which is not always the case with a
CSSTransition where the transition style itself might be set first, but the target value after. So we should only run accelerated provided there are blending
keyframes at least, the function already returning false if it finds a blending keyframe animating a non-accelerated CSS property.
(WebCore::KeyframeEffectReadOnly::setAnimatedPropertiesInStyle): Check that there actually is a matching ParsedKeyframe to read the timing function from.
* animation/KeyframeEffectReadOnly.h:
(WebCore::KeyframeEffectReadOnly::hasBlendingKeyframes const):
* animation/WebAnimation.cpp:
(WebCore::WebAnimation::~WebAnimation): We used to do something very wrong when a WebAnimation was destroyed which uncovered crashes when dealing with
declarative animations. In AnimationTimeline's updateCSSAnimationsForElement() and updateCSSTransitionsForElement(), when we identify that a DeclarativeAnimation
no longer matches an Animation from the current style's AnimationList, we set that DeclarativeAnimation's effect to null and call removeAnimation() on
the timeline. This removes all references from AnimationTimeline to this DeclarativeAnimation and leads to ~WebAnimation being called. Calling removeAnimation()
again in the destructor means that we'd hit ASSERT_WITH_SECURITY_IMPLICATION(!m_deletionHasBegun) in ref(). It was also meaningless to perform this work in
the WebAnimation destructor since an animation could never be destroyed if it were still registered on a timeline.
(WebCore::WebAnimation::suspendEffectInvalidation): DeclarativeAnimation instances have their timing model properties set during style invalidation, so we need
a mechanism to allow the usual effect invalidation to be suspended in this case. We now maintain a simple m_suspendCount count that increases and decreases with
calls to this method and unsuspendEffectInvalidation() and a isEffectInvalidationSuspended() method returning true whenever that count is positive.
(WebCore::WebAnimation::unsuspendEffectInvalidation):
(WebCore::WebAnimation::timingModelDidChange): Check that effect invalidation is not suspended before proceeding with invalidating the effect.
(WebCore::WebAnimation::setEffect): Check for KeyframeEffectReadOnly and not just KeyframeEffect since declarative animations have ReadOnly effects.
(WebCore::WebAnimation::setTimeline): Check for KeyframeEffectReadOnly and not just KeyframeEffect since declarative animations have ReadOnly effects.
(WebCore::WebAnimation::scheduleMicrotaskIfNeeded): Ensure that the WebAnimation's lifecycle is extended at least to the completion of the scheduled microtask.
This would otherwise cause crashes after declarative animations were destroyed when they were no longer applied.
(WebCore::WebAnimation::runPendingPlayTask): Only fulfill the "ready" promise if it hasn't already been, which might have been the case if multiple calls to play()
are made as a result of updating the animation play state in CSSAnimation::syncPropertiesWithBackingAnimation().
(WebCore::WebAnimation::runPendingPauseTask): Same as above but with multiple pause() calls.
(WebCore::WebAnimation::startOrStopAccelerated): Check for KeyframeEffectReadOnly and not just KeyframeEffect since declarative animations have ReadOnly effects.
(WebCore::WebAnimation::canBeListed const): This new method is called by {Document|Element}::getAnimations() to check that an animation is in the correct state to
be listed. The Web Animations spec explains that only animations "that have an associated target effect which is current or in effect" can be listed. We implement
this behavior as specified.
* animation/WebAnimation.h:
(WebCore::WebAnimation::isDeclarativeAnimation const):
(WebCore::WebAnimation::isEffectInvalidationSuspended):
* dom/Document.cpp:
(WebCore::Document::getAnimations): Ensure that the document's pending styles are resolved before returning animations to ensure that any pending declarative
animations are created. Additionally, we ensure that we only list qualifying animations that have effects targeting elements that are children of thi document.
* dom/Element.cpp:
(WebCore::Element::getAnimations): Same as Document::getAnimations().
* style/StyleTreeResolver.cpp:
(WebCore::Style::TreeResolver::createAnimatedElementUpdate): When resolving styles, call into the AnimationTimeline if the runtime flag to enable CSS Animations and
CSS Transitions as Web Animations is on. Otherwise, use CSSAnimationController.

Source/WebKitLegacy/mac:

Reviewed by Dean Jackson and Jon Lee.

Add the missing WebKitLegacy support the cssAnimationsAndCSSTransitionsBackedByWebAnimationsEnabled flag
which is required for the matching <!-- webkit-test-runner --> flag to work in DumpRenderTree.

* WebView/WebPreferenceKeysPrivate.h:
* WebView/WebPreferences.mm:
(+[WebPreferences initialize]):
(-[WebPreferences setModernMediaControlsEnabled:]):
(-[WebPreferences cssAnimationsAndCSSTransitionsBackedByWebAnimationsEnabled]):
(-[WebPreferences setCSSAnimationsAndCSSTransitionsBackedByWebAnimationsEnabled:]):
* WebView/WebPreferencesPrivate.h:
* WebView/WebView.mm:
(-[WebView _preferencesChanged:]):

Source/WebKitLegacy/win:

Reviewed by Dean Jackson and Jon Lee.

Add the missing WebKitLegacy support the cssAnimationsAndCSSTransitionsBackedByWebAnimationsEnabled flag
which is required for the matching <!-- webkit-test-runner --> flag to work in DumpRenderTree.

* Interfaces/IWebPreferencesPrivate.idl:
* WebPreferences.cpp:
(WebPreferences::cssAnimationsAndCSSTransitionsBackedByWebAnimationsEnabled):
(WebPreferences::setCSSAnimationsAndCSSTransitionsBackedByWebAnimationsEnabled):
* WebPreferenceKeysPrivate.h
* WebPreferences.h:
* WebView.cpp:
(WebView::notifyPreferencesChanged):

Tools:

Reviewed by Jon Lee.

Add a new <!-- webkit-test-runner --> flag to enable the CSS Animations and CSS Transitions
as Web Animations runtime flag in the new tests we've created for this feature.

* DumpRenderTree/TestOptions.h:
* DumpRenderTree/TestOptions.mm:
(TestOptions::TestOptions):
* DumpRenderTree/mac/DumpRenderTree.mm:
(setWebPreferencesForTestOptions):
* WebKitTestRunner/TestController.cpp:
(WTR::TestController::resetPreferencesToConsistentValues):
(WTR::updateTestOptionsFromTestHeader):
* WebKitTestRunner/TestOptions.h:
(WTR::TestOptions::hasSameInitializationOptions const):

LayoutTests:

Reviewed by Dean Jackson and Jon Lee.

Add a series of new tests to check CSSAnimation and CSSTransition objects are correctly created
as CSS animation-* and CSS transition-* properties are used. We also update some existing tests
to use a more concise API since we've implement Element.animate() since their creation.

* webanimations/animation-opacity-animation-crash.html:
* webanimations/css-animations-expected.txt: Added.
* webanimations/css-animations.html: Added.
* webanimations/css-transitions-expected.txt: Added.
* webanimations/css-transitions.html: Added.
* webanimations/opacity-animation-no-longer-composited-upon-completion.html:
* webanimations/opacity-animation-yields-compositing.html:

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

18 months agoUnreviewed. Fix library version of JavaScriptCoreGTK.
carlosgc@webkit.org [Mon, 12 Mar 2018 09:46:37 +0000 (09:46 +0000)]
Unreviewed. Fix library version of JavaScriptCoreGTK.

* Source/cmake/OptionsGTK.cmake:

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

18 months ago[GTK] Crash in WebCore::PlatformDisplayWayland::~PlatformDisplayWayland
mcatanzaro@igalia.com [Mon, 12 Mar 2018 09:14:19 +0000 (09:14 +0000)]
[GTK] Crash in WebCore::PlatformDisplayWayland::~PlatformDisplayWayland
https://bugs.webkit.org/show_bug.cgi?id=176490

Reviewed by Žan Doberšek.

Destroy the wl_display with wl_display_disconnect() (client process API), not
wl_display_destroy() (server process API). It has to be destroyed last, so explicitly
destroy the wl_registry and wl_compositor first.

* platform/graphics/wayland/PlatformDisplayWayland.cpp:
(WebCore::PlatformDisplayWayland::~PlatformDisplayWayland):

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

18 months ago[LayoutReloaded] Add Line class for InlineFormattingContext -and move files around.
zalan@apple.com [Mon, 12 Mar 2018 03:46:57 +0000 (03:46 +0000)]
[LayoutReloaded] Add Line class for InlineFormattingContext -and move files around.
https://bugs.webkit.org/show_bug.cgi?id=183551

Reviewed by Wenson Hsieh.

* LayoutReloaded/FormattingContext/BlockFormatting/BlockFormattingContext.js: Renamed from Tools/LayoutReloaded/BlockFormattingContext.js.
(BlockFormattingContext):
(BlockFormattingContext.prototype.layout):
(BlockFormattingContext.prototype.computeWidth):
(BlockFormattingContext.prototype.computeHeight):
(BlockFormattingContext.prototype.marginTop):
(BlockFormattingContext.prototype.marginBottom):
(BlockFormattingContext.prototype._computeStaticPosition):
(BlockFormattingContext.prototype._placeInFlowPositionedChildren):
(BlockFormattingContext.prototype._placeOutOfFlowDescendants):
(BlockFormattingContext.prototype._computeOutOfFlowWidth):
(BlockFormattingContext.prototype._computeFloatingWidth):
(BlockFormattingContext.prototype._computeInFlowWidth):
(BlockFormattingContext.prototype._computeOutOfFlowHeight):
(BlockFormattingContext.prototype._computeFloatingHeight):
(BlockFormattingContext.prototype._computeInFlowHeight):
(BlockFormattingContext.prototype._computeHorizontalConstraint):
(BlockFormattingContext.prototype._computeContentHeight):
(BlockFormattingContext.prototype._computeInFlowPositionedPosition):
(BlockFormattingContext.prototype._computeOutOfFlowPosition):
(BlockFormattingContext.prototype._shrinkToFitWidth):
* LayoutReloaded/FormattingContext/BlockFormatting/BlockMarginCollapse.js: Renamed from Tools/LayoutReloaded/BlockMarginCollapse.js.
(BlockMarginCollapse.marginTop):
(BlockMarginCollapse.marginBottom):
(BlockMarginCollapse._isMarginTopCollapsedWithSibling):
(BlockMarginCollapse._isMarginBottomCollapsedWithSibling):
(BlockMarginCollapse._isMarginTopCollapsedWithParent):
(BlockMarginCollapse._isMarginBottomCollapsedWithParent):
(BlockMarginCollapse._nonCollapsedMarginTop):
(BlockMarginCollapse._nonCollapsedMarginBottom):
(BlockMarginCollapse._collapsedMarginTopFromFirstChild):
(BlockMarginCollapse._collapsedMarginBottomFromLastChild):
(BlockMarginCollapse._marginValue):
(BlockMarginCollapse._hasAdjoiningMarginTopAndBottom):
(BlockMarginCollapse):
* LayoutReloaded/FormattingContext/FloatingContext.js: Renamed from Tools/LayoutReloaded/FloatingContext.js.
(FloatingContext):
(FloatingContext.prototype.computePosition):
(FloatingContext.prototype.bottom):
(FloatingContext.prototype._positionForFloating):
(FloatingContext.prototype._positionForClear):
(FloatingContext.prototype._computePositionToAvoidIntrudingFloats):
(FloatingContext.prototype._addFloating):
(FloatingContext.prototype._findInnerMostLeftAndRight):
(FloatingContext.prototype._moveToNextVerticalPosition):
(FloatingContext.prototype._availableSpace):
(FloatingContext.prototype._findFloatingAtVerticalPosition):
(FloatingContext.prototype._isEmpty):
(FloatingContext.prototype._adjustedFloatingPosition):
(FloatingContext.prototype._bottom):
(FloatingContext.prototype._formattingContext):
* LayoutReloaded/FormattingContext/FormattingContext.js: Renamed from Tools/LayoutReloaded/FormattingContext.js.
(FormattingContext):
(FormattingContext.prototype.rootContainer):
(FormattingContext.prototype.floatingContext):
(FormattingContext.prototype.layout):
(FormattingContext.prototype.computeWidth):
(FormattingContext.prototype.computeHeight):
(FormattingContext.prototype.marginTop):
(FormattingContext.prototype.marginLeft):
(FormattingContext.prototype.marginBottom):
(FormattingContext.prototype.marginRight):
(FormattingContext.prototype.absoluteMarginBox):
(FormattingContext.prototype.absoluteBorderBox):
(FormattingContext.prototype.absolutePaddingBox):
(FormattingContext.prototype.absoluteContentBox):
* LayoutReloaded/FormattingContext/InlineFormatting/InlineFormattingContext.js: Renamed from Tools/LayoutReloaded/InlineFormattingContext.js.
(InlineFormattingContext):
(InlineFormattingContext.prototype.layout):
(InlineFormattingContext.prototype._handleInlineBox):
(InlineFormattingContext.prototype._handleText):
(InlineFormattingContext.prototype._commitLine):
(InlineFormattingContext.prototype._line):
* LayoutReloaded/FormattingContext/InlineFormatting/Line.js: Copied from Tools/LayoutReloaded/InitialBlockContainer.js.
(Line):
(Line.prototype.isEmpty):
(Line.prototype.availableWidth):
(Line.prototype.appendFragment):
* LayoutReloaded/LayoutReloaded.xcworkspace/contents.xcworkspacedata:
* LayoutReloaded/LayoutTree/BlockContainer.js: Renamed from Tools/LayoutReloaded/BlockContainer.js.
(BlockContainer):
(BlockContainer.prototype.establishesInlineFormattingContext):
* LayoutReloaded/LayoutTree/Box.js: Renamed from Tools/LayoutReloaded/Box.js.
(Box):
(Box.prototype.id):
(Box.prototype.setRendererName):
(Box.prototype.name):
(Box.prototype.node):
(Box.prototype.parent):
(Box.prototype.nextSibling):
(Box.prototype.nextInFlowSibling):
(Box.prototype.previousSibling):
(Box.prototype.previousInFlowSibling):
(Box.prototype.setParent):
(Box.prototype.setNextSibling):
(Box.prototype.setPreviousSibling):
(Box.prototype.rect):
(Box.prototype.topLeft):
(Box.prototype.bottomRight):
(Box.prototype.setTopLeft):
(Box.prototype.setSize):
(Box.prototype.setWidth):
(Box.prototype.setHeight):
(Box.prototype.isContainer):
(Box.prototype.isBlockLevelBox):
(Box.prototype.isBlockContainerBox):
(Box.prototype.isInlineLevelBox):
(Box.prototype.setIsAnonymous):
(Box.prototype.isAnonymous):
(Box.prototype.establishesFormattingContext):
(Box.prototype.establishedFormattingContext):
(Box.prototype.establishesBlockFormattingContext):
(Box.prototype.establishesInlineFormattingContext):
(Box.prototype.isPositioned):
(Box.prototype.isRelativePositioned):
(Box.prototype.isAbsolutePositioned):
(Box.prototype.isFixedPositioned):
(Box.prototype.isInFlow):
(Box.prototype.isOutOfFlowPositioned):
(Box.prototype.isInFlowPositioned):
(Box.prototype.isFloatingPositioned):
(Box.prototype.isFloatingOrOutOfFlowPositioned):
(Box.prototype.isRootElement):
(Box.prototype.containingBlock):
(Box.prototype.borderBox):
(Box.prototype.paddingBox):
(Box.prototype.contentBox):
* LayoutReloaded/LayoutTree/Container.js: Renamed from Tools/LayoutReloaded/Container.js.
(Container):
(Container.prototype.isContainer):
(Container.prototype.setFirstChild):
(Container.prototype.setLastChild):
(Container.prototype.firstChild):
(Container.prototype.firstInFlowChild):
(Container.prototype.lastChild):
(Container.prototype.lastInFlowChild):
(Container.prototype.hasChild):
(Container.prototype.hasInFlowChild):
* LayoutReloaded/LayoutTree/InitialBlockContainer.js: Renamed from Tools/LayoutReloaded/InitialBlockContainer.js.
(InitialBlockContainer):
(InitialBlockContainer.prototype.establishesBlockFormattingContext):
(InitialBlockContainer.prototype.paddingBox):
(InitialBlockContainer.prototype.contentBox):
* LayoutReloaded/LayoutTree/InlineBox.js: Renamed from Tools/LayoutReloaded/InlineBox.js.
(InlineBox):
(InlineBox.prototype.setText):
(InlineBox.prototype.text):
* LayoutReloaded/LayoutTree/Text.js: Renamed from Tools/LayoutReloaded/Text.js.
(Text):
(Text.prototype.node):
(Text.prototype.content):
(Text.prototype.length):
* LayoutReloaded/Utils.js:
(Utils.nextBreakingOpportunity):
(Utils.measureText):
* LayoutReloaded/misc/headers/Line.h: Copied from Tools/LayoutReloaded/misc/headers/Text.h.
* LayoutReloaded/misc/headers/Text.h:
* LayoutReloaded/test/border-simple.html:
* LayoutReloaded/test/index.html:

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

18 months agoFix the internal iOS build after r229512
wenson_hsieh@apple.com [Mon, 12 Mar 2018 03:38:22 +0000 (03:38 +0000)]
Fix the internal iOS build after r229512
https://bugs.webkit.org/show_bug.cgi?id=183550

Reviewed by Zalan Bujtas.

Fixes a typo in a header import, as well as a nullability error. `SecTrustEvaluate()` takes in a nonnull outparam,
which was removed in r229512; this adds the outparam back, but does not consult its value when setting the
`infoDictionary`.

* UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm:
(-[WKFullScreenWindowController _EVOrganizationName]):

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

18 months ago[DFG] AI should convert CreateThis to NewObject if the prototype object is proved
utatane.tea@gmail.com [Mon, 12 Mar 2018 03:25:39 +0000 (03:25 +0000)]
[DFG] AI should convert CreateThis to NewObject if the prototype object is proved
https://bugs.webkit.org/show_bug.cgi?id=183310

Reviewed by Filip Pizlo.

JSTests:

* stress/ai-create-this-to-new-object-fire.js: Added.
(assert):
(test):
(func):
(check):
(test.body.A):
(test.body.B):
(test.body):
* stress/ai-create-this-to-new-object.js: Added.
(assert):
(test):
(func):
(check):
(test.body.A):
(test.body.B):
(test.body):

Source/JavaScriptCore:

This patch implements CreateThis -> NewObject conversion in AI if the given function is constant.
This contributes to 6% win in Octane/raytrace.

                                baseline                  patched

    raytrace       x2       1.19915+-0.01862    ^     1.13156+-0.01589       ^ definitely 1.0597x faster

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

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

18 months agoDisable Sigill crash analyzer on watchOS
wenson_hsieh@apple.com [Sun, 11 Mar 2018 22:05:21 +0000 (22:05 +0000)]
Disable Sigill crash analyzer on watchOS
https://bugs.webkit.org/show_bug.cgi?id=183548
<rdar://problem/38338032>

Reviewed by Mark Lam.

Sigill is not supported on watchOS.

* runtime/Options.cpp:
(JSC::overrideDefaults):

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

18 months agoSplit DirectArguments into JSValueOOB and JSValueStrict parts
fpizlo@apple.com [Sun, 11 Mar 2018 21:09:20 +0000 (21:09 +0000)]
Split DirectArguments into JSValueOOB and JSValueStrict parts
https://bugs.webkit.org/show_bug.cgi?id=183458

Reviewed by Yusuke Suzuki.
Source/JavaScriptCore:

Our Spectre plan for JSValue objects is to allow inline JSValue stores and loads guarded by
unmitigated structure checks. This works because objects reachable from JSValues (i.e. JSValue
objects, like String, Symbol, and any descendant of JSObject) will only contain fields that it's OK
to read and write within a Spectre mitigation window. Writes are important, because within the
window, a write could appear to be made speculatively and rolled out later. This means that:

- JSValue objects cannot have lengths, masks, or anything else inline.

- JSValue objects cannot have an inline type that is used as part of a Spectre mitigation for a type
  check, unless that type is in the form of a poison key.

This means that the dynamic poisoning that I previously landed for DirectArguments is wrong. It also
means that it's wrong for DirectArguments to have an inline length.

This changes DirectArguments to use poisoning according to the universal formula:

- The random accessed portions are out-of-line, pointed to by a poisoned pointer.

- No inline length.

Surprisingly, this is perf-neutral. It's probably perf-neutral because our compiler optimizations
amortize whatever cost there was.

* bytecode/AccessCase.cpp:
(JSC::AccessCase::generateWithGuard):
* dfg/DFGCallCreateDirectArgumentsSlowPathGenerator.h:
(JSC::DFG::CallCreateDirectArgumentsSlowPathGenerator::CallCreateDirectArgumentsSlowPathGenerator):
* dfg/DFGCallCreateDirectArgumentsWithKnownLengthSlowPathGenerator.h: Added.
(JSC::DFG::CallCreateDirectArgumentsWithKnownLengthSlowPathGenerator::CallCreateDirectArgumentsWithKnownLengthSlowPathGenerator):
* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compileGetByValOnDirectArguments):
(JSC::DFG::SpeculativeJIT::compileGetArrayLength):
(JSC::DFG::SpeculativeJIT::compileCreateDirectArguments):
(JSC::DFG::SpeculativeJIT::compileGetFromArguments):
(JSC::DFG::SpeculativeJIT::compilePutToArguments):
* ftl/FTLAbstractHeapRepository.h:
* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compileGetArrayLength):
(JSC::FTL::DFG::LowerDFGToB3::compileGetByVal):
(JSC::FTL::DFG::LowerDFGToB3::compileCreateDirectArguments):
(JSC::FTL::DFG::LowerDFGToB3::compileGetFromArguments):
(JSC::FTL::DFG::LowerDFGToB3::compilePutToArguments):
(JSC::FTL::DFG::LowerDFGToB3::compileCheckSubClass):
(JSC::FTL::DFG::LowerDFGToB3::allocateVariableSizedHeapCell):
(JSC::FTL::DFG::LowerDFGToB3::dynamicPoison): Deleted.
(JSC::FTL::DFG::LowerDFGToB3::dynamicPoisonOnLoadedType): Deleted.
(JSC::FTL::DFG::LowerDFGToB3::dynamicPoisonOnType): Deleted.
* heap/SecurityKind.h:
* jit/JITPropertyAccess.cpp:
(JSC::JIT::emit_op_get_from_arguments):
(JSC::JIT::emit_op_put_to_arguments):
(JSC::JIT::emitDirectArgumentsGetByVal):
* jit/JITPropertyAccess32_64.cpp:
(JSC::JIT::emit_op_get_from_arguments):
(JSC::JIT::emit_op_put_to_arguments):
* llint/LowLevelInterpreter.asm:
* llint/LowLevelInterpreter32_64.asm:
* llint/LowLevelInterpreter64.asm:
* runtime/DirectArguments.cpp:
(JSC::DirectArguments::DirectArguments):
(JSC::DirectArguments::createUninitialized):
(JSC::DirectArguments::create):
(JSC::DirectArguments::createByCopying):
(JSC::DirectArguments::estimatedSize):
(JSC::DirectArguments::visitChildren):
(JSC::DirectArguments::overrideThings):
(JSC::DirectArguments::copyToArguments):
(JSC::DirectArguments::mappedArgumentsSize):
* runtime/DirectArguments.h:
* runtime/JSCPoison.h:
* runtime/JSLexicalEnvironment.h:
* runtime/JSSymbolTableObject.h:
* runtime/VM.cpp:
(JSC::VM::VM):
* runtime/VM.h:

Source/WTF:

* wtf/MathExtras.h:
(WTF::dynamicPoison): Deleted.

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

18 months ago[B3] Above/Below should be strength-reduced for comparison with 0
utatane.tea@gmail.com [Sun, 11 Mar 2018 19:52:24 +0000 (19:52 +0000)]
[B3] Above/Below should be strength-reduced for comparison with 0
https://bugs.webkit.org/show_bug.cgi?id=183543

Reviewed by Filip Pizlo.

Above(0, x) and BelowEqual(0, x) can be converted to constants false and true respectively.
This can be seen in ArraySlice(0) case: `Select(Above(0, length), length, 0)` this should
be converted to `0`. This patch adds such a folding to comparisons.

We also fix B3ReduceStrength issue creating an orphan value. If a flipped value is folded to
a constant, we do not insert flipped value and make it an orphan. This issue causes JSC test
failure with this B3Const32/64Value change. With this patch, we create a flipped value only
when we fail to fold it to a constant.

* b3/B3Const32Value.cpp:
(JSC::B3::Const32Value::lessThanConstant const):
(JSC::B3::Const32Value::greaterThanConstant const):
(JSC::B3::Const32Value::lessEqualConstant const):
(JSC::B3::Const32Value::greaterEqualConstant const):
(JSC::B3::Const32Value::aboveConstant const):
(JSC::B3::Const32Value::belowConstant const):
(JSC::B3::Const32Value::aboveEqualConstant const):
(JSC::B3::Const32Value::belowEqualConstant const):
* b3/B3Const64Value.cpp:
(JSC::B3::Const64Value::lessThanConstant const):
(JSC::B3::Const64Value::greaterThanConstant const):
(JSC::B3::Const64Value::lessEqualConstant const):
(JSC::B3::Const64Value::greaterEqualConstant const):
(JSC::B3::Const64Value::aboveConstant const):
(JSC::B3::Const64Value::belowConstant const):
(JSC::B3::Const64Value::aboveEqualConstant const):
(JSC::B3::Const64Value::belowEqualConstant const):
* b3/B3ReduceStrength.cpp:
* b3/testb3.cpp:
(JSC::B3::int64Operands):
(JSC::B3::int32Operands):

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

18 months agoPerProcess<> should be safe by default
fpizlo@apple.com [Sun, 11 Mar 2018 17:45:49 +0000 (17:45 +0000)]
PerProcess<> should be safe by default
https://bugs.webkit.org/show_bug.cgi?id=183545

Reviewed by Yusuke Suzuki.

This makes PerProcess<> safe by default, so we don't need SafePerProcess<>.

The new PerProcess<> design relies on a hash-consing mechanism for PerProcess<> storage based
on the __PRETTY_FUNCTION__ from inside PerProcess<>, which captures the instantiated type in
the string. Therefore, this can be used to runtime-coalesce PerProcess<> instances based on
type.

I expect this to be perf-neutral. It's an important prerequisite to more bmalloc work, since I
don't want to have more PerProcess<> vs SafePerProcess<> bugs, and SafePerProcess<> can't be
used for everything (I don't see how to use it for isoheaps).

* CMakeLists.txt:
* bmalloc.xcodeproj/project.pbxproj:
* bmalloc/Heap.cpp:
(bmalloc::Heap::Heap):
* bmalloc/IsoDirectoryInlines.h:
(bmalloc::passedNumPages>::takeFirstEligible):
(bmalloc::passedNumPages>::didBecome):
* bmalloc/PerProcess.cpp: Added.
(bmalloc::stringHash):
(bmalloc::allocate):
(bmalloc::getPerProcessData):
* bmalloc/PerProcess.h:
(bmalloc::PerProcess::mutex):
(bmalloc::PerProcess::coalesce):
(bmalloc::PerProcess::getSlowCase):
(): Deleted.
* bmalloc/Scavenger.cpp:
* bmalloc/Scavenger.h:
* bmalloc/bmalloc.cpp:
(bmalloc::api::scavenge):
(bmalloc::api::setScavengerThreadQOSClass):

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

18 months ago[Win] Use SRWLOCK and CONDITION_VARIABLE to simplify implementation
utatane.tea@gmail.com [Sun, 11 Mar 2018 08:03:30 +0000 (08:03 +0000)]
[Win] Use SRWLOCK and CONDITION_VARIABLE to simplify implementation
https://bugs.webkit.org/show_bug.cgi?id=183541

Reviewed by Darin Adler.

After Windows Vista, Windows offers SRWLOCK and CONDITION_VARIABLE.
They can simplify the implementation of our WTF::Mutex and WTF::ThreadCondition.

C++ std::mutex and std::condition_variable uses std::chrono for their timed
functions. Since std::chrono is not overflow-aware, we cannot reliably use
this functionalities. This is why we still keep WTF::Mutex and WTF::ThreadCondition.
They are used for ParkingLot.

* wtf/ThreadingPrimitives.h:
* wtf/ThreadingWin.cpp:
(WTF::Mutex::Mutex):
(WTF::Mutex::~Mutex):
(WTF::Mutex::lock):
(WTF::Mutex::tryLock):
(WTF::Mutex::unlock):
(WTF::absoluteTimeToWaitTimeoutInterval):
(WTF::ThreadCondition::ThreadCondition):
(WTF::ThreadCondition::~ThreadCondition):
(WTF::ThreadCondition::wait):
(WTF::ThreadCondition::timedWait):
(WTF::ThreadCondition::signal):
(WTF::ThreadCondition::broadcast):
(WTF::PlatformCondition::timedWait): Deleted.
(WTF::PlatformCondition::signal): Deleted.

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

18 months ago[FTL] Drop NewRegexp for String.prototype.match with RegExp + global flag
utatane.tea@gmail.com [Sun, 11 Mar 2018 07:20:29 +0000 (07:20 +0000)]
[FTL] Drop NewRegexp for String.prototype.match with RegExp + global flag
https://bugs.webkit.org/show_bug.cgi?id=181848

Reviewed by Sam Weinig.

JSTests:

* microbenchmarks/regexp-u-global-es5.js: Added.
(fn):
* microbenchmarks/regexp-u-global-es6.js: Added.
(fn):
* stress/materialized-regexp-has-correct-last-index-set-by-match-at-osr-exit.js: Added.
(shouldBe):
(test):
(i.switch):
* stress/materialized-regexp-has-correct-last-index-set-by-match.js: Added.
(shouldBe):
(test):

Source/JavaScriptCore:

In r181535, we support `string.match(/nonglobal/)` code. However, `string.match(/global/g)` is not
optimized since it sets `lastIndex` value before performing RegExp operation.

This patch optimizes the above "with a global flag" case by emitting `SetRegExpObjectLastIndex` properly.
RegExpMatchFast is converted to SetRegExpObjectLastIndex and RegExpMatchFastGlobal. The latter node
just holds RegExp (not RegExpObject) cell so that it can offer a chance to make NewRegexp PhantomNewRegexp
in object allocation sinking phase.

Added microbenchmarks shows that this patch makes NewRegexp PhantomNewRegexp even if the given RegExp
has a global flag. And it improves the performance.

                              baseline                  patched

regexp-u-global-es5       44.1298+-4.6128     ^     33.7920+-2.0110        ^ definitely 1.3059x faster
regexp-u-global-es6      182.3272+-2.2861     ^    154.3414+-7.6769        ^ definitely 1.1813x faster

* dfg/DFGAbstractInterpreterInlines.h:
(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):
* dfg/DFGClobberize.h:
(JSC::DFG::clobberize):
* dfg/DFGDoesGC.cpp:
(JSC::DFG::doesGC):
* dfg/DFGFixupPhase.cpp:
(JSC::DFG::FixupPhase::fixupNode):
* dfg/DFGMayExit.cpp:
* dfg/DFGNode.cpp:
(JSC::DFG::Node::convertToRegExpMatchFastGlobal):
* dfg/DFGNode.h:
(JSC::DFG::Node::hasHeapPrediction):
(JSC::DFG::Node::hasCellOperand):
* dfg/DFGNodeType.h:
* dfg/DFGOperations.cpp:
* dfg/DFGOperations.h:
* dfg/DFGPredictionPropagationPhase.cpp:
* dfg/DFGSafeToExecute.h:
(JSC::DFG::safeToExecute):
* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compileRegExpMatchFastGlobal):
* dfg/DFGSpeculativeJIT.h:
* dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
* dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
* dfg/DFGStrengthReductionPhase.cpp:
(JSC::DFG::StrengthReductionPhase::handleNode):
* ftl/FTLCapabilities.cpp:
(JSC::FTL::canCompile):
* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compileNode):
(JSC::FTL::DFG::LowerDFGToB3::compileRegExpMatchFastGlobal):
* runtime/RegExpObject.cpp:
(JSC::collectMatches): Deleted.
* runtime/RegExpObject.h:
* runtime/RegExpObjectInlines.h:
(JSC::RegExpObject::execInline):
(JSC::RegExpObject::matchInline):
(JSC::advanceStringUnicode):
(JSC::collectMatches):
(JSC::RegExpObject::advanceStringUnicode): Deleted.
* runtime/RegExpPrototype.cpp:
(JSC::advanceStringIndex):

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

18 months agoB3::reduceStrength should canonicalize integer comparisons
utatane.tea@gmail.com [Sun, 11 Mar 2018 07:16:15 +0000 (07:16 +0000)]
B3::reduceStrength should canonicalize integer comparisons
https://bugs.webkit.org/show_bug.cgi?id=150958

Reviewed by Filip Pizlo.

This patch sorts operands of comparisons by flipping opcode. For example, `Above(0, @2)` is
converted to `Below(@2, 0)`. This sorting is the same to handleCommutativity rule. Since we
canonicalize comparisons to have constant value at least on the right hand side, we can
remove pattern matchings checking leftImm in B3LowerToAir.

Since this flipping changes the opcode of the value, to achieve safely, we just create a
new value which has flipped opcode and swapped operands. If we can fold it to a constant,
we replace m_value with this constant. If we fail to fold it to constant, we replace
m_value with the flipped one.

These comparisons are already handled in testb3.

* b3/B3LowerToAir.cpp:
* b3/B3ReduceStrength.cpp:

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

18 months agoImprovements to fullscreen; new UI and security features
jer.noble@apple.com [Sun, 11 Mar 2018 01:49:00 +0000 (01:49 +0000)]
Improvements to fullscreen; new UI and security features
https://bugs.webkit.org/show_bug.cgi?id=183503

Reviewed by Dean Jackson.

Now that the iOS Fullscreen code has more than one major class, move it into an ios/
directory.

Clean up the WKFullScreenWindowControllerIOS class to more clearly separate external
facing API from purely internal functions.

Move the WKFullScreenViewController out into its own file. Add support for fullscreen
top inset and fullscreen autohide duration CSS constants.

Add a heuristic to distinguish between media control related touches and ones that look
more keyboard interactions.

Add a new UIStackView based control to hold the fullscreen controls.

* UIProcess/ios/WKFullScreenWindowControllerIOS.mm: Removed.
* UIProcess/ios/fullscreen/FullscreenTouchSecheuristic.cpp: Added.
(WebKit::FullscreenTouchSecheuristic::scoreOfNextTouch):
(WebKit::FullscreenTouchSecheuristic::reset):
(WebKit::FullscreenTouchSecheuristic::distanceScore):
(WebKit::FullscreenTouchSecheuristic::attenuationFactor):
* UIProcess/ios/fullscreen/FullscreenTouchSecheuristic.h:
(WebKit::FullscreenTouchSecheuristic::setRampUpSpeed):
(WebKit::FullscreenTouchSecheuristic::setRampDownSpeed):
(WebKit::FullscreenTouchSecheuristic::setXWeight):
(WebKit::FullscreenTouchSecheuristic::setYWeight):
(WebKit::FullscreenTouchSecheuristic::setSize):
(WebKit::FullscreenTouchSecheuristic::setGamma):
(WebKit::FullscreenTouchSecheuristic::setGammaCutoff):
* UIProcess/ios/fullscreen/WKFullScreenViewController.h:
* UIProcess/ios/fullscreen/WKFullScreenViewController.mm: Added.
(WKFullScreenViewControllerPlaybackSessionModelClient::setParent):
(WKFullScreenViewControllerPlaybackSessionModelClient::setInterface):
(-[_WKExtrinsicButton setExtrinsicContentSize:]):
(-[_WKExtrinsicButton intrinsicContentSize]):
(-[WKFullScreenViewController initWithWebView:]):
(-[WKFullScreenViewController dealloc]):
(-[WKFullScreenViewController showUI]):
(-[WKFullScreenViewController hideUI]):
(-[WKFullScreenViewController videoControlsManagerDidChange]):
(-[WKFullScreenViewController setPrefersStatusBarHidden:]):
(-[WKFullScreenViewController setPlaying:]):
(-[WKFullScreenViewController setPictureInPictureActive:]):
(-[WKFullScreenViewController loadView]):
(-[WKFullScreenViewController viewWillAppear:]):
(-[WKFullScreenViewController viewDidLayoutSubviews]):
(-[WKFullScreenViewController viewWillTransitionToSize:withTransitionCoordinator:]):
(-[WKFullScreenViewController preferredStatusBarStyle]):
(-[WKFullScreenViewController prefersStatusBarHidden]):
(-[WKFullScreenViewController gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:]):
(-[WKFullScreenViewController gestureRecognizer:shouldReceiveTouch:]):
(-[WKFullScreenViewController _manager]):
(-[WKFullScreenViewController _effectiveFullscreenInsetTop]):
(-[WKFullScreenViewController _cancelAction:]):
(-[WKFullScreenViewController _togglePiPAction:]):
(-[WKFullScreenViewController _touchDetected:]):
(-[WKFullScreenViewController _statusBarFrameDidChange:]):
(-[WKFullScreenViewController _updateWebViewFullscreenInsets]):
(-[WKFullScreenViewController _showPhishingAlert]):
* UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.h: Copied from Source/WebKit/UIProcess/ios/WKFullScreenWindowControllerIOS.h.
* UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm: Added.
(WebKit::replaceViewWithView):
(WebKit::WKWebViewState::applyTo):
(WebKit::WKWebViewState::store):
(-[WKFullscreenAnimationController transitionDuration:]):
(-[WKFullscreenAnimationController configureInitialAndFinalStatesForTransition:]):
(-[WKFullscreenAnimationController animateTransition:]):
(-[WKFullscreenAnimationController animationEnded:]):
(-[WKFullscreenAnimationController startInteractiveTransition:]):
(-[WKFullscreenAnimationController updateWithPercent:]):
(-[WKFullscreenAnimationController updateWithPercent:translation:anchor:]):
(-[WKFullscreenAnimationController end:]):
(-[WKFullScreenInteractiveTransition initWithAnimator:anchor:]):
(-[WKFullScreenInteractiveTransition wantsInteractiveStart]):
(-[WKFullScreenInteractiveTransition startInteractiveTransition:]):
(-[WKFullScreenInteractiveTransition updateInteractiveTransition:withTranslation:]):
(-[WKFullScreenInteractiveTransition cancelInteractiveTransition]):
(-[WKFullScreenInteractiveTransition finishInteractiveTransition]):
(-[WKFullScreenWindowController initWithWebView:]):
(-[WKFullScreenWindowController dealloc]):
(-[WKFullScreenWindowController isFullScreen]):
(-[WKFullScreenWindowController webViewPlaceholder]):
(-[WKFullScreenWindowController enterFullScreen]):
(-[WKFullScreenWindowController beganEnterFullScreenWithInitialFrame:finalFrame:]):
(-[WKFullScreenWindowController requestExitFullScreen]):
(-[WKFullScreenWindowController exitFullScreen]):
(-[WKFullScreenWindowController beganExitFullScreenWithInitialFrame:finalFrame:]):
(-[WKFullScreenWindowController _completedExitFullScreen]):
(-[WKFullScreenWindowController close]):
(-[WKFullScreenWindowController webViewDidRemoveFromSuperviewWhileInFullscreen]):
(-[WKFullScreenWindowController videoControlsManagerDidChange]):
(-[WKFullScreenWindowController gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:]):
(-[WKFullScreenWindowController animationControllerForPresentedController:presentingController:sourceController:]):
(-[WKFullScreenWindowController animationControllerForDismissedController:]):
(-[WKFullScreenWindowController interactionControllerForDismissal:]):
(-[WKFullScreenWindowController _exitFullscreenImmediately]):
(-[WKFullScreenWindowController _invalidateEVOrganizationName]):
(-[WKFullScreenWindowController _isSecure]):
(-[WKFullScreenWindowController _serverTrust]):
(-[WKFullScreenWindowController _EVOrganizationName]):
(-[WKFullScreenWindowController _updateLocationInfo]):
(-[WKFullScreenWindowController _manager]):
(-[WKFullScreenWindowController _startToDismissFullscreenChanged:]):
(-[WKFullScreenWindowController _interactiveDismissChanged:]):
* UIProcess/ios/fullscreen/WKFullscreenStackView.h: Renamed from Source/WebKit/UIProcess/ios/WKFullScreenWindowControllerIOS.h.
* UIProcess/ios/fullscreen/WKFullscreenStackView.mm: Added.
(+[WKFullscreenStackView baseEffects]):
(+[WKFullscreenStackView configureView:forTintEffectWithColor:filterType:]):
(+[WKFullscreenStackView configureView:withBackgroundFillOfColor:opacity:filter:]):
(+[WKFullscreenStackView secondaryMaterialOverlayView]):
(+[WKFullscreenStackView applyPrimaryGlyphTintToView:]):
(+[WKFullscreenStackView applySecondaryGlyphTintToView:]):
(-[WKFullscreenStackView initWithArrangedSubviews:axis:]):
(-[WKFullscreenStackView setTargetViewForSecondaryMaterialOverlay:]):
(-[WKFullscreenStackView contentView]):
(-[WKFullscreenStackView _setArrangedSubviews:axis:]):
(-[WKFullscreenStackView setBounds:]):
(-[WKFullscreenStackView updateConstraints]):
* WebKit.xcodeproj/project.pbxproj:

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

18 months agoMedia query for default appearance
megan_gardner@apple.com [Sun, 11 Mar 2018 01:38:06 +0000 (01:38 +0000)]
Media query for default appearance
https://bugs.webkit.org/show_bug.cgi?id=183539
<rdar://problem/38326388>

Reviewed by Tim Horton.

Source/WebCore:

Not currently testable, will add tests in a later patch.

Write a media query to evaluate appearance.

* css/CSSValueKeywords.in:
* css/MediaFeatureNames.h:
* css/MediaQueryEvaluator.cpp:
(WebCore::defaultAppearanceEvaluate):
* css/MediaQueryExpression.cpp:
(WebCore::featureWithValidIdent):
(WebCore::isFeatureValidWithoutValue):
* page/Page.h:
(WebCore::Page::defaultAppearance const):
(WebCore::Page::setDefaultAppearance):

Source/WebKit:

Write a media query to evaluate appearance.

* Shared/WebPageCreationParameters.cpp:
(WebKit::WebPageCreationParameters::encode const):
(WebKit::WebPageCreationParameters::decode):
* Shared/WebPageCreationParameters.h:
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _initializeWithConfiguration:]):
(-[WKWebView _setUseSystemAppearance:]):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::creationParameters):
(WebKit::WebPageProxy::setDefaultAppearance):
* UIProcess/WebPageProxy.h:
(WebKit::WebPageProxy::defaultAppearance const):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::m_credentialsMessenger):
(WebKit::WebPage::setDefaultAppearance):
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:

Source/WebKitLegacy/mac:

Write a media query to evaluate appearance.

* WebView/WebView.mm:
(-[WebView _commonInitializationWithFrameName:groupName:]):
(-[WebView _setUseSystemAppearance:]):

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

18 months agoInlineTextBox should own shadow data
dbates@webkit.org [Sat, 10 Mar 2018 23:26:46 +0000 (23:26 +0000)]
InlineTextBox should own shadow data
https://bugs.webkit.org/show_bug.cgi?id=183359
<rdar://problem/38171343>

Reviewed by Darin Adler.

Following r229147 we recompute the selection style, including any shadow data, whenever we
paint the inline text box. Therefore, InlineTextBox needs to take ownership of the shadow
data or it may be deallocated before it can be used.

Covered by existing tests.

* rendering/InlineTextBox.cpp: Changed data type of InlineTextBox::MarkedTextStyle::textShadow
from const ShadowData* to std::optional<ShadowData>. Also removed explicitly deleted equality
and inequality operators as they are unnecessary. Layout tests should catch if these are ever
implemented and used when painting because the painted results will be wrong.
(WebCore::InlineTextBox::computeStyleForUnmarkedMarkedText const): Clone ShadowData.
(WebCore::InlineTextBox::resolveStyleForMarkedText): Simplified logic.
(WebCore::InlineTextBox::paintMarkedTextForeground): Modified code now that MarkedTextStyle
holds a std::optional<ShadowData>.
(WebCore::InlineTextBox::paintMarkedTextDecoration): Ditto.
* rendering/TextPaintStyle.cpp:
(WebCore::computeTextSelectionPaintStyle): Changed the out parameter type from const ShadowData*
to std::optional<ShadowData>& and modified code as needed.
* rendering/TextPaintStyle.h:
* rendering/style/ShadowData.cpp: Removed unncessary #include of header LayoutRect.h.
This header will be included via ShadowData.h.
(WebCore::ShadowData::clone): Convenience method that returns an std::optional to a
cloned ShadowData object.
* rendering/style/ShadowData.h:

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

18 months agoofflineasm should reset the Assembler's working state before doing another pass for...
mark.lam@apple.com [Sat, 10 Mar 2018 20:13:03 +0000 (20:13 +0000)]
offlineasm should reset the Assembler's working state before doing another pass for a new target.
https://bugs.webkit.org/show_bug.cgi?id=183538
<rdar://problem/38325955>

Reviewed by Michael Saboff.

* llint/LowLevelInterpreter.cpp:
* offlineasm/asm.rb:
* offlineasm/cloop.rb:

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

18 months agoTurn off offset*/scroll* optimization for input elements with shadow content
zalan@apple.com [Sat, 10 Mar 2018 19:31:14 +0000 (19:31 +0000)]
Turn off offset*/scroll* optimization for input elements with shadow content
https://bugs.webkit.org/show_bug.cgi?id=182383
<rdar://problem/37114190>

Reviewed by Antti Koivisto.

Source/WebCore:

We normally ensure clean tree before calling offsetHeight/Width, scrollHeight/Width.
In certain cases (see updateLayoutIfDimensionsOutOfDate() for details), it's okay to return
the previously computed values even when some part of the tree is dirty.
In case of shadow content, updateLayoutIfDimensionsOutOfDate() might return false (no need to layout)
for the root, while true (needs layout) for the shadow content.
This could confuse the caller (Element::scrollWidth/Height etc) and lead to incorrect result.

Test: fast/forms/scrollheight-with-mutation-crash.html

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

LayoutTests:

* fast/forms/scrollheight-with-mutation-crash-expected.txt: Added.
* fast/forms/scrollheight-with-mutation-crash.html: Added.

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

18 months agoUnreviewed, rolling out r229436.
commit-queue@webkit.org [Sat, 10 Mar 2018 17:28:09 +0000 (17:28 +0000)]
Unreviewed, rolling out r229436.
https://bugs.webkit.org/show_bug.cgi?id=183542

seems to have regressed wasm compile times by 10% (Requested
by pizlo-mbp on #webkit).

Reverted changeset:

"bmalloc mutex should be adaptive"
https://bugs.webkit.org/show_bug.cgi?id=177839
https://trac.webkit.org/changeset/229436

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

18 months ago[macOS] Copying a table from the Numbers app and pasting into iCloud Numbers fails
wenson_hsieh@apple.com [Sat, 10 Mar 2018 11:33:20 +0000 (11:33 +0000)]
[macOS] Copying a table from the Numbers app and pasting into iCloud Numbers fails
https://bugs.webkit.org/show_bug.cgi?id=183485
<rdar://problem/38041984>

Reviewed by Ryosuke Niwa.

Source/WebCore:

After r222656, WebKit now treats raw image data on the pasteboard as files for the purposes of computing
DataTransfer.files and DataTransfer.types. However, this is combined with existing policies that suppress
DataTransfer.getData and DataTransfer.setData when the pasteboard contains files (generalized to copy/paste in
r222688). This means we now don't allow web pages to access "text/plain" in the case where the user copies part
of a table from the native Numbers app since Numbers additionally writes a snapshot of the table to the platform
pasteboard.

This restriction on getData/setData was intended to prevent web pages from extracting users' file paths when
pasting or dropping, so it doesn't make sense to enforce this restriction even when there is only in-memory
image data on the pasteboard. To fix this bug, we make Pasteboard::fileContentState() differentiate between
cases where there are (real) files on the pasteboard, and cases where we've fallen back to treating image data
as files.

Rebaselined existing LayoutTests to match new behavior.
Also covered by 4 new API tests:
    - PasteMixedContent.ImageDataAndPlainText
    - PasteMixedContent.ImageDataAndPlainTextAndURL
    - PasteMixedContent.ImageDataAndPlainTextAndURLAndHTML
    - UIPasteboardTests.DataTransferGetDataWhenPastingImageAndText

* dom/DataTransfer.cpp:
(WebCore::DataTransfer::shouldSuppressGetAndSetDataToAvoidExposingFilePaths const):

If custom pasteboard data is enabled, suppress getData and setData if and only if we might actually expose file
paths (see Pasteboard::fileContentState).

(WebCore::DataTransfer::types const):

Only allow "text/html" or "text/uri-list" in the case where there are actual files in the pasteboard. If there's
only image data, add all of the DOM-safe types back into the list of types.

* platform/Pasteboard.h:
* platform/StaticPasteboard.h:

Add an enum type to represent the result of Pasteboard::fileContentState.
-   NoFileOrImageData indicates that there was nothing on the pasteboard that could be considered a file
    from the point of view of the page.
-   InMemoryImage indicates that there are no files on the pasteboard, but there is image data that we consider
    to be files, exposed via DataTransfer API.
-   MayContainFilePaths indicates that there might be file paths on the pasteboard. This means that the source
    has either written file paths to the pasteboard (for example, through NSFilenamesPboardType) or the source
    has written image data along with a URL type of some sort that does not match one of the allowed URL schemes
    that are safe to expose (currently, these are http-family, data, or blob).

* platform/cocoa/PasteboardCocoa.mm:
(WebCore::Pasteboard::fileContentState):

Refactor to return one of the three enum types described above.

(WebCore::Pasteboard::containsFiles): Deleted.
* platform/gtk/PasteboardGtk.cpp:
(WebCore::Pasteboard::fileContentState):
(WebCore::Pasteboard::containsFiles): Deleted.
* platform/win/PasteboardWin.cpp:
(WebCore::Pasteboard::fileContentState):
(WebCore::Pasteboard::containsFiles): Deleted.
* platform/wpe/PasteboardWPE.cpp:
(WebCore::Pasteboard::fileContentState):
(WebCore::Pasteboard::containsFiles): Deleted.

Adjust for Pasteboard::fileContentState() tweaks.

Tools:

Add new API tests to cover scenarios in which we paste image data alongside text data.

* TestWebKitAPI/Tests/WebKitCocoa/PasteMixedContent.mm:
(TestWebKitAPI::TEST):
* TestWebKitAPI/Tests/ios/UIPasteboardTests.mm:
(TestWebKitAPI::TEST):

LayoutTests:

Rebaseline some pasteboard-related layout tests, in which we now expose text/plain alongside files that were
written to the DataTransfer by the page itself.

* editing/pasteboard/data-transfer-item-list-add-file-multiple-times-expected.txt:
* editing/pasteboard/data-transfer-item-list-add-file-on-copy-expected.txt:
* editing/pasteboard/data-transfer-item-list-add-file-on-drag-expected.txt:

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

18 months agoinspector/page/frameScheduledNavigation.html has different output with async policy...
cdumez@apple.com [Sat, 10 Mar 2018 05:27:42 +0000 (05:27 +0000)]
inspector/page/frameScheduledNavigation.html has different output with async policy delegates
https://bugs.webkit.org/show_bug.cgi?id=183469

Reviewed by Ryosuke Niwa.

The test tracks 3 internal events:
1. frameScheduledNavigation
2. frameStartedLoading
3. frameClearedScheduledNavigation

Without async policy delegates, the events happen in this order. However, with asynchronous
policy delegates, frameStartedLoading happens *after* frameClearedScheduledNavigation. What
happens *before* frameClearedScheduledNavigation is the navigation policy check. When we
get the policy response to continue (asynchronously), we then actually start the load and
frameStartedLoading gets logged.

* inspector/page/frameScheduledNavigation-async-delegates-expected.txt: Added.
* inspector/page/frameScheduledNavigation-async-delegates.html: Copied from LayoutTests/inspector/page/frameScheduledNavigation.html.
* inspector/page/frameScheduledNavigation.html:

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

18 months agoCreate analysis task should use build time as fallback when commit time is not available.
dewei_zhu@apple.com [Sat, 10 Mar 2018 04:44:56 +0000 (04:44 +0000)]
Create analysis task should use build time as fallback when commit time is not available.
https://bugs.webkit.org/show_bug.cgi?id=183309

Reviewed by Ryosuke Niwa.

Added the ability to schedule analysis task for the range without commit time.

* public/privileged-api/create-analysis-task.php: Use build time as fallback.
* server-tests/privileged-api-create-analysis-task-tests.js: Added a unit test for this change.

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

18 months agoAX: WebKit seems to be running spell checker even on non-editable content text
cfleizach@apple.com [Sat, 10 Mar 2018 03:53:41 +0000 (03:53 +0000)]
AX: WebKit seems to be running spell checker even on non-editable content text
https://bugs.webkit.org/show_bug.cgi?id=183456
<rdar://problem/38076042>

Reviewed by Joanmarie Diggs.

Source/WebCore:

Test: accessibility/mac/attributed-string/attributed-string-does-not-includes-misspelled-for-non-editable.html

Only apply misspelled attributes if it's for editable text. It's not useful or performant to do this for static text.

* accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
(AXAttributeStringSetSpelling):

LayoutTests:

* accessibility/mac/attributed-string/attributed-string-does-not-includes-misspelled-for-non-editable-expected.txt: Added.
* accessibility/mac/attributed-string/attributed-string-does-not-includes-misspelled-for-non-editable.html: Added.
* accessibility/mac/attributed-string/attributed-string-for-range-with-options.html:
* accessibility/mac/attributed-string/attributed-string-for-range.html:
     Update tests to reflect that only editable content returns misspelled attributes.

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

18 months agoAX: AOM: More accessibility events support
n_wang@apple.com [Sat, 10 Mar 2018 03:37:13 +0000 (03:37 +0000)]
AX: AOM: More accessibility events support
https://bugs.webkit.org/show_bug.cgi?id=183023
<rdar://problem/37764380>

Reviewed by Chris Fleizach.

Source/WebCore:

The test is crashing when we call updateBackingStore when
the AXObjectCache object is gone. Added a check to fix that.

Modified the test by using the right format of setTimeout and extended the delay.

* accessibility/AccessibilityObject.cpp:
(WebCore::AccessibilityObject::updateBackingStore):

LayoutTests:

* accessibility/mac/AOM-events-webarea-crash.html:

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

18 months agoUnreviewed. Fix WinCairo build after r229497.
ross.kirsling@sony.com [Sat, 10 Mar 2018 03:10:41 +0000 (03:10 +0000)]
Unreviewed. Fix WinCairo build after r229497.

* platform/MIMETypeRegistry.cpp:
(WebCore::MIMETypeRegistry::getNormalizedMIMEType):

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

18 months agoClean up MIMETypeRegistry::mimeTypeAssociationMap for Curl
ross.kirsling@sony.com [Sat, 10 Mar 2018 01:47:28 +0000 (01:47 +0000)]
Clean up MIMETypeRegistry::mimeTypeAssociationMap for Curl
https://bugs.webkit.org/show_bug.cgi?id=170529

Reviewed by Alex Christensen.

* platform/MIMETypeRegistry.cpp:
(WebCore::MIMETypeRegistry::getNormalizedMIMEType):
(WebCore::mimeTypeAssociationMap): Deleted.
Create map with makeNeverDestroyed and a loop instead.

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

18 months agoUnreviewed, rolling out r229468.
ryanhaddad@apple.com [Sat, 10 Mar 2018 01:28:07 +0000 (01:28 +0000)]
Unreviewed, rolling out r229468.

This change caused http/tests/security/frame-loading-via-
document-write.html to fail.

Reverted changeset:

"http/tests/security/frame-loading-via-document-write-async-
delegates.html fails with async delegates"
https://bugs.webkit.org/show_bug.cgi?id=183460
https://trac.webkit.org/changeset/229468

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

18 months agoWeb Inspector: Sources: Open all resources in Sources tab instead of Resources/Debugger
nvasilyev@apple.com [Sat, 10 Mar 2018 01:24:24 +0000 (01:24 +0000)]
Web Inspector: Sources: Open all resources in Sources tab instead of Resources/Debugger
https://bugs.webkit.org/show_bug.cgi?id=183317
<rdar://problem/38108455>

Reviewed by Matt Baker.

* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Base/Main.js:
* UserInterface/Views/ContextMenuUtilities.js:
(WI.appendContextMenuItemsForURL):
Introduce preferredTabType option instead of listing ignoreResourcesTab, ignoreDebuggerTab, ignoreSearchTab, and ignoreNetworkTab.
The only correct outcome of selecting "Reveal in Sources Tab" context menu is to open Sources tab, not any other tab.

* UserInterface/Views/SourceCodeTextEditor.js:
(WI.SourceCodeTextEditor.prototype.textEditorGutterContextMenu):
* UserInterface/Views/TabBrowser.js:
(WI.TabBrowser.prototype.bestTabContentViewForRepresentedObject):

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

18 months agoUnconditionalize more methods in VideoFullscreenInterface (and related classes)
jer.noble@apple.com [Sat, 10 Mar 2018 01:18:08 +0000 (01:18 +0000)]
Unconditionalize more methods in VideoFullscreenInterface (and related classes)
https://bugs.webkit.org/show_bug.cgi?id=183501
<rdar://problem/38312038>

Unreviewed build fix; add correct pragmas to code referencing m_playbackSessionManager.

* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::hasActiveVideoForControlsManager const):
(WebKit::WebPageProxy::requestControlledElementID const):
(WebKit::WebPageProxy::isPlayingVideoInEnhancedFullscreen const):

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

18 months agoWeb Inspector: there should only be one way for async backend commands to send failure
bburg@apple.com [Sat, 10 Mar 2018 00:43:03 +0000 (00:43 +0000)]
Web Inspector: there should only be one way for async backend commands to send failure
https://bugs.webkit.org/show_bug.cgi?id=183524

Reviewed by Timothy Hatcher.

Source/JavaScriptCore:

If this is an async command, errors should be reported with BackendDispatcher::CallbackBase::sendFailure.
To avoid mixups, don't include the ErrorString out-parameter in generated async command signatures.
This change only affects interfaces generated for C++ backend dispatchers.

* inspector/scripts/codegen/generate_cpp_backend_dispatcher_header.py:
(CppBackendDispatcherHeaderGenerator._generate_async_handler_declaration_for_command):
* inspector/scripts/codegen/generate_cpp_backend_dispatcher_implementation.py:
(CppBackendDispatcherImplementationGenerator._generate_dispatcher_implementation_for_command):
* inspector/scripts/tests/generic/expected/commands-with-async-attribute.json-result:

Source/WebCore:

Remove some useless ErrorString arguments. Fix some bugs where we
may never call the callback in an early exit situation.

Covered by existing Inspector and protocol generator tests.

* inspector/agents/InspectorDatabaseAgent.cpp:
(WebCore::InspectorDatabaseAgent::executeSQL):
* inspector/agents/InspectorDatabaseAgent.h:
* inspector/agents/InspectorIndexedDBAgent.h:
* inspector/agents/InspectorIndexedDBAgent.cpp:
(WebCore::getDocumentAndIDBFactoryFromFrameOrSendFailure):
(WebCore::InspectorIndexedDBAgent::requestDatabaseNames):
(WebCore::InspectorIndexedDBAgent::requestDatabase):
(WebCore::InspectorIndexedDBAgent::requestData):
(WebCore::InspectorIndexedDBAgent::clearObjectStore):
(WebCore::assertDocument): Deleted.
(WebCore::assertIDBFactory): Deleted.
Modernize this code a little bit to share the document/idbFactory extraction code.

* inspector/agents/InspectorNetworkAgent.cpp:
(WebCore::InspectorNetworkAgent::loadResource):
* inspector/agents/InspectorNetworkAgent.h:

Source/WebKit:

Remove useless ErrorString argument from async commands.

For Automation protocol, introduce sync and async macros for filling
in and sending a failure response. Now that async commands don't have
an ErrorString and sync commands don't have a callback, trying to send
an error with the wrong macro is a compile-time error.

* UIProcess/Automation/WebAutomationSession.cpp:
(WebKit::WebAutomationSession::getBrowsingContexts):
(WebKit::WebAutomationSession::getBrowsingContext):
(WebKit::WebAutomationSession::createBrowsingContext):
(WebKit::WebAutomationSession::closeBrowsingContext):
(WebKit::WebAutomationSession::switchToBrowsingContext):
(WebKit::WebAutomationSession::setWindowFrameOfBrowsingContext):
(WebKit::WebAutomationSession::waitForNavigationToComplete):
(WebKit::WebAutomationSession::navigateBrowsingContext):
(WebKit::WebAutomationSession::goBackInBrowsingContext):
(WebKit::WebAutomationSession::goForwardInBrowsingContext):
(WebKit::WebAutomationSession::reloadBrowsingContext):
(WebKit::WebAutomationSession::evaluateJavaScriptFunction):
(WebKit::WebAutomationSession::resolveChildFrameHandle):
(WebKit::WebAutomationSession::resolveParentFrameHandle):
(WebKit::WebAutomationSession::computeElementLayout):
(WebKit::WebAutomationSession::selectOptionElement):
(WebKit::WebAutomationSession::isShowingJavaScriptDialog):
(WebKit::WebAutomationSession::dismissCurrentJavaScriptDialog):
(WebKit::WebAutomationSession::acceptCurrentJavaScriptDialog):
(WebKit::WebAutomationSession::messageOfCurrentJavaScriptDialog):
(WebKit::WebAutomationSession::setUserInputForCurrentJavaScriptPrompt):
(WebKit::WebAutomationSession::setFilesToSelectForFileUpload):
(WebKit::WebAutomationSession::getAllCookies):
(WebKit::WebAutomationSession::deleteSingleCookie):
(WebKit::WebAutomationSession::addSingleCookie):
(WebKit::WebAutomationSession::deleteAllCookies):
(WebKit::WebAutomationSession::setSessionPermissions):
(WebKit::WebAutomationSession::performMouseInteraction):
(WebKit::WebAutomationSession::performKeyboardInteractions):
(WebKit::WebAutomationSession::takeScreenshot):
(WebKit::WebAutomationSession::didTakeScreenshot):
* UIProcess/Automation/WebAutomationSession.h:
* UIProcess/Automation/WebAutomationSessionMacros.h:
* UIProcess/Automation/mac/WebAutomationSessionMac.mm:
(WebKit::WebAutomationSession::inspectBrowsingContext):

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

18 months agoCrash in ServiceWorkerContainer::ready
youenn@apple.com [Sat, 10 Mar 2018 00:41:13 +0000 (00:41 +0000)]
Crash in ServiceWorkerContainer::ready
https://bugs.webkit.org/show_bug.cgi?id=183380

Reviewed by Chris Dumez.

Not using 'this' through lambdas.
Instead rely on the last lambda that is passed a ScriptExecutionContext& to get back 'this' which is a ServiceWorkerContainer.

Should be covered by imported/w3c/web-platform-tests/service-workers/service-worker/register-default-scope.https.html no longer crashing.
Although it should probably be LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/ready.https.html that should crash
since this is the main test using ready.

* workers/service/ServiceWorkerContainer.cpp:
(WebCore::ServiceWorkerContainer::ready):

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

18 months agoRealtimeOutgoingAudioSource and RealtimeOutgoingVideoSource should be destroyed on...
youenn@apple.com [Sat, 10 Mar 2018 00:38:02 +0000 (00:38 +0000)]
RealtimeOutgoingAudioSource and RealtimeOutgoingVideoSource should be destroyed on the main thread
https://bugs.webkit.org/show_bug.cgi?id=183483
<rdar://problem/38214152>

Reviewed by Eric Carlson.

When dereferencing from libwebrtc code path, schedule a call to deref on main thread.
WebCore dereferencing is happening in the main thread so this guarantees destruction on the main thread.

Covered by updated mock libwebrtc peer connection backend.
We make mock senders to keep a reference to their source which are RealtimeOutgoingXXSource.
We then make mock peer connection backend to free the mock senders in a background thread.

* Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:
(WebCore::LibWebRTCPeerConnectionBackend::doStop):
* platform/mediastream/RealtimeOutgoingAudioSource.cpp:
(WebCore::RealtimeOutgoingAudioSource::stop):
* platform/mediastream/RealtimeOutgoingAudioSource.h:
* platform/mediastream/RealtimeOutgoingVideoSource.cpp:
(WebCore::RealtimeOutgoingVideoSource::stop):
* platform/mediastream/RealtimeOutgoingVideoSource.h:
* testing/MockLibWebRTCPeerConnection.cpp:
(WebCore::ThreadKeeper::create):
(WebCore::ThreadKeeper::setThread):
(WebCore::MockLibWebRTCPeerConnection::~MockLibWebRTCPeerConnection):
* testing/MockLibWebRTCPeerConnection.h:

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

18 months agoDon't pass NULL to the result parameter of SecTrustEvaluate()
jer.noble@apple.com [Sat, 10 Mar 2018 00:12:35 +0000 (00:12 +0000)]
Don't pass NULL to the result parameter of SecTrustEvaluate()
https://bugs.webkit.org/show_bug.cgi?id=183495
<rdar://problem/38185688>

Reviewed by Andy Estes.

* UIProcess/ios/WKFullScreenWindowControllerIOS.mm:
(-[WKFullScreenWindowController _EVOrganizationName]):

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

18 months agoBuildbotBuildEntry for buildbot 0.9 uses incorrect buildrequestid
aakash_jain@apple.com [Fri, 9 Mar 2018 23:45:11 +0000 (23:45 +0000)]
BuildbotBuildEntry for buildbot 0.9 uses incorrect buildrequestid
https://bugs.webkit.org/show_bug.cgi?id=183194

Reviewed by Ryosuke Niwa.

* tools/js/buildbot-syncer.js:
(BuildbotBuildEntry.prototype.initialize): Updated _buildRequestId to use correct build-request-id, as set in syncer._buildRequestPropertyName.
(BuildbotSyncer.prototype.pathForPendingBuilds): Updated url to fetch properties for build-requests.
* unit-tests/buildbot-syncer-tests.js:
(sampleBuildData): Updated sampleBuildData with correct build-request-id in properties. Added
properties to samplePendingBuildRequestData.

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

18 months agoAllow NavigationState to intercept requests and send them to SystemPreviewController
dino@apple.com [Fri, 9 Mar 2018 23:39:19 +0000 (23:39 +0000)]
Allow NavigationState to intercept requests and send them to SystemPreviewController
https://bugs.webkit.org/show_bug.cgi?id=183526
<rdar://problem/37801140>

Reviewed by Tim Horton.

Implement a bit more of SystemPreviewController, such that it can be used
from NavigationState to identify and handle content that can be previewed.

* UIProcess/Cocoa/NavigationState.mm:
(WebKit::NavigationState::NavigationClient::decidePolicyForNavigationResponse):
    If we'd in a download response policy, then check if SystemPreviewController
    can show the content. We ignore the download, but pass the original URL onto
    the preview. Ultimately, we'd want to avoid the navigation
    but use the download destination URL for preview.

* UIProcess/Cocoa/SystemPreviewControllerCocoa.mm:
(-[_WKPreviewControllerDataSource initWithURL:]):
    Move the URL to property, to help use a single datasource object for all previews.
(-[_WKPreviewControllerDataSource previewController:previewItemAtIndex:]):
(-[_WKPreviewControllerDelegate initWithSystemPreviewController:]):
    Add a delegate object, so we can detect when the preview is dismissed and return
    to the previous page.
(-[_WKPreviewControllerDelegate previewControllerWillDismiss:]):
(WebKit::SystemPreviewController::showPreview):
    Use single instances of the QLPreviewController, its datasource and delegate.

* UIProcess/SystemPreviewController.cpp:
    Add a helper to navigate back.
(WebKit::SystemPreviewController::SystemPreviewController):
(WebKit::SystemPreviewController::sendPageBack):
* UIProcess/SystemPreviewController.h:

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

18 months agowebkitfullscreenchange event not fired at the same time as :-webkit-full-screen pseud...
jer.noble@apple.com [Fri, 9 Mar 2018 23:10:05 +0000 (23:10 +0000)]
webkitfullscreenchange event not fired at the same time as :-webkit-full-screen pseudo selector changes; causes glitchiness
https://bugs.webkit.org/show_bug.cgi?id=183383
<rdar://problem/38197028>

Reviewed by Eric Carlson.

Follow-up patch: now that the 'fullscreenchange' event is being fired slightly earlier, the
Fullscreen.TopContentInset tests triggers what appears to be an existing behavior: if you
exit in the middle of an enter fullscreen animation, the exit never happens, because the
NSWindow never starts the exit animation. The solution is to store the exit fullscreen
request, and only act upon it when the enter animation completes.

* UIProcess/mac/WKFullScreenWindowController.h:
* UIProcess/mac/WKFullScreenWindowController.mm:
(-[WKFullScreenWindowController finishedEnterFullScreenAnimation:]):
(-[WKFullScreenWindowController exitFullScreen]):

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

18 months agoBuild fix after r229476.
mark.lam@apple.com [Fri, 9 Mar 2018 23:07:26 +0000 (23:07 +0000)]
Build fix after r229476.
https://bugs.webkit.org/show_bug.cgi?id=183488

Not reviewed.

* runtime/StackAlignment.h:

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

18 months agoUnconditionalize more methods in VideoFullscreenInterface (and related classes)
jer.noble@apple.com [Fri, 9 Mar 2018 22:56:51 +0000 (22:56 +0000)]
Unconditionalize more methods in VideoFullscreenInterface (and related classes)
https://bugs.webkit.org/show_bug.cgi?id=183501

Reviewed by Eric Carlson.

Source/WebCore:

No need for these methods to be PLATFORM(MAC) only.

* platform/cocoa/PlaybackSessionModel.h:
(WebCore::PlaybackSessionModelClient::ensureControlsManager):
* platform/ios/VideoFullscreenInterfaceAVKit.h:
* platform/ios/VideoFullscreenInterfaceAVKit.mm:
(VideoFullscreenInterfaceAVKit::isPlayingVideoInEnhancedFullscreen const):
* platform/mac/VideoFullscreenInterfaceMac.h:

Source/WebKit:

No reason for these methods to be PLATFORM(MAC) only.

* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _videoControlsManagerDidChange]):
* UIProcess/API/Cocoa/WKWebViewInternal.h:
* UIProcess/Cocoa/PlaybackSessionManagerProxy.mm:
(WebKit::PlaybackSessionManagerProxy::setUpPlaybackControlsManagerWithID):
(WebKit::PlaybackSessionManagerProxy::clearPlaybackControlsManager):
* UIProcess/Cocoa/VideoFullscreenManagerProxy.h:
* UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:
* UIProcess/PageClient.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::isPlayingMediaDidChange):
(WebKit::WebPageProxy::handleControlledElementIDResponse const):
(WebKit::WebPageProxy::isPlayingVideoInEnhancedFullscreen const):
* UIProcess/WebPageProxy.h:
* UIProcess/ios/PageClientImplIOS.h:
* UIProcess/ios/PageClientImplIOS.mm:
(WebKit::PageClientImpl::videoControlsManagerDidChange):
* UIProcess/ios/WKFullScreenWindowControllerIOS.h:
* UIProcess/ios/WKFullScreenWindowControllerIOS.mm:
(-[WKFullScreenWindowController videoControlsManagerDidChange]):
* WebProcess/cocoa/PlaybackSessionManager.mm:
(WebKit::PlaybackSessionManager::setUpPlaybackControlsManager):

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

18 months agoCreate CA layer contexts with +remoteContextWithOptions.
pvollan@apple.com [Fri, 9 Mar 2018 22:43:49 +0000 (22:43 +0000)]
Create CA layer contexts with +remoteContextWithOptions.
https://bugs.webkit.org/show_bug.cgi?id=182747

Reviewed by Brent Fulgham.

CA layer contexts (CAContext) are currently created with +contextWithCGSConnection, which is
using the main WindowServer connection to create the context. Instead, the contexts can be
created with +remoteContextWithOptions, which does not use the main WindowServer connection.
This is a step towards limiting the access the WebContent process has to the window server.
To make the +remoteContextWithOptions call succeed, the sandbox has to be modified to allow
access to CARenderServer. Also, access to the WindowServer should be denied by calling
CGSSetDenyWindowServerConnections(true) before entering the sandbox. This is planned to do
in a follow-up patch. The call to +remoteContextWithOptions will open up WindowServer
connections, since the WindowServer is the system default CA render server, but these
connections come with limited WindowServer exposure. In addition, we need to open up the
sandbox for accessing some IOKit properties.

* Platform/mac/LayerHostingContext.mm:
(WebKit::LayerHostingContext::createForExternalHostingProcess):
* Shared/mac/HangDetectionDisablerMac.mm:
(WebKit::setClientsMayIgnoreEvents):
* WebProcess/com.apple.WebProcess.sb.in:

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

18 months agoServiceWorker should respect IDB and DOMCache partitioning
youenn@apple.com [Fri, 9 Mar 2018 21:47:31 +0000 (21:47 +0000)]
ServiceWorker should respect IDB and DOMCache partitioning
https://bugs.webkit.org/show_bug.cgi?id=183496

Reviewed by Brady Eidson.

Source/WebCore:

Test: http/wpt/service-workers/third-party-registration.html

Set the correct top origin of service worker ScriptExecutionContext.

* workers/service/context/ServiceWorkerThread.cpp:
(WebCore::ServiceWorkerThread::ServiceWorkerThread):

LayoutTests:

* http/wpt/service-workers/resources/third-party-registration-frame.html: Added.
* http/wpt/service-workers/resources/third-party-worker.js: Added.
* http/wpt/service-workers/third-party-registration-expected.txt: Added.
* http/wpt/service-workers/third-party-registration.html: Added.

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

18 months ago[Re-landing] Add support for ARM64E.
mark.lam@apple.com [Fri, 9 Mar 2018 21:45:51 +0000 (21:45 +0000)]
[Re-landing] Add support for ARM64E.
https://bugs.webkit.org/show_bug.cgi?id=183398
<rdar://problem/38212621>

Reviewed by Michael Saboff.

* assembler/MacroAssembler.h:
* llint/LLIntOfflineAsmConfig.h:
* llint/LowLevelInterpreter.asm:
* llint/LowLevelInterpreter64.asm:
* offlineasm/backends.rb:

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

18 months ago[Re-landing] Prepare LLInt code to support pointer profiling.
mark.lam@apple.com [Fri, 9 Mar 2018 21:35:17 +0000 (21:35 +0000)]
[Re-landing] Prepare LLInt code to support pointer profiling.
https://bugs.webkit.org/show_bug.cgi?id=183387
<rdar://problem/38199678>

Reviewed by JF Bastien.

Source/JavaScriptCore:

1. Introduced PtrTag enums for supporting pointer profiling later.

2. Also introduced tagging, untagging, retagging, and tag removal placeholder
   template functions for the same purpose.

3. Prepare the offlineasm for supporting pointer profiling later.

4. Tagged some pointers in LLInt asm code.  Currently, these should have no
   effect on behavior.

5. Removed returnToThrowForThrownException() because it is not used anywhere.

6. Added the offlineasm folder to JavaScriptCore Xcode project so that it's
   easier to view and edit these files in Xcode.

* CMakeLists.txt:
* JavaScriptCore.xcodeproj/project.pbxproj:
* bytecode/LLIntCallLinkInfo.h:
(JSC::LLIntCallLinkInfo::unlink):
* llint/LLIntData.cpp:
(JSC::LLInt::initialize):
* llint/LLIntData.h:
* llint/LLIntExceptions.cpp:
(JSC::LLInt::returnToThrowForThrownException): Deleted.
* llint/LLIntExceptions.h:
* llint/LLIntOfflineAsmConfig.h:
* llint/LLIntOffsetsExtractor.cpp:
* llint/LLIntPCRanges.h:
(JSC::LLInt::isLLIntPC):
* llint/LLIntSlowPaths.cpp:
(JSC::LLInt::LLINT_SLOW_PATH_DECL):
(JSC::LLInt::handleHostCall):
(JSC::LLInt::setUpCall):
* llint/LowLevelInterpreter.asm:
* llint/LowLevelInterpreter32_64.asm:
* llint/LowLevelInterpreter64.asm:
* offlineasm/ast.rb:
* offlineasm/instructions.rb:
* offlineasm/risc.rb:
* runtime/PtrTag.h: Added.
(JSC::uniquePtrTagID):
(JSC::ptrTag):
(JSC::tagCodePtr):
(JSC::untagCodePtr):
(JSC::retagCodePtr):
(JSC::removeCodePtrTag):

Source/WTF:

* wtf/Platform.h:

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

18 months agoRemove cookie API access from WebContent Process
bfulgham@apple.com [Fri, 9 Mar 2018 21:31:02 +0000 (21:31 +0000)]
Remove cookie API access from WebContent Process
https://bugs.webkit.org/show_bug.cgi?id=183519
<rdar://problem/35368802>

Reviewed by Alex Christensen.

All cookie access is now handled in the Network Process. However, there are vestiges of the original logic that used CFNetwork APIs in the WebContent process.

This patch removes CFNetwork calls from the WebProcess code paths, since they serve no purpose in modern WebKit.

No tests because this is a code cleanup with no expected change in behavior.

* NetworkProcess/Cookies/mac/WebCookieManagerMac.mm:
(WebKit::WebCookieManager::platformSetHTTPCookieAcceptPolicy): Moved from WebFrameNetworkingContext.
* NetworkProcess/NetworkProcess.h:
* NetworkProcess/cocoa/NetworkProcessCocoa.mm:
(WebKit::NetworkProcess::setSharedHTTPCookieStorage): Moved from ChildProcess, since this should only be
called in the NetworkProcess.
* Shared/ChildProcess.h:
* Shared/mac/ChildProcessMac.mm:
(WebKit::ChildProcess::setSharedHTTPCookieStorage): Deleted.
* WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.h:
* WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.mm:
(WebKit::WebFrameNetworkingContext::ensureWebsiteDataStoreSession): Remove CFNetwork code. This version of
'ensureWebsiteDataStoreSession' is needed to maintain a dictionary on the WebProcess side so we can refer to
the same network session in both the WebContent and Network processes.
(WebKit::WebFrameNetworkingContext::webFrameLoaderClient const):
(WebKit::WebFrameNetworkingContext::setCookieAcceptPolicyForAllContexts): Deleted.
* WebProcess/cocoa/WebProcessCocoa.mm:
(WebKit::WebProcess::platformInitializeWebProcess): Remove calls to CFNetwork.

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

18 months agoCannot change audio input source device
youenn@apple.com [Fri, 9 Mar 2018 21:14:58 +0000 (21:14 +0000)]
Cannot change audio input source device
https://bugs.webkit.org/show_bug.cgi?id=175975
<rdar://problem/34073589>

Reviewed by Eric Carlson.

Covered by manually testing https://webrtc.github.io/samples/src/content/devices/input-output/ with a USB web cam.

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

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

18 months agoRemove unused LLINT_STATS feature.
mark.lam@apple.com [Fri, 9 Mar 2018 21:04:03 +0000 (21:04 +0000)]
Remove unused LLINT_STATS feature.
https://bugs.webkit.org/show_bug.cgi?id=183522
<rdar://problem/38313139>

Rubber-stamped by Keith Miller.

We haven't used this in a while, and it is one more option that makes offlineasm
build slower.  We can always re-introduce this later if we need it.

* jsc.cpp:
* llint/LLIntCommon.h:
* llint/LLIntData.cpp:
(JSC::LLInt::initialize):
(JSC::LLInt::Data::finalizeStats): Deleted.
(JSC::LLInt::compareStats): Deleted.
(JSC::LLInt::Data::dumpStats): Deleted.
(JSC::LLInt::Data::ensureStats): Deleted.
(JSC::LLInt::Data::loadStats): Deleted.
(JSC::LLInt::Data::resetStats): Deleted.
(JSC::LLInt::Data::saveStats): Deleted.
* llint/LLIntData.h:
(): Deleted.
(JSC::LLInt::Data::opcodeStats): Deleted.
* llint/LLIntOfflineAsmConfig.h:
* llint/LLIntSlowPaths.cpp:
* llint/LLIntSlowPaths.h:
* llint/LowLevelInterpreter.asm:
* llint/LowLevelInterpreter32_64.asm:
* llint/LowLevelInterpreter64.asm:
* runtime/Options.cpp:
(JSC::Options::isAvailable):
(JSC::recomputeDependentOptions):
* runtime/Options.h:
* runtime/TestRunnerUtils.cpp:
(JSC::finalizeStatsAtEndOfTesting):

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

18 months agoServiceWorkerClientFetch should send data to its resource loader once the didReceiveR...
youenn@apple.com [Fri, 9 Mar 2018 20:47:11 +0000 (20:47 +0000)]
ServiceWorkerClientFetch should send data to its resource loader once the didReceiveResponse completion handler is called
https://bugs.webkit.org/show_bug.cgi?id=183110

Reviewed by Chris Dumez.

Buffering data/finish event/fail event until the response completion handler is called.

* WebProcess/Storage/ServiceWorkerClientFetch.cpp:
(WebKit::ServiceWorkerClientFetch::didReceiveResponse):
(WebKit::ServiceWorkerClientFetch::didReceiveData):
(WebKit::ServiceWorkerClientFetch::didFinish):
(WebKit::ServiceWorkerClientFetch::didFail):
(WebKit::ServiceWorkerClientFetch::didNotHandle):
(WebKit::ServiceWorkerClientFetch::cancel):
(WebKit::ServiceWorkerClientFetch::continueLoadingAfterCheckingResponse):
* WebProcess/Storage/ServiceWorkerClientFetch.h:

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

18 months agoRelanding "testmasm crashes in testBranchTruncateDoubleToInt32() on ARM64"
msaboff@apple.com [Fri, 9 Mar 2018 20:27:40 +0000 (20:27 +0000)]
Relanding "testmasm crashes in testBranchTruncateDoubleToInt32() on ARM64"
https://bugs.webkit.org/show_bug.cgi?id=183488

It applied and built just fine locally.

* assembler/testmasm.cpp:
(JSC::testBranchTruncateDoubleToInt32):

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

18 months agoAdd new CSS env constants for use with fullscreen
jer.noble@apple.com [Fri, 9 Mar 2018 19:20:31 +0000 (19:20 +0000)]
Add new CSS env constants for use with fullscreen
https://bugs.webkit.org/show_bug.cgi?id=183498

Reviewed by Dean Jackson.

Source/WebCore:

Tests: fullscreen/fullscreen-auto-hide-delay.html
       fullscreen/fullscreen-inset-top.html

* dom/ConstantPropertyMap.cpp:
(WebCore::ConstantPropertyMap::nameForProperty const):
(WebCore::variableDataForPositiveDuration):
(WebCore::ConstantPropertyMap::setFullscreenInsetTop):
(WebCore::ConstantPropertyMap::setFullscreenAutoHideDelay):
* dom/ConstantPropertyMap.h:
* page/Page.cpp:
(WebCore::Page::setFullscreenInsetTop):
(WebCore::Page::setFullscreenAutoHideDelay):
* page/Page.h:
* testing/Internals.cpp:
(WebCore::Internals::resetToConsistentState):
(WebCore::Internals::setFullscreenInsetTop):
(WebCore::Internals::setFullscreenAutoHideDelay):
* testing/Internals.h:
* testing/Internals.idl:

Source/WebKit:

Pass the values given to WebFullScreenManagerProxy through the process boundary and
into WebCore.

* UIProcess/WebFullScreenManagerProxy.cpp:
(WebKit::WebFullScreenManagerProxy::setFullscreenInsetTop):
(WebKit::WebFullScreenManagerProxy::setFullscreenAutoHideDelay):
* UIProcess/WebFullScreenManagerProxy.h:
* WebProcess/FullScreen/WebFullScreenManager.cpp:
(WebKit::WebFullScreenManager::didExitFullScreen):
(WebKit::WebFullScreenManager::setFullscreenInsetTop):
(WebKit::WebFullScreenManager::setFullscreenAutoHideDelay):
* WebProcess/FullScreen/WebFullScreenManager.h:
* WebProcess/FullScreen/WebFullScreenManager.messages.in:

LayoutTests:

* fullscreen/full-screen-test.js:
(run):
* fullscreen/fullscreen-auto-hide-delay-expected.txt: Added.
* fullscreen/fullscreen-auto-hide-delay.html: Added.
* fullscreen/fullscreen-inset-top-expected.txt: Added.
* fullscreen/fullscreen-inset-top.html: Added.

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

18 months agoRenderTreeBuilder::splitAnonymousBoxesAroundChild should take multicolumn spanners...
zalan@apple.com [Fri, 9 Mar 2018 19:14:23 +0000 (19:14 +0000)]
RenderTreeBuilder::splitAnonymousBoxesAroundChild should take multicolumn spanners into account.
https://bugs.webkit.org/show_bug.cgi?id=183493
<rdar://problem/38030461>

Reviewed by Antti Koivisto.

Source/WebCore:

Multicolumn spanners are taken out of their original position and placed next
to a RenderMultiColumnSet. splitAnonymousBoxesAroundChild needs to know the original parent (in the render tree context).

Test: fast/multicol/adjust-beforeChild-for-spanner-crash.html

* rendering/updating/RenderTreeBuilder.cpp:
(WebCore::RenderTreeBuilder::splitAnonymousBoxesAroundChild):
* rendering/updating/RenderTreeBuilder.h:
* rendering/updating/RenderTreeBuilderBlock.cpp:
(WebCore::RenderTreeBuilder::Block::attachIgnoringContinuation):
* rendering/updating/RenderTreeBuilderMultiColumn.cpp:
(WebCore::RenderTreeBuilder::MultiColumn::adjustBeforeChildForMultiColumnSpannerIfNeeded):
* rendering/updating/RenderTreeBuilderMultiColumn.h:
* rendering/updating/RenderTreeBuilderRuby.cpp:
(WebCore::RenderTreeBuilder::Ruby::moveChildrenInternal):
* rendering/updating/RenderTreeBuilderTable.cpp:
(WebCore::RenderTreeBuilder::Table::attach):

LayoutTests:

* fast/multicol/adjust-beforeChild-for-spanner-crash-expected.txt: Added.
* fast/multicol/adjust-beforeChild-for-spanner-crash.html: Added.

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

18 months ago[LayoutReloaded] Initial commit -block formatting context.
zalan@apple.com [Fri, 9 Mar 2018 19:10:37 +0000 (19:10 +0000)]
[LayoutReloaded] Initial commit -block formatting context.
https://bugs.webkit.org/show_bug.cgi?id=183462

Reviewed by Antti Koivisto.

See README.md

* LayoutReloaded/BlockContainer.js: Added.
(BlockContainer):
(BlockContainer.prototype.establishesInlineFormattingContext):
* LayoutReloaded/BlockFormattingContext.js: Added.
(BlockFormattingContext):
(BlockFormattingContext.prototype.layout):
(BlockFormattingContext.prototype.computeWidth):
(BlockFormattingContext.prototype.computeHeight):
(BlockFormattingContext.prototype.marginTop):
(BlockFormattingContext.prototype.marginBottom):
(BlockFormattingContext.prototype._computeStaticPosition):
(BlockFormattingContext.prototype._placeInFlowPositionedChildren):
(BlockFormattingContext.prototype._placeOutOfFlowDescendants):
(BlockFormattingContext.prototype._computeOutOfFlowWidth):
(BlockFormattingContext.prototype._computeFloatingWidth):
(BlockFormattingContext.prototype._computeInFlowWidth):
(BlockFormattingContext.prototype._computeOutOfFlowHeight):
(BlockFormattingContext.prototype._computeFloatingHeight):
(BlockFormattingContext.prototype._computeInFlowHeight):
(BlockFormattingContext.prototype._computeHorizontalConstraint):
(BlockFormattingContext.prototype._computeContentHeight):
(BlockFormattingContext.prototype._computeInFlowPositionedPosition):
(BlockFormattingContext.prototype._computeOutOfFlowPosition):
(BlockFormattingContext.prototype._shrinkToFitWidth):
* LayoutReloaded/BlockMarginCollapse.js: Added.
(BlockMarginCollapse.marginTop):
(BlockMarginCollapse.marginBottom):
(BlockMarginCollapse._isMarginTopCollapsedWithSibling):
(BlockMarginCollapse._isMarginBottomCollapsedWithSibling):
(BlockMarginCollapse._isMarginTopCollapsedWithParent):
(BlockMarginCollapse._isMarginBottomCollapsedWithParent):
(BlockMarginCollapse._nonCollapsedMarginTop):
(BlockMarginCollapse._nonCollapsedMarginBottom):
(BlockMarginCollapse._collapsedMarginTopFromFirstChild):
(BlockMarginCollapse._collapsedMarginBottomFromLastChild):
(BlockMarginCollapse._marginValue):
(BlockMarginCollapse._hasAdjoiningMarginTopAndBottom):
(BlockMarginCollapse):
* LayoutReloaded/Box.js: Added.
(Box):
(Box.prototype.id):
(Box.prototype.setRendererName):
(Box.prototype.name):
(Box.prototype.node):
(Box.prototype.parent):
(Box.prototype.nextSibling):
(Box.prototype.nextInFlowSibling):
(Box.prototype.previousSibling):
(Box.prototype.previousInFlowSibling):
(Box.prototype.setParent):
(Box.prototype.setNextSibling):
(Box.prototype.setPreviousSibling):
(Box.prototype.rect):
(Box.prototype.topLeft):
(Box.prototype.bottomRight):
(Box.prototype.setTopLeft):
(Box.prototype.setSize):
(Box.prototype.setWidth):
(Box.prototype.setHeight):
(Box.prototype.isContainer):
(Box.prototype.isBlockLevelBox):
(Box.prototype.isBlockContainerBox):
(Box.prototype.isInlineLevelBox):
(Box.prototype.setIsAnonymous):
(Box.prototype.isAnonymous):
(Box.prototype.establishesFormattingContext):
(Box.prototype.establishedFormattingContext):
(Box.prototype.establishesBlockFormattingContext):
(Box.prototype.establishesInlineFormattingContext):
(Box.prototype.isPositioned):
(Box.prototype.isRelativePositioned):
(Box.prototype.isAbsolutePositioned):
(Box.prototype.isFixedPositioned):
(Box.prototype.isInFlow):
(Box.prototype.isOutOfFlowPositioned):
(Box.prototype.isInFlowPositioned):
(Box.prototype.isFloatingPositioned):
(Box.prototype.isFloatingOrOutOfFlowPositioned):
(Box.prototype.isRootElement):
(Box.prototype.containingBlock):
(Box.prototype.borderBox):
(Box.prototype.paddingBox):
(Box.prototype.contentBox):
* LayoutReloaded/Container.js: Added.
(Container):
(Container.prototype.isContainer):
(Container.prototype.setFirstChild):
(Container.prototype.setLastChild):
(Container.prototype.firstChild):
(Container.prototype.firstInFlowChild):
(Container.prototype.lastChild):
(Container.prototype.lastInFlowChild):
(Container.prototype.hasChild):
(Container.prototype.hasInFlowChild):
* LayoutReloaded/FloatingContext.js: Added.
(FloatingContext):
(FloatingContext.prototype.computePosition):
(FloatingContext.prototype.bottom):
(FloatingContext.prototype._positionForFloating):
(FloatingContext.prototype._positionForClear):
(FloatingContext.prototype._computePositionToAvoidIntrudingFloats):
(FloatingContext.prototype._addFloating):
(FloatingContext.prototype._findInnerMostLeftAndRight):
(FloatingContext.prototype._moveToNextVerticalPosition):
(FloatingContext.prototype._availableSpace):
(FloatingContext.prototype._findFloatingAtVerticalPosition):
(FloatingContext.prototype._isEmpty):
(FloatingContext.prototype._adjustedFloatingPosition):
(FloatingContext.prototype._bottom):
(FloatingContext.prototype._formattingContext):
* LayoutReloaded/FormattingContext.js: Added.
(FormattingContext):
(FormattingContext.prototype.rootContainer):
(FormattingContext.prototype.floatingContext):
(FormattingContext.prototype.layout):
(FormattingContext.prototype.computeWidth):
(FormattingContext.prototype.computeHeight):
(FormattingContext.prototype.marginTop):
(FormattingContext.prototype.marginLeft):
(FormattingContext.prototype.marginBottom):
(FormattingContext.prototype.marginRight):
(FormattingContext.prototype.absoluteMarginBox):
(FormattingContext.prototype.absoluteBorderBox):
(FormattingContext.prototype.absolutePaddingBox):
(FormattingContext.prototype.absoluteContentBox):
* LayoutReloaded/InitialBlockContainer.js: Added.
(InitialBlockContainer):
(InitialBlockContainer.prototype.establishesBlockFormattingContext):
(InitialBlockContainer.prototype.paddingBox):
(InitialBlockContainer.prototype.contentBox):
* LayoutReloaded/InlineBox.js: Added.
(InlineBox):
(InlineBox.prototype.setText):
(InlineBox.prototype.text):
* LayoutReloaded/InlineFormattingContext.js: Added.
(InlineFormattingContext):
(InlineFormattingContext.prototype.layout):
(InlineFormattingContext.prototype._handleInlineBox):
(InlineFormattingContext.prototype._handleText):
* LayoutReloaded/Layout.js: Added.
(layout):
* LayoutReloaded/LayoutContext.js: Added.
(LayoutContext):
(LayoutContext.prototype.layoutFormattingContext):
* LayoutReloaded/LayoutReloaded.xcworkspace/contents.xcworkspacedata: Added.
* LayoutReloaded/LayoutReloaded.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: Added.
* LayoutReloaded/README.md: Added.
* LayoutReloaded/Text.js: Added.
(Text):
* LayoutReloaded/TreeBuilder.js: Added.
(TreeBuilder.prototype.createTree):
(TreeBuilder.prototype._createAndAttachBox):
(TreeBuilder.prototype._appendChild):
(TreeBuilder.prototype._findBox):
(TreeBuilder.prototype._findNode):
(TreeBuilder):
* LayoutReloaded/Utils.js: Added.
(LayoutPoint):
(LayoutPoint.prototype.setLeft):
(LayoutPoint.prototype.setTop):
(LayoutPoint.prototype.left):
(LayoutPoint.prototype.top):
(LayoutPoint.prototype.shiftLeft):
(LayoutPoint.prototype.shiftTop):
(LayoutPoint.prototype.moveBy):
(LayoutPoint.prototype.equal):
(LayoutPoint.prototype.clone):
(LayoutSize):
(LayoutSize.prototype.setWidth):
(LayoutSize.prototype.setHeight):
(LayoutSize.prototype.width):
(LayoutSize.prototype.height):
(LayoutSize.prototype.growBy):
(LayoutSize.prototype.shrinkBy):
(LayoutSize.prototype.isEmpty):
(LayoutSize.prototype.equal):
(LayoutSize.prototype.clone):
(LayoutRect):
(LayoutRect.prototype.setTop):
(LayoutRect.prototype.setLeft):
(LayoutRect.prototype.setBottom):
(LayoutRect.prototype.setRight):
(LayoutRect.prototype.left):
(LayoutRect.prototype.top):
(LayoutRect.prototype.bottom):
(LayoutRect.prototype.right):
(LayoutRect.prototype.setTopLeft):
(LayoutRect.prototype.topLeft):
(LayoutRect.prototype.topRight):
(LayoutRect.prototype.bottomRight):
(LayoutRect.prototype.setWidth):
(LayoutRect.prototype.setHeight):
(LayoutRect.prototype.setSize):
(LayoutRect.prototype.size):
(LayoutRect.prototype.width):
(LayoutRect.prototype.height):
(LayoutRect.prototype.growBy):
(LayoutRect.prototype.shrinkBy):
(LayoutRect.prototype.moveBy):
(LayoutRect.prototype.isEmpty):
(LayoutRect.prototype.equal):
(LayoutRect.prototype.intersects):
(LayoutRect.prototype.contains):
(LayoutRect.prototype.clone):
(ASSERT_NOT_REACHED):
(ASSERT):
(Utils.computedValue):
(Utils.propertyIsAuto):
(Utils.isWidthAuto):
(Utils.isHeightAuto):
(Utils.isTopAuto):
(Utils.isLeftAuto):
(Utils.isBottomAuto):
(Utils.isRightAuto):
(Utils.width):
(Utils.height):
(Utils.top):
(Utils.bottom):
(Utils.left):
(Utils.right):
(Utils.hasBorderTop):
(Utils.hasBorderBottom):
(Utils.hasPaddingTop):
(Utils.hasPaddingBottom):
(Utils.computedMarginTop):
(Utils.computedMarginLeft):
(Utils.computedMarginBottom):
(Utils.computedMarginRight):
(Utils.computedBorderTopLeft):
(Utils.computedBorderBottomRight):
(Utils.computedPaddingTopLeft):
(Utils.computedPaddingBottomRight):
(Utils.computedBorderAndPaddingTop):
(Utils.computedBorderAndPaddingLeft):
(Utils.computedBorderAndPaddingBottom):
(Utils.computedBorderAndPaddingRight):
(Utils.computedHorizontalBorderAndPadding):
(Utils.computedVerticalBorderAndPadding):
(Utils.hasClear):
(Utils.hasClearLeft):
(Utils.hasClearRight):
(Utils.hasClearBoth):
(Utils.isBlockLevelElement):
(Utils.isBlockContainerElement):
(Utils.isInlineLevelElement):
(Utils.isTableElement):
(Utils.isRelativePositioned):
(Utils.isAbsolutePositioned):
(Utils.isFixedPositioned):
(Utils.isOverflowVisible):
(Utils.isFloatingPositioned):
(Utils.isFloatingLeft):
(Utils.mapToContainer):
(Utils.mapStaticToAbsolute):
(Utils.collectOutOfFlowDescendants):
(Utils.nextBreakingOpportunity):
(Utils.measureText):
(Utils.layoutTreeDump):
(Utils._dumpBox):
(Utils._dumpTree):
(Utils):
* LayoutReloaded/misc/LayoutReloadedWebKit.patch: Added.
* LayoutReloaded/misc/headers/BlockContainer.h: Added.
* LayoutReloaded/misc/headers/BlockFormattingContext.h: Added.
* LayoutReloaded/misc/headers/BlockMarginCollapse.h: Added.
* LayoutReloaded/misc/headers/Box.h: Added.
* LayoutReloaded/misc/headers/Container.h: Added.
* LayoutReloaded/misc/headers/FloatingContext.h: Added.
* LayoutReloaded/misc/headers/FormattingContext.h: Added.
* LayoutReloaded/misc/headers/InitialBlockContainer.h: Added.
* LayoutReloaded/misc/headers/InlineBox.h: Added.
* LayoutReloaded/misc/headers/LayoutContext.h: Added.
* LayoutReloaded/misc/headers/Text.h: Added.
* LayoutReloaded/test/TestHarness.js: Added.
(verifyLayoutTreeDump):
(runLayout):
* LayoutReloaded/test/absolute-auto-with-sibling-margin-bottom.html: Added.
* LayoutReloaded/test/absolute-bottom.html: Added.
* LayoutReloaded/test/absolute-height-stretch.html: Added.
* LayoutReloaded/test/absolute-left-auto.html: Added.
* LayoutReloaded/test/absolute-left-right-top-bottom-auto.html: Added.
* LayoutReloaded/test/absolute-nested.html: Added.
* LayoutReloaded/test/absolute-nested2.html: Added.
* LayoutReloaded/test/absolute-simple.html: Added.
* LayoutReloaded/test/absolute-width-shrink-to-fit.html: Added.
* LayoutReloaded/test/absolute-width-stretch.html: Added.
* LayoutReloaded/test/absolute-with-inline-preferred-width.html: Added.
* LayoutReloaded/test/absolute-with-static-block-position-nested.html: Added.
* LayoutReloaded/test/almost-intruding-left-float-simple.html: Added.
* LayoutReloaded/test/border-simple.html: Added.
* LayoutReloaded/test/fixed-nested.html: Added.
* LayoutReloaded/test/float-left-when-container-has-padding-margin.html: Added.
* LayoutReloaded/test/floating-box-clear-both-simple.html: Added.
* LayoutReloaded/test/floating-box-clear-right-simple.html: Added.
* LayoutReloaded/test/floating-box-left-and-right-multiple-with-top-offset.html: Added.
* LayoutReloaded/test/floating-box-left-and-right-multiple.html: Added.
* LayoutReloaded/test/floating-box-right-simple.html: Added.
* LayoutReloaded/test/floating-box-with-clear-siblings.html: Added.
* LayoutReloaded/test/floating-box-with-clear-simple.html: Added.
* LayoutReloaded/test/floating-box-with-new-formatting-context.html: Added.
* LayoutReloaded/test/floating-box-with-relative-positioned-sibling.html: Added.
* LayoutReloaded/test/floating-left-right-simple.html: Added.
* LayoutReloaded/test/floating-left-right-with-all-margins.html: Added.
* LayoutReloaded/test/floating-lefts-and-rights-simple.html: Added.
* LayoutReloaded/test/floating-multiple-lefts-in-body.html: Added.
* LayoutReloaded/test/floating-multiple-lefts-multiple-lines.html: Added.
* LayoutReloaded/test/floating-multiple-lefts.html: Added.
* LayoutReloaded/test/floating-sizing.html: Added.
* LayoutReloaded/test/floating-sizing2.html: Added.
* LayoutReloaded/test/floating-sizing3.html: Added.
* LayoutReloaded/test/floating-with-new-block-formatting-context.html: Added.
* LayoutReloaded/test/index.html: Added.
* LayoutReloaded/test/inline-content-simple.html: Added.
* LayoutReloaded/test/intruding-left-float-simple.html: Added.
* LayoutReloaded/test/margin-collapse-bottom-bottom.html: Added.
* LayoutReloaded/test/margin-collapse-bottom-nested.html: Added.
* LayoutReloaded/test/margin-collapse-first-last-are-floating.html: Added.
* LayoutReloaded/test/margin-collapse-simple.html: Added.
* LayoutReloaded/test/margin-collapse-top-nested.html: Added.
* LayoutReloaded/test/margin-collapse-when-child-has-padding-border.html: Added.
* LayoutReloaded/test/margin-collapse-with-block-formatting-context.html: Added.
* LayoutReloaded/test/margin-collapse-with-block-formatting-context2.html: Added.
* LayoutReloaded/test/margin-left-right-sizing-out-of-flow.html: Added.
* LayoutReloaded/test/margin-left-right-sizing.html: Added.
* LayoutReloaded/test/margin-propagation-simple-content-height.html: Added.
* LayoutReloaded/test/margin-sibling-collapse-propagated.html: Added.
* LayoutReloaded/test/margin-simple.html: Added.
* LayoutReloaded/test/negative-margin-simple.html: Added.
* LayoutReloaded/test/padding-nested.html: Added.
* LayoutReloaded/test/padding-simple.html: Added.
* LayoutReloaded/test/relative-auto-with-parent-offset.html: Added.
* LayoutReloaded/test/relative-auto.html: Added.
* LayoutReloaded/test/relative-bottom.html: Added.
* LayoutReloaded/test/relative-right.html: Added.
* LayoutReloaded/test/relative-siblings.html: Added.
* LayoutReloaded/test/relative-simple.html: Added.

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

18 months agoAdd isPictureInPictureActive messaging across WebKit process boundary
jer.noble@apple.com [Fri, 9 Mar 2018 18:59:33 +0000 (18:59 +0000)]
Add isPictureInPictureActive messaging across WebKit process boundary
https://bugs.webkit.org/show_bug.cgi?id=183499

Reviewed by Eric Carlson.

Source/WebCore:

* platform/cocoa/PlaybackSessionModel.h:
(WebCore::PlaybackSessionModelClient::pictureInPictureActiveChanged):
* platform/cocoa/PlaybackSessionModelMediaElement.h:
* platform/cocoa/PlaybackSessionModelMediaElement.mm:
(WebCore::PlaybackSessionModelMediaElement::updateForEventName):
(WebCore::PlaybackSessionModelMediaElement::isPictureInPictureActive const):
* platform/ios/WebVideoFullscreenControllerAVKit.mm:
(VideoFullscreenControllerContext::isPictureInPictureActive const):

Source/WebKit:

* UIProcess/Cocoa/PlaybackSessionManagerProxy.h:
* UIProcess/Cocoa/PlaybackSessionManagerProxy.messages.in:
* UIProcess/Cocoa/PlaybackSessionManagerProxy.mm:
(WebKit::PlaybackSessionModelContext::pictureInPictureActiveChanged):
(WebKit::PlaybackSessionManagerProxy::pictureInPictureActiveChanged):

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

18 months ago[Curl] Implement connection limit.
commit-queue@webkit.org [Fri, 9 Mar 2018 18:51:27 +0000 (18:51 +0000)]
[Curl] Implement connection limit.
https://bugs.webkit.org/show_bug.cgi?id=183016

Implement both connection limit per host and total
connection limit on curl network layer.

Patch by Basuke Suzuki <Basuke.Suzuki@sony.com> on 2018-03-09
Reviewed by Youenn Fablet.

No new tests because there's no behavior change.

* platform/network/curl/CurlContext.cpp:
(WebCore::EnvironmentVariableReader::sscanTemplate<signed>):
(WebCore::CurlContext::CurlContext):
(WebCore::CurlMultiHandle::setMaxConnects):
(WebCore::CurlMultiHandle::setMaxTotalConnections):
(WebCore::CurlMultiHandle::setMaxHostConnections):
* platform/network/curl/CurlContext.h:
(WebCore::CurlContext::scheduler):
* platform/network/curl/CurlRequest.cpp:
(WebCore::CurlRequest::startWithJobManager):
(WebCore::CurlRequest::cancel):
(WebCore::CurlRequest::invokeDidReceiveResponseForFile):
(WebCore::CurlRequest::completeDidReceiveResponse):
(WebCore::CurlRequest::pausedStatusChanged):
* platform/network/curl/CurlRequestScheduler.cpp:
(WebCore::CurlRequestScheduler::CurlRequestScheduler):
(WebCore::CurlRequestScheduler::workerThread):
(WebCore::CurlRequestScheduler::singleton): Deleted.
* platform/network/curl/CurlRequestScheduler.h:

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

18 months agoWebKitTestRunner: Do not build accessibility files/idl when !HAVE(ACCESSIBILITY)
commit-queue@webkit.org [Fri, 9 Mar 2018 18:51:26 +0000 (18:51 +0000)]
WebKitTestRunner: Do not build accessibility files/idl when !HAVE(ACCESSIBILITY)
https://bugs.webkit.org/show_bug.cgi?id=183516

Patch by Stephan Szabo <stephan.szabo@sony.com> on 2018-03-09
Reviewed by Alex Christensen.

* WebKitTestRunner/CMakeLists.txt:

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

18 months ago[webkitpy, WinCairo] Launch Apache HTTPD for HTTP Tests.
commit-queue@webkit.org [Fri, 9 Mar 2018 18:48:46 +0000 (18:48 +0000)]
[webkitpy, WinCairo] Launch Apache HTTPD for HTTP Tests.
https://bugs.webkit.org/show_bug.cgi?id=183265

Patch by Basuke Suzuki <Basuke.Suzuki@sony.com> on 2018-03-09
Reviewed by Daniel Bates.

Launch apache httpd server from python script for WinCairo HTTP LayoutTests. By now, AppleWin uses
Cygwin to launch httpd server. This patch enables native Windows to run HTTP LayoutTests by starting
and stopping httpd server from the script.

Tools:

* Scripts/webkitpy/layout_tests/servers/apache_http_server.py:
(LayoutTestApacheHttpd.__init__):
(LayoutTestApacheHttpd._copy_apache_config_file):
(LayoutTestApacheHttpd):
(LayoutTestApacheHttpd.platform):
(LayoutTestApacheHttpd._spawn_process):
(LayoutTestApacheHttpd._stop_running_server):
(LayoutTestApacheHttpd._run):
(LayoutTestApacheHttpd._server_error):
* Scripts/webkitpy/layout_tests/servers/http_server_base.py:
(HttpServerBase.aliases):
(HttpServerBase):
(HttpServerBase._build_alias_path_pairs):
(HttpServerBase._build_alias_path_pairs._make_path):
* Scripts/webkitpy/layout_tests/servers/http_server_base_unittest.py:
(TestHttpServerBase.test_corrupt_pid_file):
(TestHttpServerBase):
(TestHttpServerBase.test_build_alias_path_pairs):
* Scripts/webkitpy/port/base.py:
(Port._apache_config_file_name_for_platform):
* Scripts/webkitpy/port/port_testcase.py:
(test_apache_config_file_name_for_platform):
* Scripts/webkitpy/port/win.py:
(WinPort._path_to_apache):
(WinCairoPort.default_baseline_search_path):
(WinCairoPort):
(WinCairoPort.check_httpd):

LayoutTests:

* http/conf/win-httpd-2.4-php7.conf: Added.
For WinCairo from native Windows environment.

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

18 months agohttp/tests/security/frame-loading-via-document-write-async-delegates.html fails with...
cdumez@apple.com [Fri, 9 Mar 2018 18:45:59 +0000 (18:45 +0000)]
http/tests/security/frame-loading-via-document-write-async-delegates.html fails with async delegates
https://bugs.webkit.org/show_bug.cgi?id=183460

Reviewed by Alex Christensen.

The test has 3 frames which all initially load "about:blank". Then using document.write(), it inserts
HTML in each frame.
Frame 1: body has an onload event handler, which calls JS is click an anchor link to navigate the frame.
Frame 2: body has an onload event handler to do some logging
Frame 3: body has an onload event handler and finishes the test (calls testRunner.notifyDone())

The issue is that with asynchronous policy delegates, the first frame may not have navigated yet by the
time the third frame is loaded. Indeed, the onload event of the first frame merely clicks am anchor link
which will trigger a navigation policy check and then later navigate.

To make the test more robust, we now count the number of loads and call testRunner.notifyDone() when
we've reached the expected number of loads.

* http/tests/security/frame-loading-via-document-write-async-delegates-expected.txt: Added.
* http/tests/security/frame-loading-via-document-write-async-delegates.html: Copied from LayoutTests/http/tests/security/frame-loading-via-document-write.html.
* http/tests/security/frame-loading-via-document-write.html:
* http/tests/security/resources/frame-loading-via-document-write.js:

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

18 months agoAdd guard for wtf/glib include
commit-queue@webkit.org [Fri, 9 Mar 2018 18:40:51 +0000 (18:40 +0000)]
Add guard for wtf/glib include
https://bugs.webkit.org/show_bug.cgi?id=183521

Patch by Stephan Szabo <stephan.szabo@sony.com> on 2018-03-09
Reviewed by Alex Christensen.

* Shared/CoordinatedGraphics/threadedcompositor/ThreadedDisplayRefreshMonitor.cpp:

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

18 months agowebkitfullscreenchange event not fired at the same time as :-webkit-full-screen pseud...
jer.noble@apple.com [Fri, 9 Mar 2018 18:21:11 +0000 (18:21 +0000)]
webkitfullscreenchange event not fired at the same time as :-webkit-full-screen pseudo selector changes; causes glitchiness
https://bugs.webkit.org/show_bug.cgi?id=183383

Source/WebCore:

Reviewed by Eric Carlson.

Fire the webkitfullscreenchange event at the same time as the pseudo class selector changes, during the handling
of webkitDidEnterFullScreenForElement. For WebKit2 clients, this is guaranteed to be asynchronous, since the
calling method originates in the UIProcess. For WebKit1 clients (and WKTR and DRT), there's the possibility that
webkitWillEnterFullScreenForElement will be called synchronously from within
Document::requestFullScreenForElement(), so break that synchronousness by starting the
ChromeClient::enterFullScreenForElement(...) process in a async task.

Previously, the firing of the fullscreenchange event was done through a zero-length timer. Use a
GenericTaskQueue instead.

A number of layout tests depend on the behavior that the element will be in fullscreen when the 'playing' event
fires. This was true for DRT (but not WKTR), since its fullscreen implementations were deliberately synchronous, but
won't necessarily be true for all ports. Fix this in a subsequent patch.

* dom/Document.cpp:
(WebCore::Document::requestFullScreenForElement):
(WebCore::Document::webkitExitFullscreen):
(WebCore::Document::webkitWillEnterFullScreenForElement):
(WebCore::Document::webkitDidEnterFullScreenForElement):
(WebCore::Document::webkitDidExitFullScreenForElement):
(WebCore::Document::dispatchFullScreenChangeEvents):
* dom/Document.h:
* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::setReadyState):
(WebCore::HTMLMediaElement::playInternal):
(WebCore::HTMLMediaElement::mediaPlayerTimeChanged):
(WebCore::HTMLMediaElement::updatePlayState):
(WebCore::HTMLMediaElement::setPlaying):

LayoutTests:

Fix a couple tests that depended on non-standard behavior, and skip other tests to be fixed later.

Reviewed by Eric Carlson.

* media/fullscreen-video-going-into-pip.html:
* media/video-fullscreeen-only-playback.html:
* platform/mac/TestExpectations:

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

18 months agoUnreviewed, remove WebAssemblyFunctionType
utatane.tea@gmail.com [Fri, 9 Mar 2018 18:02:49 +0000 (18:02 +0000)]
Unreviewed, remove WebAssemblyFunctionType
https://bugs.webkit.org/show_bug.cgi?id=183429

Drop WebAssemblyFunctionType since it is no longer used. This breaks
JSCast assumption that all the derived classes of JSFunction use
JSFunctionType. We also add ASSERT for JSFunction::finishCreation.

* runtime/JSFunction.cpp:
(JSC::JSFunction::finishCreation):
* runtime/JSType.h:
* wasm/js/WebAssemblyFunction.cpp:
(JSC::WebAssemblyFunction::createStructure):
* wasm/js/WebAssemblyFunction.h:

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

18 months agoUnreviewed, rolling out r229446.
ryanhaddad@apple.com [Fri, 9 Mar 2018 17:59:57 +0000 (17:59 +0000)]
Unreviewed, rolling out r229446.

This change relies on changes that have been rolled out.

Reverted changeset:

"testmasm crashes in testBranchTruncateDoubleToInt32() on
ARM64"
https://bugs.webkit.org/show_bug.cgi?id=183488
https://trac.webkit.org/changeset/229446

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

18 months agoUnreviewed GTK+ gardening.
fred.wang@free.fr [Fri, 9 Mar 2018 17:57:59 +0000 (17:57 +0000)]
Unreviewed GTK+ gardening.

Patch by Frederic Wang <fwang@igalia.com> on 2018-03-09

* platform/gtk/TestExpectations: Skip test requiring DASHBOARD_SUPPORT.
* platform/gtk/mathml/mathml-in-dashboard-expected.txt: Removed.

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

18 months ago[Mac] WebKit fails to receive file promises when the embedding app is sandboxed
aestes@apple.com [Fri, 9 Mar 2018 15:11:01 +0000 (15:11 +0000)]
[Mac] WebKit fails to receive file promises when the embedding app is sandboxed
https://bugs.webkit.org/show_bug.cgi?id=183489
<rdar://problem/38267517>

Source/WebKit:

WebKit calls -[NSFilePromiseReceiver receivePromisedFilesAtDestination:...] with
NSTemporaryDirectory() as the destination for receiving file promise drops. AppKit attempts
to issue a sandbox extension for this directory, but for security reasons App Sandbox
refuses to do so for NSTemporaryDirectory() itself. As a result, AppKit will call our reader
block with a nil error and a valid file URL, but no file will actually exist at that URL.

In order for App Sandbox to grant issuing the sandbox extension needed by AppKit, we need to
use some other destination directory. This patch uses FileSystem::createTemporaryDirectory()
to securely create a unique temporary directory inside NSTemporaryDirectory() for use as the
drop destination.

Reviewed by Wenson Hsieh.

* UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::performDragOperation):

Source/WebKitLegacy/mac:

WebKitLegacy calls -[NSFilePromiseReceiver receivePromisedFilesAtDestination:...] with
NSTemporaryDirectory() as the destination for receiving file promise drops. AppKit attempts
to issue a sandbox extension for this directory, but for security reasons App Sandbox
refuses to do so for NSTemporaryDirectory() itself. As a result, AppKit will call our reader
block with a nil error and a valid file URL, but no file will actually exist at that URL.

In order for App Sandbox to grant issuing the sandbox extension needed by AppKit, we need to
use some other destination directory. This patch uses FileSystem::createTemporaryDirectory()
to securely create a unique temporary directory inside NSTemporaryDirectory() for use as the
drop destination.

Reviewed by Wenson Hsieh.

* WebView/WebView.mm:
(-[WebView performDragOperation:]):

LayoutTests:

Reviewed by Wenson Hsieh.

Now that we create a unique temporary directory per drop, this test no longer encounters a
name conflict for apple.gif.

* editing/pasteboard/file-input-files-access-promise-expected.txt:
* editing/pasteboard/file-input-files-access-promise.html:

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

18 months ago[GTK] Do not use WebKitDOMHTMLFormElement as argument of signal WebKitWebPage::will...
carlosgc@webkit.org [Fri, 9 Mar 2018 14:41:01 +0000 (14:41 +0000)]
[GTK] Do not use WebKitDOMHTMLFormElement as argument of signal WebKitWebPage::will-submit-form
https://bugs.webkit.org/show_bug.cgi?id=183510

Reviewed by Michael Catanzaro.

Source/WebKit:

In 2.22 WebKitDOMHTMLFormElement will be deprecated in GTK+ port and won't still exist in WPE. The new
JavaScript GLib API will be used to replace most of the DOM API, but a few classes will remain with a minimal
API for things that can't be done with JavaScript. WebKitDOMElement will stay and will be added to WPE as well,
so if we change the signal parameter to WebKitDOMElement we will be able to keep using
WebKitWebPage::will-submit-form without any changes. WPE will gain this signal and the rest of the API that uses
DOM.

* WebProcess/InjectedBundle/API/glib/WebKitWebPage.cpp:
(webkit_web_page_class_init):

Tools:

Update the test to use WebKitDOMElement instead and fix a memory leak.

* TestWebKitAPI/Tests/WebKitGLib/WebExtensionTest.cpp:
(handleFormSubmissionCallback):
(willSubmitFormCallback):

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

18 months ago[Nicosia] Add threaded PaintingEngine implementation
zandobersek@gmail.com [Fri, 9 Mar 2018 14:03:25 +0000 (14:03 +0000)]
[Nicosia] Add threaded PaintingEngine implementation
https://bugs.webkit.org/show_bug.cgi?id=183511

Reviewed by Carlos Garcia Campos.

Add Nicosia::PaintingEngineThreaded, class that internally uses a thread
pool in which painting tasks are executed.

Implementation for now defaults to using GLib's GThreadPool, defaulting
to 4 threads that are exclusive to this pool. These parameters should be
fine-tuned in the future, or even made configurable, but are a solid
basis for testing.

In PaintingEngineThreaded::paint(), PaintingContext implementation is
used to record all the operations, and the gathered Vector is combined
with the Buffer object and dispatched into the thread pool. In the
thread function, the provided buffer and painting operations are run
through the PaintingContext implementation, replaying all the operations
on a painting context that draws into the given buffer.

The recorded operation objects implement the PaintingOperation interface
contain all the data necessary to replay a given operation. They can be
executed against a PaintingOperationReplay object, as is the case during
PaintingContext::replay(), or they can be dumped into a TextStream
object for debugging purposes.

PaintingContext now also provides the record() and replay() static
functions. PaintingContext objects now differ per purpose, which can be
either for painting or for recording. paint() and replay() use a
for-painting PaintingContext, and record() uses a for-recording one.
The for-painting PaintingContext receives a Buffer object, i.e. a memory
area on which it can draw, while the for-recording PaintingContext uses
the passed-in PaintingOperations Vector that should store all the
recorded operations.

The current Cairo implementation of PaintingContext is moved into
PaintingContextCairo::ForPainting. PaintingContextCairo::ForRecording is
added but is currently no-op until a Cairo-specific GraphicsContextImpl
with recording capabilities is added, allowing any call on the
GraphicsContext object used in PaintingContext::record() to be recorded
for later replay. PaintingOperationReplayCairo, inheriting from
PaintingOperationReplay, will be used for replay purposes, providing
only reference to the PlatformContextCairo object that is constructed in
PaintingContextCairo::ForPainting.

The Cairo-specific GraphicsContextImpl implementation will be added in
a separate patch. After that, PaintingEngine::create() will be modified
so that the Nicosia::PaintingEngineThreaded implementation can be used
for testing purposes, probably by setting an environment variable.

* platform/TextureMapper.cmake:
* platform/graphics/nicosia/NicosiaPaintingContext.cpp:
(Nicosia::PaintingContext::createForPainting):
(Nicosia::PaintingContext::createForRecording):
(Nicosia::PaintingContext::create): Deleted.
* platform/graphics/nicosia/NicosiaPaintingContext.h:
(Nicosia::PaintingContext::paint):
(Nicosia::PaintingContext::record):
(Nicosia::PaintingContext::replay):
* platform/graphics/nicosia/NicosiaPaintingEngineThreaded.cpp: Added.
(Nicosia::s_threadFunc):
(Nicosia::paintLayer):
(Nicosia::PaintingEngineThreaded::PaintingEngineThreaded):
(Nicosia::PaintingEngineThreaded::~PaintingEngineThreaded):
(Nicosia::PaintingEngineThreaded::paint):
* platform/graphics/nicosia/NicosiaPaintingEngineThreaded.h: Copied from Source/WebCore/platform/graphics/nicosia/NicosiaPaintingContext.cpp.
* platform/graphics/nicosia/NicosiaPaintingOperation.h: Copied from Source/WebCore/platform/graphics/nicosia/NicosiaPaintingContext.cpp.
* platform/graphics/nicosia/cairo/NicosiaPaintingContextCairo.cpp:
(Nicosia::PaintingContextCairo::ForPainting::ForPainting):
(Nicosia::PaintingContextCairo::ForPainting::~ForPainting):
(Nicosia::PaintingContextCairo::ForPainting::graphicsContext):
(Nicosia::PaintingContextCairo::ForPainting::replay):
(Nicosia::PaintingContextCairo::ForRecording::ForRecording):
(Nicosia::PaintingContextCairo::ForRecording::graphicsContext):
(Nicosia::PaintingContextCairo::ForRecording::replay):
(Nicosia::PaintingContextCairo::PaintingContextCairo): Deleted.
(Nicosia::PaintingContextCairo::~PaintingContextCairo): Deleted.
(Nicosia::PaintingContextCairo::graphicsContext): Deleted.
* platform/graphics/nicosia/cairo/NicosiaPaintingContextCairo.h:
* platform/graphics/nicosia/cairo/NicosiaPaintingOperationReplayCairo.h: Copied from Source/WebCore/platform/graphics/nicosia/NicosiaPaintingContext.cpp.
(Nicosia::PaintingOperationReplayCairo::PaintingOperationReplayCairo):

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

18 months agoRemove some unused cruft in TextureMapperLayer.
zandobersek@gmail.com [Fri, 9 Mar 2018 13:43:56 +0000 (13:43 +0000)]
Remove some unused cruft in TextureMapperLayer.

The ScrollingClient class is not used anymore since r229318.
findScrollableContentsLayerAt() is similarly unused, but also lacking
an actual definition. ContentsLayerCount enum can also be purged.

Rubber-stamped by Carlos Garcia Campos.

* platform/graphics/texmap/TextureMapperLayer.h:

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

18 months agoUnreviewed. [GTK][WPE] Bump Since tags of resource load stats API.
carlosgc@webkit.org [Fri, 9 Mar 2018 10:37:01 +0000 (10:37 +0000)]
Unreviewed. [GTK][WPE] Bump Since tags of resource load stats API.

The functionality hasn't been properly tested to be released in WebKitGTK+ 2.20.

* UIProcess/API/glib/WebKitWebsiteDataManager.cpp:
(webkit_website_data_manager_class_init):
* UIProcess/API/gtk/WebKitWebsiteData.h:
* UIProcess/API/wpe/WebKitWebsiteData.h:

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

18 months agoUnreviewed. Bump WebKitGTK+ version to 2.21.0.
carlosgc@webkit.org [Fri, 9 Mar 2018 10:18:50 +0000 (10:18 +0000)]
Unreviewed. Bump WebKitGTK+ version to 2.21.0.

* Source/cmake/OptionsGTK.cmake:

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

18 months agoUnreviewed GTK+ gardening.
zandobersek@gmail.com [Fri, 9 Mar 2018 09:13:35 +0000 (09:13 +0000)]
Unreviewed GTK+ gardening.

* platform/gtk/TestExpectations: Add a failure expectation for the
http/tests/preconnect/link-header-rel-preconnect-http.html test.
* platform/gtk/js/dom/dom-static-property-for-in-iteration-expected.txt:
Update baseline after r229310.

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

18 months agoAdd basic synchronization capability to Nicosia::Buffer
zandobersek@gmail.com [Fri, 9 Mar 2018 07:50:26 +0000 (07:50 +0000)]
Add basic synchronization capability to Nicosia::Buffer
https://bugs.webkit.org/show_bug.cgi?id=183500

Reviewed by Carlos Garcia Campos.

Have Nicosia::Buffer track a painting state, and allow that state to be
modified and accessed from different threads. The PaintingState enum
value is protected by a Lock object, and can be modified via the
beginPainting() and completePainting() methods. Additionally, the
waitUntilPaintingComplete() method allows the caller to wait until the
painting is complete for the given Nicosia::Buffer object.

This added state doesn't affect a Nicosia::Buffer object internally, and
doesn't have any effect on  existing usages of Nicosia::Buffer (which
are not multi-threaded).

* platform/graphics/nicosia/NicosiaBuffer.cpp:
(Nicosia::Buffer::beginPainting):
(Nicosia::Buffer::completePainting):
(Nicosia::Buffer::waitUntilPaintingComplete):
* platform/graphics/nicosia/NicosiaBuffer.h:

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

18 months agoMove NicosiaPaintingContextCairo files under Cairo-specific directory
zandobersek@gmail.com [Fri, 9 Mar 2018 07:42:34 +0000 (07:42 +0000)]
Move NicosiaPaintingContextCairo files under Cairo-specific directory
https://bugs.webkit.org/show_bug.cgi?id=183497

Reviewed by Carlos Garcia Campos.

Pack Cairo-specific files in the Nicosia subsystem under cairo/.

* platform/TextureMapper.cmake:
* platform/graphics/nicosia/cairo/NicosiaPaintingContextCairo.cpp: Renamed from Source/WebCore/platform/graphics/nicosia/NicosiaPaintingContextCairo.cpp.
* platform/graphics/nicosia/cairo/NicosiaPaintingContextCairo.h: Renamed from Source/WebCore/platform/graphics/nicosia/NicosiaPaintingContextCairo.h.

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