WebKit-https.git
2 years ago[GTK][WPE] Test gardening
Ms2ger@igalia.com [Wed, 13 Dec 2017 17:29:38 +0000 (17:29 +0000)]
[GTK][WPE] Test gardening
https://bugs.webkit.org/show_bug.cgi?id=180751

Unreviewed test gardening.

* platform/gtk/TestExpectations:
* platform/gtk/http/tests/inspector/network/fetch-response-body-expected.txt:
* platform/gtk/http/tests/inspector/network/xhr-response-body-expected.txt:
* platform/gtk/imported/w3c/web-platform-tests/encoding/textdecoder-fatal-single-byte-expected.txt: Added.
* platform/wpe/TestExpectations:
* platform/wpe/imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-drawImage-expected.txt: Added.
* platform/wpe/imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-invalid-args-expected.txt: Added.
* platform/wpe/imported/w3c/web-platform-tests/encoding/textdecoder-fatal-single-byte-expected.txt: Added.

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

2 years agoFix how JSFunction handles "caller" and "arguments" for functions that don't have...
sbarati@apple.com [Wed, 13 Dec 2017 17:29:21 +0000 (17:29 +0000)]
Fix how JSFunction handles "caller" and "arguments" for functions that don't have those properties
https://bugs.webkit.org/show_bug.cgi?id=163579
<rdar://problem/35455798>

Reviewed by Mark Lam.

JSTests:

* stress/caller-and-arguments-properties-for-functions-that-dont-have-them.js: Added.
(assert):
(test1):
(i.test1):
(i.test1.C):
(i.test1.async.foo):
(i.test1.foo):
(test2):

Source/JavaScriptCore:

Some functions in JavaScript do not have the "caller" and "arguments" properties.
For example, strict functions do not. When reading our code that dealt with these
types of functions, it was simply all wrong. We were doing weird things depending
on the method table hook. This patch fixes this by doing what we should've been
doing all along: when the JSFunction does not own the "caller"/"arguments" property,
it should defer to its base class implementation for the various method table hooks.

* runtime/JSFunction.cpp:
(JSC::JSFunction::put):
(JSC::JSFunction::deleteProperty):
(JSC::JSFunction::defineOwnProperty):

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

2 years agoTypeCheckHoistingPhase needs to emit a CheckStructureOrEmpty if it's doing it for...
sbarati@apple.com [Wed, 13 Dec 2017 17:19:24 +0000 (17:19 +0000)]
TypeCheckHoistingPhase needs to emit a CheckStructureOrEmpty if it's doing it for |this|
https://bugs.webkit.org/show_bug.cgi?id=180734
<rdar://problem/35640547>

Reviewed by Yusuke Suzuki.

JSTests:

* stress/type-check-hoisting-phase-hoist-check-structure-on-tdz-this-value.js: Added.
(__isPropertyOfType):
(__getProperties):
(__getObjects):
(__getRandomObject):
(theClass.):
(theClass):
(childClass):
(counter.catch):

Source/JavaScriptCore:

The |this| value may be TDZ. If type check hoisting phase
hoists a CheckStructure to it, it will crash. This patch
makes it so we emit CheckStructureOrEmpty for |this|.

* dfg/DFGTypeCheckHoistingPhase.cpp:
(JSC::DFG::TypeCheckHoistingPhase::run):

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

2 years agoUnreviewed, rolling out r179000.
annulen@yandex.ru [Wed, 13 Dec 2017 12:39:42 +0000 (12:39 +0000)]
Unreviewed, rolling out r179000.

There are tests failing in 32-bits and Debug builds

Reverted changeset:

https://trac.webkit.org/changeset/179000

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

2 years agoUnreviewed. Update OptionsGTK.cmake and NEWS for 2.19.3 release.
carlosgc@webkit.org [Wed, 13 Dec 2017 12:08:06 +0000 (12:08 +0000)]
Unreviewed. Update OptionsGTK.cmake and NEWS for 2.19.3 release.

.:

* Source/cmake/OptionsGTK.cmake: Bump version numbers.

Source/WebKit:

* gtk/NEWS: Add release notes for 2.19.3.

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

2 years ago[JSC] Optimize Object.assign by single transition acceleration
utatane.tea@gmail.com [Wed, 13 Dec 2017 07:51:16 +0000 (07:51 +0000)]
[JSC] Optimize Object.assign by single transition acceleration
https://bugs.webkit.org/show_bug.cgi?id=180644

Reviewed by Saam Barati.

Handling single transition is critical. Since this get() function is only used
in Structure.cpp's 2 functions and it is quite small, we can annotate `inline`
to accelerate it.

This improves SixSpeed/object-assign.es6 by 2.8%.

                            baseline                  patched

object-assign.es6      382.3548+-8.0461          371.6496+-5.7439          might be 1.0288x faster

* runtime/Structure.cpp:
(JSC::StructureTransitionTable::get const):

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

2 years agoWeb Inspector: Styles Redesign: navigating away from empty value should remove CSS...
nvasilyev@apple.com [Wed, 13 Dec 2017 06:19:57 +0000 (06:19 +0000)]
Web Inspector: Styles Redesign: navigating away from empty value should remove CSS property
https://bugs.webkit.org/show_bug.cgi?id=180508

Reviewed by Devin Rousso.

Remove a property when navigating away from it (e.g. to the next/previous property,
or outside of the styles panel entirely) and either its name or value is empty:

    color: [ ]->
    <-[ ]: red
    <-[color]:

Don't remove a property when navigating from an empty value to a non-empty name:

    color: <-[ ]

Always remove a property when both name and value are empty.

* UserInterface/Views/SpreadsheetStyleProperty.js:
(WI.SpreadsheetStyleProperty.prototype.spreadsheetTextFieldDidCommit):
(WI.SpreadsheetStyleProperty.prototype.spreadsheetTextFieldDidBlur):
* UserInterface/Views/SpreadsheetTextField.js:
(WI.SpreadsheetTextField.prototype._handleBlur):
(WI.SpreadsheetTextField.prototype.get valueBeforeEditing): Deleted.

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

2 years agoRe-sync imported/w3c/web-platform-tests/service-workers/service-worker/interfaces...
cdumez@apple.com [Wed, 13 Dec 2017 04:47:23 +0000 (04:47 +0000)]
Re-sync imported/w3c/web-platform-tests/service-workers/service-worker/interfaces-sw.https.html
https://bugs.webkit.org/show_bug.cgi?id=180698

Reviewed by Alex Christensen.

Re-sync imported/w3c/web-platform-tests/service-workers/service-worker/interfaces-sw.https.html
after https://github.com/w3c/web-platform-tests/pull/8622.

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

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

2 years agois<HTMLTextFormControlElement> reports the input type.
zalan@apple.com [Wed, 13 Dec 2017 04:05:33 +0000 (04:05 +0000)]
is<HTMLTextFormControlElement> reports the input type.
https://bugs.webkit.org/show_bug.cgi?id=180721
<rdar://problem/36005123>

Reviewed by Ryosuke Niwa.

This patch ensures that is<HTMLTextFormControlElement> consistently returns true even
when the input type changes from text to non-text (checkbox etc).

* accessibility/AccessibilityObject.cpp:
(WebCore::AccessibilityObject::selectText):
* dom/Element.h:
(WebCore::Element::isTextFormControlElement const):
(WebCore::Element::isTextField const):
(WebCore::Element::isTextFormControl const): Deleted.
* editing/Editor.cpp:
(WebCore::Editor::selectionForCommand):
(WebCore::Editor::setBaseWritingDirection):
(WebCore::findFirstMarkable):
* editing/FrameSelection.cpp:
(WebCore::FrameSelection::selectAll):
* html/FormController.cpp:
(WebCore::FormController::formElementsCharacterCount const):
* html/HTMLElement.cpp:
(WebCore::HTMLElement::directionality const):
* html/HTMLInputElement.h:
* html/HTMLTextAreaElement.h:
* html/HTMLTextFormControlElement.cpp:
(WebCore::HTMLTextFormControlElement::didEditInnerTextValue):
(WebCore::HTMLTextFormControlElement::selectedText const):
(WebCore::HTMLTextFormControlElement::setSelectionRange):
(WebCore::HTMLTextFormControlElement::selectionStart const):
(WebCore::HTMLTextFormControlElement::computeSelectionStart const):
(WebCore::HTMLTextFormControlElement::selectionEnd const):
(WebCore::HTMLTextFormControlElement::computeSelectionEnd const):
(WebCore::HTMLTextFormControlElement::selectionDirection const):
(WebCore::HTMLTextFormControlElement::computeSelectionDirection const):
(WebCore::HTMLTextFormControlElement::selection const):
(WebCore::HTMLTextFormControlElement::selectionChanged):
(WebCore::HTMLTextFormControlElement::lastChangeWasUserEdit const):
(WebCore::HTMLTextFormControlElement::setInnerTextValue):
(WebCore::HTMLTextFormControlElement::valueWithHardLineBreaks const):
(WebCore::enclosingTextFormControl):
* html/HTMLTextFormControlElement.h:
(isType):
* rendering/HitTestResult.cpp:
(WebCore::HitTestResult::isOverTextInsideFormControlElement const):

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

2 years agoUnify some WebGL sources
dino@apple.com [Wed, 13 Dec 2017 03:51:48 +0000 (03:51 +0000)]
Unify some WebGL sources
https://bugs.webkit.org/show_bug.cgi?id=180726

Rubber-stamped by Keith, weeks ago.

* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* html/canvas/WebGLRenderingContextBase.cpp:

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

2 years agoStructure, StructureRareData, and PropertyTable should be in IsoSubspaces
fpizlo@apple.com [Wed, 13 Dec 2017 03:26:39 +0000 (03:26 +0000)]
Structure, StructureRareData, and PropertyTable should be in IsoSubspaces
https://bugs.webkit.org/show_bug.cgi?id=180732

Rubber stamped by Mark Lam.

We should eventually move all fixed-size cells into IsoSubspaces. I don't know if they are
scalable enough to support that, so we should do it carefully.

* heap/MarkedSpace.cpp:
* runtime/PropertyMapHashTable.h:
* runtime/Structure.h:
* runtime/StructureRareData.h:
* runtime/VM.cpp:
(JSC::VM::VM):
* runtime/VM.h:

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

2 years agoWe need to model effects of Spread(@PhantomCreateRest) in Clobberize/PreciseLocalClob...
sbarati@apple.com [Wed, 13 Dec 2017 03:04:22 +0000 (03:04 +0000)]
We need to model effects of Spread(@PhantomCreateRest) in Clobberize/PreciseLocalClobberize
https://bugs.webkit.org/show_bug.cgi?id=180725
<rdar://problem/35970511>

Reviewed by Michael Saboff.

JSTests:

* stress/model-effects-properly-of-spread-over-phantom-create-rest.js: Added.
(f1):
(f2):
(let.o2.valueOf):

Source/JavaScriptCore:

* dfg/DFGClobberize.h:
(JSC::DFG::clobberize):
* dfg/DFGPreciseLocalClobberize.h:
(JSC::DFG::PreciseLocalClobberizeAdaptor::readTop):

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

2 years ago[WK] Add modern WebKit SPI to set auto fill button type and query if the auto fill...
dbates@webkit.org [Wed, 13 Dec 2017 02:52:43 +0000 (02:52 +0000)]
[WK] Add modern WebKit SPI to set auto fill button type and query if the auto fill button is enabled
https://bugs.webkit.org/show_bug.cgi?id=180686

Reviewed by Alex Christensen.

Source/WebKit:

* WebKit.xcodeproj/project.pbxproj:
* WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandle.mm:
(-[WKWebProcessPlugInNodeHandle isHTMLInputElementAutoFillButtonEnabled]):
(toAutoFillButtonType):
(-[WKWebProcessPlugInNodeHandle setHTMLInputElementAutoFillButtonEnabledWithButtonType:]):
* WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandleInternal.h:
* WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandlePrivate.h:

Tools:

* TestWebKitAPI/Tests/WebKitCocoa/ClickAutoFillButton.mm:
(-[ClickAutoFillButton webProcessPlugIn:didCreateBrowserContextController:]):

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

2 years ago[JSC] Implement optimized WeakMap and WeakSet
utatane.tea@gmail.com [Wed, 13 Dec 2017 02:49:00 +0000 (02:49 +0000)]
[JSC] Implement optimized WeakMap and WeakSet
https://bugs.webkit.org/show_bug.cgi?id=179929

Reviewed by Saam Barati.

JSTests:

* microbenchmarks/weak-map-key.js:
* microbenchmarks/weak-set-key.js: Copied from JSTests/microbenchmarks/weak-map-key.js.
(assert):
(objectKey):
(let.start.Date.now):
* stress/basic-weakmap.js: Added.
(shouldBe):
(test):
* stress/basic-weakset.js: Added.
(shouldBe):
(test.set new):
* stress/weakmap-cse-set-break.js: Added.
(shouldBe):
(test):
* stress/weakmap-cse.js: Added.
(shouldBe):
(test):
* stress/weakmap-gc.js: Added.
(test):
* stress/weakset-cse-add-break.js: Added.
(shouldBe):
(test.set new):
* stress/weakset-cse.js: Added.
(shouldBe):
(test.set new):
* stress/weakset-gc.js: Added.
(test.set add):
(test.set new):
(test):

Source/JavaScriptCore:

This patch introduces WeakMapImpl to optimize WeakMap and WeakSet.
This is similar to HashMapImpl. But,

1. WeakMapImpl's bucket is not allocated in GC heap since WeakMap
do not need to have iterators.

2. WeakMapImpl's buffer is allocated in JSValue Gigacage instead
of auxiliary buffer. This is because we would like to allocate buffer
when finalizing GC. At that time, WeakMapImpl prunes dead entries and
shrink it if necessary. However, allocating from the GC heap during
finalization is not allowed.

In particular, (2) is important since it ensures any WeakMap operations
do not cause GC. Since GC may collect dead keys in WeakMap, rehash WeakMap,
and reallocate/change WeakMap's buffer, ensuring that any WeakMap operations
do not cause GC makes our implementation simple. To ensure this, we place
DisallowGC for each WeakMap's interface.

In DFG, we introduce WeakMapGet and ExtractValueFromWeakMapGet nodes.
WeakMapGet looks up entry in WeakMapImpl and returns value. If it is
WeakMap, it returns value. And it returns key if it is WeakSet. If it
does not find a corresponding entry, it returns JSEmpty.
ExtractValueFromWeakMapGet converts JSEmpty to JSUndefined.

This patch improves WeakMap and WeakSet operations.

                             baseline                  patched

    weak-set-key        240.6932+-10.4923    ^    148.7606+-6.1784        ^ definitely 1.6180x faster
    weak-map-key        174.3176+-8.2680     ^    151.7053+-6.8723        ^ definitely 1.1491x faster

* JavaScriptCore.xcodeproj/project.pbxproj:
* Sources.txt:
* dfg/DFGAbstractHeap.h:
* dfg/DFGAbstractInterpreterInlines.h:
(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):
* dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::handleIntrinsicCall):
* dfg/DFGClobberize.h:
(JSC::DFG::clobberize):
* dfg/DFGDoesGC.cpp:
(JSC::DFG::doesGC):
* dfg/DFGFixupPhase.cpp:
(JSC::DFG::FixupPhase::fixupNode):
* dfg/DFGNode.h:
(JSC::DFG::Node::hasHeapPrediction):
* dfg/DFGNodeType.h:
* dfg/DFGOperations.cpp:
* dfg/DFGOperations.h:
* dfg/DFGPredictionPropagationPhase.cpp:
* dfg/DFGSafeToExecute.h:
(JSC::DFG::safeToExecute):
* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compileExtractValueFromWeakMapGet):
(JSC::DFG::SpeculativeJIT::compileWeakMapGet):
* dfg/DFGSpeculativeJIT.h:
* dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
* dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
* ftl/FTLAbstractHeapRepository.h:
* ftl/FTLCapabilities.cpp:
(JSC::FTL::canCompile):
* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compileNode):
(JSC::FTL::DFG::LowerDFGToB3::compileExtractValueFromWeakMapGet):
(JSC::FTL::DFG::LowerDFGToB3::compileWeakMapGet):
* inspector/JSInjectedScriptHost.cpp:
(Inspector::JSInjectedScriptHost::weakMapEntries):
(Inspector::JSInjectedScriptHost::weakSetEntries):
Existing code is incorrect. They can run GC and break WeakMap's iterator.
We introduce takeSnapshot function to WeakMapImpl, which retrieves live
entries without causing any GC.

* runtime/HashMapImpl.h:
(JSC::shouldShrink):
(JSC::shouldRehashAfterAdd):
(JSC::nextCapacity):
(JSC::HashMapImpl::shouldRehashAfterAdd const):
(JSC::HashMapImpl::shouldShrink const):
(JSC::HashMapImpl::rehash):
(JSC::WeakMapHash::hash): Deleted.
(JSC::WeakMapHash::equal): Deleted.
* runtime/Intrinsic.cpp:
(JSC::intrinsicName):
* runtime/Intrinsic.h:
* runtime/JSWeakMap.cpp:
* runtime/JSWeakMap.h:
* runtime/JSWeakSet.cpp:
* runtime/JSWeakSet.h:
* runtime/VM.cpp:
* runtime/WeakGCMap.h:
(JSC::WeakGCMap::forEach): Deleted.
* runtime/WeakMapBase.cpp: Removed.
* runtime/WeakMapBase.h: Removed.
* runtime/WeakMapConstructor.cpp:
(JSC::constructWeakMap):
* runtime/WeakMapImpl.cpp: Added.
(JSC::WeakMapImpl<WeakMapBucket>::destroy):
(JSC::WeakMapImpl<WeakMapBucket>::visitChildren):
(JSC::WeakMapImpl<WeakMapBucket>::estimatedSize):
(JSC::WeakMapImpl<WeakMapBucket<WeakMapBucketDataKey>>::visitWeakReferences):
(JSC::WeakMapImpl<WeakMapBucket<WeakMapBucketDataKeyValue>>::visitWeakReferences):
(JSC::WeakMapImpl<WeakMapBucket>::finalizeUnconditionally):
(JSC::WeakMapImpl<WeakMapBucket<WeakMapBucketDataKey>>::takeSnapshot):
(JSC::WeakMapImpl<WeakMapBucket<WeakMapBucketDataKeyValue>>::takeSnapshot):
* runtime/WeakMapImpl.h: Added.
(JSC::jsWeakMapHash):
(JSC::nextCapacityAfterRemoveBatching):
(JSC::WeakMapBucket::setKey):
(JSC::WeakMapBucket::setValue):
(JSC::WeakMapBucket::key const):
(JSC::WeakMapBucket::value const):
(JSC::WeakMapBucket::copyFrom):
(JSC::WeakMapBucket::offsetOfKey):
(JSC::WeakMapBucket::offsetOfValue):
(JSC::WeakMapBucket::extractValue):
(JSC::WeakMapBucket::isEmpty):
(JSC::WeakMapBucket::deletedKey):
(JSC::WeakMapBucket::isDeleted):
(JSC::WeakMapBucket::makeDeleted):
(JSC::WeakMapBucket::visitAggregate):
(JSC::WeakMapBucket::clearValue):
(JSC::WeakMapBuffer::allocationSize):
(JSC::WeakMapBuffer::buffer const):
(JSC::WeakMapBuffer::create):
(JSC::WeakMapBuffer::reset):
(JSC::WeakMapImpl::WeakMapImpl):
(JSC::WeakMapImpl::finishCreation):
(JSC::WeakMapImpl::get):
(JSC::WeakMapImpl::has):
(JSC::WeakMapImpl::add):
(JSC::WeakMapImpl::remove):
(JSC::WeakMapImpl::size const):
(JSC::WeakMapImpl::offsetOfBuffer):
(JSC::WeakMapImpl::offsetOfCapacity):
(JSC::WeakMapImpl::findBucket):
(JSC::WeakMapImpl::buffer const):
(JSC::WeakMapImpl::forEach):
(JSC::WeakMapImpl::shouldRehashAfterAdd const):
(JSC::WeakMapImpl::shouldShrink const):
(JSC::WeakMapImpl::canUseBucket):
(JSC::WeakMapImpl::addInternal):
(JSC::WeakMapImpl::findBucketAlreadyHashed):
(JSC::WeakMapImpl::rehash):
(JSC::WeakMapImpl::checkConsistency const):
(JSC::WeakMapImpl::makeAndSetNewBuffer):
(JSC::WeakMapImpl::assertBufferIsEmpty const):
(JSC::WeakMapImpl::DeadKeyCleaner::target):
* runtime/WeakMapPrototype.cpp:
(JSC::WeakMapPrototype::finishCreation):
(JSC::protoFuncWeakMapGet):
(JSC::protoFuncWeakMapHas):
* runtime/WeakSetConstructor.cpp:
(JSC::constructWeakSet):
* runtime/WeakSetPrototype.cpp:
(JSC::WeakSetPrototype::finishCreation):
(JSC::protoFuncWeakSetHas):
(JSC::protoFuncWeakSetAdd):

Source/WTF:

We introduce JSValueMalloc, which is specialized malloc scheme with Gigacage::JSValue.
This is used for WeakMapImpl's buffer.

* WTF.xcodeproj/project.pbxproj:
* wtf/CMakeLists.txt:
* wtf/JSValueMalloc.cpp: Added.
(WTF::tryJSValueMalloc):
(WTF::jsValueMalloc):
(WTF::jsValueRealloc):
(WTF::jsValueFree):
* wtf/JSValueMalloc.h: Added.
(WTF::JSValueMalloc::malloc):
(WTF::JSValueMalloc::tryMalloc):
(WTF::JSValueMalloc::realloc):
(WTF::JSValueMalloc::free):
* wtf/MallocPtr.h:
(WTF::MallocPtr::~MallocPtr):
(WTF::MallocPtr::malloc):
(WTF::MallocPtr::tryMalloc):
(WTF::MallocPtr::realloc):
We extend MallocPtr to adopt malloc scheme as its template parameter.

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

2 years agoIt should be possible to flag a cell for unconditional finalization
fpizlo@apple.com [Wed, 13 Dec 2017 02:35:54 +0000 (02:35 +0000)]
It should be possible to flag a cell for unconditional finalization
https://bugs.webkit.org/show_bug.cgi?id=180636

Reviewed by Saam Barati.

Source/JavaScriptCore:

UnconditionalFinalizers were annoying - you had to allocate them and you had to manage a
global linked list - but they had some nice properties:

- You only did the hardest work (creating the UnconditionalFinalizer) on first GC where you
  survived and needed it.
    -> Just needing it wasn't enough.
    -> Just surviving wasn't enough.

The new API based on IsoSubspaces meant that just surviving was enough to cause unconditional
finalizer logic to be invoked. I think that's not great. InferredType got around this by
making InferredStructure a cell, but this was a gross hack. For one, it meant that
InferredStructure would survive during the GC in which its finalizer obviated the need for its
existence. It's not really an idiom I want us to repeat because it sounds like the sort of
thing that turns out to be subtly broken.

We really need to have a way of indicating when you have entered into the state that requires
your unconditional finalizer to be invoked. Basically, we want to be able to track the set of
objects that need unconditional finalizers. Only the subset of that set that overlaps with the
set of marked objects needs to be accurate. The easiest way to do this is a hierarchy of
bitvectors: one to say which MarkedBlocks have objects that have unconditional finalizers, and
another level to say which atoms within a MarkedBlock have unconditional finalizers.

This change introduces IsoCellSet, which couples itself to the MarkedAllocator of some
IsoSubspace to allow maintaining a set of objects (well, cells - you could do this with
auxiliaries) that belong to that IsoSubspace. It'll have undefined behavior if you try to
add/remove/contains an object that isn't in that IsoSubspace. For objects in that subspace,
you can add/remove/contains and forEachMarkedCell. The cost of each IsoCellSet is at worst
about 0.8% increase in size to every object in the subspace that the set is attached to. So,
it makes sense to have a handful per subspace max. This change only needs one per subspace,
but you could imagine more if we do this for WeakReferenceHarvester.

To absolutely minimize the possibility that this incurs costs, the add/remove/contains
functions can be used from any thread so long as forEachMarkedCell isn't running. This means
that InferredType only needs to add itself to the set during visitChildren. Thus, it needs to
both survive and need it for the hardest work to take place. The work of adding does involve
a gnarly load chain that ends in a CAS: load block handle from block, load index, load
segment, load bitvector, load bit -> if not set, then CAS. That's five dependent loads!
However, it's perfect for running in parallel since the only write operations are to widely
dispersed cache lines that contain the bits underlying the set.

The best part is how forEachMarkedCell works. That skips blocks that don't have any objects
that need unconditional finalizers, and only touches the memory of marked objects that have
the unconditional finalizer bit set. It will walk those objects in roughly address order. I
previously found that this speeds up walking over a lot of objects when I made similar changes
for DOM GC (calling visitAdditionalChildren via forEachMarkedCell rather than by walking a
HashSet).

This change makes InferredStructure be a malloc object again, but now it's in an IsoHeap.

My expectation for this change is that it's perf-neutral. Long-term, it gives us a path
forward for eliminating UnconditionalFinalizer and WeakReferenceHarvester while using
IsoSubspace in more places.

* JavaScriptCore.xcodeproj/project.pbxproj:
* Sources.txt:
* heap/AtomIndices.h: Added.
(JSC::AtomIndices::AtomIndices):
* heap/Heap.cpp:
(JSC::Heap::finalizeUnconditionalFinalizers):
* heap/Heap.h:
* heap/IsoCellSet.cpp: Added.
(JSC::IsoCellSet::IsoCellSet):
(JSC::IsoCellSet::~IsoCellSet):
(JSC::IsoCellSet::addSlow):
(JSC::IsoCellSet::didResizeBits):
(JSC::IsoCellSet::didRemoveBlock):
(JSC::IsoCellSet::sweepToFreeList):
* heap/IsoCellSet.h: Added.
* heap/IsoCellSetInlines.h: Added.
(JSC::IsoCellSet::add):
(JSC::IsoCellSet::remove):
(JSC::IsoCellSet::contains const):
(JSC::IsoCellSet::forEachMarkedCell):
* heap/IsoSubspace.cpp:
(JSC::IsoSubspace::didResizeBits):
(JSC::IsoSubspace::didRemoveBlock):
(JSC::IsoSubspace::didBeginSweepingToFreeList):
* heap/IsoSubspace.h:
* heap/MarkedAllocator.cpp:
(JSC::MarkedAllocator::addBlock):
(JSC::MarkedAllocator::removeBlock):
* heap/MarkedAllocator.h:
* heap/MarkedAllocatorInlines.h:
* heap/MarkedBlock.cpp:
(JSC::MarkedBlock::Handle::sweep):
(JSC::MarkedBlock::Handle::isEmpty): Deleted.
* heap/MarkedBlock.h:
(JSC::MarkedBlock::marks const):
(JSC::MarkedBlock::Handle::newlyAllocated const):
* heap/MarkedBlockInlines.h:
(JSC::MarkedBlock::Handle::isAllocated):
(JSC::MarkedBlock::Handle::isEmpty):
(JSC::MarkedBlock::Handle::emptyMode):
(JSC::MarkedBlock::Handle::forEachMarkedCell):
* heap/Subspace.cpp:
(JSC::Subspace::didResizeBits):
(JSC::Subspace::didRemoveBlock):
(JSC::Subspace::didBeginSweepingToFreeList):
* heap/Subspace.h:
* heap/SubspaceInlines.h:
(JSC::Subspace::forEachMarkedCell):
* runtime/InferredStructure.cpp:
(JSC::InferredStructure::InferredStructure):
(JSC::InferredStructure::create): Deleted.
(JSC::InferredStructure::destroy): Deleted.
(JSC::InferredStructure::createStructure): Deleted.
(JSC::InferredStructure::visitChildren): Deleted.
(JSC::InferredStructure::finalizeUnconditionally): Deleted.
(JSC::InferredStructure::finishCreation): Deleted.
* runtime/InferredStructure.h:
* runtime/InferredStructureWatchpoint.cpp:
(JSC::InferredStructureWatchpoint::fireInternal):
* runtime/InferredType.cpp:
(JSC::InferredType::visitChildren):
(JSC::InferredType::willStoreValueSlow):
(JSC::InferredType::makeTopSlow):
(JSC::InferredType::set):
(JSC::InferredType::removeStructure):
(JSC::InferredType::finalizeUnconditionally):
* runtime/InferredType.h:
* runtime/VM.cpp:
(JSC::VM::VM):
* runtime/VM.h:

Source/WTF:

This adds ConcurrentVector, which is like SegmentedVector, but wastes some space to allow
resizing to proceed concurrently to access. It's not possible to resize concurrently to
resizing, concurrent read/writes aren't protected from racing if they access the same element,
and who knows what you'll get if you iterate up to size() while someone else append()s. The
key insight is to stash all prior copies of the spine, so that nobody crashes trying to access
a stale spine.

I'm going to want to do the same thing for FastBitVector, by creating a segmented WordOwner
class. That would require repeating the dance of having a spine that can resize while stashing
old versions. So, the spine resizing logic is abstracted behind ConcurrentBuffer. You could
use that as a kind of "concurrent vector" for immutable data. That's how ConcurrentVector uses
it: it's an immutable array of segment pointers.

* WTF.xcodeproj/project.pbxproj:
* wtf/ConcurrentBuffer.h: Added.
(WTF::ConcurrentBuffer::ConcurrentBuffer):
(WTF::ConcurrentBuffer::~ConcurrentBuffer):
(WTF::ConcurrentBuffer::growExact):
(WTF::ConcurrentBuffer::grow):
(WTF::ConcurrentBuffer::array const):
(WTF::ConcurrentBuffer::operator[]):
(WTF::ConcurrentBuffer::operator[] const):
(WTF::ConcurrentBuffer::createArray):
* wtf/ConcurrentVector.h: Added.
(WTF::ConcurrentVectorIterator::~ConcurrentVectorIterator):
(WTF::ConcurrentVectorIterator::operator* const):
(WTF::ConcurrentVectorIterator::operator-> const):
(WTF::ConcurrentVectorIterator::operator++):
(WTF::ConcurrentVectorIterator::operator== const):
(WTF::ConcurrentVectorIterator::operator!= const):
(WTF::ConcurrentVectorIterator::operator=):
(WTF::ConcurrentVectorIterator::ConcurrentVectorIterator):
(WTF::ConcurrentVector::~ConcurrentVector):
(WTF::ConcurrentVector::size const):
(WTF::ConcurrentVector::isEmpty const):
(WTF::ConcurrentVector::at):
(WTF::ConcurrentVector::at const):
(WTF::ConcurrentVector::operator[]):
(WTF::ConcurrentVector::operator[] const):
(WTF::ConcurrentVector::first):
(WTF::ConcurrentVector::first const):
(WTF::ConcurrentVector::last):
(WTF::ConcurrentVector::last const):
(WTF::ConcurrentVector::takeLast):
(WTF::ConcurrentVector::append):
(WTF::ConcurrentVector::alloc):
(WTF::ConcurrentVector::removeLast):
(WTF::ConcurrentVector::grow):
(WTF::ConcurrentVector::begin):
(WTF::ConcurrentVector::end):
(WTF::ConcurrentVector::segmentExistsFor):
(WTF::ConcurrentVector::segmentFor):
(WTF::ConcurrentVector::subscriptFor):
(WTF::ConcurrentVector::ensureSegmentsFor):
(WTF::ConcurrentVector::ensureSegment):
(WTF::ConcurrentVector::allocateSegment):

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

2 years agoUnreviewed, fix !ENABLE(MEDIA_STREAM) build after r225822
mcatanzaro@igalia.com [Wed, 13 Dec 2017 01:57:45 +0000 (01:57 +0000)]
Unreviewed, fix !ENABLE(MEDIA_STREAM) build after r225822
https://bugs.webkit.org/show_bug.cgi?id=180666
<rdar://problem/36008948>

* html/HTMLMediaElement.cpp:

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

2 years agoFix possible out-of-bounds read in protocolIsInHTTPFamily
achristensen@apple.com [Wed, 13 Dec 2017 01:54:26 +0000 (01:54 +0000)]
Fix possible out-of-bounds read in protocolIsInHTTPFamily
https://bugs.webkit.org/show_bug.cgi?id=180688

Reviewed by Daniel Bates.

Source/WebCore:

It wouldn't read very far out of bounds, and it would just change a bool return value,
but it's still out of bounds.  Covered by an API test that ASAN wouldn't like.

* platform/URL.cpp:
(WebCore::protocolIsInHTTPFamily):
Check bounds before reading a string.

Tools:

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

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

2 years agogetUserMedia is resolving before the document knows it is capturing
commit-queue@webkit.org [Wed, 13 Dec 2017 01:39:36 +0000 (01:39 +0000)]
getUserMedia is resolving before the document knows it is capturing
https://bugs.webkit.org/show_bug.cgi?id=180699

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

Source/WebCore:

Covered by updated test.

Ensure the document state is capturing when getUserMedia promise is resolved by doing the following:
- Promise is resolved when MediaStream is producing data.
- MediaStream asks Document to update its state when MediaStream state is updated.

Introduce PendingActivationMediaStream for waiting for the MediaStream to produce data.

* Modules/mediastream/MediaStream.cpp:
(WebCore::MediaStream::statusDidChange):
* Modules/mediastream/UserMediaRequest.cpp:
(WebCore::UserMediaRequest::allow):
(WebCore::UserMediaRequest::contextDestroyed):
(WebCore::UserMediaRequest::PendingActivationMediaStream::PendingActivationMediaStream):
(WebCore::UserMediaRequest::PendingActivationMediaStream::~PendingActivationMediaStream):
(WebCore::UserMediaRequest::PendingActivationMediaStream::characteristicsChanged):
(WebCore::UserMediaRequest::mediaStreamIsReady):
* Modules/mediastream/UserMediaRequest.h:
(WebCore::UserMediaRequest::PendingActivationMediaStream::create):
* platform/mediastream/RealtimeMediaSourceCenter.h:
* WebCore/WebCore.xcodeproj/project.pbxproj:

LayoutTests:

* webrtc/video.html: Adding a check that document is capturing within getUserMedia promise resolution callback.
Adding this check without the changes to WebCore makes the test flaky, sometimes the promise resolution happens
after document state is updated.

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

2 years agoStorage Access API: Implement frame-specific access in the network storage session...
wilander@apple.com [Wed, 13 Dec 2017 01:20:06 +0000 (01:20 +0000)]
Storage Access API: Implement frame-specific access in the network storage session layer
https://bugs.webkit.org/show_bug.cgi?id=180679
<rdar://problem/35982116>

Reviewed by Alex Christensen.

Source/WebCore:

Tests: http/tests/storageAccess/request-and-grant-storage-access-cross-origin-sandboxed-iframe-from-prevalent-domain-with-non-recent-user-interaction-and-try-access-from-right-frame.html
       http/tests/storageAccess/request-and-grant-storage-access-cross-origin-sandboxed-iframe-from-prevalent-domain-with-non-recent-user-interaction-but-try-access-from-wrong-frame.html

This changes adds frameID and pageID to what is communicated for
storage access and also stored in the network process' table of
partitioning exceptions.

* dom/Document.cpp:
(WebCore::Document::hasStorageAccess):
    Now makes use of the new m_hasFrameSpecificStorageAccess to check
    if access has already been granted to this document's domain and
    frame.
(WebCore::Document::requestStorageAccess):
    Now submits frameID and pageID in the request call and sets
    m_hasFrameSpecificStorageAccess upon granted access callback.
* dom/Document.h:
* page/ChromeClient.h:
* platform/network/NetworkStorageSession.h:
* platform/network/cf/NetworkStorageSessionCFNet.cpp:
(WebCore::NetworkStorageSession::cookieStoragePartition const):
(WebCore::NetworkStorageSession::setPrevalentDomainsToPartitionOrBlockCookies):
(WebCore::NetworkStorageSession::isStorageAccessGranted const):
(WebCore::NetworkStorageSession::setStorageAccessGranted):
    Now makes use of frameID and pageID for partitioning exceptions.
* platform/network/mac/CookieJarMac.mm:
(WebCore::cookiesInPartitionForURL):
(WebCore::setCookiesFromDOM):
    Submits std::nullopt for frameID and pageID.
    Follow-up work tracked in https://bugs.webkit.org/show_bug.cgi?id=180682.
* platform/network/mac/ResourceHandleMac.mm:
(WebCore::ResourceHandle::applySniffingPoliciesAndStoragePartitionIfNeeded):
    Submits std::nullopt for frameID and pageID.
    Follow-up work tracked in https://bugs.webkit.org/show_bug.cgi?id=180682.

Source/WebKit:

This changes adds frameID and pageID to what is communicated for
storage access and also stored in the network process' table of
partitioning exceptions.

* NetworkProcess/NetworkDataTask.cpp:
(WebKit::NetworkDataTask::create):
    Now stores frameID and pageID for the task for easy retrieval
    in the HSTS checks.
* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::updateStorageAccessForPrevalentDomains):
* NetworkProcess/NetworkProcess.h:
* NetworkProcess/NetworkProcess.messages.in:
* NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
* NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
(WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa):
(WebKit::NetworkDataTaskCocoa::willPerformHTTPRedirection):
    These two methods now submit frameID and pageID to the
    partitioning query call.
* NetworkProcess/cocoa/NetworkSessionCocoa.mm:
(-[WKNetworkSessionDelegate URLSession:task:willPerformHTTPRedirection:newRequest:completionHandler:]):
(-[WKNetworkSessionDelegate URLSession:task:_schemeUpgraded:completionHandler:]):
    These two methods now submit frameID and pageID to the
    partitioning query call.
* UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::updateStorageAccessForPrevalentDomains):
* UIProcess/Network/NetworkProcessProxy.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::requestStorageAccess):
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* UIProcess/WebResourceLoadStatisticsStore.cpp:
(WebKit::WebResourceLoadStatisticsStore::requestStorageAccess):
* UIProcess/WebResourceLoadStatisticsStore.h:
* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::updateStorageAccessForPrevalentDomainsHandler):
(WebKit::WebsiteDataStore::enableResourceLoadStatisticsAndSetTestingCallback):
(WebKit::WebsiteDataStore::requestStorageAccess):
* UIProcess/WebsiteData/WebsiteDataStore.h:
* WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::requestStorageAccess):
* WebProcess/WebCoreSupport/WebChromeClient.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::requestStorageAccess):
* WebProcess/WebPage/WebPage.h:

LayoutTests:

Note that the expected results for
request-and-grant-storage-access-cross-origin-sandboxed-iframe-from-prevalent-domain-with-non-recent-user-interaction-and-try-access-from-right-frame.html
accepts the missing part where document.cookie is still partitioned
after storage access has been granted. Follow-up work tracked in
https://bugs.webkit.org/show_bug.cgi?id=180682.

* http/tests/storageAccess/request-and-grant-storage-access-cross-origin-sandboxed-iframe-from-prevalent-domain-with-non-recent-user-interaction-and-try-access-from-right-frame-expected.txt: Added.
* http/tests/storageAccess/request-and-grant-storage-access-cross-origin-sandboxed-iframe-from-prevalent-domain-with-non-recent-user-interaction-and-try-access-from-right-frame.html: Added.
* http/tests/storageAccess/request-and-grant-storage-access-cross-origin-sandboxed-iframe-from-prevalent-domain-with-non-recent-user-interaction-but-try-access-from-wrong-frame-expected.txt: Copied from LayoutTests/http/tests/storageAccess/request-and-grant-storage-access-cross-origin-sandboxed-iframe-from-prevalent-domain-with-non-recent-user-interaction-expected.txt.
* http/tests/storageAccess/request-and-grant-storage-access-cross-origin-sandboxed-iframe-from-prevalent-domain-with-non-recent-user-interaction-but-try-access-from-wrong-frame.html: Copied from LayoutTests/http/tests/storageAccess/request-and-grant-storage-access-cross-origin-sandboxed-iframe-from-prevalent-domain-with-non-recent-user-interaction.html.
* http/tests/storageAccess/request-and-grant-storage-access-cross-origin-sandboxed-iframe-from-prevalent-domain-with-non-recent-user-interaction-expected.txt: Removed.
* http/tests/storageAccess/request-and-grant-storage-access-cross-origin-sandboxed-iframe-from-prevalent-domain-with-non-recent-user-interaction.html: Removed.
* platform/mac-wk2/TestExpectations:

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

2 years agoModernize WebsiteDataStoreParameters and SandboxExtension::Handle decoding
achristensen@apple.com [Wed, 13 Dec 2017 01:18:20 +0000 (01:18 +0000)]
Modernize WebsiteDataStoreParameters and SandboxExtension::Handle decoding
https://bugs.webkit.org/show_bug.cgi?id=180621

Reviewed by Youenn Fablet.

* NetworkProcess/NetworkProcessCreationParameters.cpp:
(WebKit::NetworkProcessCreationParameters::decode):
* NetworkProcess/NetworkResourceLoadParameters.cpp:
(WebKit::NetworkResourceLoadParameters::decode):
* Shared/LoadParameters.cpp:
(WebKit::LoadParameters::decode):
* Shared/SandboxExtension.h:
(WebKit::decode):
(WebKit::SandboxExtension::Handle::decode): Deleted.
* Shared/Storage/StorageProcessCreationParameters.cpp:
(WebKit::StorageProcessCreationParameters::decode):
* Shared/WebProcessCreationParameters.cpp:
(WebKit::WebProcessCreationParameters::decode):
* Shared/WebsiteDataStoreParameters.cpp:
(WebKit::WebsiteDataStoreParameters::decode):
* Shared/WebsiteDataStoreParameters.h:
* Shared/mac/SandboxExtensionMac.mm:
(WebKit::SandboxExtension::Handle::decode):
(WebKit::SandboxExtension::HandleArray::HandleArray):
(WebKit::SandboxExtension::HandleArray::encode const):
(WebKit::SandboxExtension::HandleArray::decode):
(WebKit::SandboxExtension::SandboxExtension):

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

2 years agoVersioning.
jmarcell@apple.com [Wed, 13 Dec 2017 01:13:30 +0000 (01:13 +0000)]
Versioning.

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

2 years agomakeString: support more integral types
jfbastien@apple.com [Wed, 13 Dec 2017 00:50:34 +0000 (00:50 +0000)]
makeString: support more integral types
https://bugs.webkit.org/show_bug.cgi?id=180720

Reviewed by Sam Weinig.

Source/WTF:

Only some integral types worked. Add more types by using template
magic. While we're here, also use the same magic for
floating-point types in the theoretical future where short float
or long double matter.

The core of the magic is a second, defaulted, template
parameter. It's declared in Forward.h (as void), and then in
classes where we want to enable_if we use it (in C++ speak we
create a partial class template specialization), otherwise we
leave it as void.

Also clean up some constructors which were being way too verbose
in stating that they were declarations for this template
specialization right here, when really we already knew that.

* wtf/Forward.h:
* wtf/text/StringConcatenate.h:
(WTF::StringTypeAdapter<char>::StringTypeAdapter<char>): Deleted.
(WTF::StringTypeAdapter<char>::length): Deleted.
(WTF::StringTypeAdapter<char>::is8Bit): Deleted.
(WTF::StringTypeAdapter<char>::writeTo const): Deleted.
(WTF::StringTypeAdapter<char>::toString const): Deleted.
(WTF::StringTypeAdapter<UChar>::StringTypeAdapter<UChar>): Deleted.
(WTF::StringTypeAdapter<UChar>::length const): Deleted.
(WTF::StringTypeAdapter<UChar>::is8Bit const): Deleted.
(WTF::StringTypeAdapter<UChar>::writeTo const): Deleted.
(WTF::StringTypeAdapter<UChar>::toString const): Deleted.
(WTF::StringTypeAdapter<char::StringTypeAdapter): Deleted.
(WTF::StringTypeAdapter<ASCIILiteral>::StringTypeAdapter): Deleted.
(WTF::StringTypeAdapter<Vector<char>>::StringTypeAdapter): Deleted.
(WTF::StringTypeAdapter<Vector<char>>::length const): Deleted.
(WTF::StringTypeAdapter<Vector<char>>::is8Bit const): Deleted.
(WTF::StringTypeAdapter<Vector<char>>::writeTo const): Deleted.
(WTF::StringTypeAdapter<Vector<char>>::toString const): Deleted.
(WTF::StringTypeAdapter<String>::StringTypeAdapter<String>): Deleted.
(WTF::StringTypeAdapter<String>::length const): Deleted.
(WTF::StringTypeAdapter<String>::is8Bit const): Deleted.
(WTF::StringTypeAdapter<String>::writeTo const): Deleted.
(WTF::StringTypeAdapter<String>::toString const): Deleted.
(WTF::StringTypeAdapter<AtomicString>::StringTypeAdapter): Deleted.
* wtf/text/StringConcatenateNumbers.h:
(WTF::StringTypeAdapter<FormattedNumber>::StringTypeAdapter):
(WTF::StringTypeAdapter<int>::StringTypeAdapter<int>): Deleted.
(WTF::StringTypeAdapter<int>::length const): Deleted.
(WTF::StringTypeAdapter<int>::is8Bit const): Deleted.
(WTF::StringTypeAdapter<int>::writeTo const): Deleted.
(WTF::StringTypeAdapter<int>::toString const): Deleted.
(WTF::StringTypeAdapter<unsigned>::StringTypeAdapter<unsigned>): Deleted.
(WTF::StringTypeAdapter<unsigned>::length const): Deleted.
(WTF::StringTypeAdapter<unsigned>::is8Bit const): Deleted.
(WTF::StringTypeAdapter<unsigned>::writeTo const): Deleted.
(WTF::StringTypeAdapter<unsigned>::toString const): Deleted.
(WTF::StringTypeAdapter<double>::StringTypeAdapter<double>): Deleted.
(WTF::StringTypeAdapter<double>::length const): Deleted.
(WTF::StringTypeAdapter<double>::is8Bit const): Deleted.
(WTF::StringTypeAdapter<double>::writeTo const): Deleted.
(WTF::StringTypeAdapter<double>::toString const): Deleted.
(WTF::StringTypeAdapter<float>::StringTypeAdapter<float>): Deleted.
(WTF::StringTypeAdapter<FormattedNumber>::StringTypeAdapter<FormattedNumber>): Deleted.
* wtf/text/StringView.h:
(WTF::StringTypeAdapter<StringView>::StringTypeAdapter<StringView>): Deleted.
(WTF::StringTypeAdapter<StringView>::length): Deleted.
(WTF::StringTypeAdapter<StringView>::is8Bit): Deleted.
(WTF::StringTypeAdapter<StringView>::writeTo): Deleted.
(WTF::StringTypeAdapter<StringView>::toString const): Deleted.

Tools:

Test a few more types can be made string'd.

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

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

2 years agoPlaying webrtc video tracks should prevent from display to got to sleep
commit-queue@webkit.org [Wed, 13 Dec 2017 00:40:08 +0000 (00:40 +0000)]
Playing webrtc video tracks should prevent from display to got to sleep
https://bugs.webkit.org/show_bug.cgi?id=180666

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

Done through manual testing by checking screen assertions taken on webrtc sites.

* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::shouldDisableSleep const):

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

2 years agoConstantFoldingPhase rule for GetMyArgumentByVal must check for negative indices
sbarati@apple.com [Wed, 13 Dec 2017 00:32:57 +0000 (00:32 +0000)]
ConstantFoldingPhase rule for GetMyArgumentByVal must check for negative indices
https://bugs.webkit.org/show_bug.cgi?id=180723
<rdar://problem/35859726>

Reviewed by JF Bastien.

JSTests:

* stress/get-my-argument-by-val-constant-folding.js: Added.
(test):
(catch):

Source/JavaScriptCore:

* dfg/DFGConstantFoldingPhase.cpp:
(JSC::DFG::ConstantFoldingPhase::foldConstants):

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

2 years agoWeb Inspector: support async setup() and async teardown() in AsyncTestSuite
bburg@apple.com [Wed, 13 Dec 2017 00:31:15 +0000 (00:31 +0000)]
Web Inspector: support async setup() and async teardown() in AsyncTestSuite
https://bugs.webkit.org/show_bug.cgi?id=180626

Reviewed by Timothy Hatcher.

Source/WebInspectorUI:

This can make some code simpler by removing Promise-related boilerplate. I'm splitting
this patch from the new use-site in the interest of making it easier to review.

* UserInterface/Test/TestSuite.js:
(AsyncTestSuite.prototype.runTestCases):
(AsyncTestSuite):

LayoutTests:

Update tests to cover async setup() and async teardown() in the case
of success, runtime failure, and explicit failure.

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

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

2 years agoFlakiness dashboard: Make GTK and WPE builds inherit expectations from WK2
commit-queue@webkit.org [Wed, 13 Dec 2017 00:11:45 +0000 (00:11 +0000)]
Flakiness dashboard: Make GTK and WPE builds inherit expectations from WK2
https://bugs.webkit.org/show_bug.cgi?id=178782

Patch by Alicia Boya GarcĂ­a <aboya@igalia.com> on 2017-12-12
Reviewed by Michael Catanzaro.

* TestResultServer/static-dashboards/flakiness_dashboard.js:

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

2 years agoDispatch resource load statistics telemetry on the main thread
wilander@apple.com [Tue, 12 Dec 2017 23:54:34 +0000 (23:54 +0000)]
Dispatch resource load statistics telemetry on the main thread
https://bugs.webkit.org/show_bug.cgi?id=180602
<rdar://problem/35942205>

Reviewed by Brent Fulgham.

* UIProcess/WebResourceLoadStatisticsTelemetry.cpp:
(WebKit::WebResourceLoadStatisticsTelemetry::calculateAndSubmit):
    Now switches to the main thread for the telemetry submission
    through a webpage proxy. The reason is that the webpage we
    use may go away while we're still using it. This kind of
    telemetry isn't associated with a specific webpage but the
    infrastructure requires a webpage proxy.

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

2 years ago[WinCairo] Enable WebP support
don.olmstead@sony.com [Tue, 12 Dec 2017 23:41:26 +0000 (23:41 +0000)]
[WinCairo] Enable WebP support
https://bugs.webkit.org/show_bug.cgi?id=179908

Reviewed by Konstantin Tokarev.

* Source/cmake/OptionsWinCairo.cmake:

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

2 years agoAdd CanvasRenderingContext2DBase class and OffscreenCanvasRenderingContext2D
dino@apple.com [Tue, 12 Dec 2017 23:35:51 +0000 (23:35 +0000)]
Add CanvasRenderingContext2DBase class and OffscreenCanvasRenderingContext2D
https://bugs.webkit.org/show_bug.cgi?id=180718
<rdar://problem/36004015>

Reviewed by Sam Weinig.

Add an OffscreenCanvasRenderingContext2D class, and in the process create a shared
base class for it and CanvasRenderingContext2D, called CanvasRenderingContext2DBase.
The base class has nearly all the functionality, with the exception of the text
and focus rendering APIs, which are only exposed on CanvasRenderingContext2D.

At the moment CanvasRenderingContext2DBase's implementation still expects the attached
canvas to be an HTMLCanvasElement, but that's ok since you can't yet create an
OffscreenCanvasRenderingContext2D. A subsequent patch will do the right thing.

No change in functionality at the moment, so covered by the existing tests.

* DerivedSources.make: Add the new IDL file.

* Sources.txt: Add all the new files to compile.
* WebCore.xcodeproj/project.pbxproj:

* bindings/js/JSCanvasRenderingContext2DCustom.cpp: Removed some unnecessary headers, and
added JSC:: where appropriate.
(WebCore::JSCanvasRenderingContext2DOwner::isReachableFromOpaqueRoots):
(WebCore::JSCanvasRenderingContext2D::visitAdditionalChildren):

* bindings/js/JSOffscreenCanvasRenderingContext2DCustom.cpp: Copied from Source/WebCore/bindings/js/JSCanvasRenderingContext2DCustom.cpp.
(WebCore::root): New root function that just returns the address of the OffscreenCanvas.
(WebCore::JSOffscreenCanvasRenderingContext2DOwner::isReachableFromOpaqueRoots):
(WebCore::JSOffscreenCanvasRenderingContext2D::visitAdditionalChildren):

* bindings/js/JSWorkerNavigatorCustom.cpp: Add JSC:: to fix a compilation error.
(WebCore::JSWorkerNavigator::visitAdditionalChildren):

* bindings/js/WebCoreBuiltinNames.h: New IDL types.

* html/OffscreenCanvas.idl: Explicitly generates an IsReachable.

* html/canvas/CanvasRenderingContext.h:
(WebCore::CanvasRenderingContext::isOffscreen2d const): Helper for is<> trait.

* html/canvas/CanvasRenderingContext2D.cpp: Nearly everything has been moved to the Base class.
* html/canvas/CanvasRenderingContext2D.h:
* html/canvas/CanvasRenderingContext2DBase.cpp: Copied from Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp.
* html/canvas/CanvasRenderingContext2DBase.h: Copied from Source/WebCore/html/canvas/CanvasRenderingContext2D.h.

* html/canvas/OffscreenCanvasRenderingContext2D.cpp: Added. Basic implementation that
just uses the Base class.
(WebCore::OffscreenCanvasRenderingContext2D::OffscreenCanvasRenderingContext2D):
* html/canvas/OffscreenCanvasRenderingContext2D.h: Added.
* html/canvas/OffscreenCanvasRenderingContext2D.idl: Added.

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

2 years agoMobileMiniBrowser using the wrong toolchain
jbedard@apple.com [Tue, 12 Dec 2017 23:13:37 +0000 (23:13 +0000)]
MobileMiniBrowser using the wrong toolchain
https://bugs.webkit.org/show_bug.cgi?id=180716
<rdar://problem/36002951>

Reviewed by Tim Horton.

Move Debug/Release configurations from xcodeproj into Base.xcconfig.

* MobileMiniBrowser/Configurations/Base.xcconfig:
* MobileMiniBrowser/MobileMiniBrowser.xcodeproj/project.pbxproj:

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

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

Reviewed by Devin Rousso.

Source/WebInspectorUI:

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

LayoutTests:

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

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

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

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

Reviewed by Eric Carlson.

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

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

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

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

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

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

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

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

Reviewed by Dean Jackson.

Source/WebCore:

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

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

LayoutTests:

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

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

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

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

Reviewed by Alex Christensen.

Source/WebKit:

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

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

LayoutTests:

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

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

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

Reviewed by Matt Baker.

Source/WebInspectorUI:

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

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

LayoutTests:

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

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

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

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

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

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

LayoutTests/imported/w3c:

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

Source/WebCore:

Covered by no-longer failing test.

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

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

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

Reviewed by Darin Adler.

Source/WebCore:

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

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

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

LayoutTests:

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

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

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

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

Source/WebCore:

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

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

LayoutTests:

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

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

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

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

Reviewed by Daniel Bates.

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

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

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

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

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

Reviewed by Manuel Rego Casasnovas.

LayoutTests/imported/w3c:

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

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

Source/WebCore:

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

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

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

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

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

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

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

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

Reviewed by Timothy Hatcher.

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

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

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

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

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

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

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

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

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

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

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

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

Reviewed by Eric Carlson.

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

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

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

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

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

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

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

Remove dangling close-parentheses character.

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

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

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

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

No new tests, no change in behavior.

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

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

* platform/graphics/texmap/TextureMapperShaderProgram.cpp:

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

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

Reviewed by Darin Adler and Yusuke Suzuki.

JSTests:

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

Source/JavaScriptCore:

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

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

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

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

Source/WTF:

* wtf/HashFunctions.h:

Tools:

* Scripts/run-jsc-stress-tests:

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

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

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

Source/WebCore:

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

Source/WebKit:

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

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

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

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

Reviewed by Tim Horton.

Source/WebCore:

Remove the ColorSpaceDeviceRGB enum and users.

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

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

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

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

Source/WebKit:

Remove encoding of ColorSpaceDeviceRGB.

* Shared/WebCoreArgumentCoders.h:

Source/WebKitLegacy/mac:

Use sRGBColorSpaceRef() from WebCore.

* WebView/WebHTMLView.mm:
(imageFromRect):

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

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

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

LayoutTests/imported/w3c:

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

Source/WebCore:

Covered by existing tests.

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

LayoutTests:

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

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

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

Reviewed by Daniel Bates.

The PluginProcess needs access to the AppStore Plugin XPC service.

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

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

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

Unreviewed.

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

LayoutTests/imported/w3c:

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

LayoutTests:

* TestExpectations:

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

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

Reviewed by Yusuke Suzuki.

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

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

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

Reviewed by Antti Koivisto.

Source/WebCore:

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

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

Test: fast/dom/iframe-innerWidth.html

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

LayoutTests:

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

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

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

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

Reviewed by Chris Dumez.

Source/WebCore:

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

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

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

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

LayoutTests:

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

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

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

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

Reviewed by Chris Dumez.

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

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

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

Reviewed by Carlos Alberto Lopez Perez.

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

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

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

Reviewed by Brady Eidson.

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

Source/WebCore:

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

Source/WebKit:

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

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

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

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

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

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

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

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

Source/WebCore:

Test: webrtc/getUserMedia-webaudio-autoplay.html

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

LayoutTests:

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

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

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

Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

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

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

Source/WebCore:

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

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

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

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

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

Reviewed by Youenn Fablet.

No new tests -- no change in functionality.

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

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

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

Unreviewed test gardening.

* platform/wpe/TestExpectations:

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

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

Unreviewed test gardening.

LayoutTests/imported/w3c:

Update tests from upstream, and update test expectations.

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

LayoutTests:

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

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

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

Reviewed by Carlos Garcia Campos.

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

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

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

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

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

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

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

Source/WebCore:

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

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

LayoutTests:

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

* platform/gtk/TestExpectations:

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

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

Reviewed by Darin Adler.

Source/JavaScriptCore:

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

Source/WebCore:

No behavior change.

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

Source/WebKit:

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

Source/WebKitLegacy:

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

Source/WebKitLegacy/win:

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

Source/WTF:

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

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

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

Tools:

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

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

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

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

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

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

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

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

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

Source/WebCore:

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

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

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

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

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

LayoutTests:

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

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

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

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

Reviewed by Michael Catanzaro.

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

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

No new tests -- no change in functionality.

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

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

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

Reviewed by Michael Catanzaro.

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

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

No new tests -- no change in behavior.

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

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

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

Reviewed by Michael Catanzaro.

Source/WebCore:

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

No new tests -- no change in functionality.

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

Source/WebKit:

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

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

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

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

Reviewed by Zalan Bujtas.

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

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

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

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

Reviewed by Saam Barati.

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

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

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

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

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

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

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

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

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

Reviewed by Dan Bates.

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

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

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

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

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

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

Reviewed by Mark Lam.

JSTests:

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

Source/JavaScriptCore:

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

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

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

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

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

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

Source/JavaScriptCore:

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

Tools:

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

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

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

Reviewed by Eric Carlson.

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

Drive-by fixes:

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

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

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

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

Reviewed by Brady Eidson.

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

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

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

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

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

Reviewed by Joseph Pecoraro.

Source/JavaScriptCore:

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

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

Source/WebCore:

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

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

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

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

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

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

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

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

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

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

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

Source/WTF:

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

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

LayoutTests:

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

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

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

Reviewed by Eric Carlson.

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

This update should not change behavior.

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

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

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

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

* builtins/BuiltinNames.h:

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

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

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

Source/ThirdParty/libwebrtc:

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

Source/WebCore:

Covered by existing test coverage.

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

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

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

Reviewed by Youenn Fablet.

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

Source/WebCore:

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

Source/WebKit:

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

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

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

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

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

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

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

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

Reviewed by Youenn Fablet.

Source/WebKit:

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

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

LayoutTests:

Rewrite test so that it is no longer flaky.

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

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

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

Substitute TARGET_MAC_OS_X_VERSION_LESS_THAN_101300 for TARGET_MAC_OS_X_VERSION_LESS_THAN_1013000.

* Configurations/WebCore.xcconfig:

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

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

Reviewed by Simon Fraser.

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

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

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

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

Reviewed by Dean Jackson.

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

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

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

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

Reviewed by Simon Fraser.

PerformanceTests:

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

Source/bmalloc:

* bmalloc/BPlatform.h:

Source/ThirdParty/libwebrtc:

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

Source/WebKitLegacy/mac:

* postprocess-headers.sh:

Source/WTF:

* wtf/Platform.h:

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

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

Reviewed by Geoffrey Garen.

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

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

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

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

Reviewed by JF Bastien.

Source/WebKit:

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

Source/WTF:

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

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

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

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

Reviewed by Dean Jackson.

Actually fix Windows build this time.

* animation/AnimationPlaybackEventInit.h:

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

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

Reviewed by Dean Jackson.

Unreviewed, fix Windows build.

* animation/AnimationPlaybackEventInit.h:

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

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

Reviewed by Antti Koivisto.

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

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

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

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

Source/JavaScriptCore:

* Configurations/FeatureDefines.xcconfig:

Source/WebCore:

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

Source/WebCore/PAL:

* Configurations/FeatureDefines.xcconfig:

Source/WebKit:

* Configurations/FeatureDefines.xcconfig:

Source/WebKitLegacy/mac:

* Configurations/FeatureDefines.xcconfig:

Tools:

* Configurations/FeatureDefines.xcconfig:

LayoutTests:

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

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

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

Reviewed by Antoine Quint.

Source/WebCore:

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

Test: fast/canvas/offscreen-enabled.html

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

Source/WebKit:

Add an experimental feature flag for these interfaces.

* Shared/WebPreferences.yaml:

Websites/webkit.org:

Simple test to validate if these interfaces are enabled.

* experimental-features.html:

LayoutTests:

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

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

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

Reviewed by Dean Jackson.

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

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

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

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

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

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

Unreviewed test gardening.

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

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

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

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

Bug fix on processing the curl event for file protocol.

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

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

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