Timeline



May 17, 2017:

11:57 PM Changeset in webkit [217037] by Yusuke Suzuki
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed, fix debug and non-JIT build
https://bugs.webkit.org/show_bug.cgi?id=172098

  • jsc.cpp:

(WTF::DOMJITFunctionObject::checkSubClassPatchpoint):

11:02 PM Changeset in webkit [217036] by Chris Dumez
  • 2 edits in trunk/Source/WebKit2

Fix unsafe lambda capture in ContentRuleListStore::lookupContentRuleList()
https://bugs.webkit.org/show_bug.cgi?id=172258

Reviewed by Brady Eidson.

Fix unsafe lambda capture in ContentRuleListStore::lookupContentRuleList(). The String
was moved instead of calling isolatedCopy(), even though we're passing the String to
another thread.

  • UIProcess/API/APIContentRuleListStore.cpp:

(API::ContentRuleListStore::lookupContentRuleList):

10:36 PM Changeset in webkit [217035] by jmarcell@apple.com
  • 2 edits in branches/safari-604.1.21-branch/Source/WebCore

Cherry-pick r217022. rdar://problem/32258020

10:35 PM Changeset in webkit [217034] by jmarcell@apple.com
  • 2 edits in branches/safari-604.1.21-branch/Source/WebCore

Cherry-pick r216954. rdar://problem/32233799

10:35 PM Changeset in webkit [217033] by jmarcell@apple.com
  • 30 edits in branches/safari-604.1.21-branch/Source

Cherry-pick r216898. rdar://problem/32231650

10:08 PM Changeset in webkit [217032] by Yusuke Suzuki
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed, rebaseline for newly added ClassInfo
https://bugs.webkit.org/show_bug.cgi?id=172098

  • wasm/js/WebAssemblyFunctionBase.cpp:
9:59 PM Changeset in webkit [217031] by Yusuke Suzuki
  • 306 edits
    4 copies
    1 add in trunk

[JSC][DFG][DOMJIT] Extend CheckDOM to CheckSubClass
https://bugs.webkit.org/show_bug.cgi?id=172098

Reviewed by Saam Barati.

JSTests:

  • stress/check-sub-class.js: Added.

(shouldBe):
(shouldThrow):
(calling):
(array.forEach):
(i.array.forEach):

Source/JavaScriptCore:

In this patch, we generalize CheckDOM to CheckSubClass.
It can accept any ClassInfo and perform ClassInfo check
in DFG / FTL. Now, we add a new function pointer to ClassInfo,
checkSubClassPatchpoint. It can create DOMJIT patchpoint
for that ClassInfo. It it natural that ClassInfo holds the
way to emit DOMJIT::Patchpoint to perform CheckSubClass
rather than having it in each DOMJIT getter / function
signature annotation.

One problem is that it enlarges the size of ClassInfo.
But this is the best place to put this function pointer.
By doing so, we can add a patchpoint for CheckSubClass
in an non-intrusive manner: WebCore can inject patchpoints
without interactive JSC.

We still have a way to reduce the size of ClassInfo if
we move ArrayBuffer related methods out to the other places.

This patch touches many files because we add a new function
pointer to ClassInfo. But they are basically mechanical change.

  • API/JSAPIWrapperObject.mm:
  • API/JSCallbackConstructor.cpp:
  • API/JSCallbackFunction.cpp:
  • API/JSCallbackObject.cpp:
  • API/ObjCCallbackFunction.mm:
  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • bytecode/CodeBlock.cpp:
  • bytecode/DOMJITAccessCasePatchpointParams.h:

(JSC::DOMJITAccessCasePatchpointParams::DOMJITAccessCasePatchpointParams):

  • bytecode/EvalCodeBlock.cpp:
  • bytecode/FunctionCodeBlock.cpp:
  • bytecode/GetterSetterAccessCase.cpp:

(JSC::GetterSetterAccessCase::emitDOMJITGetter):

  • bytecode/ModuleProgramCodeBlock.cpp:
  • bytecode/ProgramCodeBlock.cpp:
  • bytecode/UnlinkedCodeBlock.cpp:
  • bytecode/UnlinkedEvalCodeBlock.cpp:
  • bytecode/UnlinkedFunctionCodeBlock.cpp:
  • bytecode/UnlinkedFunctionExecutable.cpp:
  • bytecode/UnlinkedModuleProgramCodeBlock.cpp:
  • bytecode/UnlinkedProgramCodeBlock.cpp:
  • debugger/DebuggerScope.cpp:
  • dfg/DFGAbstractInterpreterInlines.h:

(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::handleDOMJITGetter):

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

  • dfg/DFGConstantFoldingPhase.cpp:

(JSC::DFG::ConstantFoldingPhase::foldConstants):

  • dfg/DFGDOMJITPatchpointParams.h:

(JSC::DFG::DOMJITPatchpointParams::DOMJITPatchpointParams):

  • dfg/DFGDoesGC.cpp:

(JSC::DFG::doesGC):

  • dfg/DFGFixupPhase.cpp:

(JSC::DFG::FixupPhase::fixupNode):
(JSC::DFG::FixupPhase::attemptToMakeCallDOM):
(JSC::DFG::FixupPhase::fixupCheckSubClass):
(JSC::DFG::FixupPhase::fixupCheckDOM): Deleted.

  • dfg/DFGGraph.cpp:

(JSC::DFG::Graph::dump):

  • dfg/DFGNode.h:

(JSC::DFG::Node::hasClassInfo):
(JSC::DFG::Node::classInfo):
(JSC::DFG::Node::hasCheckDOMPatchpoint): Deleted.
(JSC::DFG::Node::checkDOMPatchpoint): Deleted.

  • dfg/DFGNodeType.h:
  • dfg/DFGPredictionPropagationPhase.cpp:
  • dfg/DFGSafeToExecute.h:

(JSC::DFG::safeToExecute):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileCheckSubClass):
(JSC::DFG::SpeculativeJIT::compileCheckDOM): Deleted.

  • dfg/DFGSpeculativeJIT.h:

(JSC::DFG::SpeculativeJIT::vm):

  • dfg/DFGSpeculativeJIT32_64.cpp:

(JSC::DFG::SpeculativeJIT::compile):
In DFG, we rename CheckDOM to CheckSubClass. It just holds ClassInfo.
And ClassInfo knows how to perform CheckSubClass efficiently.
If ClassInfo does not have a way to perform CheckSubClass efficiently,
we just perform jsDynamicCast thing in ASM.

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::compile):

  • domjit/DOMJITGetterSetter.h:
  • domjit/DOMJITPatchpointParams.h:

(JSC::DOMJIT::PatchpointParams::PatchpointParams):
(JSC::DOMJIT::PatchpointParams::vm):

  • domjit/DOMJITSignature.h:

(JSC::DOMJIT::Signature::Signature):
(JSC::DOMJIT::Signature::checkDOM): Deleted.

  • ftl/FTLAbstractHeapRepository.h:
  • ftl/FTLCapabilities.cpp:

(JSC::FTL::canCompile):

  • ftl/FTLDOMJITPatchpointParams.h:

(JSC::FTL::DOMJITPatchpointParams::DOMJITPatchpointParams):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileNode):
(JSC::FTL::DFG::LowerDFGToB3::compileCheckSubClass):
(JSC::FTL::DFG::LowerDFGToB3::compileCheckDOM): Deleted.

  • inspector/JSInjectedScriptHost.cpp:
  • inspector/JSInjectedScriptHostPrototype.cpp:
  • inspector/JSJavaScriptCallFrame.cpp:
  • inspector/JSJavaScriptCallFramePrototype.cpp:
  • jsc.cpp:

(WTF::DOMJITNode::checkSubClassPatchpoint):
(WTF::DOMJITFunctionObject::checkSubClassPatchpoint):
(WTF::DOMJITFunctionObject::finishCreation):
(WTF::DOMJITCheckSubClassObject::DOMJITCheckSubClassObject):
(WTF::DOMJITCheckSubClassObject::createStructure):
(WTF::DOMJITCheckSubClassObject::create):
(WTF::DOMJITCheckSubClassObject::safeFunction):
(WTF::DOMJITCheckSubClassObject::unsafeFunction):
(WTF::DOMJITCheckSubClassObject::finishCreation):
(GlobalObject::finishCreation):
(functionCreateDOMJITCheckSubClassObject):
(WTF::DOMJITNode::checkDOMJITNode): Deleted.
(WTF::DOMJITFunctionObject::checkDOMJITNode): Deleted.

  • runtime/AbstractModuleRecord.cpp:
  • runtime/ArrayBufferNeuteringWatchpoint.cpp:
  • runtime/ArrayConstructor.cpp:
  • runtime/ArrayIteratorPrototype.cpp:
  • runtime/ArrayPrototype.cpp:
  • runtime/AsyncFunctionConstructor.cpp:
  • runtime/AsyncFunctionPrototype.cpp:
  • runtime/AtomicsObject.cpp:
  • runtime/BooleanConstructor.cpp:
  • runtime/BooleanObject.cpp:
  • runtime/BooleanPrototype.cpp:
  • runtime/ClassInfo.cpp: Copied from Source/JavaScriptCore/tools/JSDollarVM.cpp.

(JSC::ClassInfo::dump):

  • runtime/ClassInfo.h:

(JSC::ClassInfo::offsetOfParentClass):

  • runtime/ClonedArguments.cpp:
  • runtime/ConsoleObject.cpp:
  • runtime/CustomGetterSetter.cpp:
  • runtime/DateConstructor.cpp:
  • runtime/DateInstance.cpp:
  • runtime/DatePrototype.cpp:
  • runtime/DirectArguments.cpp:
  • runtime/Error.cpp:
  • runtime/ErrorConstructor.cpp:
  • runtime/ErrorInstance.cpp:
  • runtime/ErrorPrototype.cpp:
  • runtime/EvalExecutable.cpp:
  • runtime/Exception.cpp:
  • runtime/ExceptionHelpers.cpp:
  • runtime/ExecutableBase.cpp:
  • runtime/FunctionConstructor.cpp:
  • runtime/FunctionExecutable.cpp:
  • runtime/FunctionPrototype.cpp:
  • runtime/FunctionRareData.cpp:
  • runtime/GeneratorFunctionConstructor.cpp:
  • runtime/GeneratorFunctionPrototype.cpp:
  • runtime/GeneratorPrototype.cpp:
  • runtime/GetterSetter.cpp:
  • runtime/HashMapImpl.cpp:
  • runtime/HashMapImpl.h:
  • runtime/InferredType.cpp:

(JSC::InferredType::create):

  • runtime/InferredTypeTable.cpp:
  • runtime/InferredValue.cpp:
  • runtime/InspectorInstrumentationObject.cpp:
  • runtime/InternalFunction.cpp:
  • runtime/IntlCollator.cpp:
  • runtime/IntlCollatorConstructor.cpp:
  • runtime/IntlCollatorPrototype.cpp:
  • runtime/IntlDateTimeFormat.cpp:
  • runtime/IntlDateTimeFormatConstructor.cpp:
  • runtime/IntlDateTimeFormatPrototype.cpp:
  • runtime/IntlNumberFormat.cpp:
  • runtime/IntlNumberFormatConstructor.cpp:
  • runtime/IntlNumberFormatPrototype.cpp:
  • runtime/IntlObject.cpp:
  • runtime/IteratorPrototype.cpp:
  • runtime/JSAPIValueWrapper.cpp:
  • runtime/JSArray.cpp:
  • runtime/JSArrayBuffer.cpp:
  • runtime/JSArrayBufferConstructor.cpp:
  • runtime/JSArrayBufferPrototype.cpp:
  • runtime/JSArrayBufferView.cpp:
  • runtime/JSAsyncFunction.cpp:
  • runtime/JSBoundFunction.cpp:
  • runtime/JSCallee.cpp:
  • runtime/JSCustomGetterSetterFunction.cpp:
  • runtime/JSDataView.cpp:
  • runtime/JSDataViewPrototype.cpp:
  • runtime/JSEnvironmentRecord.cpp:
  • runtime/JSFixedArray.cpp:
  • runtime/JSFunction.cpp:
  • runtime/JSGeneratorFunction.cpp:
  • runtime/JSGlobalLexicalEnvironment.cpp:
  • runtime/JSGlobalObject.cpp:
  • runtime/JSInternalPromise.cpp:
  • runtime/JSInternalPromiseConstructor.cpp:
  • runtime/JSInternalPromiseDeferred.cpp:
  • runtime/JSInternalPromisePrototype.cpp:
  • runtime/JSLexicalEnvironment.cpp:
  • runtime/JSMap.cpp:
  • runtime/JSMapIterator.cpp:
  • runtime/JSModuleEnvironment.cpp:
  • runtime/JSModuleLoader.cpp:
  • runtime/JSModuleNamespaceObject.cpp:
  • runtime/JSModuleRecord.cpp:
  • runtime/JSNativeStdFunction.cpp:
  • runtime/JSONObject.cpp:
  • runtime/JSObject.cpp:
  • runtime/JSPromise.cpp:
  • runtime/JSPromiseConstructor.cpp:
  • runtime/JSPromiseDeferred.cpp:
  • runtime/JSPromisePrototype.cpp:
  • runtime/JSPropertyNameEnumerator.cpp:
  • runtime/JSPropertyNameIterator.cpp:
  • runtime/JSProxy.cpp:
  • runtime/JSScriptFetcher.cpp:
  • runtime/JSSet.cpp:
  • runtime/JSSetIterator.cpp:
  • runtime/JSSourceCode.cpp:
  • runtime/JSString.cpp:
  • runtime/JSStringIterator.cpp:
  • runtime/JSSymbolTableObject.cpp:
  • runtime/JSTemplateRegistryKey.cpp:
  • runtime/JSTypedArrayConstructors.cpp:
  • runtime/JSTypedArrayPrototypes.cpp:
  • runtime/JSTypedArrayViewConstructor.cpp:
  • runtime/JSTypedArrays.cpp:
  • runtime/JSWeakMap.cpp:
  • runtime/JSWeakSet.cpp:
  • runtime/JSWithScope.cpp:
  • runtime/MapConstructor.cpp:
  • runtime/MapIteratorPrototype.cpp:
  • runtime/MapPrototype.cpp:
  • runtime/MathObject.cpp:
  • runtime/ModuleLoaderPrototype.cpp:
  • runtime/ModuleProgramExecutable.cpp:
  • runtime/NativeErrorConstructor.cpp:
  • runtime/NativeExecutable.cpp:
  • runtime/NativeStdFunctionCell.cpp:
  • runtime/NullGetterFunction.cpp:
  • runtime/NullSetterFunction.cpp:
  • runtime/NumberConstructor.cpp:
  • runtime/NumberObject.cpp:
  • runtime/NumberPrototype.cpp:
  • runtime/ObjectConstructor.cpp:
  • runtime/ObjectPrototype.cpp:
  • runtime/ProgramExecutable.cpp:
  • runtime/PropertyTable.cpp:
  • runtime/ProxyConstructor.cpp:
  • runtime/ProxyObject.cpp:
  • runtime/ProxyRevoke.cpp:
  • runtime/ReflectObject.cpp:
  • runtime/RegExp.cpp:
  • runtime/RegExpConstructor.cpp:
  • runtime/RegExpObject.cpp:
  • runtime/RegExpPrototype.cpp:
  • runtime/ScopedArguments.cpp:
  • runtime/ScopedArgumentsTable.cpp:
  • runtime/ScriptExecutable.cpp:
  • runtime/SetConstructor.cpp:
  • runtime/SetIteratorPrototype.cpp:
  • runtime/SetPrototype.cpp:
  • runtime/SparseArrayValueMap.cpp:
  • runtime/StrictEvalActivation.cpp:
  • runtime/StringConstructor.cpp:
  • runtime/StringIteratorPrototype.cpp:
  • runtime/StringObject.cpp:
  • runtime/StringPrototype.cpp:
  • runtime/Structure.cpp:
  • runtime/StructureChain.cpp:
  • runtime/StructureRareData.cpp:
  • runtime/Symbol.cpp:
  • runtime/SymbolConstructor.cpp:
  • runtime/SymbolObject.cpp:
  • runtime/SymbolPrototype.cpp:
  • runtime/SymbolTable.cpp:
  • runtime/WeakMapConstructor.cpp:
  • runtime/WeakMapData.cpp:
  • runtime/WeakMapPrototype.cpp:
  • runtime/WeakSetConstructor.cpp:
  • runtime/WeakSetPrototype.cpp:
  • testRegExp.cpp:
  • tools/JSDollarVM.cpp:
  • tools/JSDollarVMPrototype.cpp:
  • wasm/JSWebAssembly.cpp:
  • wasm/js/JSWebAssemblyCodeBlock.cpp:
  • wasm/js/JSWebAssemblyCompileError.cpp:
  • wasm/js/JSWebAssemblyInstance.cpp:
  • wasm/js/JSWebAssemblyLinkError.cpp:
  • wasm/js/JSWebAssemblyMemory.cpp:
  • wasm/js/JSWebAssemblyModule.cpp:
  • wasm/js/JSWebAssemblyRuntimeError.cpp:
  • wasm/js/JSWebAssemblyTable.cpp:
  • wasm/js/WebAssemblyCompileErrorConstructor.cpp:
  • wasm/js/WebAssemblyCompileErrorPrototype.cpp:
  • wasm/js/WebAssemblyFunction.cpp:
  • wasm/js/WebAssemblyInstanceConstructor.cpp:
  • wasm/js/WebAssemblyInstancePrototype.cpp:
  • wasm/js/WebAssemblyLinkErrorConstructor.cpp:
  • wasm/js/WebAssemblyLinkErrorPrototype.cpp:
  • wasm/js/WebAssemblyMemoryConstructor.cpp:
  • wasm/js/WebAssemblyMemoryPrototype.cpp:
  • wasm/js/WebAssemblyModuleConstructor.cpp:
  • wasm/js/WebAssemblyModulePrototype.cpp:
  • wasm/js/WebAssemblyModuleRecord.cpp:
  • wasm/js/WebAssemblyPrototype.cpp:
  • wasm/js/WebAssemblyRuntimeErrorConstructor.cpp:
  • wasm/js/WebAssemblyRuntimeErrorPrototype.cpp:
  • wasm/js/WebAssemblyTableConstructor.cpp:
  • wasm/js/WebAssemblyTablePrototype.cpp:
  • wasm/js/WebAssemblyToJSCallee.cpp:
  • wasm/js/WebAssemblyWrapperFunction.cpp:

Source/WebCore:

Add DOMJIT interface IDL attribute. Which allows us to define checkSubClassPatchpoint function
for that ClassInfo. And we move CheckSubClass patchpoint implementation to ClassInfo's member.

  • CMakeLists.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/JSDOMGlobalObject.cpp:
  • bindings/js/JSDOMWindowBase.cpp:
  • bindings/js/JSDOMWindowProperties.cpp:
  • bindings/js/JSDOMWindowShell.cpp:
  • bindings/js/JSReadableStreamPrivateConstructors.cpp:
  • bindings/js/JSWorkerGlobalScopeBase.cpp:
  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateHeader):
(GenerateImplementation):
(GenerateImplementationIterableFunctions):
(GenerateConstructorHelperMethods):

  • bindings/scripts/IDLAttributes.json:
  • bindings/scripts/test/JS/JSInterfaceName.cpp:
  • bindings/scripts/test/JS/JSMapLike.cpp:
  • bindings/scripts/test/JS/JSReadOnlyMapLike.cpp:
  • bindings/scripts/test/JS/JSTestActiveDOMObject.cpp:
  • bindings/scripts/test/JS/JSTestCEReactions.cpp:
  • bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp:
  • bindings/scripts/test/JS/JSTestCallbackInterface.cpp:
  • bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp:
  • bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.cpp:
  • bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp:
  • bindings/scripts/test/JS/JSTestDOMJIT.cpp:
  • bindings/scripts/test/JS/JSTestDOMJIT.h:
  • bindings/scripts/test/JS/JSTestEventConstructor.cpp:
  • bindings/scripts/test/JS/JSTestEventTarget.cpp:
  • bindings/scripts/test/JS/JSTestException.cpp:
  • bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp:
  • bindings/scripts/test/JS/JSTestGlobalObject.cpp:
  • bindings/scripts/test/JS/JSTestInterface.cpp:
  • bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp:
  • bindings/scripts/test/JS/JSTestIterable.cpp:
  • bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp:
  • bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp:
  • bindings/scripts/test/JS/JSTestNamedConstructor.cpp:
  • bindings/scripts/test/JS/JSTestNode.cpp:
  • bindings/scripts/test/JS/JSTestObj.cpp:
  • bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp:
  • bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp:
  • bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp:
  • bindings/scripts/test/JS/JSTestPromiseRejectionEvent.cpp:
  • bindings/scripts/test/JS/JSTestSerialization.cpp:
  • bindings/scripts/test/JS/JSTestSerializationInherit.cpp:
  • bindings/scripts/test/JS/JSTestSerializationInheritFinal.cpp:
  • bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp:
  • bindings/scripts/test/JS/JSTestTypedefs.cpp:
  • bridge/c/CRuntimeObject.cpp:
  • bridge/c/c_instance.cpp:
  • bridge/objc/ObjCRuntimeObject.mm:
  • bridge/objc/objc_instance.mm:
  • bridge/objc/objc_runtime.mm:
  • bridge/runtime_array.cpp:
  • bridge/runtime_method.cpp:
  • bridge/runtime_object.cpp:
  • dom/Document.idl:
  • dom/DocumentFragment.idl:
  • dom/Element.idl:
  • dom/Event.idl:
  • dom/Node.idl:
  • domjit/JSDocumentDOMJIT.cpp:

(WebCore::JSDocument::checkSubClassPatchpoint):
(WebCore::DocumentDocumentElementDOMJIT::checkDOM): Deleted.
(WebCore::DocumentBodyDOMJIT::checkDOM): Deleted.

  • domjit/JSDocumentFragmentDOMJIT.cpp: Copied from Source/JavaScriptCore/runtime/JSMap.cpp.

(WebCore::JSDocumentFragment::checkSubClassPatchpoint):

  • domjit/JSElementDOMJIT.cpp: Copied from Source/JavaScriptCore/tools/JSDollarVM.cpp.

(WebCore::JSElement::checkSubClassPatchpoint):

  • domjit/JSEventDOMJIT.cpp: Copied from Source/JavaScriptCore/tools/JSDollarVM.cpp.

(WebCore::JSEvent::checkSubClassPatchpoint):

  • domjit/JSNodeDOMJIT.cpp:

(WebCore::JSNode::checkSubClassPatchpoint):
(WebCore::NodeFirstChildDOMJIT::checkDOM): Deleted.
(WebCore::NodeLastChildDOMJIT::checkDOM): Deleted.
(WebCore::NodeNextSiblingDOMJIT::checkDOM): Deleted.
(WebCore::NodePreviousSiblingDOMJIT::checkDOM): Deleted.
(WebCore::NodeParentNodeDOMJIT::checkDOM): Deleted.
(WebCore::NodeNodeTypeDOMJIT::checkDOM): Deleted.
(WebCore::NodeOwnerDocumentDOMJIT::checkDOM): Deleted.

Source/WebKit/mac:

  • Plugins/Hosted/ProxyInstance.mm:
  • Plugins/Hosted/ProxyRuntimeObject.mm:

Source/WebKit2:

  • WebProcess/Plugins/Netscape/JSNPMethod.cpp:
  • WebProcess/Plugins/Netscape/JSNPObject.cpp:
9:07 PM Changeset in webkit [217030] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

r216999 broke win build
https://bugs.webkit.org/show_bug.cgi?id=172257

Unreviewed.

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

  • testing/Internals.cpp:

(WebCore::Internals::setPageVisibility): Moving setPageVisibility out of MEDIA_STREAM compilation flag.

7:10 PM Changeset in webkit [217029] by jmarcell@apple.com
  • 7 edits
    2 adds in branches/safari-603-branch

Cherry-pick r216726. rdar://problem/31971324

6:36 PM Changeset in webkit [217028] by jmarcell@apple.com
  • 4 edits
    2 adds in branches/safari-603-branch

Cherry-pick r216978. rdar://problem/31971195

6:36 PM Changeset in webkit [217027] by jmarcell@apple.com
  • 3 edits
    2 adds in branches/safari-603-branch

Cherry-pick r216813. rdar://problem/31971160

6:36 PM Changeset in webkit [217026] by jmarcell@apple.com
  • 6 edits
    2 adds in branches/safari-603-branch

Cherry-pick r216631. rdar://problem/32200771

6:36 PM Changeset in webkit [217025] by jmarcell@apple.com
  • 3 edits in branches/safari-603-branch/Source/WebKit/win

Cherry-pick r216554. rdar://problem/31971362

6:35 PM Changeset in webkit [217024] by jmarcell@apple.com
  • 2 edits in branches/safari-603-branch/Source/JavaScriptCore

Cherry-pick r211063. rdar://problem/32228083

6:01 PM Changeset in webkit [217023] by jmarcell@apple.com
  • 7 edits in branches/safari-604.1.21-branch/Source

Versioning.

5:58 PM Changeset in webkit [217022] by aestes@apple.com
  • 2 edits in trunk/Source/WebCore

[Cocoa] errors are not propagated to PassKit when calling ApplePaySession.completePayment()
https://bugs.webkit.org/show_bug.cgi?id=172253
<rdar://problem/32258020>

Reviewed by Dan Bernstein.

In ApplePaySession::completePayment(), releaseReturnValue() was being called twice on the
same convertedResult. Since the first call moved the errors vector out of convertedResult,
the vector is empty in the second call. It's the second call that sends the result to the
UI process, so we end up with an empty arary when we call PassKit's delegate completion
handler.

  • Modules/applepay/ApplePaySession.cpp:

(WebCore::ApplePaySession::completePayment):

5:50 PM Changeset in webkit [217021] by matthew_hanson@apple.com
  • 1 copy in tags/Safari-604.1.21.5

Tag Safari-604.1.21.5.

5:37 PM Changeset in webkit [217020] by Ryan Haddad
  • 30 edits
    2 deletes in trunk

Unreviewed, rolling out r217014.

This change caused mac-wk2 LayoutTests to exit early due to
crashes.

Reverted changeset:

"Resource Load Statistics: Grandfather domains for existing
data records"
https://bugs.webkit.org/show_bug.cgi?id=172155
http://trac.webkit.org/changeset/217014

5:29 PM Changeset in webkit [217019] by Alan Bujtas
  • 6 edits in trunk

Tighten TextIterator::handleTextNode run-renderer mapping logic.
https://bugs.webkit.org/show_bug.cgi?id=172174

Reviewed by Antti Koivisto.

Source/WebCore:

This patch ensure that when runs and renderers are getting out of sync
we don't run into problems like webkit.org/b/172113 (where we end up
using incorrect content start/end positions).

  • editing/TextIterator.cpp:

(WebCore::TextIterator::handleTextNode):

LayoutTests:

  • fast/shadow-dom/slot-crash-expected.txt:
5:26 PM Changeset in webkit [217018] by fpizlo@apple.com
  • 2 edits in trunk/JSTests

Unreviewed, address mlam's review feedback.

  • stress/arguments-elimination-varargs-too-many-args-arg-count.js:
5:23 PM Changeset in webkit [217017] by sbarati@apple.com
  • 11 edits
    3 adds in trunk

We don't do context switches for Wasm->Wasm call indirect
https://bugs.webkit.org/show_bug.cgi?id=172188
<rdar://problem/32231828>

Reviewed by Keith Miller.

JSTests:

  • wasm/function-tests/context-switch.js: Added.

(import.Builder.from.string_appeared_here.import.as.assert.from.string_appeared_here.makeInstance):
(import.Builder.from.string_appeared_here.import.as.assert.from.string_appeared_here.makeInstance2):
(import.Builder.from.string_appeared_here.import.as.assert.from.string_appeared_here.const.i2.makeInstance2):
(makeInstance):
(makeInstance2):
(assert.eq.makeInstance):
(assert.eq.makeInstance2):
(assert.eq):

Source/JavaScriptCore:

We did not do a context switch when doing an indirect call.
This is clearly wrong, since the thing we're making an indirect
call to could be from another instance. This patch fixes this
oversight by doing a very simple context switch. I've also opened
a bug to make indirect calls fast: https://bugs.webkit.org/show_bug.cgi?id=172197
since this patch adds yet another branch to the indirect call path.
I've also added tests that either throw or crash before this change.

  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • wasm/WasmB3IRGenerator.cpp:
  • wasm/js/JSWebAssemblyTable.h:

(JSC::JSWebAssemblyTable::offsetOfJSFunctions):

  • wasm/js/WebAssemblyFunction.cpp:

(JSC::WebAssemblyFunction::visitChildren):
(JSC::WebAssemblyFunction::finishCreation): Deleted.

  • wasm/js/WebAssemblyFunction.h:

(JSC::WebAssemblyFunction::instance): Deleted.
(JSC::WebAssemblyFunction::offsetOfInstance): Deleted.

  • wasm/js/WebAssemblyFunctionBase.cpp: Added.

(JSC::WebAssemblyFunctionBase::WebAssemblyFunctionBase):
(JSC::WebAssemblyFunctionBase::visitChildren):
(JSC::WebAssemblyFunctionBase::finishCreation):

  • wasm/js/WebAssemblyFunctionBase.h: Added.

(JSC::WebAssemblyFunctionBase::instance):
(JSC::WebAssemblyFunctionBase::offsetOfInstance):

  • wasm/js/WebAssemblyModuleRecord.cpp:

(JSC::WebAssemblyModuleRecord::link):
(JSC::WebAssemblyModuleRecord::evaluate):

  • wasm/js/WebAssemblyWrapperFunction.cpp:

(JSC::WebAssemblyWrapperFunction::create):
(JSC::WebAssemblyWrapperFunction::finishCreation):
(JSC::WebAssemblyWrapperFunction::visitChildren):

  • wasm/js/WebAssemblyWrapperFunction.h:
5:22 PM Changeset in webkit [217016] by fpizlo@apple.com
  • 3 edits
    1 add in trunk

JSC: Incorrect LoadVarargs handling in ArgumentsEliminationPhase::transform
https://bugs.webkit.org/show_bug.cgi?id=172208

Reviewed by Saam Barati.

JSTests:

  • stress/arguments-elimination-varargs-too-many-args-arg-count.js: Added.

(foo):
(bar):
(baz):

Source/JavaScriptCore:

  • dfg/DFGArgumentsEliminationPhase.cpp:
5:12 PM Changeset in webkit [217015] by jmarcell@apple.com
  • 17 edits in branches/safari-603-branch/Source

Cherry-pick r215345. rdar://problem/31968033

4:55 PM Changeset in webkit [217014] by wilander@apple.com
  • 30 edits
    2 adds in trunk

Resource Load Statistics: Grandfather domains for existing data records
https://bugs.webkit.org/show_bug.cgi?id=172155
<rdar://problem/24913532>

Reviewed by Alex Christensen.

Source/WebCore:

Test: http/tests/loading/resourceLoadStatistics/grandfathering.html

  • loader/ResourceLoadObserver.cpp:

(WebCore::ResourceLoadObserver::setGrandfathered):
(WebCore::ResourceLoadObserver::isGrandfathered):
(WebCore::ResourceLoadObserver::setMinimumTimeBetweeenDataRecordsRemoval):
(WebCore::ResourceLoadObserver::setGrandfatheringTime):

Functions for testing and configuration.
ResourceLoadObserver::setMinimumTimeBetweeenDataRecordsRemoval() changed as a result of moving
WebKit::WebResourceLoadStatisticsStore::setMinimumTimeBetweeenDataRecordsRemoval() here.

  • loader/ResourceLoadObserver.h:
  • loader/ResourceLoadStatisticsStore.cpp:

(WebCore::ResourceLoadStatisticsStore::createEncoderFromData):
(WebCore::ResourceLoadStatisticsStore::readDataFromDecoder):

Now contains endOfGrandfatheringTimestamp.

(WebCore::ResourceLoadStatisticsStore::clearInMemoryAndPersistent):

Now makes a call to m_grandfatherExistingWebsiteDataHandler().

(WebCore::ResourceLoadStatisticsStore::setGrandfatherExistingWebsiteDataCallback):
(WebCore::ResourceLoadStatisticsStore::setMinimumTimeBetweeenDataRecordsRemoval):

Changed as a result of moving
WebKit::WebResourceLoadStatisticsStore::setMinimumTimeBetweeenDataRecordsRemoval() here.

(WebCore::ResourceLoadStatisticsStore::setGrandfatheringTime):
(WebCore::ResourceLoadStatisticsStore::topPrivatelyControlledDomainsToRemoveWebsiteDataFor):

Renamed since it now also takes grandfathering into account.

(WebCore::ResourceLoadStatisticsStore::updateStatisticsForRemovedDataRecords):

Fixed typo in local variable name.

(WebCore::ResourceLoadStatisticsStore::handleFreshStartWithEmptyOrNoStore):
(WebCore::ResourceLoadStatisticsStore::shouldRemoveDataRecords):

Convenience function added.

(WebCore::ResourceLoadStatisticsStore::dataRecordsBeingRemoved):

Convenience function added.

(WebCore::ResourceLoadStatisticsStore::dataRecordsWereRemoved):

Convenience function added.

(WebCore::ResourceLoadStatisticsStore::prevalentResourceDomainsWithoutUserInteraction): Deleted.

Replaced by ResourceLoadStatisticsStore::topPrivatelyControlledDomainsToRemoveWebsiteDataFor().

  • loader/ResourceLoadStatisticsStore.h:

Source/WebKit2:

When WebResourceLoadStatisticsStore starts fresh it needs
to scan existing website data records and 'grandfather' them to
allow ample time to capture user interaction.

  • Shared/WebPreferencesDefinitions.h:
  • UIProcess/API/C/WKResourceLoadStatisticsManager.cpp:

(WKResourceLoadStatisticsManagerSetGrandfathered):
(WKResourceLoadStatisticsManagerIsGrandfathered):
(WKResourceLoadStatisticsManagerSetMinimumTimeBetweeenDataRecordsRemoval):
(WKResourceLoadStatisticsManagerSetGrandfatheringTime):

Functions for testing and configuration.

  • UIProcess/API/C/WKResourceLoadStatisticsManager.h:
  • UIProcess/Cocoa/WebResourceLoadStatisticsManagerCocoa.mm:

(WebKit::WebResourceLoadStatisticsManager::registerUserDefaultsIfNeeded):

Added grandfathering configuration.

  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::topPrivatelyControlledDomainsWithWebiteData):

New function to get all top privately controlled domains that
have website data.

  • UIProcess/WebProcessProxy.h:
  • UIProcess/WebResourceLoadStatisticsManager.cpp:

(WebKit::WebResourceLoadStatisticsManager::setGrandfathered):
(WebKit::WebResourceLoadStatisticsManager::isGrandfathered):
(WebKit::WebResourceLoadStatisticsManager::setMinimumTimeBetweeenDataRecordsRemoval):
(WebKit::WebResourceLoadStatisticsManager::setGrandfatheringTime):
(WebKit::WebResourceLoadStatisticsManager::resetToConsistentState):

Functions for testing and configuration.
WebResourceLoadStatisticsManager::setMinimumTimeBetweeenDataRecordsRemoval() changed
as a result of WebResourceLoadStatisticsStore::setMinimumTimeBetweeenDataRecordsRemoval()
moving to WebCore::ResourceLoadObserver::setMinimumTimeBetweeenDataRecordsRemoval().

  • UIProcess/WebResourceLoadStatisticsManager.h:
  • UIProcess/WebResourceLoadStatisticsStore.cpp:

(WebKit::initializeDataTypesToRemove):
(WebKit::WebResourceLoadStatisticsStore::removeDataRecords):

Moved handling of pending removal into WebCore::ResourceLoadStatisticsStore since
that's where grandfathering happens.

(WebKit::WebResourceLoadStatisticsStore::registerSharedResourceLoadObserver):

Moved registration of write persistent store callback and reading of Cocoa defaults to
WebResourceLoadStatisticsStore::registerSharedResourceLoadObserver without parameters
so they are called for platforms without CFNETWORK_STORAGE_PARTITIONING.
Now includes registering WebResourceLoadStatisticsStore::grandfatherExistingWebsiteData()
as handler for grandfathering since it involves reading of the website data store.

(WebKit::WebResourceLoadStatisticsStore::grandfatherExistingWebsiteData):
(WebKit::WebResourceLoadStatisticsStore::readDataFromDiskIfNeeded):
(WebKit::WebResourceLoadStatisticsStore::setMinimumTimeBetweeenDataRecordsRemoval): Deleted.

Now happens in WebCore::ResourceLoadObserver::setMinimumTimeBetweeenDataRecordsRemoval().

  • UIProcess/WebResourceLoadStatisticsStore.h:
  • UIProcess/WebsiteData/WebsiteDataRecord.cpp:

(WebKit::WebsiteDataRecord::topPrivatelyControlledDomain):

New function to ask a WebsiteDataRecord for its top privately controlled domain.

  • UIProcess/WebsiteData/WebsiteDataRecord.h:
  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::topPrivatelyControlledDomainsWithWebsiteData):

New function to get all top privately controlled domains that
have website data.

  • UIProcess/WebsiteData/WebsiteDataStore.h:

Tools:

Adds test infrastructure needed for the added functionality.

  • WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
  • WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:

(WTR::InjectedBundle::didReceiveMessageToPage):

  • WebKitTestRunner/InjectedBundle/TestRunner.cpp:

(WTR::TestRunner::setStatisticsGrandfathered):
(WTR::TestRunner::isStatisticsGrandfathered):
(WTR::TestRunner::installStatisticsDidScanDataRecordsCallback):
(WTR::TestRunner::statisticsDidScanDataRecordsCallback):
(WTR::TestRunner::setStatisticsGrandfatheringTime):

  • WebKitTestRunner/InjectedBundle/TestRunner.h:
  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::setStatisticsGrandfathered):
(WTR::TestController::isStatisticsGrandfathered):
(WTR::TestController::setStatisticsGrandfatheringTime):

  • WebKitTestRunner/TestController.h:
  • WebKitTestRunner/TestInvocation.cpp:

(WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle):

LayoutTests:

  • http/tests/loading/resourceLoadStatistics/grandfathering-expected.txt: Added.
  • http/tests/loading/resourceLoadStatistics/grandfathering.html: Added.
  • platform/wk2/TestExpectations:

Marked it Pass for WebKit2.

4:40 PM Changeset in webkit [217013] by Brent Fulgham
  • 2 edits in trunk/Source/WebKit2

[WK2][iOS] Allow access to additional IOHID user class
https://bugs.webkit.org/show_bug.cgi?id=172198
<rdar://problem/31967635>

Reviewed by Alex Christensen.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
4:30 PM Changeset in webkit [217012] by Alan Bujtas
  • 4 edits
    2 adds in trunk

Debug ASSERT: WebCore::RenderImageResource::shutdown
https://bugs.webkit.org/show_bug.cgi?id=172238
<rdar://problem/30064601>

Reviewed by Simon Fraser.

Source/WebCore:

While constructing new renderers, as part of the render tree update, we check if the insertion point is valid for them.
When this newly constructed child renderer can't be injected to a specific place, we destroy it right away.
This assert was added with the assumption that the image resource object gets initialized
(through RenderObject::initializeStyle) even when the renderer turns out to be invalid.

Test: fast/images/assert-when-insertion-point-is-incorrect.html

  • rendering/RenderImageResource.cpp:

(WebCore::RenderImageResource::RenderImageResource):
(WebCore::RenderImageResource::shutdown):

  • rendering/RenderImageResource.h:

LayoutTests:

  • fast/images/assert-when-insertion-point-is-incorrect-expected.txt: Added.
  • fast/images/assert-when-insertion-point-is-incorrect.html: Added.
4:13 PM Changeset in webkit [217011] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

[Win] Support $vm.getpid()
https://bugs.webkit.org/show_bug.cgi?id=172248

Patch by Don Olmstead <don.olmstead@am.sony.com> on 2017-05-17
Reviewed by Mark Lam.

  • tools/JSDollarVMPrototype.cpp:

(JSC::functionGetPID):
(JSC::JSDollarVMPrototype::finishCreation):

4:11 PM Changeset in webkit [217010] by achristensen@apple.com
  • 2 edits in trunk/Tools

Fix ios-simulator API test after r216977
https://bugs.webkit.org/show_bug.cgi?id=171987

  • TestWebKitAPI/Tests/WebKit2Cocoa/WKHTTPCookieStore.mm:

(TEST):
<rdar://problem/32260156> covers the investigation of this, but fixing it is
not as urgent as having the rest of this working. Notably the ephemeral part of the
test works, so something is just wrong with the persistent part.

3:37 PM Changeset in webkit [217009] by jmarcell@apple.com
  • 6 edits in branches/safari-604.1.21-branch/Source/WebCore

Cherry-pick r216998. rdar://problem/31538943

3:37 PM Changeset in webkit [217008] by jmarcell@apple.com
  • 23 edits
    1 add in branches/safari-604.1.21-branch

Cherry-pick r216977. rdar://problem/32141505

3:34 PM Changeset in webkit [217007] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Mark http/tests/appcache/404-resource-with-slow-main-resource.php as flaky on mac-wk1.
https://bugs.webkit.org/show_bug.cgi?id=172241

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
2:58 PM Changeset in webkit [217006] by Chris Dumez
  • 2 edits in trunk/Source/WebKit2

Add more assertions in BackgroundProcessResponsivenessTimer
https://bugs.webkit.org/show_bug.cgi?id=172239

Reviewed by Andreas Kling.

Add more assertions in BackgroundProcessResponsivenessTimer to help figure out the
source of <rdar://problem/32251578>.

  • UIProcess/BackgroundProcessResponsivenessTimer.cpp:

(WebKit::BackgroundProcessResponsivenessTimer::updateState):
(WebKit::BackgroundProcessResponsivenessTimer::scheduleNextResponsivenessCheck):

2:53 PM Changeset in webkit [217005] by pvollan@apple.com
  • 2 edits in trunk/Source/WebCore

Crash under WebCore::AudioSourceProviderAVFObjC::process().
https://bugs.webkit.org/show_bug.cgi?id=172101
rdar://problem/27446589

Reviewed by Jer Noble.

Calling the function MTAudioProcessingTapGetSourceAudio when the value of the
MTAudioProcessingTapRef parameter is null, will lead to a null dereference.
This can for example happen if MediaPlayerPrivateAVFoundationObjC::cancelLoad()
is called on the main thread while MediaToolbox is calling the
WebCore::AudioSourceProviderAVFObjC::processCallback function on a secondary
thread. MediaPlayerPrivateAVFoundationObjC::cancelLoad() will then call
AudioSourceProviderAVFObjC::setPlayerItem(nullptr), which will call
AudioSourceProviderAVFObjC::destroyMix(), which will set m_tap to null. When
AudioSourceProviderAVFObjC::process is called on the secondary thread, using
the m_tap member in the call to MTAudioProcessingTapGetSourceAudio, the process
will crash.

No new tests since I am not able to reproduce.

  • platform/graphics/avfoundation/AudioSourceProviderAVFObjC.mm:

(WebCore::AudioSourceProviderAVFObjC::initCallback):
(WebCore::AudioSourceProviderAVFObjC::process):

2:50 PM Changeset in webkit [217004] by Chris Dumez
  • 11 edits in trunk

Setting URL.search to results in a stringified URL ending in '?'
https://bugs.webkit.org/show_bug.cgi?id=162345
<rdar://problem/31800441>

Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

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

  • web-platform-tests/url/url-setters-expected.txt:

Source/WebCore:

As per the specification for the URL.search setter [1], if the given value is
the empty string, then we should set the URL's query to null. We would
previously set the URL's query to the empty string in this case. This aligns
our behavior with Firefox and Chrome.

[1] https://url.spec.whatwg.org/#dom-url-search

No new tests, updated existing tests.

  • html/URLUtils.h:

(WebCore::URLUtils<T>::setSearch):

LayoutTests:

  • fast/dom/DOMURL/set-href-attribute-search-expected.txt:
  • fast/dom/DOMURL/set-href-attribute-search.html:
  • fast/dom/HTMLAnchorElement/script-tests/set-href-attribute-search.js:
  • fast/dom/HTMLAnchorElement/set-href-attribute-search-expected.txt:

Update / rebaseline existing tests to reflect behavior change.

  • platform/ios-wk1/TestExpectations:
  • platform/mac-wk1/TestExpectations:

Unskip url-setters.html test as it seems to be passing for me on WK1.

2:49 PM Changeset in webkit [217003] by Ryan Haddad
  • 3 edits in trunk/Tools

Unreviewed, rolling out r216955.

This change caused strange behavior with web-platform-tests
locally and on EWS.

Reverted changeset:

"webkitpy: Start servers before setting-up for testing"
https://bugs.webkit.org/show_bug.cgi?id=172176
http://trac.webkit.org/changeset/216955

2:48 PM Changeset in webkit [217002] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit2

No need to copy origin references in UserMediaPermissionRequestManagerProxy::getUserMediaPermissionInfo
https://bugs.webkit.org/show_bug.cgi?id=172242

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

  • UIProcess/UserMediaPermissionRequestManagerProxy.cpp:

(WebKit::UserMediaPermissionRequestManagerProxy::getUserMediaPermissionInfo):

2:31 PM Changeset in webkit [217001] by eric.carlson@apple.com
  • 12 edits
    2 adds in trunk

[MediaStream] videoWidth and videoHeight should be set when 'loadedmetadata' event fires
https://bugs.webkit.org/show_bug.cgi?id=172223
<rdar://problem/31899755>

Reviewed by Jer Noble.

Source/WebCore:

Test: fast/mediastream/get-user-media-on-loadedmetadata.html

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:

(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::currentReadyState): If a stream has
a video track, return HaveNothing until we have a sample.

  • platform/mediastream/RealtimeMediaSource.h:
  • platform/mock/MockRealtimeAudioSource.cpp:

(WebCore::MockRealtimeAudioSource::tick): Optionally delay the next sample.
(WebCore::MockRealtimeAudioSource::delaySamples):

  • platform/mock/MockRealtimeAudioSource.h:
  • platform/mock/MockRealtimeVideoSource.cpp:

(WebCore::MockRealtimeVideoSource::delaySamples):
(WebCore::MockRealtimeVideoSource::generateFrame): Optionally delay the next sample.

  • platform/mock/MockRealtimeVideoSource.h:
  • testing/Internals.cpp:

(WebCore::Internals::delayMediaStreamTrackSamples):

  • testing/Internals.h:
  • testing/Internals.idl:

LayoutTests:

  • fast/mediastream/get-user-media-on-loadedmetadata-expected.txt: Added.
  • fast/mediastream/get-user-media-on-loadedmetadata.html: Added.
2:28 PM Changeset in webkit [217000] by msaboff@apple.com
  • 5 edits in trunk/Source

Source/bmalloc:
[iOS] The Garbage Collector shouldn't rely on the bmalloc scavenger for up to date memory footprint info (172186)
https://bugs.webkit.org/show_bug.cgi?id=172186

Reviewed by Geoffrey Garen.

The calls memoryFootprint() and percentAvailableMemoryInUse() now make a system call to get
the current memory footprint value.

  • bmalloc/Heap.h:

(bmalloc::Heap::memoryFootprint):
(bmalloc::Heap::percentAvailableMemoryInUse):

Source/JavaScriptCore:
[iOS] The Garbage Collector shouldn't rely on the bmalloc scavenger for up to date memory footprint info
https://bugs.webkit.org/show_bug.cgi?id=172186

Reviewed by Geoffrey Garen.

The calls to bmalloc::api::memoryFootprint() and ::percentAvailableMemoryInUse() now call
the OS to get up to date values. In overCriticalMemoryThreshold(), we get the current value every
100th call and use a cached value the rest of the time. When colleciton is done, we start with
a new overCriticalMemoryThreshold value for the next cycle.

The choice of 1 out of 100 calls was validated by using JetStream and verifying that it didn't impact
performance and still provides timely memory footprint data. With additional debug logging, I
determined that we call overCriticalMemoryThreshold() over 20,000 times/second running JetStream.
Other logging showed that there were over 1700 calls to overCriticalMemoryThreshold() on average per
GC cycle. Dividing both of these numbers by 100 seems reasonable.

  • heap/Heap.cpp:

(JSC::Heap::overCriticalMemoryThreshold):
(JSC::Heap::updateAllocationLimits):
(JSC::Heap::shouldDoFullCollection):

  • heap/Heap.h:
2:08 PM Changeset in webkit [216999] by commit-queue@webkit.org
  • 12 edits in trunk

iOS WebRTC Media Capture should not allow camera capture from background tab
https://bugs.webkit.org/show_bug.cgi?id=172200

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

Source/WebCore:

Test: platform/ios/mediastream/getUserMedia-disabled-in-background-tabs.html and manual tests.

Making Video Capture Factory aware of Document visibility changes.
On iOS, muting/unmuting the current video source according Document visibility.
Not using Document visibility change observer as factories are platform and cannot implement
the visibility observer interface without moving the visibility observer interface.

Introducing internals API to switch on/off the page visibility.

  • dom/Document.cpp:

(WebCore::Document::visibilityStateChanged):
(WebCore::Document::notifyVisibilityChangedToMediaCapture):

  • dom/Document.h:
  • platform/mediastream/RealtimeMediaSource.h:
  • platform/mediastream/RealtimeMediaSourceCenter.cpp:

(WebCore::RealtimeMediaSourceCenter::setVisibility):

  • platform/mediastream/RealtimeMediaSourceCenter.h:
  • platform/mediastream/mac/AVVideoCaptureSource.mm:

(WebCore::AVVideoCaptureSourceFactory::setVisibility):

  • testing/Internals.cpp:

(WebCore::Internals::setPageVisibility):

  • testing/Internals.h:
  • testing/Internals.idl:

LayoutTests:

  • platform/ios/mediastream/getUserMedia-disabled-in-background-tabs-expected.txt: Added.
  • platform/ios/mediastream/getUserMedia-disabled-in-background-tabs.html: Added.
1:58 PM Changeset in webkit [216998] by commit-queue@webkit.org
  • 6 edits in trunk/Source/WebCore

When the image decoding thread makes a callOnMainThread(), ensure all the objects it needs are protected
https://bugs.webkit.org/show_bug.cgi?id=171614

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2017-05-17
Reviewed by David Kilzer.

The asynchronous image decoding was designed to not block the main thread if
the image is deleted. To achieve that we allow decoding the current frame
even if it is not going to be used after closing the decoding queue. We
protect all the objects which the decoding thread uses. But when a frame
finishes decoding the native image frame is cached on the main thread. Not
all of the objects are protected when the callOnMainThread() is dispatched.
The ImageFrameCache and the ImageDecoder objects are not protected.

This might lead to two kinds of crashes:

  1. A segfault inside the ImageDecoder trying to access one of its member
  2. A segfault inside the ImageFrameCache trying to access one of its frames

The fix is to protect the ImageFrameCache and the ImageDecoder when the
decoding thread makes a callOnMainThread(). Also switch all the pointers
the decoding threads protect to be ThreadSafeRefCounted.

  • platform/graphics/ImageFrameCache.cpp:

(WebCore::ImageFrameCache::startAsyncDecodingQueue):

  • platform/graphics/ImageFrameCache.h:
  • platform/graphics/cg/ImageDecoderCG.h:
  • platform/graphics/win/ImageDecoderDirect2D.h:
  • platform/image-decoders/ImageDecoder.h:
1:56 PM Changeset in webkit [216997] by Wenson Hsieh
  • 4 edits in trunk

A URL type is vended for a non-URL plain text string when starting data interaction
https://bugs.webkit.org/show_bug.cgi?id=172228
<rdar://problem/32166729>

Reviewed by Andy Estes.

Source/WebCore:

Previously, when writing a plain text string to WebItemProviderPasteboard, we would write an NSString directly
to the item provider by using built-in functionality in NSString+UIItemProvider. However, this causes plain
strings such as "apple" to be considered URLs, since -[NSURL URLWithString:] creates a non-null NSURL. To fix
this, we instead write the string as UTF8 data, for the UTI kUTTypeUTF8PlainText, if the plain text is not a
URL. If the plain text is clearly a URL (determined by constructing a new WebCore URL with no base URL and the
plaintext string as the absolute URL) then we additionally write an NSURL to the pasteboard.

2 new API tests:
DataInteractionTests.SinglePlainTextWordTypeIdentifiers
DataInteractionTests.SinglePlainTextURLTypeIdentifiers

  • platform/ios/PlatformPasteboardIOS.mm:

(WebCore::addRepresentationsForPlainText):
(WebCore::PlatformPasteboard::writeObjectRepresentations):

Tools:

Adds two new data interaction tests, SinglePlainTextWordTypeIdentifiers and SinglePlainTextURLTypeIdentifiers,
to verify that a URL UTI is not vended when beginning a data interaction on a single word, but that a URL is
still vended when beginning data interaction on something that resembles a link.

  • TestWebKitAPI/Tests/ios/DataInteractionTests.mm:
1:52 PM Changeset in webkit [216996] by rniwa@webkit.org
  • 2 edits in trunk/PerformanceTests

Speedometer: adjust Ember TodoMVC to use full path
https://bugs.webkit.org/show_bug.cgi?id=172211

Patch by Addy Osmani <addyosmani@gmail.com> on 2017-05-17
Reviewed by Ryosuke Niwa.

  • Speedometer/resources/tests.js: use full path to Ember TodoMVC app.
1:51 PM Changeset in webkit [216995] by mitz@apple.com
  • 7 copies
    1 add in releases/Apple/iOS 10.3.2

Added a tag for iOS 10.3.2.

1:47 PM Changeset in webkit [216994] by mitz@apple.com
  • 8 copies
    1 add in releases/Apple/Safari 10.1.1

Added a tag for Safari 10.1.1.

1:39 PM Changeset in webkit [216993] by mitz@apple.com
  • 8 copies
    1 add in releases/Apple/Safari Technology Preview 30

Added a tag for Safari Technology Preview release 30.

1:09 PM Changeset in webkit [216992] by jiewen_tan@apple.com
  • 5 edits
    2 adds in trunk

Replace CryptoOperationData with BufferSource for WebKitSubtleCrypto
https://bugs.webkit.org/show_bug.cgi?id=172146
<rdar://problem/32122256>

Reviewed by Brent Fulgham.

Source/WebCore:

In this patch, we replaces CryptoOperationData with BufferSource for WebKitSubtleCrypto in
the custom binding codes.

Test: crypto/webkitSubtle/import-export-raw-key-leak.html

  • bindings/js/JSWebKitSubtleCryptoCustom.cpp:

(WebCore::JSWebKitSubtleCrypto::encrypt):
(WebCore::JSWebKitSubtleCrypto::decrypt):
(WebCore::JSWebKitSubtleCrypto::sign):
(WebCore::JSWebKitSubtleCrypto::verify):
(WebCore::JSWebKitSubtleCrypto::digest):
(WebCore::JSWebKitSubtleCrypto::importKey):
(WebCore::JSWebKitSubtleCrypto::unwrapKey):

  • crypto/WebKitSubtleCrypto.idl:

LayoutTests:

  • crypto/webkitSubtle/argument-conversion-expected.txt:
  • crypto/webkitSubtle/import-export-raw-key-leak-expected.txt: Added.
  • crypto/webkitSubtle/import-export-raw-key-leak.html: Added.
1:07 PM Changeset in webkit [216991] by commit-queue@webkit.org
  • 7 edits in trunk/Source

Move-related refactoring on UserMediaPermissionRequestProxy
https://bugs.webkit.org/show_bug.cgi?id=172195

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

Source/WebCore:

No behavioral change.

  • platform/mediastream/RealtimeMediaSourceCenter.h: Cleaning the function definition.

Source/WebKit2:

Moving vectors of strings instead of passing as const ref so that we do not copy them.

  • UIProcess/UserMediaPermissionRequestManagerProxy.cpp:

(WebKit::UserMediaPermissionRequestManagerProxy::createRequest):
(WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame):

  • UIProcess/UserMediaPermissionRequestManagerProxy.h:
  • UIProcess/UserMediaPermissionRequestProxy.cpp:

(WebKit::UserMediaPermissionRequestProxy::UserMediaPermissionRequestProxy):

  • UIProcess/UserMediaPermissionRequestProxy.h:

(WebKit::UserMediaPermissionRequestProxy::create):

12:44 PM Changeset in webkit [216990] by Chris Dumez
  • 2 edits in trunk/LayoutTests

Unreviewed, skip newly imported notifications tests on iOS

Notifications are not enabled on iOS.

  • platform/ios/TestExpectations:
12:25 PM Changeset in webkit [216989] by sbarati@apple.com
  • 10 edits in trunk/Source/JavaScriptCore

PinnedRegisters should be better modeled in IRC/Briggs
https://bugs.webkit.org/show_bug.cgi?id=171955

Reviewed by Filip Pizlo.

This patch fixes a bug in Briggs/IRC with respect to pinned registers.
Pinned registers were not part of the assignable register file in IRC/Briggs,
and this would lead to an asymmetry because they were modeled in the
interference graph. The bug is that we use registerCount() to move various
Tmps between various lists in the different allocators, and if a Tmp
interfered with a pinned register (usually via a Patchpoint's clobbered set),
we'd have an interference edge modeled in the degree for that Tmp, but the registerCount()
would make us think that this particular Tmp is not assignable. This would
lead us to fail to color a colorable graph. Specifically, this happened in
our various patchpoint tests that stress the register allocator by forcing
the entire register file into arguments for the patchpoint and then doing
interesting things with the result, arguments, etc.

This patch fixes the bug by coming up with an more natural way to model pinned
registers. Pinned registers are now part of the register file. However,
pinned registers are live at every point in the program (this is a defining
property of a pinned register). In practice, this means that the only Tmps
that can be assigned to pinned registers are ones that are coalescing
candidates. This means the program has some number of defs for a Tmp T like:
MoveType pinnedReg, T

Note, if any other defs for T happen, like:
Add32, t1, t2, T
T will have an interference edge with pinnedReg, since pinnedReg is live
at every point in the program. Modeling pinned registers this way allows
IRC/Briggs to have no special casing for them. It treats it like any other
precolored Tmp. This allows us to do coalescing, biased coloring, etc, which
could all lead to a Tmp being assigned to a pinned register.

Interestingly, we used to have special handling for the frame pointer
register, which in many ways, acts like a pinned register, since FP is
always live, and we wanted it to take place in coalescing. The allocator
had a side-table interference graph with FP. Interestingly, we didn't even
handle this properly everywhere since we could rely on a patchpoint never
claiming to clobber FP (this would be illegal). So the code only handled
the pseudo-pinned register properties of FP in various places. This patch
drops this special casing and pins FP since all pinned registers can take
part in coalescing.

  • b3/B3PatchpointSpecial.h:
  • b3/B3Procedure.cpp:

(JSC::B3::Procedure::mutableGPRs):
(JSC::B3::Procedure::mutableFPRs):

  • b3/B3Procedure.h:
  • b3/air/AirAllocateRegistersByGraphColoring.cpp:
  • b3/air/AirCode.cpp:

(JSC::B3::Air::Code::Code):
(JSC::B3::Air::Code::pinRegister):
(JSC::B3::Air::Code::mutableGPRs):
(JSC::B3::Air::Code::mutableFPRs):

  • b3/air/AirCode.h:

(JSC::B3::Air::Code::pinnedRegisters):

  • b3/air/AirSpecial.h:
  • b3/air/testair.cpp:
  • b3/testb3.cpp:

(JSC::B3::testSimplePatchpointWithOuputClobbersGPArgs):
(JSC::B3::testSpillDefSmallerThanUse):
(JSC::B3::testLateRegister):
(JSC::B3::testTerminalPatchpointThatNeedsToBeSpilled):
(JSC::B3::testTerminalPatchpointThatNeedsToBeSpilled2):
(JSC::B3::testMoveConstants):

11:44 AM Changeset in webkit [216988] by ddkilzer@apple.com
  • 5 edits in trunk

BlobDataFileReference::generateReplacementFile() should use mkstemp()
<https://webkit.org/b/172192>

Reviewed by Brent Fulgham.

Source/WebCore:

  • platform/network/mac/BlobDataFileReferenceMac.mm:

(WebCore::BlobDataFileReference::generateReplacementFile): Use
mkstemp().

Tools:

  • Scripts/webkitpy/style/checkers/cpp.py:

(check_language): Add check for mktemp.
(CppChecker): Add 'security/temp_file' category.

  • Scripts/webkitpy/style/checkers/cpp_unittest.py:

(CppStyleTest.test_insecure_temp_file): Add test.

11:32 AM Changeset in webkit [216987] by jmarcell@apple.com
  • 5 edits in branches/safari-604.1.21-branch/Source/WebCore

Revert r216784. rdar://problem/32249274

11:32 AM Changeset in webkit [216986] by jmarcell@apple.com
  • 32 edits in branches/safari-604.1.21-branch

Cherry-pick r216901. rdar://problem/31469922

11:32 AM Changeset in webkit [216985] by jmarcell@apple.com
  • 4 edits in branches/safari-604.1.21-branch/LayoutTests

Cherry-pick r216225. rdar://problem/31976651

11:28 AM Changeset in webkit [216984] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Mark two http/tests/media/hls/video tests as failing during investigation.
https://bugs.webkit.org/show_bug.cgi?id=171814

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
11:26 AM Changeset in webkit [216983] by Devin Rousso
  • 2 edits in trunk/Tools

Unreviewed, change my email.

  • Scripts/webkitpy/common/config/contributors.json:
11:17 AM Changeset in webkit [216982] by aestes@apple.com
  • 2 edits in trunk/Source/WebKit2

REGRESSION (r215480): PKPaymentAuthorizationStatusFailure sent to PassKit in completeShippingContactSelection() even when there are no errors
https://bugs.webkit.org/show_bug.cgi?id=172227
<rdar://problem/31978432>

Reviewed by Alexey Proskuryakov.

  • UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:

(WebKit::toPKPaymentAuthorizationStatus): If there is an update with no errors, we should
return PKPaymentAuthorizationStatusSuccess instead of PKPaymentAuthorizationStatusFailure.

10:52 AM Changeset in webkit [216981] by Matt Lewis
  • 18 edits in trunk

Unreviewed, rolling out r216974.

Revision caused consistent timeouts on all platforms.

Reverted changeset:

"Add a RuntimeEnabledFeature for display: contents, defaulted
to false."
https://bugs.webkit.org/show_bug.cgi?id=171984
http://trac.webkit.org/changeset/216974

10:34 AM Changeset in webkit [216980] by n_wang@apple.com
  • 4 edits
    2 adds in trunk

ASSERTION FAILED in WebCore::AccessibilityNodeObject::insertChild()
https://bugs.webkit.org/show_bug.cgi?id=171927
<rdar://problem/32109781>

Reviewed by Chris Fleizach.

Source/WebCore:

The nextSibling() logic might include the continuation sibling that's not
the child of the current renderer. Make sure we only insert the valid child.

Test: accessibility/insert-children-assert.html

  • accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::setIsIgnoredFromParentDataForChild):

  • accessibility/AccessibilityRenderObject.cpp:

(WebCore::AccessibilityRenderObject::nextSibling):

LayoutTests:

  • accessibility/insert-children-assert-expected.txt: Added.
  • accessibility/insert-children-assert.html: Added.
10:23 AM Changeset in webkit [216979] by Chris Dumez
  • 5 edits
    24 adds in trunk/LayoutTests

Import Notification tests from web-platform-tests
https://bugs.webkit.org/show_bug.cgi?id=172196

Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

  • resources/import-expectations.json:
  • web-platform-tests/notifications/OWNERS: Added.
  • web-platform-tests/notifications/common.js: Added.

(createPassFail):
(clearPassFail):
(closeNotifications):
(hasNotificationPermission):

  • web-platform-tests/notifications/constructor-basic-expected.txt: Added.
  • web-platform-tests/notifications/constructor-basic.html: Added.
  • web-platform-tests/notifications/constructor-invalid-expected.txt: Added.
  • web-platform-tests/notifications/constructor-invalid.html: Added.
  • web-platform-tests/notifications/event-onclose-expected.txt: Added.
  • web-platform-tests/notifications/event-onclose.html: Added.
  • web-platform-tests/notifications/event-onshow-expected.txt: Added.
  • web-platform-tests/notifications/event-onshow.html: Added.
  • web-platform-tests/notifications/instance-expected.txt: Added.
  • web-platform-tests/notifications/instance.html: Added.
  • web-platform-tests/notifications/interfaces-expected.txt: Added.
  • web-platform-tests/notifications/interfaces.html: Added.
  • web-platform-tests/notifications/lang-expected.txt: Added.
  • web-platform-tests/notifications/lang.html: Added.
  • web-platform-tests/notifications/permission-expected.txt: Added.
  • web-platform-tests/notifications/permission.html: Added.
  • web-platform-tests/notifications/resources/icon.png: Added.
  • web-platform-tests/notifications/resources/shownotification-sw.js: Added.

(self.onmessage.event.then):

  • web-platform-tests/notifications/resources/w3c-import.log: Added.
  • web-platform-tests/notifications/shownotification-resolve-manual.https-expected.txt: Added.
  • web-platform-tests/notifications/shownotification-resolve-manual.https.html: Added.
  • web-platform-tests/notifications/w3c-import.log: Added.

LayoutTests:

  • resources/testharnessreport.js:

Allow notifications as this is a pre-requirement for web-platform-tests.

10:15 AM Changeset in webkit [216978] by Brent Fulgham
  • 4 edits
    2 adds in trunk

getElementById can return a wrong elemnt when a matching element is removed during beforeload event
https://bugs.webkit.org/show_bug.cgi?id=171374

Patch by Ryosuke Niwa <rniwa@webkit.org> on 2017-05-17
Reviewed by Brent Fulgham.

Source/WebCore:

The bug was caused by HTMLLinkElement firing beforeload event inside insertedInto before the tree state is updated.
Delay the event dispatch to the post insertion callback.

Test: fast/html/link-element-removal-during-beforeload.html

  • html/HTMLLinkElement.cpp:

(WebCore::HTMLLinkElement::insertedInto):
(WebCore::HTMLLinkElement::finishedInsertingSubtree):

  • html/HTMLLinkElement.h:

LayoutTests:

Added a regression test for calling getElementById after removing a matching element
during beforeload event of a link element.

  • fast/html/link-element-removal-during-beforeload-expected.txt: Added.
  • fast/html/link-element-removal-during-beforeload.html: Added.
9:51 AM Changeset in webkit [216977] by achristensen@apple.com
  • 23 edits
    1 add in trunk

Interacting with WKHTTPCookieStores before creating WKWebViews and WKProcessPools should affect cookies used
https://bugs.webkit.org/show_bug.cgi?id=171987

Reviewed by Brady Eidson.

Source/WebCore:

Covered by new API tests.

  • CMakeLists.txt:
  • platform/Cookie.h:

(WebCore::Cookie::Cookie):
(WebCore::Cookie::isNull):
(WebCore::CookieHash::hash):
(WebCore::CookieHash::equal):
(WTF::HashTraits<WebCore::Cookie>::emptyValue):
(WTF::HashTraits<WebCore::Cookie>::constructDeletedValue):
(WTF::HashTraits<WebCore::Cookie>::isDeletedValue):

  • platform/network/Cookie.cpp: Added.

(WebCore::Cookie::operator==):
(WebCore::Cookie::hash):

  • platform/network/cocoa/CookieCocoa.mm:

(WebCore::Cookie::operator NSHTTPCookie *):
(WebCore::Cookie::operator==):
(WebCore::Cookie::hash):

  • platform/network/cocoa/NetworkStorageSessionCocoa.mm:

(WebCore::NetworkStorageSession::setCookies):
Use NSHTTPCookie's hash and equality comparison to more closely match the NSHTTPCookie behavior.

Source/WebKit2:

When putting cookies in a WKHTTPCookieStore that hasn't been associated with a WKProcessPool yet, there is no
NetworkProcess into which to put the cookies. In such a case, we should store these cookies in the WebsiteDataStore
until there is a NetworkProcess.

  • NetworkProcess/NetworkConnectionToWebProcess.cpp:

(WebKit::NetworkConnectionToWebProcess::ensureLegacyPrivateBrowsingSession):

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::initializeNetworkProcess):
(WebKit::NetworkProcess::ensurePrivateBrowsingSession):

  • NetworkProcess/NetworkProcess.h:
  • NetworkProcess/NetworkProcess.messages.in:
  • NetworkProcess/RemoteNetworkingContext.h:
  • NetworkProcess/mac/RemoteNetworkingContext.mm:

(WebKit::RemoteNetworkingContext::ensurePrivateBrowsingSession):
(WebKit::RemoteNetworkingContext::ensureWebsiteDataStoreSession):

  • Shared/WebsiteDataStoreParameters.cpp:

(WebKit::WebsiteDataStoreParameters::~WebsiteDataStoreParameters):
(WebKit::WebsiteDataStoreParameters::encode):
(WebKit::WebsiteDataStoreParameters::decode):
(WebKit::WebsiteDataStoreParameters::WebsiteDataStoreParameters): Deleted.

  • Shared/WebsiteDataStoreParameters.h:
  • UIProcess/API/APIHTTPCookieStore.cpp:

(API::HTTPCookieStore::cookies):
(API::HTTPCookieStore::setCookie):
(API::HTTPCookieStore::deleteCookie):

  • UIProcess/API/APIHTTPCookieStore.h:
  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::setAnyPageGroupMightHavePrivateBrowsingEnabled):
(WebKit::WebProcessPool::pageAddedToProcess):

  • UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:

(WebKit::WebsiteDataStore::parameters):

  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::pendingCookies):
(WebKit::WebsiteDataStore::addPendingCookie):
(WebKit::WebsiteDataStore::removePendingCookie):

  • UIProcess/WebsiteData/WebsiteDataStore.h:

Tools:

  • TestWebKitAPI/Tests/WebKit2Cocoa/WKHTTPCookieStore.mm:

(-[CookieUIDelegate webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame:completionHandler:]):
(TEST):

9:23 AM Changeset in webkit [216976] by Chris Dumez
  • 9 edits in trunk/LayoutTests

Unreviewed, rebaseline js/dom/global-constructors-attributes.html after r216959.

  • js/dom/global-constructors-attributes-expected.txt:
  • platform/gtk/js/dom/global-constructors-attributes-expected.txt:
  • platform/mac-elcapitan/js/dom/global-constructors-attributes-expected.txt:
  • platform/mac-wk1/js/dom/global-constructors-attributes-expected.txt:
  • platform/mac-yosemite/js/dom/global-constructors-attributes-expected.txt:
  • platform/mac/js/dom/global-constructors-attributes-expected.txt:
  • platform/win/js/dom/global-constructors-attributes-expected.txt:
  • platform/wpe/js/dom/global-constructors-attributes-expected.txt:
9:04 AM Changeset in webkit [216975] by commit-queue@webkit.org
  • 6 edits
    102 adds in trunk/LayoutTests

Import FileAPI WPT tests.
https://bugs.webkit.org/show_bug.cgi?id=171960

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

LayoutTests/imported/w3c:

  • resources/import-expectations.json:
  • resources/resource-files.json:
  • web-platform-tests/FileAPI/BlobURL/support/file_test1.js: Added.
  • web-platform-tests/FileAPI/BlobURL/support/file_test2.txt: Added.
  • web-platform-tests/FileAPI/BlobURL/support/file_test3.html: Added.
  • web-platform-tests/FileAPI/BlobURL/support/w3c-import.log: Added.
  • web-platform-tests/FileAPI/FileReader/Progress_event_bubbles_cancelable-expected.txt: Added.
  • web-platform-tests/FileAPI/FileReader/Progress_event_bubbles_cancelable.html: Added.
  • web-platform-tests/FileAPI/FileReader/support/file_test1.txt: Added.
  • web-platform-tests/FileAPI/FileReader/support/w3c-import.log: Added.
  • web-platform-tests/FileAPI/FileReader/w3c-import.log: Added.
  • web-platform-tests/FileAPI/FileReaderSync.worker-expected.txt: Added.
  • web-platform-tests/FileAPI/FileReaderSync.worker.html: Added.
  • web-platform-tests/FileAPI/FileReaderSync.worker.js: Added.

(setup):
(test):

  • web-platform-tests/FileAPI/OWNERS: Added.
  • web-platform-tests/FileAPI/blob/Blob-XHR-revoke-expected.txt: Added.
  • web-platform-tests/FileAPI/blob/Blob-XHR-revoke.html: Added.
  • web-platform-tests/FileAPI/blob/Blob-constructor-expected.txt: Added.
  • web-platform-tests/FileAPI/blob/Blob-constructor.html: Added.
  • web-platform-tests/FileAPI/blob/Blob-in-worker.worker-expected.txt: Added.
  • web-platform-tests/FileAPI/blob/Blob-in-worker.worker.html: Added.
  • web-platform-tests/FileAPI/blob/Blob-in-worker.worker.js: Added.

(async_test):

  • web-platform-tests/FileAPI/blob/Blob-slice-expected.txt: Added.
  • web-platform-tests/FileAPI/blob/Blob-slice-overflow-expected.txt: Added.
  • web-platform-tests/FileAPI/blob/Blob-slice-overflow.html: Added.
  • web-platform-tests/FileAPI/blob/Blob-slice.html: Added.
  • web-platform-tests/FileAPI/blob/w3c-import.log: Added.
  • web-platform-tests/FileAPI/file/File-constructor-expected.txt: Added.
  • web-platform-tests/FileAPI/file/File-constructor.html: Added.
  • web-platform-tests/FileAPI/file/Worker-read-file-constructor.worker-expected.txt: Added.
  • web-platform-tests/FileAPI/file/Worker-read-file-constructor.worker.html: Added.
  • web-platform-tests/FileAPI/file/Worker-read-file-constructor.worker.js: Added.

(async_test):

  • web-platform-tests/FileAPI/file/w3c-import.log: Added.
  • web-platform-tests/FileAPI/fileReader-expected.txt: Added.
  • web-platform-tests/FileAPI/fileReader.html: Added.
  • web-platform-tests/FileAPI/filelist-section/filelist-expected.txt: Added.
  • web-platform-tests/FileAPI/filelist-section/filelist.html: Added.
  • web-platform-tests/FileAPI/filelist-section/support/upload.txt: Added.
  • web-platform-tests/FileAPI/filelist-section/support/upload.zip: Added.
  • web-platform-tests/FileAPI/filelist-section/support/w3c-import.log: Added.
  • web-platform-tests/FileAPI/filelist-section/w3c-import.log: Added.
  • web-platform-tests/FileAPI/historical.https-expected.txt: Added.
  • web-platform-tests/FileAPI/historical.https.html: Added.
  • web-platform-tests/FileAPI/idlharness-expected.txt: Added.
  • web-platform-tests/FileAPI/idlharness.html: Added.
  • web-platform-tests/FileAPI/idlharness.idl: Added.
  • web-platform-tests/FileAPI/idlharness.worker-expected.txt: Added.
  • web-platform-tests/FileAPI/idlharness.worker.html: Added.
  • web-platform-tests/FileAPI/idlharness.worker.js: Added.

(request.onload):

  • web-platform-tests/FileAPI/reading-data-section/Determining-Encoding-expected.txt: Added.
  • web-platform-tests/FileAPI/reading-data-section/Determining-Encoding.html: Added.
  • web-platform-tests/FileAPI/reading-data-section/FileReader-event-handler-attributes-expected.txt: Added.
  • web-platform-tests/FileAPI/reading-data-section/FileReader-event-handler-attributes.html: Added.
  • web-platform-tests/FileAPI/reading-data-section/FileReader-multiple-reads-expected.txt: Added.
  • web-platform-tests/FileAPI/reading-data-section/FileReader-multiple-reads.html: Added.
  • web-platform-tests/FileAPI/reading-data-section/filereader_abort-expected.txt: Added.
  • web-platform-tests/FileAPI/reading-data-section/filereader_abort.html: Added.
  • web-platform-tests/FileAPI/reading-data-section/filereader_error-expected.txt: Added.
  • web-platform-tests/FileAPI/reading-data-section/filereader_error.html: Added.
  • web-platform-tests/FileAPI/reading-data-section/filereader_readAsArrayBuffer-expected.txt: Added.
  • web-platform-tests/FileAPI/reading-data-section/filereader_readAsArrayBuffer.html: Added.
  • web-platform-tests/FileAPI/reading-data-section/filereader_readAsDataURL-expected.txt: Added.
  • web-platform-tests/FileAPI/reading-data-section/filereader_readAsDataURL.html: Added.
  • web-platform-tests/FileAPI/reading-data-section/filereader_readAsText-expected.txt: Added.
  • web-platform-tests/FileAPI/reading-data-section/filereader_readAsText.html: Added.
  • web-platform-tests/FileAPI/reading-data-section/filereader_readystate-expected.txt: Added.
  • web-platform-tests/FileAPI/reading-data-section/filereader_readystate.html: Added.
  • web-platform-tests/FileAPI/reading-data-section/filereader_result-expected.txt: Added.
  • web-platform-tests/FileAPI/reading-data-section/filereader_result.html: Added.
  • web-platform-tests/FileAPI/reading-data-section/support/blue-100x100.png: Added.
  • web-platform-tests/FileAPI/reading-data-section/support/w3c-import.log: Added.
  • web-platform-tests/FileAPI/reading-data-section/w3c-import.log: Added.
  • web-platform-tests/FileAPI/support/Blob.js: Added.

(test_blob):

  • web-platform-tests/FileAPI/support/document-domain-setter.sub.html: Added.
  • web-platform-tests/FileAPI/support/historical-serviceworker.js: Added.

(test):

  • web-platform-tests/FileAPI/support/incumbent.sub.html: Added.
  • web-platform-tests/FileAPI/support/upload.txt: Added.
  • web-platform-tests/FileAPI/support/url-origin.html: Added.
  • web-platform-tests/FileAPI/support/w3c-import.log: Added.
  • web-platform-tests/FileAPI/url/blob-url-in-sandboxed-iframe-expected.txt: Added.
  • web-platform-tests/FileAPI/url/blob-url-in-sandboxed-iframe.html: Added.
  • web-platform-tests/FileAPI/url/multi-global-origin-serialization.sub-expected.txt: Added.
  • web-platform-tests/FileAPI/url/multi-global-origin-serialization.sub.html: Added.
  • web-platform-tests/FileAPI/url/origin.sub-expected.txt: Added.
  • web-platform-tests/FileAPI/url/origin.sub.html: Added.
  • web-platform-tests/FileAPI/url/url_createobjecturl_blob-expected.txt: Added.
  • web-platform-tests/FileAPI/url/url_createobjecturl_blob.html: Added.
  • web-platform-tests/FileAPI/url/url_xmlhttprequest-expected.txt: Added.
  • web-platform-tests/FileAPI/url/url_xmlhttprequest.html: Added.
  • web-platform-tests/FileAPI/url/url_xmlhttprequest_img-expected.html: Added.
  • web-platform-tests/FileAPI/url/url_xmlhttprequest_img.html: Added.
  • web-platform-tests/FileAPI/url/w3c-import.log: Added.
  • web-platform-tests/FileAPI/w3c-import.log: Added.

LayoutTests:

8:51 AM Changeset in webkit [216974] by commit-queue@webkit.org
  • 18 edits in trunk

Add a RuntimeEnabledFeature for display: contents, defaulted to false.
https://bugs.webkit.org/show_bug.cgi?id=171984

Patch by Emilio Cobos Álvarez <ecobos@igalia.com> on 2017-05-17
Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

  • web-platform-tests/innerText/getter-expected.txt:

Source/WebCore:

The "defaulted to false" is not only because there are spec issues,
but because I ran the WPT suite, and there was a fair amount of
crashes and messed render trees.

  • css/StyleResolver.cpp:

(WebCore::StyleResolver::adjustRenderStyle):

  • page/RuntimeEnabledFeatures.h:

(WebCore::RuntimeEnabledFeatures::setDisplayContentsEnabled):
(WebCore::RuntimeEnabledFeatures::displayContentsEnabled):

Source/WebKit/mac:

  • WebView/WebPreferenceKeysPrivate.h:
  • WebView/WebPreferences.mm:

(+[WebPreferences initialize]):
(-[WebPreferences displayContentsEnabled]):
(-[WebPreferences setDisplayContentsEnabled:]):

  • WebView/WebPreferencesPrivate.h:
  • WebView/WebView.mm:

(-[WebView _preferencesChanged:]):

Source/WebKit2:

  • Shared/WebPreferencesDefinitions.h:
  • UIProcess/API/C/WKPreferences.cpp:

(WKPreferencesSetDisplayContentsEnabled):
(WKPreferencesGetDisplayContentsEnabled):

  • UIProcess/API/C/WKPreferencesRefPrivate.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updatePreferences):

Tools:

  • DumpRenderTree/mac/DumpRenderTree.mm:

(enableExperimentalFeatures):

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::resetPreferencesToConsistentValues):

8:12 AM Changeset in webkit [216973] by Antti Koivisto
  • 4 edits
    2 adds in trunk

Regression (198943): <marquee> shouldn't wrap text
https://bugs.webkit.org/show_bug.cgi?id=172217

Reviewed by Andreas Kling.

Source/WebCore:

RenderMarquee::updateMarqueeStyle mutated the style and then expected it to inherit to children.
This doesn't work anymore because render tree construction is now separated from style resolution
where inheritance happens.

Test: fast/html/marquee-child-wrap.html

  • css/StyleResolver.cpp:

(WebCore::StyleResolver::adjustRenderStyle):

Implement marquee hacks in adjustRenderStyle instead. This can't do the childrenInline check
the previous code had but it wasn't working anyway (there are no children when updateMarqueeStyle
gets called).

  • rendering/RenderMarquee.cpp:

(WebCore::RenderMarquee::updateMarqueeStyle):

This no longer needs mutable style.

LayoutTests:

  • fast/html/marquee-child-wrap-expected.html: Added.
  • fast/html/marquee-child-wrap.html: Added.
4:58 AM Changeset in webkit [216972] by ddkilzer@apple.com
  • 2 edits in trunk/LayoutTests

REGRESSION (r216966): fast/shadow-dom/slot-crash.html started to fail

Unreviewed test gardening.

Update test results after the fix for:

Do not skip <slot> children when collecting content for innerText.
https://bugs.webkit.org/show_bug.cgi?id=172113
<rdar://problem/30362324>

  • fast/shadow-dom/slot-crash-expected.txt: Update results to add

a space to the end of the output.

1:01 AM Changeset in webkit [216971] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebKit2

Unreviewed. Fix the build with MEDIA_STREAM disabled after r216952.

  • UIProcess/UserMediaPermissionRequestManagerProxy.cpp:

(WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame):
(WebKit::UserMediaPermissionRequestManagerProxy::enumerateMediaDevicesForFrame):

12:18 AM Changeset in webkit [216970] by Carlos Garcia Campos
  • 3 edits in trunk/Source/WebKit2

[Threaded Compositor] SHOULD NEVER BE REACHED in WebKit::CompositingRunLoop::updateCompleted
https://bugs.webkit.org/show_bug.cgi?id=172167

Reviewed by Michael Catanzaro.

This is still happening, even after r216182, less often but still happens. There are two conditions in which
this can happen:

  • Again in force repaint. r216182 fixed the case of force repaint called when update state is completed, but it can also crash if update state is inProgress or PendingAfterCompletion when m_coordinateUpdateCompletionWithClient is true.
  • When the threaded compositor is invalidated right after renderLayerTree() starts, but before it finishes.
  • Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:

(WebKit::ThreadedCompositor::invalidate): Invalidate the refresh monitor right after stopping updates in the
compositing run loop to ensure no more updates are scheduled.
(WebKit::ThreadedCompositor::renderLayerTree): Check the scene is still active before calling sceneUpdateFinished().
(WebKit::ThreadedCompositor::updateSceneState): Do not update m_coordinateUpdateCompletionWithClient when in
force repaint.

  • Shared/CoordinatedGraphics/threadedcompositor/ThreadedDisplayRefreshMonitor.cpp:

(WebKit::ThreadedDisplayRefreshMonitor::dispatchDisplayRefreshCallback): Return early if the monitor has been invalidated.

May 16, 2017:

10:26 PM Changeset in webkit [216969] by Chris Dumez
  • 3 edits in trunk/LayoutTests

[macOS Debug wk2] Layout test svg/animations/animations-paused-in-background-page-iframe.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=172183

Reviewed by Andreas Kling.

Fix test flakiness by using shouldBecome() instead of relying on a 30ms timer.

  • svg/animations/animations-paused-in-background-page-iframe-expected.txt:
  • svg/animations/animations-paused-in-background-page-iframe.html:
10:04 PM Changeset in webkit [216968] by ddkilzer@apple.com
  • 7 edits in trunk/Source/WebCore

Remove C-style casts by using xmlDocPtr instead of void*
<https://webkit.org/b/172189>

Reviewed by Alex Christensen.

  • dom/TransformSource.h: Fix whitespace indentation.

(typedef PlatformTransformSource): Use xmlDocPtr not void*.

  • dom/TransformSourceLibxslt.cpp:

(WebCore::TransformSource::~TransformSource): Remove cast.

  • xml/XSLStyleSheetLibxslt.cpp:

(WebCore::XSLStyleSheet::document): Remove cast.

  • xml/XSLTProcessorLibxslt.cpp:

(WebCore::xmlDocPtrFromNode): Remove casts.

  • xml/parser/XMLDocumentParser.h:

(WebCore::xmlDocPtrForString): Update declaration to return
xmlDocPtr not void*.

  • xml/parser/XMLDocumentParserLibxml2.cpp:

(WebCore::XMLDocumentParser::doEnd): Change type of local
variable from void* to xmlDocPtr.
(WebCore::xmlDocPtrForString): Update to return xmlDocPtr
not void*.

8:22 PM Changeset in webkit [216967] by commit-queue@webkit.org
  • 29 edits
    3 copies
    2 adds in trunk

Bring Notification.idl up to spec
https://bugs.webkit.org/show_bug.cgi?id=172156

Patch by Sam Weinig <sam@webkit.org> on 2017-05-16
Reviewed by Chris Dumez.

Source/WebCore:

Test: http/tests/notifications/notification.html

  • CMakeLists.txt:
  • DerivedSources.make:
  • WebCore.xcodeproj/project.pbxproj:

Add new files.

  • Modules/notifications/Notification.cpp:

(WebCore::Notification::create):
(WebCore::Notification::Notification):
(WebCore::Notification::show):
(WebCore::directionString): Deleted.
(WebCore::Notification::permission): Deleted.
(WebCore::Notification::permissionString): Deleted.

  • Modules/notifications/Notification.h:
  • Modules/notifications/Notification.idl:
  • Modules/notifications/NotificationClient.h:
  • Modules/notifications/NotificationDirection.h: Added.
  • Modules/notifications/NotificationPermission.h: Added.
  • Modules/notifications/NotificationPermission.idl: Added.
  • Modules/notifications/NotificationPermissionCallback.h:
  • Modules/notifications/NotificationPermissionCallback.idl:

Bring up to spec, replacing DOMStrings with enums where appropriate and adding
additional readonly properties to Notification to mirror options provided
in construction.

Source/WebKit/mac:

  • WebCoreSupport/WebNotificationClient.h:
  • WebCoreSupport/WebNotificationClient.mm:

(generateNotificationID):
(WebNotificationClient::show):
(WebNotificationClient::cancel):
(WebNotificationClient::clearNotifications):
(WebNotificationClient::notificationObjectDestroyed):
(WebNotificationClient::requestPermission):
(WebNotificationClient::hasPendingPermissionRequests):
(WebNotificationClient::checkPermission):
(-[WebNotificationPolicyListener allow]):
(-[WebNotificationPolicyListener deny]):

  • WebView/WebNotification.mm:

(-[WebNotification iconURL]):
(-[WebNotification dir]):
Simplify #ifdefs and update for enum vs String usage.

Source/WebKit2:

  • Shared/WebCoreArgumentCoders.h:
  • UIProcess/API/C/WKNotification.cpp:

(WKNotificationCopyDir):

  • UIProcess/Notifications/WebNotification.cpp:

(WebKit::WebNotification::WebNotification):

  • UIProcess/Notifications/WebNotification.h:

(WebKit::WebNotification::create):
(WebKit::WebNotification::dir):

  • UIProcess/Notifications/WebNotificationManagerProxy.cpp:

(WebKit::WebNotificationManagerProxy::show):

  • UIProcess/Notifications/WebNotificationManagerProxy.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::showNotification):

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • WebProcess/Notifications/NotificationPermissionRequestManager.cpp:

(WebKit::NotificationPermissionRequestManager::startRequest):
(WebKit::NotificationPermissionRequestManager::permissionLevel):
(WebKit::NotificationPermissionRequestManager::didReceiveNotificationPermissionDecision):

  • WebProcess/Notifications/WebNotificationManager.cpp:

(WebKit::WebNotificationManager::policyForOrigin):
(WebKit::WebNotificationManager::show):

  • WebProcess/WebCoreSupport/WebNotificationClient.cpp:

(WebKit::WebNotificationClient::checkPermission):

  • WebProcess/WebCoreSupport/WebNotificationClient.h:

Update for enum vs String usage.

LayoutTests:

  • http/tests/notifications/notification-expected.txt: Added.
  • http/tests/notifications/notification.html: Added.

Add test for basic Notification API functionality.

7:33 PM Changeset in webkit [216966] by Alan Bujtas
  • 5 edits
    2 adds in trunk

Do not skip <slot> children when collecting content for innerText.
https://bugs.webkit.org/show_bug.cgi?id=172113
<rdar://problem/30362324>

Reviewed by Ryosuke Niwa and Brent Fulgham.

Source/WebCore:

"display: contents" elements do not generate renderers but their children might.
This patch ensure that we don't skip them while collecting text content.

Test: fast/text/inner-text-should-include-slot-subtree.html

  • editing/TextIterator.cpp:

(WebCore::TextIterator::advance):

LayoutTests:

  • fast/text/inner-text-should-include-slot-subtree-expected.txt: Added.
  • fast/text/inner-text-should-include-slot-subtree.html: Added.
7:11 PM Changeset in webkit [216965] by fpizlo@apple.com
  • 2 edits in trunk/Source/WebCore

GCController::garbageCollectNowIfNotDoneRecently should request Async Full GCs
https://bugs.webkit.org/show_bug.cgi?id=172204

Reviewed by Saam Barati.

No new tests because existing tests will tell us if there is a problem.

The goal of this change is to reduce the likelihood that we block for a GC. We want it to be
benchmark-neutral.

It's a 0.14% speed-up on JetStream with 24% probability.

It's a 0.12% slow-down on PLT3 with 43% probability.

So it's neutral on my machine.

  • bindings/js/GCController.cpp:

(WebCore::GCController::garbageCollectNowIfNotDoneRecently):

6:17 PM Changeset in webkit [216964] by jiewen_tan@apple.com
  • 3 edits in trunk/LayoutTests

Unreviewed, fix LayoutTests/plugins/navigator-plugin-crash.html
<rdar://problem/32236478>

  • plugins/navigator-plugin-crash-expected.txt:
  • plugins/navigator-plugin-crash.html:
6:01 PM Changeset in webkit [216963] by timothy_horton@apple.com
  • 2 edits in trunk/Tools

Fix the build

  • TestWebKitAPI/Tests/mac/PageVisibilityStateWithWindowChanges.mm:

(TestWebKitAPI::PageVisibilityStateWithWindowChanges::runTest):

5:53 PM Changeset in webkit [216962] by timothy_horton@apple.com
  • 3 edits in trunk/Source/WebCore

[macOS] REGRESSION: Drag images for links with right-to-left titles are incorrect (172006)
https://bugs.webkit.org/show_bug.cgi?id=172006
<rdar://problem/32165137>

Reviewed by Dean Jackson.

  • platform/mac/DragImageMac.mm:

(WebCore::LinkImageLayout::LinkImageLayout):
(WebCore::createDragImageForLink):
(WebCore::LinkImageLayout::addLine): Deleted.

  • platform/spi/cocoa/CoreTextSPI.h:

Set and paint the entire frame as a single unit, making use of the
CTFrameMaximumNumberOfLines attribute to limit the number of lines.
This gives CoreText power over text alignment and makes RTL text lay
out correctly.

5:51 PM Changeset in webkit [216961] by timothy_horton@apple.com
  • 2 edits in trunk/Tools

PageVisibilityStateWithWindowChanges tests sometimes time out
https://bugs.webkit.org/show_bug.cgi?id=172202
<rdar://problem/29653266>

Reviewed by Dean Jackson.

  • TestWebKitAPI/Tests/mac/PageVisibilityStateWithWindowChanges.mm:

(TestWebKitAPI::PageVisibilityStateWithWindowChanges::runTest):
Make sure the window is miniaturizable, otherwise, in some cases, miniaturize: will not work.

5:12 PM Changeset in webkit [216960] by msaboff@apple.com
  • 2 edits in trunk/Source/bmalloc

REGRESSION(r216763): JetStream is 1% slower on Mac
https://bugs.webkit.org/show_bug.cgi?id=172124

Reviewed by Filip Pizlo.

It appears that changing maxScavengeSleepDuration from 512 to 250ms in r216763 is
responsible for the regression.

  • bmalloc/Sizes.h:
4:45 PM Changeset in webkit [216959] by Chris Dumez
  • 24 edits
    13 adds
    2 deletes in trunk

Implement DOMMatrix / DOMMatrixReadOnly
https://bugs.webkit.org/show_bug.cgi?id=110001

Reviewed by Sam Weinig and Simon Fraser.

LayoutTests/imported/w3c:

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

  • web-platform-tests/css/geometry-1/DOMMatrix-001-expected.txt:

Most checks are now passing. The few remaining failures seem to be due to our
parsing of the input CSS string now matching the specification. This behavior
is not new to this patch as I re-used exactly the same logic as for
WebKitCSSMatrix's parsing of the input string.

  • web-platform-tests/css/geometry-1/DOMMatrix-002-expected.txt:
  • web-platform-tests/css/geometry-1/DOMMatrix-003-expected.txt:
  • web-platform-tests/css/geometry-1/DOMMatrix-a-f-alias-expected.txt:

All checks are now passing.

  • web-platform-tests/css/geometry-1/DOMMatrix-newobject-expected.txt:

Most checks are now passing. The remaining failures are due to DOMMatrixReadOnly's
transformPoint() / toFloat32Array() / toFloat64Array() not being implemented in
this patch. I think we can take care of those in a follow-up.

  • web-platform-tests/css/geometry-1/DOMPoint-002-expected.txt:

Fails differently now that we support DOMMatrix. The test goes further but still
fails because DOMPoint.matrixTransform() is not implemented.

  • web-platform-tests/css/geometry-1/WebKitCSSMatrix-expected.txt:

One more check is passing now that we implement DOMMatrix. The remaining failure is
due to WebKitCSSMatrix not being an alias to DOMMatrix yet. I'd rather do this in a
follow-up.

  • web-platform-tests/css/geometry-1/historical-expected.txt:

A lot of new passes.

  • web-platform-tests/css/geometry-1/structured-serialization-expected.txt:

The test fails differently now that we support DOMMatrix. The test still fails because
we do not support yet the structured serialization of DOMMatrix objects. It appears we
do not support this for other types in this spec either (e.g. DOMPoint). I filed:
https://bugs.webkit.org/show_bug.cgi?id=172191

  • web-platform-tests/css/geometry-1/DOMMatrix-stringifier-expected.txt: Added.
  • web-platform-tests/css/geometry-1/DOMMatrix-stringifier.html: Added.

Import new test from upstream. The WebKitCSSMatrix failures are due to our
WebKitCSSMatrix implementation not complying with the standard. As per the
standard, WebKitCSSMatrix is supposed to become an alias to DOMMatrix. If we
do this aliasing (in a follow-up), then those tests will start passing.

  • web-platform-tests/css/geometry-1/support/dommatrix-test-util.js: Added.

Add missing script that was missed by the importer when I initially imported the test
suite from upstream.

Source/WebCore:

Implement DOMMatrix / DOMMatrixReadOnly as per:

For now, these new types co-exist with WebKitCSSMatrix / SVGMatrix. However, in the future,
WebKitCSSMatrix / SVGMatrix are supposed to become aliases to DOMMatrix.

Most of it has been implemented. What remaining to be implemented is:

  • Make WebKitCSSMatrix / SVGMatrix aliases to DOMMatrix
  • DOMMatrix.fromFloat32Array() / fromFloat64Array()
  • DOMMatrixReadOnly.fromFloat32Array() / fromFloat64Array() / toFloat32Array() / toFloat64Array()
  • DOMMatrixReadOnly.transformPoint().

Tests: imported/w3c/web-platform-tests/css/geometry-1/*

  • CMakeLists.txt:
  • DerivedSources.make:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/scripts/CodeGeneratorJS.pm:
  • bindings/scripts/test/JS/JSTestObj.cpp:

Fix a bug in the bindings generator causing the generator code for
"Constructor(optional (DOMString or sequence<unrestricted double>) init)" to be wrong
and not build.

  • css/DOMMatrix.cpp: Added.

(WebCore::DOMMatrix::DOMMatrix):
(WebCore::DOMMatrix::fromMatrix):
(WebCore::DOMMatrix::multiplySelf):
(WebCore::DOMMatrix::preMultiplySelf):
(WebCore::DOMMatrix::translateSelf):
(WebCore::DOMMatrix::scaleSelf):
(WebCore::DOMMatrix::scale3dSelf):
(WebCore::DOMMatrix::rotateSelf):
(WebCore::DOMMatrix::rotateFromVectorSelf):
(WebCore::DOMMatrix::rotateAxisAngleSelf):
(WebCore::DOMMatrix::skewXSelf):
(WebCore::DOMMatrix::skewYSelf):
(WebCore::DOMMatrix::invertSelf):
(WebCore::DOMMatrix::setMatrixValueForBindings):

  • css/DOMMatrix.h: Added.

(WebCore::DOMMatrix::create):
(WebCore::DOMMatrix::setA):
(WebCore::DOMMatrix::setB):
(WebCore::DOMMatrix::setC):
(WebCore::DOMMatrix::setD):
(WebCore::DOMMatrix::setE):
(WebCore::DOMMatrix::setF):
(WebCore::DOMMatrix::setM11):
(WebCore::DOMMatrix::setM12):
(WebCore::DOMMatrix::setM13):
(WebCore::DOMMatrix::setM14):
(WebCore::DOMMatrix::setM21):
(WebCore::DOMMatrix::setM22):
(WebCore::DOMMatrix::setM23):
(WebCore::DOMMatrix::setM24):
(WebCore::DOMMatrix::setM31):
(WebCore::DOMMatrix::setM32):
(WebCore::DOMMatrix::setM33):
(WebCore::DOMMatrix::setM34):
(WebCore::DOMMatrix::setM41):
(WebCore::DOMMatrix::setM42):
(WebCore::DOMMatrix::setM43):
(WebCore::DOMMatrix::setM44):

  • css/DOMMatrix.idl: Added.
  • css/DOMMatrixInit.h: Added.
  • css/DOMMatrixInit.idl: Added.
  • css/DOMMatrixReadOnly.cpp: Added.

(WebCore::DOMMatrixReadOnly::DOMMatrixReadOnly):
(WebCore::DOMMatrixReadOnly::validateAndFixup):
(WebCore::DOMMatrixReadOnly::fromMatrix):
(WebCore::DOMMatrixReadOnly::isIdentity):
(WebCore::DOMMatrixReadOnly::setMatrixValue):
(WebCore::DOMMatrixReadOnly::translate):
(WebCore::DOMMatrixReadOnly::flipX):
(WebCore::DOMMatrixReadOnly::flipY):
(WebCore::DOMMatrixReadOnly::multiply):
(WebCore::DOMMatrixReadOnly::scale):
(WebCore::DOMMatrixReadOnly::scale3d):
(WebCore::DOMMatrixReadOnly::rotate):
(WebCore::DOMMatrixReadOnly::rotateFromVector):
(WebCore::DOMMatrixReadOnly::rotateAxisAngle):
(WebCore::DOMMatrixReadOnly::skewX):
(WebCore::DOMMatrixReadOnly::skewY):
(WebCore::DOMMatrixReadOnly::inverse):
(WebCore::DOMMatrixReadOnly::toString):

  • css/DOMMatrixReadOnly.h: Added.

(WebCore::DOMMatrixReadOnly::create):
(WebCore::DOMMatrixReadOnly::a):
(WebCore::DOMMatrixReadOnly::b):
(WebCore::DOMMatrixReadOnly::c):
(WebCore::DOMMatrixReadOnly::d):
(WebCore::DOMMatrixReadOnly::e):
(WebCore::DOMMatrixReadOnly::f):
(WebCore::DOMMatrixReadOnly::m11):
(WebCore::DOMMatrixReadOnly::m12):
(WebCore::DOMMatrixReadOnly::m13):
(WebCore::DOMMatrixReadOnly::m14):
(WebCore::DOMMatrixReadOnly::m21):
(WebCore::DOMMatrixReadOnly::m22):
(WebCore::DOMMatrixReadOnly::m23):
(WebCore::DOMMatrixReadOnly::m24):
(WebCore::DOMMatrixReadOnly::m31):
(WebCore::DOMMatrixReadOnly::m32):
(WebCore::DOMMatrixReadOnly::m33):
(WebCore::DOMMatrixReadOnly::m34):
(WebCore::DOMMatrixReadOnly::m41):
(WebCore::DOMMatrixReadOnly::m42):
(WebCore::DOMMatrixReadOnly::m43):
(WebCore::DOMMatrixReadOnly::m44):
(WebCore::DOMMatrixReadOnly::is2D):
(WebCore::DOMMatrixReadOnly::fromMatrixHelper):

  • css/DOMMatrixReadOnly.idl: Added.
  • css/WebKitCSSMatrix.h:
  • css/WebKitCSSMatrix.idl:
  • svg/SVGMatrix.h:
  • svg/SVGMatrix.idl:

LayoutTests:

Drop test I previously added now that a better version landed in web-platform-tests
and was re-imported in this patch.

  • fast/css/matrix-stringifier-expected.txt: Removed.
  • fast/css/matrix-stringifier.html: Removed.
4:44 PM Changeset in webkit [216958] by jmarcell@apple.com
  • 5 edits in branches/safari-604.1.21-branch/Source

Cherry-pick r216947. rdar://problem/32200017

4:44 PM Changeset in webkit [216957] by jmarcell@apple.com
  • 7 edits in branches/safari-604.1.21-branch

Cherry-pick r216892. rdar://problem/31513869

4:44 PM Changeset in webkit [216956] by jmarcell@apple.com
  • 3 edits in branches/safari-604.1.21-branch/Source/WebCore

Cherry-pick r216257. rdar://problem/32014052

4:19 PM Changeset in webkit [216955] by Jonathan Bedard
  • 3 edits in trunk/Tools

webkitpy: Start servers before setting-up for testing
https://bugs.webkit.org/show_bug.cgi?id=172176
<rdar://problem/32225538>

Reviewed by Alexey Proskuryakov.

On-device testing requires that servers are started before ports set-up their
test environments.

  • Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py:

(LayoutTestRunner.init): Start servers when initializing LayoutTestRunner.
(LayoutTestRunner.run_tests): Move the starting of servers to the initializer.

  • Scripts/webkitpy/layout_tests/controllers/manager.py:

(Manager.init): Delay construction of the test runner until we can determine
if servers need to be started.
(Manager.run): Determine if servers need to be started and construct the test runner.
(Manager._run_tests): Move the determination of servers to run into Manager.run.

4:10 PM Changeset in webkit [216954] by eric.carlson@apple.com
  • 2 edits in trunk/Source/WebCore

[MediaStream] AudioSampleBufferList::zeroABL takes byte count, not sample count
https://bugs.webkit.org/show_bug.cgi?id=172194
<rdar://problem/32233799>

Reviewed by Jer Noble.

  • platform/mediastream/mac/AudioTrackPrivateMediaStreamCocoa.cpp:

(WebCore::AudioTrackPrivateMediaStreamCocoa::render): Pass number of bytes to zero,
not number of samples.

4:06 PM Changeset in webkit [216953] by mark.lam@apple.com
  • 2 edits in trunk/Source/WebCore

WorkerRunLoop::Task::performTask() needs to null check context->script() before use.
https://bugs.webkit.org/show_bug.cgi?id=172193
<rdar://problem/32225346>

Reviewed by Filip Pizlo.

According to https://build-safari.apple.com/results/Trunk%20Fuji%20GuardMalloc%20Production%20WK2%20Tests/r216929_459760e0918316187c8e52c6585a3a9ba9181204%20(12066)/results.html,
we see a crash with this crash trace:

Thread 13 Crashed:: WebCore: Worker
0 com.apple.WebCore 0x00000001099607b2 WebCore::WorkerScriptController::isTerminatingExecution() const + 18
1 com.apple.WebCore 0x000000010995ebbf WebCore::WorkerRunLoop::runCleanupTasks(WebCore::WorkerGlobalScope*) + 143
2 com.apple.WebCore 0x000000010995e80f WebCore::WorkerRunLoop::run(WebCore::WorkerGlobalScope*) + 111
3 com.apple.WebCore 0x00000001099621b6 WebCore::WorkerThread::workerThread() + 742
4 com.apple.JavaScriptCore 0x000000010a964b92 WTF::threadEntryPoint(void*) + 178
5 com.apple.JavaScriptCore 0x000000010a964a69 WTF::wtfThreadEntryPoint(void*) + 121
6 libsystem_pthread.dylib 0x00007fffbdb5caab _pthread_body + 180
7 libsystem_pthread.dylib 0x00007fffbdb5c9f7 _pthread_start + 286
8 libsystem_pthread.dylib 0x00007fffbdb5c1fd thread_start + 13

... and the crashing address is:

Exception Codes: KERN_INVALID_ADDRESS at 0x0000000000000022

0x0000000000000022 is the offset of m_scheduledTerminationMutex in the
WorkerScriptController. This means that WorkerScriptController::isTerminatingExecution()
is passed a NULL this pointer. This means that it's possible to have a race
where a WorkerRunLoop::Task gets enqueued beyond the Cleanup task that deletes the
context->script(). As a result, WorkerRunLoop::Task::performTask() (called by
runCleanupTasks()) may see a null context->script().

Hence, WorkerRunLoop::Task::performTask() should null check context->script()
before invoking the isTerminatingExecution() query on it.

No new tests because this is already covered by existing tests.

  • workers/WorkerRunLoop.cpp:

(WebCore::WorkerRunLoop::Task::performTask):

3:49 PM Changeset in webkit [216952] by commit-queue@webkit.org
  • 13 edits in trunk/Source

Modernize WebKit2 getUserMedia passing of parameters
https://bugs.webkit.org/show_bug.cgi?id=172161

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

Source/WebCore:

No change of behavior.

  • platform/mediastream/RealtimeMediaSourceCenter.h: Using WTF::Function to enable capture Ref<>.

Source/WebKit2:

Passing SecurityOrigin as SecurityOriginData through IPC instead of Strings.
Making more use of Ref<> instead of RefPtr<>.

  • UIProcess/UserMediaPermissionCheckProxy.cpp:

(WebKit::UserMediaPermissionCheckProxy::UserMediaPermissionCheckProxy):
(WebKit::UserMediaPermissionCheckProxy::setUserMediaAccessInfo):

  • UIProcess/UserMediaPermissionCheckProxy.h:

(WebKit::UserMediaPermissionCheckProxy::create):
(WebKit::UserMediaPermissionCheckProxy::userMediaDocumentSecurityOrigin):
(WebKit::UserMediaPermissionCheckProxy::topLevelDocumentSecurityOrigin):
(WebKit::UserMediaPermissionCheckProxy::completionHandler):

  • UIProcess/UserMediaPermissionRequestManagerProxy.cpp:

(WebKit::FrameAuthorizationState::FrameAuthorizationState):
(WebKit::FrameAuthorizationState::ensureSecurityOriginsAreEqual):
(WebKit::UserMediaPermissionRequestManagerProxy::createRequest):
(WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame):
(WebKit::UserMediaPermissionRequestManagerProxy::getUserMediaPermissionInfo):
(WebKit::UserMediaPermissionRequestManagerProxy::enumerateMediaDevicesForFrame):

  • UIProcess/UserMediaPermissionRequestManagerProxy.h:
  • UIProcess/UserMediaPermissionRequestProxy.cpp:

(WebKit::UserMediaPermissionRequestProxy::UserMediaPermissionRequestProxy):

  • UIProcess/UserMediaPermissionRequestProxy.h:

(WebKit::UserMediaPermissionRequestProxy::create):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::requestUserMediaPermissionForFrame):
(WebKit::WebPageProxy::enumerateMediaDevicesForFrame):
(WebKit::WebPageProxy::requestNotificationPermission):

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:

(WebKit::UserMediaPermissionRequestManager::sendUserMediaRequest):
(WebKit::UserMediaPermissionRequestManager::enumerateMediaDevices):

3:27 PM Changeset in webkit [216951] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

Captions and subtitles not showing up in picture-in-picture for MSE content.
https://bugs.webkit.org/show_bug.cgi?id=172145

Patch by Jeremy Jones <jeremyj@apple.com> on 2017-05-16
Reviewed by Eric Carlson.

No new tests as this has no affect on the DOM.

Add TextTrackRepresentation code from MediaPlayerPrivateAVFoundationObj to MediaPlayerPrivateMediaSourceAVFObjc.
This moves the TextTrackRepresentation platfrom layer into the fullscreen container layer when going into
pip for fullscreen, allowing the captions to be visible.

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:

(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::ensureLayer):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::setVideoFullscreenLayer):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::setVideoFullscreenFrame):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::requiresTextTrackRepresentation):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::syncTextTrackBounds):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::setTextTrackRepresentation):

3:27 PM Changeset in webkit [216950] by jmarcell@apple.com
  • 7 edits in branches/safari-604.1.21-branch/Source

Versioning.

3:20 PM Changeset in webkit [216949] by ddkilzer@apple.com
  • 2 edits in trunk/Source/WebCore

WebCore::leakCGColor() needs CF_RETURNS_RETAINED annotation
<https://webkit.org/b/172190>

Reviewed by Simon Fraser.

  • platform/graphics/cg/ColorCG.cpp:

(WebCore::leakCGColor): Annotate with CF_RETURNS_RETAINED since
it does not follow the CF naming convention, which means the
expected behavior can't be inferred by the clang static
analyzer.

2:54 PM Changeset in webkit [216948] by Yusuke Suzuki
  • 4 edits
    1 add in trunk

[DFG] Constant Folding Phase should convert MakeRope("", String) => Identity(String)
https://bugs.webkit.org/show_bug.cgi?id=172115

Reviewed by Saam Barati.

JSTests:

  • stress/constant-folding-should-fold-make-rope-with-empty-strings.js: Added.

(shouldBe):
(unknown):
(readWord1):
(readWord2):
(readWord3):
(readWord4):

Source/JavaScriptCore:

In Fixup phase, we attempt to fold MakeRope to Identity (or reduce arguments) by dropping
empty strings. However, when we are in Fixup phase, we do not have much information about
constant values.

In ARES-6 Babylon, we find that we can constant-fold MakeRope by using constants figured
out by CFA. Without it, Babylon repeatedly produces rope strings. To fix this, we introduce
MakeRope handling in constant folding phase.

It shows 7.5% performance improvement in ARES-6 Babylon steadyState.

Before:

firstIteration: 50.02 +- 14.56 ms
averageWorstCase: 26.52 +- 4.52 ms
steadyState: 8.15 +- 0.23 ms

After:

firstIteration: 49.08 +- 12.90 ms
averageWorstCase: 25.16 +- 3.82 ms
steadyState: 7.58 +- 0.21 ms

  • dfg/DFGAbstractInterpreterInlines.h:

(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):

  • dfg/DFGConstantFoldingPhase.cpp:

(JSC::DFG::ConstantFoldingPhase::foldConstants):

2:18 PM Changeset in webkit [216947] by commit-queue@webkit.org
  • 5 edits in trunk/Source

RealtimeOutgoingVideoSource should support sinkWants for rotation
https://bugs.webkit.org/show_bug.cgi?id=172123
<rdar://problem/32200017>

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

Source/ThirdParty/libwebrtc:

  • Source/webrtc/api/video/i420_buffer.h: Exporting rotate routine.

Source/WebCore:

Covered by manual testing.

  • platform/mediastream/mac/RealtimeOutgoingVideoSource.cpp:

(WebCore::RealtimeOutgoingVideoSource::AddOrUpdateSink): Triggering pixel rotation based on sink.
(WebCore::RealtimeOutgoingVideoSource::sendFrame): Doing the rotation using libwebrtc API.

  • platform/mediastream/mac/RealtimeOutgoingVideoSource.h:
2:16 PM Changeset in webkit [216946] by commit-queue@webkit.org
  • 12 edits
    8 adds in trunk/PerformanceTests

Update to Speedometer 2.0 w/updated frameworks + new workloads
https://bugs.webkit.org/show_bug.cgi?id=170513

Patch by Addy Osmani <addyosmani@gmail.com> on 2017-05-16
Reviewed by Ryosuke Niwa.

Refresh test runner and fix apps to work with it.

  • Speedometer/InteractiveRunner.html:

(parseQueryString): Adds support for startAutomatically query parameter.

  • Speedometer/resources/tests.js:

(triggerEnter): Refactor event triggering behavior for tests.

  • Speedometer/resources/todomvc/architecture-examples/angular/dist/index.html:

(CSS): Drop reference to extraneous stylesheet in Angular TodoMVC.

  • Speedometer/resources/todomvc/architecture-examples/emberjs/assets/todomvc.js:
  • Speedometer/resources/todomvc/architecture-examples/emberjs/index.html:

(base): Enable Ember TodoMVC to be run from any directory/level.

  • Speedometer/resources/todomvc/architecture-examples/emberjs/source/app/services/memory.js:

(localStorageMemory): Correct import path and switch to window.localStorageMemory to fix Ember failures.

  • Speedometer/resources/todomvc/architecture-examples/emberjs/source/app/services/repo.js:
  • Speedometer/resources/todomvc/architecture-examples/emberjs/tests/index.html:
  • Speedometer/resources/todomvc/architecture-examples/jquery/index.html:
  • Speedometer/resources/todomvc/architecture-examples/jquery/node_modules/director/LICENSE: Added.

(LICENSE): Add missing metadata and LICENSE files as part of director.js package for jQuery TodoMVC

  • Speedometer/resources/todomvc/architecture-examples/jquery/node_modules/director/bower.json: Added.
  • Speedometer/resources/todomvc/architecture-examples/jquery/node_modules/director/dist/director.js: Add missing

director.js dependency for jQuery TodoMVC implementation.

  • Speedometer/resources/todomvc/architecture-examples/jquery/node_modules/director/dist/director.min.js: Added.
  • Speedometer/resources/todomvc/architecture-examples/jquery/node_modules/director/dist/ender.js: Added.
  • Speedometer/resources/todomvc/architecture-examples/jquery/node_modules/director/package.json: Added.
  • Speedometer/resources/todomvc/functional-prog-examples/elm/index.html: Fix path to built Elm TodoMVC scripts.
2:02 PM Changeset in webkit [216945] by ddkilzer@apple.com
  • 2 edits in trunk/Source/WebKit2

Unused lambdas in UserMediaPermissionRequestManagerProxy.cpp
<https://webkit.org/b/172179>

Reviewed by Eric Carlson.

Fixes unused lambda warnings found with newer clang:

Source/WebKit2/UIProcess/UserMediaPermissionRequestManagerProxy.cpp:309:46: error: lambda capture 'userMediaID' is not used [-Werror,-Wunused-lambda-capture]

auto validateConstraintsHandler = [this, userMediaID, validHandler = WTFMove(validHandler), invalidHandler = WTFMove(invalidHandler), audioConstraints = WebCore::MediaConstraints(audioConstraints), videoConstraints = WebCore::MediaConstraints(videoConstraints)](String&& deviceIdentifierHashSalt) mutable {


Source/WebKit2/UIProcess/UserMediaPermissionRequestManagerProxy.cpp:318:41: error: lambda capture 'userMediaID' is not used [-Werror,-Wunused-lambda-capture]

auto haveDeviceSaltHandler = [this, userMediaID, frameID, validateConstraintsHandler = WTFMove(validateConstraintsHandler)](uint64_t userMediaID, String&& deviceIdentifierHashSalt, bool originHasPersistentAccess) mutable {


Source/WebKit2/UIProcess/UserMediaPermissionRequestManagerProxy.cpp:318:54: error: lambda capture 'frameID' is not used [-Werror,-Wunused-lambda-capture]

auto haveDeviceSaltHandler = [this, userMediaID, frameID, validateConstraintsHandler = WTFMove(validateConstraintsHandler)](uint64_t userMediaID, String&& deviceIdentifierHashSalt, bool originHasPersistentAccess) mutable {


Source/WebKit2/UIProcess/UserMediaPermissionRequestManagerProxy.cpp:362:37: error: lambda capture 'userMediaID' is not used [-Werror,-Wunused-lambda-capture]

auto completionHandler = [this, userMediaID](uint64_t userMediaID, String&& deviceIdentifierHashSalt, bool originHasPersistentAccess) {


  • UIProcess/UserMediaPermissionRequestManagerProxy.cpp:

(WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame):
(WebKit::UserMediaPermissionRequestManagerProxy::enumerateMediaDevicesForFrame):

  • Remove unused lambdas.
1:26 PM Changeset in webkit [216944] by mmaxfield@apple.com
  • 23 edits
    4 copies
    10 adds in trunk

REGRESSION(r212513): LastResort is platform-dependent, so its semantics should not be required to perform font loading correctly.
https://bugs.webkit.org/show_bug.cgi?id=168487

Reviewed by Antti Koivisto.

Source/WebCore:

There are three ways a Web author can chain multiple font files together:

  1. Multiple entries in the "src" descriptor in an @font-face rule
  2. Multiple @font-face rules with the same "font-family" descriptor
  3. Multiple entries in the "font-family" property on an element

Before r212513, the code which iterated across #2 and #3 above could have
triggered each item in the chain to download. r212513 tried to solve this
by using LastResort as the interstitial font used during downloads, because
LastResort supports every character and therefore solves #3 above. However,
this change had a few problems:

  1. Previously, our code would try to avoid using the interstitial font for

layout or rendering whenever possible (because one of the chains above may
have named a local font which would be better to use). In order to use the
benefits of LastResort, I had to remove this avoidance logic and make
WebKit try to use the interstitial font as often as possible. However, due
to the large metrics of LastResort, this means that offsetWidth queries
during font loading would be wildly inaccurate, causing Google Docs to break.

  1. It also means that canvas drawing during font loading would actually draw

LastResort, causing Bing maps to break.

  1. LastResort is platform-specific, so only platforms which have it would

actually be able to load fonts correctly.

Instead, we should keep the older logic about avoiding using the
interstitial font so that loading has a better experience for the user.
We solve the unnecessary download problem by giving our loading code a
downloading policy enum, which has two values: allow downloads or forbid
downloads. Whenever our loading code returns the interstitial font, we
continue our search, but we change the policy to forbid downloads.

There is one piece of subtlety, though: It is more common for web authors
to put good fallbacks in the "font-family" property than in the "src"
descriptor inside @font-face. This means that we shouldn't exhaustively
search through the @font-face src list first. Instead, we should look
through the src list until we hit a non-local font, and then immediately
start looking through the other other chains.

Tests: fast/text/font-download-font-face-src-list.html

fast/text/font-download-font-family-property.html
fast/text/font-download-remote-fallback-all.html
fast/text/font-interstitial-invisible-width-while-loading.html
fast/text/font-weight-download-3.html
fast/text/web-font-load-fallback-during-loading-2.html
fast/text/web-font-load-invisible-during-loading.html

  • css/CSSFontFace.cpp:

(WebCore::CSSFontFace::fontLoadEventOccurred): Implement support for
the font download policy.
(WebCore::CSSFontFace::setStatus): After 3 seconds of loading, we
will start drawing the fallback font. However, for testing, we have an
internal setting to make this switch happen immediately. This patch now
requires that this internal switch happen synchronously.
(WebCore::CSSFontFace::pump): Implement support for the font download
policy.
(WebCore::CSSFontFace::load): Ditto.
(WebCore::CSSFontFace::font): Ditto.

  • css/CSSFontFace.h: Ditto.
  • css/CSSFontSelector.cpp:

(WebCore::CSSFontSelector::beginLoadingFontSoon): Implement support for
synchronous font download timeouts.

  • css/CSSSegmentedFontFace.cpp:

(WebCore::CSSSegmentedFontFace::fontRanges): Implement support for the
font download policy.

  • platform/graphics/Font.cpp: Add new flag which represents if the

interstitial font was created after the 3 second timeout or before.
Previously, we would distinguish between these two cases by knowing
that one font was LastResort and the other font was a fallback. Now that
we're using fallback fonts on both sides of the 3 second timeout, we
now no longer know which one should be invisible. This new enum solves
this problem.
(WebCore::Font::Font):
(WebCore::Font::verticalRightOrientationFont):
(WebCore::Font::uprightOrientationFont):

  • platform/graphics/Font.h: Ditto.

(WebCore::Font::create):
(WebCore::Font::origin):
(WebCore::Font::visibility):

  • platform/graphics/FontCache.h:
  • platform/graphics/FontCascade.cpp: We try to fall back to a local() font

during downloads, but there might not be one that we can use. Therefore, we
can't use the presence of the interstitial font to detect if we should paint
invisibly. Instead, we can move this logic into the font-specific part of
painting, and consult with the specific font to know if it was created from
a timed-out @font-face rule or not.
(WebCore::FontCascade::drawText):
(WebCore::shouldDrawIfLoading):
(WebCore::FontCascade::drawGlyphBuffer):
(WebCore::FontCascade::drawEmphasisMarks):

  • platform/graphics/FontCascade.h:
  • platform/graphics/FontCascadeFonts.cpp:

(WebCore::FontCascadeFonts::glyphDataForVariant): Implement the logic
described above where we switch the policy if we encounter the intestitial
font.
(WebCore::FontCascadeFonts::glyphDataForNormalVariant): Ditto.
(WebCore::glyphPageFromFontRanges): Ditto.

  • platform/graphics/FontRanges.cpp: Implement support for the font download

policy.
(WebCore::FontRanges::Range::font):
(WebCore::FontRanges::glyphDataForCharacter):
(WebCore::FontRanges::fontForCharacter):
(WebCore::FontRanges::fontForFirstRange):

  • platform/graphics/FontRanges.h:
  • platform/graphics/FontSelector.h:
  • platform/graphics/freetype/FontCacheFreeType.cpp:

(WebCore::FontCache::lastResortFallbackFontForEveryCharacter): Deleted.

  • platform/graphics/mac/FontCacheMac.mm:

(WebCore::FontCache::lastResortFallbackFontForEveryCharacter): Deleted.

  • platform/graphics/win/FontCacheWin.cpp:

(WebCore::FontCache::lastResortFallbackFontForEveryCharacter): Deleted.

LayoutTests:

  • fast/text/font-download-font-face-src-list-expected.txt: Added.
  • fast/text/font-download-font-face-src-list.html: Copied from LayoutTests/fast/text/font-weight-download-2.html.
  • fast/text/font-download-font-family-property-expected.txt: Added.
  • fast/text/font-download-font-family-property.html: Copied from LayoutTests/fast/text/font-weight-download-2.html.
  • fast/text/font-download-remote-fallback-all-expected.txt: Added.
  • fast/text/font-download-remote-fallback-all.html: Copied from LayoutTests/fast/text/font-weight-download-2.html.
  • fast/text/font-interstitial-invisible-width-while-loading-expected.txt: Added.
  • fast/text/font-interstitial-invisible-width-while-loading.html: Added.
  • fast/text/font-weight-download-2.html:
  • fast/text/font-weight-download-3-expected.txt: Added.
  • fast/text/font-weight-download-3.html: Copied from LayoutTests/fast/text/font-weight-download-2.html.
  • fast/text/web-font-load-fallback-during-loading-2-expected.html: Added.
  • fast/text/web-font-load-fallback-during-loading-2.html: Added.
  • fast/text/web-font-load-fallback-during-loading-expected.html:
  • fast/text/web-font-load-fallback-during-loading.html:
  • fast/text/web-font-load-invisible-during-loading-expected.txt: Added.
  • fast/text/web-font-load-invisible-during-loading.html: Added.
  • http/tests/webfont/fallback-font-while-loading-expected.txt:
  • http/tests/webfont/fallback-font-while-loading.html:
12:54 PM Changeset in webkit [216943] by Brent Fulgham
  • 2 edits in trunk/Source/WebKit2

[WK2][macOS] Support Flash Player DRM features
https://bugs.webkit.org/show_bug.cgi?id=172157
<rdar://problem/31889297>

Reviewed by Dean Jackson.

Relax the IOKit whitelist to support DRM features needed by
some websites.

  • PluginProcess/mac/com.apple.WebKit.plugin-common.sb.in:
12:36 PM Changeset in webkit [216942] by rniwa@webkit.org
  • 2 edits in trunk/Websites/perf.webkit.org

Another build fix. Added a missing null check.

  • public/v3/components/custom-analysis-task-configurator.js:

(CustomAnalysisTaskConfigurator.prototype._setUploadedFilesIfEmpty):

12:09 PM Changeset in webkit [216941] by Brent Fulgham
  • 5 edits in trunk/Source/WebKit2

[WK2][macOS] Adopt a whitelist for XPC services
https://bugs.webkit.org/show_bug.cgi?id=172151
<rdar://problem/31916325>

Reviewed by Alex Christensen.

  • DatabaseProcess/mac/com.apple.WebKit.Databases.sb.in:
  • NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in:
  • PluginProcess/mac/com.apple.WebKit.plugin-common.sb.in:
  • WebProcess/com.apple.WebProcess.sb.in:
12:01 PM Changeset in webkit [216940] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

Simple line layout: Move setCollapedWhitespaceWidth call to updateLineConstrains.
https://bugs.webkit.org/show_bug.cgi?id=172178

Reviewed by Antti Koivisto.

No change in functionality.

  • rendering/SimpleLineLayout.cpp:

(WebCore::SimpleLineLayout::updateLineConstrains):
(WebCore::SimpleLineLayout::createLineRuns):

11:43 AM Changeset in webkit [216939] by jmarcell@apple.com
  • 1 copy in tags/Safari-604.1.21.4

Tag Safari-604.1.21.4.

11:27 AM Changeset in webkit [216938] by eric.carlson@apple.com
  • 4 edits
    2 adds
    2 deletes in trunk

[MediaStream] Return default device list until user gives permission to capture
https://bugs.webkit.org/show_bug.cgi?id=172168
<rdar://problem/31816884>

Reviewed by Youenn Fablet.

Source/WebCore:

Test: fast/mediastream/media-devices-enumerate-devices.html

  • Modules/mediastream/MediaDevicesRequest.cpp:

(WebCore::MediaDevicesRequest::filterDeviceList): Remove all but the "default" number of
devices of each type.
(WebCore::MediaDevicesRequest::start): Call filterDeviceList.

  • Modules/mediastream/MediaDevicesRequest.h:

LayoutTests:

  • fast/mediastream/MediaDevices-enumerateDevices-expected.txt: Removed.
  • fast/mediastream/MediaDevices-enumerateDevices.html: Removed.
  • fast/mediastream/media-devices-enumerate-devices-expected.txt: Added.
  • fast/mediastream/media-devices-enumerate-devices.html: Added.
11:18 AM Changeset in webkit [216937] by Claudio Saavedra
  • 4 edits in trunk/Source/WebCore

Silent a few warnings about unused parameters
https://bugs.webkit.org/show_bug.cgi?id=172169

Reviewed by Sam Weinig.

  • page/Page.cpp:

(WebCore::Page::mainFrameLoadStarted):

  • platform/graphics/cairo/ImageBufferCairo.cpp:

(WebCore::ImageBuffer::toData):

  • platform/network/ResourceRequestBase.cpp:

(WebCore::ResourceRequestBase::partitionName):

10:52 AM Changeset in webkit [216936] by Wenson Hsieh
  • 2 edits in trunk/Source/WebCore

WebItemProviderPasteboard should be robust when temporary files are missing path extensions
https://bugs.webkit.org/show_bug.cgi?id=172170

Reviewed by Tim Horton.

Makes a slight adjustment to the temporary file URLs are handled when using WebItemProviderPasteboard to load
data off of item providers. Previously, we would bail early and not load any data if the temporary URL is
missing an extension. Since the switch to NSItemProviders from UIItemProviders, some types of temporary files
generated by item providers are missing extensions, so this extra check is meaningless.

Covered by existing data interaction unit tests.

  • platform/ios/WebItemProviderPasteboard.mm:

(temporaryFileURLForDataInteractionContent):
(-[WebItemProviderPasteboard doAfterLoadingProvidedContentIntoFileURLs:synchronousTimeout:]):

10:20 AM Changeset in webkit [216935] by timothy_horton@apple.com
  • 6 edits in trunk

Make it possible to adjust which edges are affected by safe area insets
https://bugs.webkit.org/show_bug.cgi?id=172149
<rdar://problem/31564729>

Reviewed by Beth Dakin.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _initializeWithConfiguration:]):
(-[WKWebView _computedContentInset]):
(-[WKWebView _obscuredInsetEdgesAffectedBySafeArea]):
(-[WKWebView _setObscuredInsetEdgesAffectedBySafeArea:]):

  • UIProcess/API/Cocoa/WKWebViewPrivate.h:

Add SPI to adjust which edges are taken into account, and adjust the default.

  • fast/viewport/ios/viewport-fit-auto-expected.txt:
  • fast/viewport/ios/viewport-fit-contain-expected.txt:
10:12 AM Changeset in webkit [216934] by mark.lam@apple.com
  • 3 edits in trunk/LayoutTests

Gardening: rebased parser-syntax-check test results after r216891.
https://bugs.webkit.org/show_bug.cgi?id=172171

Not reviewed.

  • js/parser-syntax-check-expected.txt:
  • js/script-tests/parser-syntax-check.js:
9:19 AM Changeset in webkit [216933] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Skip LayoutTest media/restricted-audio-playback-with-document-gesture.html on iOS.

Unreviewed test gardening.

  • platform/ios/TestExpectations:
8:30 AM Changeset in webkit [216932] by Adrian Perez de Castro
  • 2 edits in trunk/Tools

Patch

8:08 AM Changeset in webkit [216931] by Claudio Saavedra
  • 9 edits in trunk

[GTK] Tests that always pass when run alone, but fail in the bots
https://bugs.webkit.org/show_bug.cgi?id=168572

Reviewed by Michael Catanzaro.

PlatformWebView::viewSupportsOptions() is basically a comparison
that checks that the passed options are the ones supported by the
web view. There is no reason for them to be implemented for each
platform differently. In fact doing so causes issues each time a
new option is added, if the corresponding platform implementation
is not updated accordingly.

A consequence of not updating the viewSupportOptions()
implementations when new options are added is that tests that need
these options might fail if they are executed after a test that
didn't need the option, as the webview will be reused even if the
option is not supported. This cannot be spotted when running the
tests individually. See bug #165133 for other example of the same
problem.

Remove the platform implementations and make the comparison a
method of the TestOptions structure, so that the check is in one
Tools:

place. For the time being, only include in the comparison the
options that were checked in the mac platform, which seem to be
the only ones relevant this far (unless newer ones have also been
forgotten).

  • WebKitTestRunner/PlatformWebView.h:

(WTR::PlatformWebView::viewSupportsOptions): Use the method
defined below.

  • WebKitTestRunner/TestOptions.h:

(WTR::TestOptions::hasSameInitializationOptions): Added.

  • WebKitTestRunner/gtk/PlatformWebViewGtk.cpp:

(WTR::PlatformWebView::viewSupportsOptions): Deleted.

  • WebKitTestRunner/ios/PlatformWebViewIOS.mm:

(WTR::PlatformWebView::viewSupportsOptions): Deleted.

  • WebKitTestRunner/mac/PlatformWebViewMac.mm:

(WTR::PlatformWebView::viewSupportsOptions): Deleted.

  • WebKitTestRunner/wpe/PlatformWebViewWPE.cpp:

(WTR::PlatformWebView::viewSupportsOptions): Deleted.

LayoutTests:

place. For the time being include in the comparison the options
checked in the mac and ios platforms, which seem to be the only
ones relevant this far (unless newer ones have also been
forgotten).

  • platform/gtk/TestExpectations: Unskip an affected test.
6:04 AM Changeset in webkit [216930] by zandobersek@gmail.com
  • 2 edits in trunk/Source/WebCore

[WPE] GLContextEGL::createWPEContext() should fall back to pbuffer-based contexts when offscreen target provides no native window
https://bugs.webkit.org/show_bug.cgi?id=172162

Reviewed by Carlos Garcia Campos.

When creating an offscreen GLContext, the underlying implementation might
provide a mock native window that's to be used as the window target upon
which a window-based GLContext should be created. But we should also support
falling back to pbuffer-based GLContexts when the underlying implementation
can't provide such mock targets.

  • platform/graphics/egl/GLContextEGLWPE.cpp:

(WebCore::GLContextEGL::createWPEContext):

5:57 AM Changeset in webkit [216929] by zandobersek@gmail.com
  • 2 edits in trunk/Source/WebKit2

[GLib] Use RunLoopSourcePriority::RunLoopDispatcher as the GSocketMonitor's GSource priority
https://bugs.webkit.org/show_bug.cgi?id=172160

Reviewed by Carlos Garcia Campos.

  • Platform/IPC/glib/GSocketMonitor.cpp:

(IPC::GSocketMonitor::start): Explicitly set the priority for the GSocketMonitor's
GSource object to RunLoopSourcePriority::RunLoopDispatcher, equating it to the
priority that's used in RunLoop for dispatches of the queued functions.

5:51 AM Changeset in webkit [216928] by zandobersek@gmail.com
  • 2 edits in trunk

[WPE] Set and expose ENABLE_DEVELOPER_MODE in build when DEVELOPER_MODE is enabled
https://bugs.webkit.org/show_bug.cgi?id=172159

Reviewed by Carlos Garcia Campos.

  • Source/cmake/OptionsWPE.cmake: Expose the ENABLE_DEVELOPER_MODE macro

when the DEVELOPER_MODE configuration options is enabled.

5:49 AM Changeset in webkit [216927] by zandobersek@gmail.com
  • 6 edits in trunk/Source

[GLib] Name more GSource-based RunLoop::Timers
https://bugs.webkit.org/show_bug.cgi?id=172158

Reviewed by Carlos Garcia Campos.

Source/WebCore:

  • platform/glib/MainThreadSharedTimerGLib.cpp:

(WebCore::MainThreadSharedTimer::MainThreadSharedTimer):
Specify 'MainThreadSharedTimer' as the name of this GSource-based RunLoop::Timer.

Source/WebKit2:

  • Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.cpp:

(WebKit::CompositingRunLoop::CompositingRunLoop):
Specify 'CompositingRunLoop' as the name of this GSource-based RunLoop::Timer.

  • Shared/CoordinatedGraphics/threadedcompositor/ThreadedDisplayRefreshMonitor.cpp:

(WebKit::ThreadedDisplayRefreshMonitor::ThreadedDisplayRefreshMonitor):
Specify 'ThreadedDisplayRefreshMonitor' as the name of this GSource-based RunLoop::Timer.

  • WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp:

(WebKit::CoordinatedLayerTreeHost::CoordinatedLayerTreeHost):
Specify 'CoordinatedLayerTreeHost' as the name of this GSource-based RunLoop::Timer.

5:47 AM Changeset in webkit [216926] by commit-queue@webkit.org
  • 9 edits in trunk

[Readable Streams API] Implement ReadableStreamBYOBReader releaseLock()
https://bugs.webkit.org/show_bug.cgi?id=172111

Patch by Romain Bellessort <romain.bellessort@crf.canon.fr> on 2017-05-16
Reviewed by Chris Dumez.

LayoutTests/imported/w3c:

Updated test expectations.

  • web-platform-tests/streams/readable-byte-streams/general-expected.txt: Updated.
  • web-platform-tests/streams/readable-byte-streams/general.dedicatedworker-expected.txt: Updated.

Source/WebCore:

Implemented ReadableStreamBYOBReader releaseLock():

Added tests to check releaseLock behavior.

  • Modules/streams/ReadableStreamBYOBReader.js:

(releaseLock): Implemented.

  • Modules/streams/ReadableStreamInternals.js:

(readableStreamReaderGenericRelease): Aligned with spec.

LayoutTests:

Added tests to check releaseLock() behavior.

  • streams/readable-stream-byob-reader-expected.txt: Updated.
  • streams/readable-stream-byob-reader.js: Added new tests.
3:32 AM Changeset in webkit [216925] by pvollan@apple.com
  • 2 edits in trunk/LayoutTests

Unreviewed Windows gardening. Skip svg animation test, since image throttling behaves differently on WK1.

  • platform/win/TestExpectations:
2:40 AM Changeset in webkit [216924] by Yusuke Suzuki
  • 1 edit
    1 add in trunk/Source/JavaScriptCore

Unreviewed, add Objective C files to CMake Mac port
https://bugs.webkit.org/show_bug.cgi?id=172103

  • shell/PlatformMac.cmake: Added.
2:37 AM Changeset in webkit [216923] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebKit2

Unreviewed. Revert change committed by mistakle in r216922.

  • Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:

(WebKit::ThreadedCompositor::forceRepaint):

2:35 AM Changeset in webkit [216922] by Carlos Garcia Campos
  • 7 edits in trunk

Unreviewed GTK+ gardening. Rebaseline tests after r216817.

  • platform/gtk/fast/multicol/client-rects-expected.txt:
  • platform/gtk/fast/multicol/client-rects-spanners-complex-expected.txt:
  • platform/gtk/fast/multicol/client-rects-spanners-expected.txt:
  • platform/gtk/fast/multicol/newmulticol/client-rects-expected.txt:
  • platform/gtk/fast/transforms/bounding-rect-zoom-expected.txt:
2:24 AM Changeset in webkit [216921] by jfbastien@apple.com
  • 4 edits
    1 add in trunk/Source/JavaScriptCore

WebAssembly: enforce size limits
https://bugs.webkit.org/show_bug.cgi?id=165833
<rdar://problem/29760219>

Reviewed by Keith Miller.

Use the same limits as V8.

  • JavaScriptCore.xcodeproj/project.pbxproj:
  • wasm/WasmLimits.h: Added.
  • wasm/WasmModuleParser.cpp:
  • wasm/WasmParser.h:

(JSC::Wasm::Parser<SuccessType>::consumeUTF8String):

2:10 AM Changeset in webkit [216920] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebCore

Unreviewed. Try to fix GTK+ build with MEDIA_STREAM enabled after r216918.

  • platform/mediastream/openwebrtc/RealtimeMediaSourceCenterOwr.cpp:

(WebCore::RealtimeMediaSourceCenterOwr::validateRequestConstraints):

1:53 AM Changeset in webkit [216919] by Carlos Garcia Campos
  • 2 edits in trunk/LayoutTests

Unreviewed GTK+ gardening. Update expectations of several WebRTC tests.

  • platform/gtk/TestExpectations:
1:51 AM Changeset in webkit [216918] by commit-queue@webkit.org
  • 34 edits
    2 deletes in trunk/Source

Remove MediaConstraintsData and MediaConstraintsImpl
https://bugs.webkit.org/show_bug.cgi?id=172132

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

Source/WebCore:

No observable change of behavior.

Removing MediaConstraintsData and MediaConstraintsImpl allows simplifying the code.
Further simplified the code by making MediaConstraints no longer ref counted and now a struct.
Simplified some RealtimeMediaSource subclasses by removing unused MediaConstraints class members.

  • CMakeLists.txt: Removing MediaConstraintsImpl.cpp.
  • Modules/mediastream/MediaConstraintsImpl.cpp: Removed.
  • Modules/mediastream/MediaConstraintsImpl.h: Removed.
  • Modules/mediastream/MediaDevices.cpp:

(WebCore::createMediaConstraints):
(WebCore::MediaDevices::getUserMedia):
(WebCore::createMediaConstraintsImpl): Deleted.

  • Modules/mediastream/MediaStreamTrack.cpp:

(WebCore::createMediaConstraints):
(WebCore::MediaStreamTrack::applyConstraints):
(WebCore::createMediaConstraintsImpl): Deleted.

  • Modules/mediastream/MediaTrackConstraints.cpp:

(WebCore::createMediaConstraints):
(WebCore::createMediaConstraintsImpl): Deleted.

  • Modules/mediastream/MediaTrackConstraints.h:
  • Modules/mediastream/UserMediaRequest.cpp:

(WebCore::UserMediaRequest::start):
(WebCore::UserMediaRequest::UserMediaRequest):
(WebCore::UserMediaRequest::allow):

  • Modules/mediastream/UserMediaRequest.h:

(WebCore::UserMediaRequest::audioConstraints):
(WebCore::UserMediaRequest::videoConstraints):

  • WebCore.xcodeproj/project.pbxproj:
  • platform/mediastream/MediaConstraints.cpp:

(WebCore::addDefaultVideoConstraints):
(WebCore::MediaConstraints::isConstraintSet):
(WebCore::MediaConstraints::setDefaultVideoConstraints):

  • platform/mediastream/MediaConstraints.h:

(WebCore::MediaConstraints::~MediaConstraints): Deleted.
(WebCore::MediaConstraints::MediaConstraints): Deleted.

  • platform/mediastream/MediaStreamConstraintsValidationClient.h:
  • platform/mediastream/RealtimeMediaSource.cpp:

(WebCore::RealtimeMediaSource::selectSettings):
(WebCore::RealtimeMediaSource::supportsConstraints):
(WebCore::RealtimeMediaSource::applyConstraints):

  • platform/mediastream/RealtimeMediaSourceCenter.cpp:

(WebCore::RealtimeMediaSourceCenter::validateRequestConstraints):

  • platform/mediastream/RealtimeMediaSourceCenter.h:
  • platform/mediastream/mac/RealtimeIncomingAudioSource.cpp:

(WebCore::RealtimeIncomingAudioSource::supportedConstraints): Deleted.

  • platform/mediastream/mac/RealtimeIncomingAudioSource.h:
  • platform/mediastream/mac/RealtimeIncomingVideoSource.cpp:

(WebCore::RealtimeIncomingVideoSource::supportedConstraints): Deleted.

  • platform/mediastream/mac/RealtimeIncomingVideoSource.h:
  • platform/mock/MockRealtimeMediaSource.h:

(WebCore::MockRealtimeMediaSource::constraints): Deleted.

Source/WebKit2:

Removing MediaConstraintsData and MediaConstraintsImpl allows simplifying the code.
Further simplified the code by making MediaConstraints no longer ref counted and now a struct.

  • Scripts/webkit/messages.py:

(headers_for_type):

  • Shared/WebCoreArgumentCoders.cpp:

(IPC::ArgumentCoder<MediaConstraints>::encode):
(IPC::ArgumentCoder<MediaConstraints>::decode):
(IPC::ArgumentCoder<MediaConstraintsData>::encode): Deleted.
(IPC::ArgumentCoder<MediaConstraintsData>::decode): Deleted.

  • Shared/WebCoreArgumentCoders.h:
  • UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:

(WebKit::UserMediaCaptureManagerProxy::createMediaSourceForCaptureDeviceWithConstraints):
(WebKit::UserMediaCaptureManagerProxy::applyConstraints):

  • UIProcess/Cocoa/UserMediaCaptureManagerProxy.h:
  • UIProcess/Cocoa/UserMediaCaptureManagerProxy.messages.in:
  • UIProcess/UserMediaPermissionRequestManagerProxy.cpp:

(WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame):

  • UIProcess/UserMediaPermissionRequestManagerProxy.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::requestUserMediaPermissionForFrame):

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:

(WebKit::UserMediaPermissionRequestManager::sendUserMediaRequest):

  • WebProcess/cocoa/UserMediaCaptureManager.cpp:

(WebKit::UserMediaCaptureManager::applyConstraints):

1:03 AM Changeset in webkit [216917] by aestes@apple.com
  • 3 edits in trunk/Source/WebCore

[Cocoa] Tell NEFilterSource about the presenting app's PID
https://bugs.webkit.org/show_bug.cgi?id=172152
<rdar://problem/32197740>

Reviewed by Dan Bernstein.

  • platform/cocoa/NetworkExtensionContentFilter.mm:

(WebCore::NetworkExtensionContentFilter::initialize):

  • platform/spi/cocoa/NEFilterSourceSPI.h:
12:50 AM Changeset in webkit [216916] by Manuel Rego Casasnovas
  • 4 edits in trunk

[css-grid] Fix static position of positioned grid items
https://bugs.webkit.org/show_bug.cgi?id=172108

Reviewed by Sergio Villar Senin.

Source/WebCore:

This patch makes us follow the text on the spec
(https://drafts.csswg.org/css-grid/#static-position):
"The static position of an absolutely-positioned child

of a grid container is determined as if it were the sole grid item
in a grid area whose edges coincide with the padding edges
of the grid container."

Test: fast/css-grid-layout/absolute-positioning-grid-container-parent.html

  • rendering/RenderGrid.cpp:

(WebCore::RenderGrid::prepareChildForPositionedLayout): Modified to avoid
including padding to match the spec behavior.

LayoutTests:

The test is updated as the expected results were wrong.
Note that after this patch we match Chrome and Firefox behavior on this test.

  • fast/css-grid-layout/absolute-positioning-grid-container-parent.html:
12:44 AM Changeset in webkit [216915] by Michael Catanzaro
  • 3 edits in trunk/Source/WebKit2

[SOUP] Remove LATEST_RECORD_VERSION from GnuTLS priority string
https://bugs.webkit.org/show_bug.cgi?id=172153

Based on discussion with Nikos in https://bugzilla.gnome.org/show_bug.cgi?id=782218, we
should remove LATEST_RECORD_VERSION from our GnuTLS priority string. This causes GnuTLS to
use the latest TLS record version (the record format is separate from the TLS protocol
version), which we needed a couple years ago (after dropping SSLv3) for maximum
compatibility with broken web servers. But it's not needed anymore, and is causing new
compatibility problems with other broken web servers, so let's get rid of it.

Reviewed by Carlos Garcia Campos.

  • NetworkProcess/EntryPoint/unix/NetworkProcessMain.cpp:

(main):

  • WebProcess/EntryPoint/unix/WebProcessMain.cpp:

(main):

12:27 AM Changeset in webkit [216914] by Yusuke Suzuki
  • 15 edits in trunk

[JSC] Build testapi in non Apple ports
https://bugs.webkit.org/show_bug.cgi?id=172103

Reviewed by Filip Pizlo.

Source/JavaScriptCore:

This patch makes JSC testapi buildable in non-Apple ports.
We isolate CF related tests in testapi.c. If we do not use
CF, we include JavaScript.h instead of JavaScriptCore.h.

By running the testapi in Linux, we found that contraints
test have a bug: If constraint marker runs after WeakRefs
are destroyed, it accesses destroyed WeakRef. This patch
also fixes it.

  • API/tests/CurrentThisInsideBlockGetterTest.h:
  • API/tests/CustomGlobalObjectClassTest.c:
  • API/tests/ExecutionTimeLimitTest.cpp:
  • API/tests/FunctionOverridesTest.cpp:
  • API/tests/GlobalContextWithFinalizerTest.cpp:
  • API/tests/JSObjectGetProxyTargetTest.cpp:
  • API/tests/MultithreadedMultiVMExecutionTest.cpp:
  • API/tests/PingPongStackOverflowTest.cpp:
  • API/tests/TypedArrayCTest.cpp:
  • API/tests/testapi.c:

(assertEqualsAsCharactersPtr):
(markingConstraint):
(testMarkingConstraintsAndHeapFinalizers):
(testCFStrings):
(main):

  • shell/CMakeLists.txt:

Tools:

Now testapi is drived in JSCOnly, GTK and WPE ports too.

  • Scripts/build-jsc:
  • Scripts/run-javascriptcore-tests:
12:23 AM Changeset in webkit [216913] by jfbastien@apple.com
  • 1 edit
    1 add in trunk/JSTests

WebAssembly: add memory fuzzer
https://bugs.webkit.org/show_bug.cgi?id=169976
<rdar://problem/31965328>

Reviewed by Keith Miller.

  • wasm/fuzz/memory.js: Added.

(const.insert):
(const.action.string_appeared_here):
(const.performAction):
(catch):

12:11 AM Changeset in webkit [216912] by pvollan@apple.com
  • 2 edits in trunk/Source/WebCore

Compile error, include file is not found.
https://bugs.webkit.org/show_bug.cgi?id=172105

Reviewed by Brent Fulgham.

Use has_include to detect if include file exists.

  • platform/mediastream/libwebrtc/H264VideoToolBoxEncoder.mm:
12:09 AM Changeset in webkit [216911] by jfbastien@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

WebAssembly: report Memory usage to GC
https://bugs.webkit.org/show_bug.cgi?id=170690
<rdar://problem/31965310>

Reviewed by Keith Miller.

  • wasm/js/JSWebAssemblyMemory.cpp:

(JSC::JSWebAssemblyMemory::grow):
(JSC::JSWebAssemblyMemory::finishCreation):
(JSC::JSWebAssemblyMemory::visitChildren):

12:07 AM Changeset in webkit [216910] by jmarcell@apple.com
  • 2 edits in branches/safari-604.1.21-branch/Source/WebKit2

Cherry-pick r216893. rdar://problem/32082745

12:07 AM Changeset in webkit [216909] by jmarcell@apple.com
  • 2 edits in branches/safari-604.1.21-branch/Source/WebKit2

Cherry-pick r216790. rdar://problem/32082745

12:07 AM Changeset in webkit [216908] by jfbastien@apple.com
  • 8 edits in trunk

WebAssembly: validate load / store alignment
https://bugs.webkit.org/show_bug.cgi?id=168836
<rdar://problem/31965349>

Reviewed by Keith Miller.

JSTests:

  • wasm/WASM.js: fix regular expression greed
  • wasm/function-tests/memory-alignment.js: Added.

(const.op.of.WASM.opcodes):

  • wasm/wasm.json: fix formatting

Source/JavaScriptCore:

  • wasm/WasmFunctionParser.h: check the alignment
  • wasm/generateWasm.py: generate the log2 alignment helper

(Wasm):
(isSimple):
(memoryLog2Alignment):

  • wasm/generateWasmOpsHeader.py:

(memoryLog2AlignmentGenerator):

  • wasm/wasm.json: fix formatting

May 15, 2017:

11:19 PM Changeset in webkit [216907] by matthew_hanson@apple.com
  • 15 edits in branches/safari-604.1.21-branch/Source/WebCore

Cherry-pick r216882. rdar://problem/32109397

11:19 PM Changeset in webkit [216906] by matthew_hanson@apple.com
  • 2 edits in branches/safari-604.1.21-branch/Source/WebCore

Cherry-pick r216863. rdar://problem/31963192

11:19 PM Changeset in webkit [216905] by matthew_hanson@apple.com
  • 39 edits
    2 adds in branches/safari-604.1.21-branch

Cherry-pick r216836. rdar://problem/31899730

11:19 PM Changeset in webkit [216904] by matthew_hanson@apple.com
  • 8 edits in branches/safari-604.1.21-branch/Source/WebCore

Cherry-pick r216323. rdar://problem/31899730

11:06 PM Changeset in webkit [216903] by aestes@apple.com
  • 17 edits
    1 move
    1 add in trunk/Source

Make the application PID available to WebCore
https://bugs.webkit.org/show_bug.cgi?id=172133

Reviewed by Andreas Kling.

Source/WebCore:

  • CMakeLists.txt:
  • PlatformMac.cmake:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/RuntimeApplicationChecks.cpp: Added.

(WebCore::presentingApplicationPIDOverride):
(WebCore::presentingApplicationPID): Returns the override PID if set, or getCurrentProcessID()
otherwise.
(WebCore::setPresentingApplicationPID):

  • platform/RuntimeApplicationChecks.h:
  • platform/cocoa/RuntimeApplicationChecksCocoa.mm: Renamed from Source/WebCore/platform/RuntimeApplicationChecks.mm.

Source/WebKit2:

Added uiProcessPID to Web and Networking process creation parameters. The UI process
initializes these to getpid(), and the child processes call WebCore::setPresentingApplicationPID()
at initialization time.

This replaces presenterApplicationPid.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::initializeNetworkProcess):

  • NetworkProcess/NetworkProcessCreationParameters.cpp:

(WebKit::NetworkProcessCreationParameters::encode):
(WebKit::NetworkProcessCreationParameters::decode):

  • NetworkProcess/NetworkProcessCreationParameters.h:
  • Shared/WebProcessCreationParameters.cpp:

(WebKit::WebProcessCreationParameters::encode):
(WebKit::WebProcessCreationParameters::decode):

  • Shared/WebProcessCreationParameters.h:
  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::platformInitializeWebProcess):

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::ensureNetworkProcess):
(WebKit::WebProcessPool::createNewWebProcess):

  • WebProcess/WebPage/mac/WebPageMac.mm:

(WebKit::WebPage::platformInitialize):

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::initializeWebProcess):

  • WebProcess/WebProcess.h:

(WebKit::WebProcess::presenterApplicationPid): Deleted.

  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::platformInitializeWebProcess):

10:35 PM Changeset in webkit [216902] by Antti Koivisto
  • 37 edits in trunk/Source

RenderTheme does not need to be per-page
https://bugs.webkit.org/show_bug.cgi?id=172116
<rdar://problem/30426457>

Reviewed by Zalan Bujtas.

There are no implementations of RenderTheme::themeForPage that actually care about the page.
It can be replaced with a singleton, simplifying a bunch of code.

  • Modules/mediacontrols/MediaControlsHost.cpp:

(WebCore::MediaControlsHost::shadowRootCSSText):
(WebCore::MediaControlsHost::base64StringForIconNameAndType):

  • css/CSSDefaultStyleSheets.cpp:

(WebCore::CSSDefaultStyleSheets::loadFullDefaultStyle):
(WebCore::CSSDefaultStyleSheets::ensureDefaultStyleSheetsForElement):

Fix a potential crash if we get here when page is null (though it doesn't appear to repro on trunk).

  • css/StyleColor.cpp:

(WebCore::StyleColor::colorFromKeyword):

  • css/StyleResolver.cpp:

(WebCore::StyleResolver::adjustRenderStyle):

  • css/parser/CSSParser.cpp:

(WebCore::CSSParser::parseSystemColor):

  • css/parser/CSSParser.h:
  • css/parser/CSSPropertyParser.cpp:

(WebCore::CSSPropertyParser::consumeSystemFont):

  • editing/FrameSelection.cpp:

(WebCore::FrameSelection::updateAppearance):

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::ensureMediaControlsInjectedScript):

  • html/HTMLMeterElement.cpp:

(WebCore::HTMLMeterElement::createElementRenderer):

  • html/HTMLSelectElement.cpp:

(WebCore::HTMLSelectElement::usesMenuList):
(WebCore::HTMLSelectElement::platformHandleKeydownEvent):
(WebCore::HTMLSelectElement::menuListDefaultEventHandler):

  • html/HTMLTextFormControlElement.cpp:

(WebCore::HTMLTextFormControlElement::adjustInnerTextStyle):

  • html/InputType.cpp:

(WebCore::InputType::themeSupportsDataListUI):

  • html/TextFieldInputType.cpp:

(WebCore::TextFieldInputType::shouldHaveSpinButton):
(WebCore::TextFieldInputType::shouldHaveCapsLockIndicator):

  • html/canvas/CanvasRenderingContext2D.cpp:

(WebCore::CanvasRenderingContext2D::setStrokeColor):
(WebCore::CanvasRenderingContext2D::setFillColor):

  • html/canvas/CanvasStyle.cpp:

(WebCore::parseColor):
(WebCore::parseColorOrCurrentColor):
(WebCore::CanvasStyle::createFromString):

  • html/canvas/CanvasStyle.h:
  • html/shadow/MediaControlElements.cpp:

(WebCore::MediaControlPanelElement::startTimer):
(WebCore::MediaControlPanelElement::makeOpaque):
(WebCore::MediaControlPanelElement::makeTransparent):

  • html/shadow/MediaControls.cpp:

(WebCore::MediaControls::reset):
(WebCore::MediaControls::reportedError):
(WebCore::MediaControls::updateCurrentTimeDisplay):

  • html/shadow/mac/ImageControlsButtonElementMac.cpp:

(WebCore::ImageControlsButtonElementMac::tryCreate):

  • page/MemoryRelease.cpp:

(WebCore::releaseNoncriticalMemory):

  • page/Page.cpp:

(WebCore::Page::Page):

  • page/Page.h:

(WebCore::Page::theme): Deleted.

  • platform/wpe/RenderThemeWPE.cpp:

(WebCore::RenderTheme::singleton):
(WebCore::RenderTheme::themeForPage): Deleted.

  • rendering/RenderEmbeddedObject.cpp:

(WebCore::RenderEmbeddedObject::getReplacementTextGeometry):

  • rendering/RenderObject.cpp:

(WebCore::RenderObject::theme):

  • rendering/RenderTheme.cpp:

(WebCore::RenderTheme::focusRingColor):

  • rendering/RenderTheme.h:

(WebCore::RenderTheme::defaultTheme): Deleted.

  • rendering/RenderThemeGtk.cpp:

(WebCore::RenderTheme::singleton):
(WebCore::RenderTheme::themeForPage): Deleted.

  • rendering/RenderThemeIOS.mm:

(WebCore::RenderTheme::singleton):
(WebCore::RenderTheme::themeForPage): Deleted.

  • rendering/RenderThemeMac.mm:

(WebCore::RenderTheme::singleton):
(WebCore::RenderTheme::themeForPage): Deleted.

  • rendering/RenderThemeWin.cpp:

(WebCore::RenderTheme::singleton):
(WebCore::RenderTheme::themeForPage): Deleted.

  • rendering/TextPaintStyle.cpp:

(WebCore::computeTextPaintStyle):

10:14 PM Changeset in webkit [216901] by commit-queue@webkit.org
  • 32 edits in trunk

Do not delete asynchronously decoded frames for large images if their clients are in the viewport
https://bugs.webkit.org/show_bug.cgi?id=170640

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2017-05-15
Reviewed by Simon Fraser.

Source/WebCore:

The image flickering problem happens when a large image is visible in the
view port and for some reason, the decoded frame gets destroyed. When this
image is repainted, BitmapImage::draw() does not find a valid decoded frame
for that image. It then requests an async decoding for the image and just
draws nothing in the image rectangle. Drawing no content between two drawing
phases in which the image is drawn causes the unwanted flickering.

To fix this issue we need to protect the decoded frames of all the images
in the view port from being destroyed. When BitmapImage::destroyDecodedData()
is called, it is going to check, through the ImageObserver, whether any
of its clients is visible. And if so, the current decoded frame won't be
destroyed.

Tests: Modifying existing tests.

  • loader/cache/CachedImage.cpp:

(WebCore::CachedImage::CachedImageObserver::decodedSizeChanged):
(WebCore::CachedImage::CachedImageObserver::didDraw):
(WebCore::CachedImage::CachedImageObserver::canDestroyDecodedData):
(WebCore::CachedImage::CachedImageObserver::imageFrameAvailable):
(WebCore::CachedImage::CachedImageObserver::changedInRect):
(WebCore::CachedImage::decodedSizeChanged):
(WebCore::CachedImage::didDraw):
(WebCore::CachedImage::canDestroyDecodedData): Finds out whether it's okay
to discard the image decoded data or not.
(WebCore::CachedImage::imageFrameAvailable):
(WebCore::CachedImage::changedInRect):

  • loader/cache/CachedImage.h:
  • loader/cache/CachedImageClient.h:

(WebCore::CachedImageClient::canDestroyDecodedData):

  • loader/cache/MemoryCache.cpp:

(WebCore::MemoryCache::destroyDecodedDataForAllImages): This function is
currently not used. Use in the internal destroyDecodedDataForAllImages()
but unlike what CachedImage::destroyDecodedData() does, make it destroy
the decoded frames without deleting the image itself.

  • loader/cache/MemoryCache.h:
  • platform/graphics/BitmapImage.cpp:

(WebCore::BitmapImage::destroyDecodedData):
(WebCore::BitmapImage::draw):
(WebCore::BitmapImage::canDestroyCurrentFrameDecodedData):
(WebCore::BitmapImage::advanceAnimation):
(WebCore::BitmapImage::internalAdvanceAnimation):
(WebCore::BitmapImage::imageFrameAvailableAtIndex):

  • platform/graphics/BitmapImage.h:
  • platform/graphics/GraphicsContext3D.cpp:

(WebCore::GraphicsContext3D::packImageData):

  • platform/graphics/ImageFrameCache.cpp:

(WebCore::ImageFrameCache::decodedSizeChanged):
(ImageFrameCache::cacheAsyncFrameNativeImageAtIndex): The assertion in this
function is wrong. frameIsCompleteAtIndex() can be false when the an image
decoding is requested but can be true when the decoding finishes.

  • platform/graphics/ImageObserver.h:
  • platform/graphics/cairo/ImageCairo.cpp:

(WebCore::Image::drawPattern):

  • platform/graphics/cg/ImageCG.cpp:

(WebCore::Image::drawPattern):

  • platform/graphics/cg/ImageDecoderCG.cpp:

(WebCore::ImageDecoder::frameIsCompleteAtIndex):

  • platform/graphics/cg/PDFDocumentImage.cpp:

(WebCore::PDFDocumentImage::decodedSizeChanged):
(WebCore::PDFDocumentImage::draw):

  • platform/graphics/texmap/TextureMapperTiledBackingStore.cpp:

(WebCore::TextureMapperTiledBackingStore::updateContentsFromImageIfNeeded):

  • platform/graphics/win/ImageDirect2D.cpp:

(WebCore::Image::drawPattern):

  • rendering/RenderElement.cpp:

(WebCore::RenderElement::isVisibleInDocumentRect):
(WebCore::RenderElement::isVisibleInViewport):
(WebCore::RenderElement::imageFrameAvailable):
(WebCore::RenderElement::repaintForPausedImageAnimationsIfNeeded):
(WebCore::RenderElement::shouldRepaintInVisibleRect): Deleted. Function
is renamed to isVisibleInViewport() for better readability.

  • rendering/RenderElement.h:
  • svg/graphics/SVGImage.cpp:

(WebCore::SVGImage::draw):

  • svg/graphics/SVGImageClients.h:
  • testing/Internals.cpp:

(WebCore::Internals::destroyDecodedDataForAllImages):

  • testing/Internals.h:
  • testing/Internals.idl:

Source/WebKit/mac:

Enable the async decoding for large images.

  • WebView/WebView.mm:

(-[WebView _preferencesChanged:]):

Source/WebKit2:

Enable the async decoding for large images.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updatePreferences):

LayoutTests:

  • fast/images/async-image-background-image-repeated.html:
  • fast/images/async-image-background-image.html:
  • fast/images/sprite-sheet-image-draw.html:
8:41 PM Changeset in webkit [216900] by commit-queue@webkit.org
  • 3 edits in trunk/Tools

WPT test importer should not account for slow manual tests
https://bugs.webkit.org/show_bug.cgi?id=172127

Patch by Youenn Fablet <youenn@apple.com> on 2017-05-15
Reviewed by Ryosuke Niwa.

Making sure manual tests are not triggering updating tests-options.json file.

  • Scripts/webkitpy/w3c/test_importer.py:

(TestImporter.find_importable_tests):
(TestImporter._already_identified_as_resource_file):
(TestImporter.update_tests_options):

  • Scripts/webkitpy/w3c/test_importer_unittest.py:

(test_manual_slow_test):

8:19 PM Changeset in webkit [216899] by Jonathan Bedard
  • 3 edits in trunk/Tools

webkitpy: Some versions of simctl do not place parenthesis around runtime identifiers
https://bugs.webkit.org/show_bug.cgi?id=172142

Reviewed by Tim Horton.

  • Scripts/webkitpy/xcode/simulator.py:

(Simulator._parse_runtimes): Newer versions of simctl output do not put parenthesis
around runtime identifiers.

  • Scripts/webkitpy/xcode/simulator_unittest.py: Add tests for new simctl output.
7:45 PM Changeset in webkit [216898] by commit-queue@webkit.org
  • 30 edits in trunk/Source

Simplify RealtimeMediaSource data production and state
https://bugs.webkit.org/show_bug.cgi?id=171999

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

Source/WebCore:

RealtimeMediaSource takes 3 booleans:

  • m_isProducingData tells whether data is produced or not. In the case of capturing, it tells whether capture happens.
  • m_muted/m_enabled allows JS or WebKit level to start/stop the source.

Changed MediaStream capture state computation so that capture is reported as follows:

  • m_isProducing is true, capture is happenning and is active
  • m_muted is true, capture is happening but is inactive.

Except in the case of WebRTC incoming sources, for which sources may be created as muted as per the spec,
all sources are unmuted, enabled and not producing data when created.

RealtimeMediaSource is now activable either by calling start/stop or by calling setMuted/setEnabled.
This in turns will set the boolean values accordingly and will call the underlying
startProducingData/stopProducingData methods doing the actual stuff.

Removing from all RealtimeMediaSource subclasses the handling of producing data.
Making more methods non-virtual/member fields private to simplify the model.

  • Modules/mediastream/CanvasCaptureMediaStreamTrack.cpp:

(WebCore::CanvasCaptureMediaStreamTrack::Source::create):
(WebCore::CanvasCaptureMediaStreamTrack::Source::startProducingData):
(WebCore::CanvasCaptureMediaStreamTrack::Source::stopProducingData):
(WebCore::CanvasCaptureMediaStreamTrack::Source::canvasDestroyed):
(WebCore::CanvasCaptureMediaStreamTrack::Source::captureCanvas):

  • Modules/mediastream/CanvasCaptureMediaStreamTrack.h:
  • Modules/mediastream/MediaStream.cpp:

(WebCore::MediaStream::mediaState):

  • platform/mediastream/MediaStreamTrackPrivate.h:

(WebCore::MediaStreamTrackPrivate::startProducingData):
(WebCore::MediaStreamTrackPrivate::stopProducingData):

  • platform/mediastream/RealtimeMediaSource.cpp:

(WebCore::RealtimeMediaSource::setMuted):
(WebCore::RealtimeMediaSource::notifyMutedChange):
(WebCore::RealtimeMediaSource::setEnabled):
(WebCore::RealtimeMediaSource::start):
(WebCore::RealtimeMediaSource::stop):
(WebCore::RealtimeMediaSource::requestStop):
(WebCore::RealtimeMediaSource::reset): Deleted.

  • platform/mediastream/RealtimeMediaSource.h:
  • platform/mediastream/mac/AVMediaCaptureSource.h:
  • platform/mediastream/mac/AVMediaCaptureSource.mm:

(WebCore::AVMediaCaptureSource::AVMediaCaptureSource):
(WebCore::AVMediaCaptureSource::captureSessionIsRunningDidChange):
(WebCore::AVMediaCaptureSource::reset): Deleted.
(WebCore::AVMediaCaptureSource::isProducingData): Deleted.

  • platform/mediastream/mac/CoreAudioCaptureSource.cpp:

(WebCore::CoreAudioCaptureSource::CoreAudioCaptureSource):
(WebCore::CoreAudioCaptureSource::startProducingData):
(WebCore::CoreAudioCaptureSource::stopProducingData):
(WebCore::CoreAudioCaptureSource::audioSourceProvider):

  • platform/mediastream/mac/CoreAudioCaptureSource.h:
  • platform/mediastream/mac/MockRealtimeAudioSourceMac.mm:

(WebCore::MockRealtimeAudioSourceMac::render):
(WebCore::MockRealtimeAudioSource::createMuted): Deleted.

  • platform/mediastream/mac/MockRealtimeVideoSourceMac.mm:

(WebCore::MockRealtimeVideoSource::createMuted): Deleted.

  • platform/mediastream/mac/RealtimeIncomingAudioSource.cpp:

(WebCore::RealtimeIncomingAudioSource::create):
(WebCore::RealtimeIncomingAudioSource::RealtimeIncomingAudioSource):
(WebCore::RealtimeIncomingAudioSource::~RealtimeIncomingAudioSource):
(WebCore::RealtimeIncomingAudioSource::startProducingData):
(WebCore::RealtimeIncomingAudioSource::stopProducingData):
(WebCore::RealtimeIncomingAudioSource::setSourceTrack):

  • platform/mediastream/mac/RealtimeIncomingAudioSource.h:
  • platform/mediastream/mac/RealtimeIncomingVideoSource.cpp:

(WebCore::RealtimeIncomingVideoSource::create):
(WebCore::RealtimeIncomingVideoSource::RealtimeIncomingVideoSource):
(WebCore::RealtimeIncomingVideoSource::startProducingData):
(WebCore::RealtimeIncomingVideoSource::setSourceTrack):
(WebCore::RealtimeIncomingVideoSource::stopProducingData):
(WebCore::RealtimeIncomingVideoSource::OnFrame):

  • platform/mediastream/mac/RealtimeIncomingVideoSource.h:
  • platform/mediastream/mac/WebAudioSourceProviderAVFObjC.mm:

(WebCore::WebAudioSourceProviderAVFObjC::setClient):

  • platform/mock/MockMediaEndpoint.cpp:

(WebCore::MockMediaEndpoint::createMutedRemoteSource):
(WebCore::MockMediaEndpoint::unmuteTimerFired):

  • platform/mock/MockRealtimeAudioSource.cpp:

(WebCore::MockRealtimeAudioSource::createMuted):
(WebCore::MockRealtimeAudioSource::startProducingData):
(WebCore::MockRealtimeAudioSource::stopProducingData):

  • platform/mock/MockRealtimeAudioSource.h:
  • platform/mock/MockRealtimeMediaSource.cpp:

(WebCore::MockRealtimeMediaSource::startProducingData): Deleted.
(WebCore::MockRealtimeMediaSource::stopProducingData): Deleted.

  • platform/mock/MockRealtimeMediaSource.h:
  • platform/mock/MockRealtimeVideoSource.cpp:

(WebCore::MockRealtimeVideoSource::createMuted):
(WebCore::MockRealtimeVideoSource::startProducingData):
(WebCore::MockRealtimeVideoSource::stopProducingData):
(WebCore::MockRealtimeVideoSource::generateFrame):

  • platform/mock/MockRealtimeVideoSource.h:

Source/WebKit2:

  • UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:

(WebKit::UserMediaCaptureManagerProxy::startProducingData):
(WebKit::UserMediaCaptureManagerProxy::stopProducingData):

  • WebProcess/cocoa/UserMediaCaptureManager.cpp:
6:59 PM Changeset in webkit [216897] by rniwa@webkit.org
  • 1 edit
    1 move in trunk/Websites/browserbench.org

browserbench.org/Speedometer/ should show the benchmark not an index of files
https://bugs.webkit.org/show_bug.cgi?id=172141

Reviewed by Alexey Proskuryakov.

Renamed Speedometer/Full.html to Speedometer/index.html.
We used to have a .htaccess but it's better to use the same file name convention as other benchmarks.

  • Speedometer/index.html: Renamed from Websites/browserbench.org/Speedometer/Full.html.
6:37 PM Changeset in webkit [216896] by mmaxfield@apple.com
  • 14 edits in trunk/Source/WebCore

Migrate Font constructor from bools to enums
https://bugs.webkit.org/show_bug.cgi?id=172140

Reviewed by Tim Horton.

In https://bugs.webkit.org/show_bug.cgi?id=168487, I'm adding a new flag to Font. We can't
keep having just a pile of bools in this class. Instead, we should be using enums.

No new tests because there is no behavior change.

  • css/CSSFontFace.cpp:

(WebCore::CSSFontFace::font):

  • css/CSSFontFaceSource.cpp:

(WebCore::CSSFontFaceSource::font):

  • css/CSSSegmentedFontFace.cpp:
  • loader/cache/CachedFont.cpp:

(WebCore::CachedFont::createFont):

  • platform/graphics/Font.cpp:

(WebCore::Font::Font):
(WebCore::Font::verticalRightOrientationFont):
(WebCore::Font::uprightOrientationFont):
(WebCore::Font::brokenIdeographFont):
(WebCore::Font::description):
(WebCore::Font::mathData):

  • platform/graphics/Font.h:

(WebCore::Font::create):
(WebCore::Font::origin):
(WebCore::Font::isInterstitial):
(WebCore::Font::widthForGlyph):
(WebCore::Font::isCustomFont): Deleted.
(WebCore::Font::isLoading): Deleted.

  • platform/graphics/FontRanges.cpp:
  • platform/graphics/cocoa/FontCocoa.mm:

(WebCore::Font::platformInit):

  • platform/graphics/freetype/SimpleFontDataFreeType.cpp:

(WebCore::Font::platformCreateScaledFont):

  • platform/graphics/win/SimpleFontDataCGWin.cpp:

(WebCore::Font::platformInit):

  • platform/graphics/win/SimpleFontDataDirect2D.cpp:

(WebCore::Font::platformInit):

  • platform/graphics/win/SimpleFontDataWin.cpp:

(WebCore::Font::platformCreateScaledFont):
(WebCore::Font::determinePitch):

  • rendering/SimpleLineLayout.cpp:

(WebCore::SimpleLineLayout::canUseForFontAndText):

6:29 PM Changeset in webkit [216895] by ggaren@apple.com
  • 2 edits in trunk/Source/bmalloc

bmalloc: Bump the size of the deallocator log to 512
https://bugs.webkit.org/show_bug.cgi?id=172143

Reviewed by Michael Saboff.

This is a speedup on parallel workloads for machines with lots of CPUs.

  • bmalloc/Sizes.h:
5:58 PM Changeset in webkit [216894] by Michael Catanzaro
  • 2 edits in trunk/Source/WebCore/platform/gtk/po

[GTK] [l10n] Updated French translation for Webkit/GTK
https://bugs.webkit.org/show_bug.cgi?id=172093

Patch by Alexandre Franke <afranke@gnome.org> on 2017-05-15
Rubber-stamped by Michael Catanzaro.

  • fr.po:
5:50 PM Changeset in webkit [216893] by Brent Fulgham
  • 2 edits in trunk/Source/WebKit2

Correct typo (part of r216790).

  • PluginProcess/mac/com.apple.WebKit.plugin-common.sb.in: The check-in missed part of a

regular expression needed to fix the audio playback.

5:41 PM Changeset in webkit [216892] by commit-queue@webkit.org
  • 7 edits in trunk

WebRTC outgoing muted video sources should send black frames
https://bugs.webkit.org/show_bug.cgi?id=170627
<rdar://problem/31513869>

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

Source/WebCore:

Covered by updated test.

Instead of sending one black frame and then another one asynchronously,
we use the timer to send a black frame every second when outgoing source is muted.

  • platform/mediastream/mac/RealtimeOutgoingVideoSource.cpp:

(WebCore::RealtimeOutgoingVideoSource::sourceMutedChanged):
(WebCore::RealtimeOutgoingVideoSource::sourceEnabledChanged):
(WebCore::RealtimeOutgoingVideoSource::sendBlackFrames):
(WebCore::RealtimeOutgoingVideoSource::sendBlackFrame): Deleted.

  • platform/mediastream/mac/RealtimeOutgoingVideoSource.h:
  • testing/Internals.cpp:

(WebCore::Internals::videoSampleAvailable):

LayoutTests:

  • webrtc/video-mute-expected.txt:
  • webrtc/video-mute.html:
5:21 PM Changeset in webkit [216891] by mark.lam@apple.com
  • 22 edits
    2 deletes in trunk

Rolling out r214038 and r213697: Crashes when using computed properties with rest destructuring and object spread.
https://bugs.webkit.org/show_bug.cgi?id=172147

Rubber-stamped by Saam Barati.

JSTests:

  • stress/object-rest-deconstruct.js: Removed.
  • stress/object-spread.js: Removed.

Source/JavaScriptCore:

I rolled out every thing in those 2 patches except for the change to make
CodeBlock::finishCreation() return a bool plus its clients that depend on this.
I made this exception because r214931 relies on this change, and this part of
the change looks correct.

  • builtins/BuiltinNames.h:
  • builtins/GlobalOperations.js:

(globalPrivate.speciesConstructor):
(globalPrivate.copyDataProperties): Deleted.

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::finishCreation):
(JSC::CodeBlock::setConstantIdentifierSetRegisters): Deleted.

  • bytecode/CodeBlock.h:
  • bytecode/UnlinkedCodeBlock.h:

(JSC::UnlinkedCodeBlock::addBitVector):
(JSC::UnlinkedCodeBlock::constantRegisters):
(JSC::UnlinkedCodeBlock::addSetConstant): Deleted.
(JSC::UnlinkedCodeBlock::constantIdentifierSets): Deleted.

  • bytecompiler/BytecodeGenerator.cpp:
  • bytecompiler/BytecodeGenerator.h:
  • bytecompiler/NodesCodegen.cpp:

(JSC::PropertyListNode::emitBytecode):
(JSC::ObjectPatternNode::bindValue):
(JSC::ObjectSpreadExpressionNode::emitBytecode): Deleted.

  • parser/ASTBuilder.h:

(JSC::ASTBuilder::createProperty):
(JSC::ASTBuilder::appendObjectPatternEntry):
(JSC::ASTBuilder::createObjectSpreadExpression): Deleted.
(JSC::ASTBuilder::appendObjectPatternRestEntry): Deleted.
(JSC::ASTBuilder::setContainsObjectRestElement): Deleted.

  • parser/NodeConstructors.h:

(JSC::PropertyNode::PropertyNode):
(JSC::SpreadExpressionNode::SpreadExpressionNode):
(JSC::ObjectSpreadExpressionNode::ObjectSpreadExpressionNode): Deleted.

  • parser/Nodes.h:

(JSC::ObjectPatternNode::appendEntry):
(JSC::ObjectSpreadExpressionNode::expression): Deleted.
(JSC::ObjectPatternNode::setContainsRestElement): Deleted.

  • parser/Parser.cpp:

(JSC::Parser<LexerType>::parseDestructuringPattern):
(JSC::Parser<LexerType>::parseProperty):

  • parser/SyntaxChecker.h:

(JSC::SyntaxChecker::createSpreadExpression):
(JSC::SyntaxChecker::createProperty):
(JSC::SyntaxChecker::operatorStackPop):
(JSC::SyntaxChecker::createObjectSpreadExpression): Deleted.

  • runtime/ObjectConstructor.cpp:

(JSC::ObjectConstructor::finishCreation):

  • runtime/SetPrototype.cpp:

(JSC::SetPrototype::finishCreation):

Source/WTF:

  • wtf/HashSet.h:

(WTF::=):

LayoutTests:

  • js/parser-syntax-check-expected.txt:
  • js/script-tests/parser-syntax-check.js:
5:07 PM Changeset in webkit [216890] by matthew_hanson@apple.com
  • 15 edits
    3 moves in branches/safari-604.1.21-branch

Cherry-pick r216249. rdar://problem/31764764

4:54 PM Changeset in webkit [216889] by ddkilzer@apple.com
  • 3 edits in trunk/Source/WebCore

Crash in libxml2.2.dylib: xmlDictReference
<https://webkit.org/b/172086>
<rdar://problem/23643436>

Reviewed by Daniel Bates.

Speculative fix and code clean-up based on source code
inspection. The fix for the crash is in two parts that change
XSLStyleSheet::parseString():

  1. Always set m_stylesheetDoc to nullptr after freeing it via XSLStyleSheet::clearXSLStylesheetDocument().
  2. Add nullptr check before using m_stylesheetDoc from parent.

Broadly speaking, the changes are:

  • Extract code to reset m_stylesheetDoc into new private XSLStyleSheet::clearXSLStylesheetDocument() method. There is a special contract between m_stylesheetDoc and m_stylesheetDocTaken that wasn't being followed every time. See comment in XSLStyleSheet::compileStyleSheet().
  • XSLStyleSheet::clearDocuments() now calls new clearXSLStylesheetDocument() method. Previously, it was not checking or resetting m_stylesheetDocTaken, and it might have leaked an xmlDocPtr if m_stylesheetDoc was set and m_stylesheetDocTaken was false.
  • XSLStyleSheet::parseString() now calls new clearXSLStylesheetDocument() method. Previously, it did not clear m_stylesheetDoc after freeing it, and it could return early due to a failure in xmlCreateMemoryParserCtxt().
  • In XSLStyleSheet::parseString() use checked arithmetic when calculating 'size' for xmlCreateMemoryParserCtxt() and xmlCtxtReadMemory(). This code used to do an implicit unsigned -> signed integer conversion that could overflow.
  • Always iterate m_children using an 'auto& import' variable.
  • xml/XSLStyleSheet.h:

(WebCore::XSLStyleSheet::clearXSLStylesheetDocument): Add declaration.
(WebCore::XSLStyleSheet::m_disabled): Add default initializer.
(WebCore::XSLStyleSheet::m_stylesheetDoc): Ditto.
(WebCore::XSLStyleSheet::m_stylesheetDocTaken): Ditto.
(WebCore::XSLStyleSheet::m_parentStyleSheet): Ditto.

  • xml/XSLStyleSheetLibxslt.cpp:

(WebCore::XSLStyleSheet::XSLStyleSheet): Get rid of redundant
initializers. Set m_parentStyleSheet if needed.
(WebCore::XSLStyleSheet::~XSLStyleSheet): Call
clearXSLStylesheetDocument() instead of custom code. Switch
m_children fast iteration to use 'auto& import' variable.
(WebCore::XSLStyleSheet::isLoading): Switch m_children fast
iteration to use 'auto& import' variable.
(WebCore::XSLStyleSheet::clearDocuments): Call
clearXSLStylesheetDocument() instead of setting m_stylesheetDoc
to nullptr. This might fix an occasional xmlDocPtr leak.
(WebCore::XSLStyleSheet::clearXSLStylesheetDocument): Add. This
method always sets m_stylesheetDoc to nullptr (after freeing it
if necessary) and sets m_stylesheetDocTaken to false.
(WebCore::XSLStyleSheet::parseString): Call
clearXSLStylesheetDocument(). Prior to this, m_stylesheetDoc
might be left pointing to a freed value, and this method could
return early if xmlCreateMemoryParserCtxt() failed. Switch to
using Checked<> to compute required buffer size to parse XSL
stylesheet, and return early on overflow. Clean up existing
return statements to use boolean expressions. Add nullptr check
for m_parentStyleSheet->m_stylesheetDoc before using it.
(WebCore::XSLStyleSheet::loadChildSheet): Get rid of local
variable by calling loadSheet() from last array element.
(WebCore::XSLStyleSheet::compileStyleSheet): Add debug assert
that m_stylesheetDoc is not nullptr.

4:36 PM Changeset in webkit [216888] by Chris Dumez
  • 3 edits in trunk/LayoutTests

Unreviewed, rebaseline platform/ios/ios/css/construct-WebKitCSSMatrix.html after r216881.

  • platform/ios/ios/css/construct-WebKitCSSMatrix-expected.txt:
  • platform/ios/ios/css/resources/construct-WebKitCSSMatrix.js:
4:24 PM Changeset in webkit [216887] by rniwa@webkit.org
  • 2 edits in trunk/Tools

Update ARES-6 plan file to use the latest version
https://bugs.webkit.org/show_bug.cgi?id=172139

Reviewed by Keith Miller.

Include r216538.

  • Scripts/webkitpy/benchmark_runner/data/plans/ares6.plan:
3:46 PM Changeset in webkit [216886] by jer.noble@apple.com
  • 22 edits
    2 adds in trunk

Add experimental setting to allow document gesture interaction to fulfill media playback gesture requirement
https://bugs.webkit.org/show_bug.cgi?id=172131

Reviewed by Eric Carlson.

Source/WebCore:

Test: media/restricted-audio-playback-with-document-gesture.html

Move all calls to ScriptController::processingUserGestureForMedia() to the new Document equivalent. In Document,
if the new setting is enabled, return true from processingUserGestureForMedia() if the top-level document has had
a user gesture interaction.

  • Modules/mediastream/MediaStream.cpp:

(WebCore::MediaStream::processingUserGestureForMedia):

  • Modules/mediastream/MediaStream.h:
  • Modules/webaudio/AudioContext.cpp:

(WebCore::AudioContext::processingUserGestureForMedia):
(WebCore::AudioContext::willBeginPlayback):
(WebCore::AudioContext::willPausePlayback):

  • Modules/webaudio/AudioContext.h:
  • dom/Document.cpp:

(WebCore::Document::processingUserGestureForMedia):

  • dom/Document.h:
  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::load):
(WebCore::HTMLMediaElement::audioTrackEnabledChanged):
(WebCore::HTMLMediaElement::seekWithTolerance):
(WebCore::HTMLMediaElement::play):
(WebCore::HTMLMediaElement::playInternal):
(WebCore::HTMLMediaElement::pause):
(WebCore::HTMLMediaElement::pauseInternal):
(WebCore::HTMLMediaElement::setMuted):
(WebCore::HTMLMediaElement::webkitShowPlaybackTargetPicker):
(WebCore::HTMLMediaElement::processingUserGestureForMedia):

  • html/HTMLMediaElement.h:
  • html/MediaElementSession.cpp:

(WebCore::MediaElementSession::playbackPermitted):
(WebCore::MediaElementSession::dataLoadingPermitted):
(WebCore::MediaElementSession::fullscreenPermitted):
(WebCore::MediaElementSession::canShowControlsManager):
(WebCore::MediaElementSession::showPlaybackTargetPicker):

  • page/Settings.in:
  • platform/audio/PlatformMediaSession.h:

Source/WebKit/mac:

  • WebView/WebPreferenceKeysPrivate.h:
  • WebView/WebPreferences.mm:

(+[WebPreferences initialize]):
(-[WebPreferences mediaUserGestureInheritsFromDocument]):
(-[WebPreferences setMediaUserGestureInheritsFromDocument:]):

  • WebView/WebPreferencesPrivate.h:

Source/WebKit2:

  • Shared/WebPreferencesDefinitions.h:
  • UIProcess/API/C/WKPreferences.cpp:

(WKPreferencesSetMediaUserGestureInheritsFromDocument):
(WKPreferencesGetMediaUserGestureInheritsFromDocument):

  • UIProcess/API/C/WKPreferencesRefPrivate.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updatePreferences):

LayoutTests:

  • media/restricted-audio-playback-with-document-gesture-expected.txt: Added.
  • media/restricted-audio-playback-with-document-gesture.html: Added.
3:40 PM Changeset in webkit [216885] by pvollan@apple.com
  • 3 edits in trunk/LayoutTests

LayoutTest http/tests/media/track-in-band-hls-metadata-crash.html is a flaky timeout
https://bugs.webkit.org/show_bug.cgi?id=167749

Reviewed by Eric Carlson.

Start video playback when the 'canplaythrough' event is handled, and stop logging the event,
since the event sequence is not identical on all bots.

  • http/tests/media/track-in-band-hls-metadata-crash-expected.txt:
  • http/tests/media/track-in-band-hls-metadata-crash.html:
3:34 PM Changeset in webkit [216884] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebCore

Only ever initialize LibWebRTCProvider's staticFactoryAndThreads() factories once.
https://bugs.webkit.org/show_bug.cgi?id=172047

Reviewed by Youenn Fablet.

Wrap the initilization of the factories contained in staticFactoryAndThreads() in a call_once to ensure
new factories aren't created every time it's called.

  • platform/mediastream/libwebrtc/LibWebRTCProvider.cpp:

(WebCore::staticFactoryAndThreads):

3:32 PM Changeset in webkit [216883] by commit-queue@webkit.org
  • 3 edits
    2 adds in trunk

Web Inspector: CRASH seen with DOM.setOuterHTML when there is no documentElement
https://bugs.webkit.org/show_bug.cgi?id=172135
<rdar://problem/32175860>

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-05-15
Reviewed by Brian Burg.

Source/WebCore:

Test: inspector/dom/setOuterHTML-no-document-element.html

  • inspector/DOMPatchSupport.cpp:

(WebCore::DOMPatchSupport::patchDocument):
Null check the document element which might not exist.

LayoutTests:

  • inspector/dom/setOuterHTML-no-document-element-expected.txt: Added.
  • inspector/dom/setOuterHTML-no-document-element.html: Added.
3:10 PM Changeset in webkit [216882] by commit-queue@webkit.org
  • 15 edits in trunk/Source/WebCore

REGRESSION (216471): Infinite repaint-drawing loop when asynchronously decoding incomplete image frames
https://bugs.webkit.org/show_bug.cgi?id=171900

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2017-05-15
Reviewed by Tim Horton.

-- Don't destroy incomplete decoded image frames for large images. This
is to avoid flickering while decoding another image frame with the new
data. The old incomplete image frame will be destroyed once the newer one
finishes decoding.

-- Extend the enum ImageFrame::DecodingStatus by adding a new value called
'Decoding'. This new value will never be cached in the ImageFrame::
m_decodingStatus. Add a member m_currentFrameDecodingStatus to BitmapImage.
The purpose of this member is to invalidate the current frame, without
deleting it, when new encoded data is received.

-- Don't wait until the native image is decoded to cache the ImageFrame
decodingStatus. There is a big chance that more data arrives between
starting the decoding and finishing it such that the decoding changes
from Partial to Complete. We need to prevent keeping incomplete ImageFrames
cached because we mistakenly assume they are complete. To fix this issue
we need to know the ImageFrame decodingStatus when the decoding is requested.

  • platform/graphics/BitmapImage.cpp:

(WebCore::BitmapImage::destroyDecodedData):
(WebCore::BitmapImage::dataChanged):
(WebCore::BitmapImage::draw):
(WebCore::BitmapImage::internalStartAnimation): At the beginning of this
function we check whether the next frame is being decoded or not and we
return DecodingActive if it is. Let's handle the second check here also
before requesting the decoding of nextFrame. We need to check whether the
nextFrame has a native image with decoded with the native size or not.
(WebCore::BitmapImage::internalAdvanceAnimation):
(WebCore::BitmapImage::imageFrameAvailableAtIndex):

  • platform/graphics/BitmapImage.h:
  • platform/graphics/ImageFrame.cpp:

(WebCore::ImageFrame::operator=):
(WebCore::ImageFrame::setDecodingStatus):
(WebCore::ImageFrame::decodingStatus):

  • platform/graphics/ImageFrame.h:

(WebCore::ImageFrame::isInvalid):
(WebCore::ImageFrame::isPartial):
(WebCore::ImageFrame::isComplete):
(WebCore::ImageFrame::setDecoding): Deleted.
(WebCore::ImageFrame::decoding): Deleted.
(WebCore::ImageFrame::isEmpty): Deleted.

  • platform/graphics/ImageFrameCache.cpp:

(WebCore::ImageFrameCache::setNativeImage):
(WebCore::ImageFrameCache::cacheMetadataAtIndex):
(WebCore::ImageFrameCache::cacheNativeImageAtIndex):
(WebCore::ImageFrameCache::cacheNativeImageAtIndexAsync):
(WebCore::ImageFrameCache::startAsyncDecodingQueue):
(WebCore::ImageFrameCache::requestFrameAsyncDecodingAtIndex):
(WebCore::ImageFrameCache::stopAsyncDecodingQueue):
(WebCore::ImageFrameCache::frameAtIndexCacheIfNeeded):
(WebCore::ImageFrameCache::frameDecodingStatusAtIndex):
(WebCore::ImageFrameCache::cacheFrameMetadataAtIndex): Deleted.
(WebCore::ImageFrameCache::cacheFrameNativeImageAtIndex): Deleted.
(WebCore::ImageFrameCache::cacheAsyncFrameNativeImageAtIndex): Deleted.
(WebCore::ImageFrameCache::frameIsCompleteAtIndex): Deleted.

  • platform/graphics/ImageFrameCache.h:

(WebCore::ImageFrameCache::ImageFrameRequest::operator==):

  • platform/graphics/ImageSource.cpp:

(WebCore::ImageSource::dataChanged):

  • platform/graphics/ImageSource.h:

(WebCore::ImageSource::destroyIncompleteDecodedData):
(WebCore::ImageSource::requestFrameAsyncDecodingAtIndex): Let the caller
decide whether another request for the same image frame is allowed or not.
(WebCore::ImageSource::frameDecodingStatusAtIndex):
(WebCore::ImageSource::frameIsCompleteAtIndex): Deleted.

  • platform/image-decoders/ImageDecoder.cpp:

(WebCore::ImageDecoder::frameDurationAtIndex):
(WebCore::ImageDecoder::createFrameImageAtIndex):

  • platform/image-decoders/bmp/BMPImageReader.cpp:

(WebCore::BMPImageReader::decodeBMP):

  • platform/image-decoders/gif/GIFImageDecoder.cpp:

(WebCore::GIFImageDecoder::clearFrameBufferCache):
(WebCore::GIFImageDecoder::haveDecodedRow):
(WebCore::GIFImageDecoder::frameComplete):
(WebCore::GIFImageDecoder::initFrameBuffer):

  • platform/image-decoders/jpeg/JPEGImageDecoder.cpp:

(WebCore::JPEGImageDecoder::outputScanlines):
(WebCore::JPEGImageDecoder::jpegComplete):

  • platform/image-decoders/png/PNGImageDecoder.cpp:

(WebCore::PNGImageDecoder::rowAvailable):
(WebCore::PNGImageDecoder::pngComplete):
(WebCore::PNGImageDecoder::clearFrameBufferCache):
(WebCore::PNGImageDecoder::frameComplete):

  • platform/image-decoders/webp/WEBPImageDecoder.cpp:

(WebCore::WEBPImageDecoder::decode):

3:07 PM Changeset in webkit [216881] by Chris Dumez
  • 9 edits
    2 adds in trunk

Align WebKitCSSMatrix stringifier with spec for DOMMatrix
https://bugs.webkit.org/show_bug.cgi?id=172114

Reviewed by Simon Fraser.

Source/WebCore:

Align WebKitCSSMatrix stringifier with spec for DOMMatrix after:

The following changes were made:

  • Use EcmaScript's ToString() to convert floating point values to string
  • Throw an invalid state error if the matrix contains non-finite values
  • Made WebKitCSSMatrix.toString enumerable as per [1].

[1] https://heycam.github.io/webidl/#es-stringifier

Test: fast/css/matrix-stringifier.html

  • css/WebKitCSSMatrix.cpp:

(WebCore::WebKitCSSMatrix::toString):

  • css/WebKitCSSMatrix.h:
  • css/WebKitCSSMatrix.idl:
  • platform/graphics/transforms/TransformationMatrix.cpp:

(WebCore::TransformationMatrix::containsOnlyFiniteValues):

  • platform/graphics/transforms/TransformationMatrix.h:

LayoutTests:

  • fast/css/matrix-stringifier-expected.txt: Added.
  • fast/css/matrix-stringifier.html: Added.

Add layout test coverage.

  • fast/dom/Window/custom-constructors-expected.txt:
  • fast/dom/Window/custom-constructors.html:

Rebaseline existing test to reflect behavior change.

2:51 PM Changeset in webkit [216880] by ddkilzer@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

JSEnvironmentRecord::allocationSizeForScopeSize() and offsetOfVariable(ScopeOffset) should used checked arithmetic
<https://webkit.org/b/172134>

Reviewed by Saam Barati.

  • runtime/JSEnvironmentRecord.h:

(JSC::JSEnvironmentRecord::offsetOfVariable): Change to return
size_t and use checked arithmetic.
(JSC::JSEnvironmentRecord::allocationSizeForScopeSize): Change
to use checked arithmetic.

2:36 PM Changeset in webkit [216879] by jcraig@apple.com
  • 4 edits in trunk/Websites/webkit.org

AX: Inaccessible content on webkit.org main page
https://bugs.webkit.org/show_bug.cgi?id=172106

Reviewed by Joseph Pecoraro.

  • wp-content/themes/webkit/widgets/icon.php: Resolved link title.
  • wp-content/themes/webkit/widgets/post.php: Resolved link title.
  • wp-content/themes/webkit/widgets/twitter.php: Resolved link titles. Suppressed unlabeled images with alt="".
2:23 PM Changeset in webkit [216878] by Chris Dumez
  • 2 edits
    35 adds in trunk/LayoutTests/imported/w3c

Import css/geometry-1 web-platform-tests
https://bugs.webkit.org/show_bug.cgi?id=172130

Reviewed by Youenn Fablet.

Import css/geometry-1 web-platform-tests to gain better test coverage.

  • resources/import-expectations.json:
  • web-platform-tests/css/geometry-1/DOMMatrix-001-expected.txt: Added.
  • web-platform-tests/css/geometry-1/DOMMatrix-001.html: Added.
  • web-platform-tests/css/geometry-1/DOMMatrix-002-expected.txt: Added.
  • web-platform-tests/css/geometry-1/DOMMatrix-002.html: Added.
  • web-platform-tests/css/geometry-1/DOMMatrix-003-expected.txt: Added.
  • web-platform-tests/css/geometry-1/DOMMatrix-003.html: Added.
  • web-platform-tests/css/geometry-1/DOMMatrix-a-f-alias-expected.txt: Added.
  • web-platform-tests/css/geometry-1/DOMMatrix-a-f-alias.html: Added.
  • web-platform-tests/css/geometry-1/DOMMatrix-css-string.worker-expected.txt: Added.
  • web-platform-tests/css/geometry-1/DOMMatrix-css-string.worker.html: Added.
  • web-platform-tests/css/geometry-1/DOMMatrix-css-string.worker.js: Added.

(string_appeared_here.forEach.constr.test):
(string_appeared_here.forEach.constr.assert_equals):
(test):

  • web-platform-tests/css/geometry-1/DOMMatrix-newobject-expected.txt: Added.
  • web-platform-tests/css/geometry-1/DOMMatrix-newobject.html: Added.
  • web-platform-tests/css/geometry-1/DOMPoint-001-expected.txt: Added.
  • web-platform-tests/css/geometry-1/DOMPoint-001.html: Added.
  • web-platform-tests/css/geometry-1/DOMPoint-002-expected.txt: Added.
  • web-platform-tests/css/geometry-1/DOMPoint-002.html: Added.
  • web-platform-tests/css/geometry-1/DOMQuad-001-expected.txt: Added.
  • web-platform-tests/css/geometry-1/DOMQuad-001.html: Added.
  • web-platform-tests/css/geometry-1/DOMQuad-002-expected.txt: Added.
  • web-platform-tests/css/geometry-1/DOMQuad-002.html: Added.
  • web-platform-tests/css/geometry-1/DOMRect-001-expected.txt: Added.
  • web-platform-tests/css/geometry-1/DOMRect-001.html: Added.
  • web-platform-tests/css/geometry-1/OWNERS: Added.
  • web-platform-tests/css/geometry-1/WebKitCSSMatrix-expected.txt: Added.
  • web-platform-tests/css/geometry-1/WebKitCSSMatrix.html: Added.
  • web-platform-tests/css/geometry-1/WebKitCSSMatrix.worker-expected.txt: Added.
  • web-platform-tests/css/geometry-1/WebKitCSSMatrix.worker.html: Added.
  • web-platform-tests/css/geometry-1/WebKitCSSMatrix.worker.js: Added.

(test):

  • web-platform-tests/css/geometry-1/historical-expected.txt: Added.
  • web-platform-tests/css/geometry-1/historical.html: Added.
  • web-platform-tests/css/geometry-1/structured-serialization-expected.txt: Added.
  • web-platform-tests/css/geometry-1/structured-serialization.html: Added.
  • web-platform-tests/css/geometry-1/w3c-import.log: Added.
2:21 PM Changeset in webkit [216877] by Brent Fulgham
  • 3 edits in trunk/Source/WebKit2

[WK2][macOS][iOS] Allow Network process to access nsurlstoraged's top level domain data cache
https://bugs.webkit.org/show_bug.cgi?id=172128
<rdar://problem/30871490>

Reviewed by Alex Christensen.

  • NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb:
1:34 PM Changeset in webkit [216876] by mark.lam@apple.com
  • 15 edits in trunk

WorkerRunLoop::Task::performTask() should check !scriptController->isTerminatingExecution().
https://bugs.webkit.org/show_bug.cgi?id=171775
<rdar://problem/30975761>

Reviewed by Filip Pizlo.

Source/JavaScriptCore:

Increased the number of frames captured in VM::nativeStackTraceOfLastThrow()
from 25 to 100. From experience, I found that 25 is sometimes not sufficient
for our debugging needs.

Also added VM::throwingThread() to track which thread an exception was thrown in.
This may be useful if the client is entering the VM from different threads.

  • runtime/ExceptionScope.cpp:

(JSC::ExceptionScope::unexpectedExceptionMessage):

  • runtime/ExceptionScope.h:

(JSC::ExceptionScope::exception):
(JSC::ExceptionScope::unexpectedExceptionMessage):

  • runtime/Options.h:
  • Added the unexpectedExceptionStackTraceLimit option.
  • runtime/VM.cpp:

(JSC::VM::throwException):

  • runtime/VM.h:

(JSC::VM::throwingThread):
(JSC::VM::clearException):

Source/WebCore:

Currently, WorkerThread::stop() calls scheduleExecutionTermination() to terminate
JS execution first, followed by posting a cleanup task to the worker, and lastly,
it invokes terminate() on the WorkerRunLoop.

As a result, before the run loop is terminated, the worker thread may observe the
TerminatedExecutionException in JS code, bail out, see another JS task to run,
re-enters the VM to run said JS code, and fails with an assertion due to the
TerminatedExecutionException still being pending on VM entry.

WorkerRunLoop::Task::performTask() already has a check to only allow a task to
run if and only if !runLoop.terminated() and the task is not a clean up task.
We'll fix the above race by changing WorkerRunLoop::Task::performTask() to check
!context->script()->isTerminatingExecution() instead of !runLoop.terminated().
Since WorkerThread::stop() always scheduleExecutionTermination() before it
terminates the run loop, !context->script()->isTerminatingExecution() implies
!runLoop.terminated().

The only time that runLoop is terminated without scheduleExecutionTermination()
being called is when WorkerThread::stop() is called before the WorkerThread has
finished creating its WorkerGlobalScope. In this scenario, WorkerThread::stop()
will still terminate the run loop. Hence, after the WorkerGlobalScope is created
(in WorkerThread::workerThread()), we will check if the run loop has been
terminated (i.e. stop() was called). If so, we'll scheduleExecutionTermination()
there, and guarantee that if runloop.terminated() is true, then
context->script()->isTerminatingExecution() is also true.

Solutions that were considered but did not work (recorded for future reference):

  1. In WorkerThread::stop(), call scheduleExecutionTermination() only after it posts the cleanup task and terminate the run loop.

This did not work because this creates a race where the worker thread may run
the cleanup task before WorkerThread::stop() finishes. As a result, the
scriptController may be deleted before we get to invoke scheduleExecutionTermination()
on it, thereby resulting in a use after free.

To make this work, we would have to change the life cycle management strategy
of the WorkerScriptController. This is a more risky change that we would
want to take on at this time, and may also not be worth the gain.

  1. Break scheduleExecutionTermination() up into 2 parts i.e. WorkerThread::stop() will:
    1. set the scriptControllers m_isTerminatingExecution flag before posting the cleanup task and terminating the run loop, and
    2. invoke VM::notifyNeedsTermination() after posting the cleanup task and terminating the run loop.

This requires that we protect the liveness of the VM until we can invoke
notifyNeedsTermination() on it.

This did not work because:

  1. We may end up destructing the VM in WorkerThread::stop() i.e. in the main web frame, but only the worker thread holds the JS lock for the VM.

We can make the WorkerThread::stop() acquire the JS lock just before it
releases the protected VM's RefPtr, but that would mean the main thread
may be stuck waiting a bit for the worker thread to release its JSLock.
This is not desirable.

  1. In practice, changing the liveness period of the Worker VM relative to its WorkerScriptController and WorkerGlobalScope also has unexpected ramifications. We observed many worker tests failing with assertion failures and crashes due to this change.

Hence, this approach is also a more risky change than it appears on the
surface, and is not worth exploring at this time.

In the end, changing WorkerRunLoop::Task::performTask() to check for
!scriptController->isTerminatingExecution() is the most straight forward solution
that is easy to prove correct.

Also fixed a race in WorkerThread::workerThread() where it can delete the
WorkerGlobalScope while WorkerThread::stop() is in the midst of accessing it.
We now guard the the nullifying of m_workerGlobalScope with the
m_threadCreationAndWorkerGlobalScopeMutex as well.

UPDATE: the only new thing in this patch for re-landing (vs one previously landed)
is that instead of nullifying m_workerGlobalScope directly (thereby deleting the
WorkerGlobalScope context), we'll swap it out and delete it only after we've
unlocked the m_threadCreationAndWorkerGlobalScopeMutex. This is needed because
the destruction of the WorkerGlobalScope will cause the main thread to race against
the worker thread to delete the WorkerThread object, and the WorkerThread object
owns the mutex that we need to unlock after nullifying the m_workerGlobalScope
field.

This issue is covered by an existing test that I just unskipped in TestExpectations.

  • bindings/js/JSDOMPromiseDeferred.cpp:

(WebCore::DeferredPromise::callFunction):

  • bindings/js/WorkerScriptController.cpp:

(WebCore::WorkerScriptController::scheduleExecutionTermination):

  • Added a check to do nothing and return early if the scriptController is already terminating execution.
  • workers/WorkerRunLoop.cpp:

(WebCore::WorkerRunLoop::runInMode):
(WebCore::WorkerRunLoop::runCleanupTasks):
(WebCore::WorkerRunLoop::Task::performTask):

  • workers/WorkerRunLoop.h:
  • Made Task::performTask() private and make Task befriend the WorkerRunLoop class. This ensures that only the WorkerRunLoop may call performTask(). Note: this change only formalizes and hardens a relationship that was already in place before this.
  • workers/WorkerThread.cpp:

(WebCore::WorkerThread::start):
(WebCore::WorkerThread::workerThread):
(WebCore::WorkerThread::stop):

  • workers/WorkerThread.h:
  • Renamed m_threadCreationMutex to m_threadCreationAndWorkerGlobalScopeMutex so that it more accurately describes what it guards.

LayoutTests:

1:20 PM Changeset in webkit [216875] by ddkilzer@apple.com
  • 3 edits in trunk/Source/WebKit2

Update json.hpp to v2.1.1
<https://webkit.org/b/172085>
<rdar://problem/32180980>

Reviewed by Alex Christensen.

  • NetworkProcess/capture/NetworkCaptureEvent.cpp:
  • Define JSON_NOEXCEPTION as 1 to disable exceptions in json.hpp.

(WebKit::NetworkCapture::JSONCoder<String>::encode):
(WebKit::NetworkCapture::JSONCoder<WebCore::SharedBuffer>::encode):

  • Build std::string passing in length to avoid the need for a custom basic_json() constructor, and for efficiency.
  • NetworkProcess/capture/json.hpp:
  • Update to v2.1.1 and remove customizations.
1:16 PM Changeset in webkit [216874] by mmaxfield@apple.com
  • 4 edits
    4 adds in trunk

Unicode characters which can't be rendered in any font are invisible
https://bugs.webkit.org/show_bug.cgi?id=171942
<rdar://problem/32054234>

Reviewed by Tim Horton.

Source/WebCore:

There are some Unicode characters which don't have any font on the system which can render them.
These characters should be drawn as the .notdef "tofu." This is for security and usability, as
well as what Firefox and Chrome do. However, we still shouldn't draw characters with the
Default_Ignorable_Code_Point property, because this is what CoreText does.

This behavior is also what the Unicode spec recommends: In UTR #36 Unicode Security Considerations:
http://www.unicode.org/reports/tr36/#Recommendations_General
"If there is no available glyph for a character, never show a simple "?" or omit the character."

Also relevant is the Unicode Standard section 5.3 Unknown and MIssing Characters, starting at page
marked 203 in the following: http://www.unicode.org/versions/Unicode9.0.0/ch05.pdf

Tests: fast/text/default-ignorable.html

fast/text/unknown-char-notdef.html

  • platform/graphics/WidthIterator.cpp:

(WebCore::characterMustDrawSomething):

LayoutTests:

  • fast/text/default-ignorable-expected.html: Added.
  • fast/text/default-ignorable.html: Added.
  • fast/text/unknown-char-notdef-expected-mismatch.html: Added.
  • fast/text/unknown-char-notdef.html: Added.
12:54 PM Changeset in webkit [216873] by jmarcell@apple.com
  • 5 edits in tags/Safari-603.3.1.0.1/Source

Versioning.

12:50 PM Changeset in webkit [216872] by matthew_hanson@apple.com
  • 5 edits in branches/safari-603-branch/Source

Versioning.

12:44 PM Changeset in webkit [216871] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

Disable Picture In Picture API tests on unsupported platforms.
https://bugs.webkit.org/show_bug.cgi?id=172125
rdar://problem/32199477

Patch by Jeremy Jones <jeremyj@apple.com> on 2017-05-15
Reviewed by Simon Fraser.

The callbacks and allowing picture-in-picture require new SPI.

  • TestWebKitAPI/Tests/WebKit2Cocoa/PictureInPictureDelegate.mm:
12:38 PM Changeset in webkit [216870] by jmarcell@apple.com
  • 1 copy in tags/Safari-603.3.1.0.1

New tag.

12:34 PM Changeset in webkit [216869] by beidson@apple.com
  • 2 edits in trunk/Tools

[ios-simulator] API test WKWebView.ClearAppCache is failing.
https://bugs.webkit.org/show_bug.cgi?id=172120

Unreviewed test gardening.

  • TestWebKitAPI/Tests/WebKit2Cocoa/LocalStorageClear.mm:

(TEST): ios-sim needs explicit deleting of the app cache paths that I'd removed in 216805.

Restoring that code fixes this.

12:21 PM Changeset in webkit [216868] by timothy_horton@apple.com
  • 4 edits in trunk

Null deref under WebContentReader::readURL when interacting with a file URL
https://bugs.webkit.org/show_bug.cgi?id=172045
<rdar://problem/25880647>

Reviewed by Wenson Hsieh.

  • editing/ios/EditorIOS.mm:

(WebCore::Editor::WebContentReader::readURL):
The AppSupport soft link was wrong, as there is no such framework in /System/Library/Frameworks.
Thus, any time we hit this codepath, the soft linked function would be null, and calling it would crash.
Instead of just fixing the soft link, remove the code, because it does not seem necessary to
special-case fileURLs to images in the media directory.

  • TestWebKitAPI/Tests/ios/DataInteractionTests.mm:

(TestWebKitAPI::TEST):
The text of the file URL is pasted because a textual version of it gets
onto the pasteboard. However, this test would have crashed before. Also
tests that we don't make an <a>.

11:31 AM Changeset in webkit [216867] by Brent Fulgham
  • 2 edits in trunk/Source/WebKit2

Unreviewed build fix.

Debugging code was accidentally left in the Plugin sandbox profile.

  • PluginProcess/mac/com.apple.WebKit.plugin-common.sb.in:
11:26 AM Changeset in webkit [216866] by eric.carlson@apple.com
  • 5 edits in trunk/Source/WebCore

ASSERTION FAILED: wasRemoved in WebCore::RealtimeMediaSourceCenter::removeDevicesChangedObserver(DevicesChangedObserverToken)
https://bugs.webkit.org/show_bug.cgi?id=171529
<rdar://problem/31945791>

Reviewed by Jer Noble.

No new tests, fixes a crash in existing tests.

  • Modules/mediastream/MediaDevices.cpp:

(WebCore::MediaDevices::MediaDevices): Use a weak ptr.

  • platform/mediastream/RealtimeMediaSourceCenter.cpp:
  • platform/mediastream/RealtimeMediaSourceCenter.cpp:

(WebCore::observerMap): Use a static hash map for observers because the
source center can change at runtime.
(WebCore::RealtimeMediaSourceCenter::addDevicesChangedObserver):
(WebCore::RealtimeMediaSourceCenter::removeDevicesChangedObserver):
(WebCore::RealtimeMediaSourceCenter::captureDevicesChanged):

11:14 AM Changeset in webkit [216865] by commit-queue@webkit.org
  • 1 edit
    1 add in trunk/Source/WebInspectorUI

[GTK] Web Inspector: Add new GTK+ icons for Search icon of Quick Open dialog
https://bugs.webkit.org/show_bug.cgi?id=172110

Patch by Fujii Hironori <Fujii Hironori> on 2017-05-15
Reviewed by Michael Catanzaro.

Add a free icon for the Web Inspector in GTK+.

  • UserInterface/Images/gtk/Search.svg: Added.
11:11 AM Changeset in webkit [216864] by commit-queue@webkit.org
  • 2 edits
    4 adds in trunk/Source/WebInspectorUI

[GTK] Web Inspector: Add new GTK+ icons for Worker Scripts / Web Sockets
https://bugs.webkit.org/show_bug.cgi?id=164138

Patch by Fujii Hironori <Fujii Hironori> on 2017-05-15
Reviewed by Michael Catanzaro.

Add more free icons for the Web Inspector in GTK+.

  • UserInterface/Images/gtk/WorkerScript.png: Added.
  • UserInterface/Images/gtk/WorkerScript@2x.png: Added.
  • UserInterface/Images/gtk/WorkerScriptLarge.png: Added.
  • UserInterface/Images/gtk/WorkerScriptLarge@2x.png: Added.
  • UserInterface/Views/ResourceIcons.css:

(.script.worker-icon .icon):
(.large .script.worker-icon .icon):
(body:matches(.mac-platform, .windows-platform) .script.worker-icon .icon): Deleted.
(body:matches(.mac-platform, .windows-platform) .large .script.worker-icon .icon): Deleted.

10:24 AM Changeset in webkit [216863] by Brent Fulgham
  • 2 edits in trunk/Source/WebCore

[iOS WK1] Do not try to dispatch messages to subframes if their documents have not been constructed yet.
https://bugs.webkit.org/show_bug.cgi?id=172059
<rdar://problem/31963192>

Reviewed by Zalan Bujtas.

On iOS WK1 we can end up in an inconsistent state, where

  1. The web thread is inside a newly-injected iframe's document's constructor and
  2. waiting on a delegate callback on the main thread

while the main thread
(a) Evaluates arbitrary JavaScript that modifies storage which
(b) Triggers an event dispatch.

  • storage/StorageEventDispatcher.cpp:

(WebCore::StorageEventDispatcher::dispatchSessionStorageEvents): If the sub-frame's document
is in an inconsistent state, skip it.
(WebCore::StorageEventDispatcher::dispatchLocalStorageEvents): Ditto.
(WebCore::StorageEventDispatcher::dispatchSessionStorageEventsToFrames): Ditto.
(WebCore::StorageEventDispatcher::dispatchLocalStorageEventsToFrames): Ditto.

8:26 AM Changeset in webkit [216862] by yoon@igalia.com
  • 3 edits in trunk/Source/WebKit2

[WPE] Unreviewed debug build fix
https://bugs.webkit.org/show_bug.cgi?id=172118

Unreviewed, remove a dead code accidentally committed in r215259.

  • Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.h:

Remove deprecated CompositingRunLoop::isCurrent.

  • Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:

(WebKit::ThreadedCompositor::frameComplete):

7:21 AM Changeset in webkit [216861] by Alan Bujtas
  • 3 edits
    2 adds in trunk

Simple line layout: Leading whitespace followed by a <br> produces an extra linebreak.
https://bugs.webkit.org/show_bug.cgi?id=172076

Reviewed by Antti Koivisto.

Source/WebCore:

When the collapsed whitespace does not fit the line, we need to push it to the next line
so that we can decide whether any soft/hard linebreak should be skipped (to avoid double line breaks) or not.

Test: fast/text/simple-line-layout-leading-whitespace-with-soft-hard-linebreak.html

  • rendering/SimpleLineLayout.cpp:

(WebCore::SimpleLineLayout::consumeLineBreakIfNeeded): special handling <br>
(WebCore::SimpleLineLayout::firstFragment): Now we need to deal with leading collapsed whitespace.
(WebCore::SimpleLineLayout::createLineRuns): We need to push even the collapsed whitespace to the next line.

LayoutTests:

  • fast/text/simple-line-layout-leading-whitespace-with-soft-hard-linebreak-expected.html: Added.
  • fast/text/simple-line-layout-leading-whitespace-with-soft-hard-linebreak.html: Added.
2:14 AM Changeset in webkit [216860] by nael.ouedraogo@crf.canon.fr
  • 7 edits
    1 copy
    2 adds in trunk

Invalid MediaSource duration value should throw TyperError instead of InvalidStateError
https://bugs.webkit.org/show_bug.cgi?id=171653

Reviewed by Chris Dumez.

LayoutTests/imported/w3c:

Rebaseline test results.

  • web-platform-tests/media-source/mediasource-duration-boundaryconditions-expected.txt:

Source/WebCore:

Modify MediaSource::setDuration to throw a TypeError when duration value is invalid as per MSE specification
(https://www.w3.org/TR/2016/REC-media-source-20161117/#dom-mediasource-duration).

Update expectations of corresponding WPT test.

  • Modules/mediasource/MediaSource.cpp:

(WebCore::MediaSource::setDuration):
(WebCore::MediaSource::setDurationInternal):

LayoutTests:

Modify MediaSource::setDuration to throw a TypeError when duration value is invalid as per MSE specification
(https://www.w3.org/TR/2016/REC-media-source-20161117/#dom-mediasource-duration).

Update expectations of corresponding WPT test.

  • platform/gtk/TestExpectations:
  • platform/gtk/imported/w3c/web-platform-tests/media-source/mediasource-duration-boundaryconditions-expected.txt: Added.
  • platform/mac-elcapitan/imported/w3c/web-platform-tests/media-source/mediasource-duration-boundaryconditions-expected.txt: Added.
  • platform/mac/TestExpectations:
2:06 AM Changeset in webkit [216859] by yoon@igalia.com
  • 3 edits
    2 adds in trunk

[CAIRO] Painting an image mask with a matrix above Pixman's limit breaks internal states of Cairo
https://bugs.webkit.org/show_bug.cgi?id=169094

Reviewed by Žan Doberšek.

Source/WebCore:

It is the same problem which addressed in r212431.
In HiDPI situation, it happens easily due to the size of coordinates.
Also, if this bug happens, it will break the rendering continuously
since we are reusing graphics contexts to render webpages in same
webview.

Test: fast/hidpi/hidpi-long-page-with-inset-element.html

  • platform/graphics/cairo/PlatformContextCairo.cpp:

(WebCore::PlatformContextCairo::pushImageMask):
We can avoid the limit of the Pixman by reducing the source surface's
size, and it will create a minimal pattern matrix.

LayoutTests:

  • fast/hidpi/hidpi-long-page-with-inset-element-expected.html: Added.
  • fast/hidpi/hidpi-long-page-with-inset-element.html: Added.
12:01 AM Changeset in webkit [216858] by jcraig@apple.com
  • 2 edits
    11 adds
    1 delete in trunk/Websites/webkit.org

2017-05-14 James Craig <jcraig@apple.com>

Upload poster images and working captioned video
https://bugs.webkit.org/show_bug.cgi?id=172102

Unreviewed. More resources for prefers-reduced-motion post.

  • blog-files/prefers-reduced-motion/axi.htm: Added.
  • blog-files/prefers-reduced-motion/axi.png: Removed.
  • blog-files/prefers-reduced-motion/posters: Added.
  • blog-files/prefers-reduced-motion/posters/apple_env_load.jpg: Added.
  • blog-files/prefers-reduced-motion/posters/apple_env_planeshift.jpg: Added.
  • blog-files/prefers-reduced-motion/posters/apple_ios10.jpg: Added.
  • blog-files/prefers-reduced-motion/posters/apple_shoot.jpg: Added.
  • blog-files/prefers-reduced-motion/posters/apple_shoot_reduced.jpg: Added.
  • blog-files/prefers-reduced-motion/posters/apple_sierra.jpg: Added.
  • blog-files/prefers-reduced-motion/posters/apple_sierra_reduced.jpg: Added.
  • blog-files/prefers-reduced-motion/posters/axi.jpg: Added.
  • blog-files/prefers-reduced-motion/posters/viljami.jpg: Added.
  • blog-files/prefers-reduced-motion/prm.htm: Link to axi.htm video demo.

May 14, 2017:

11:20 PM Changeset in webkit [216857] by pvollan@apple.com
  • 6 edits in trunk

[Win] fast/cookies/local-file-can-set-cookies.html is flaky.
https://bugs.webkit.org/show_bug.cgi?id=172071

Reviewed by Alexey Proskuryakov.

Source/WebKit/win:

We need to delete all cookies after each test.

  • Interfaces/IWebPreferencesPrivate.idl:
  • WebPreferences.cpp:

(WebPreferences::linkPreloadEnabled):
(WebPreferences::clearNetworkLoaderSession):

  • WebPreferences.h:

Tools:

  • DumpRenderTree/win/DumpRenderTree.cpp:

(resetWebPreferencesToConsistentValues):

10:51 PM Changeset in webkit [216856] by zandobersek@gmail.com
  • 2 edits in trunk/Source/WebCore

Unreviewed build fix with newer Perl versions.

  • bindings/scripts/CodeGeneratorJS.pm:

(AddLegacyCallerOperationIfNeeded): Support for experimental push on scalar (and
other auto-dereferencing) was removed in Perl 5.24. Instead, the LegacyCallers array
has to be dereferenced when pushing new values to it.

10:00 PM Changeset in webkit [216855] by jcraig@apple.com
  • 2 edits in trunk/Websites/webkit.org

2017-05-14 James Craig <jcraig@apple.com>

AX: All the articles on the WebKit blog are called 'Clickable Link' by VoiceOver
https://bugs.webkit.org/show_bug.cgi?id=172096
<rdar://problem/31624323>

Unreviewed. Fixing broken link titles for screen readers.

  • wp-content/themes/webkit/loop.php: Adding relevant link label for accessibility.
8:45 PM Changeset in webkit [216854] by bshafiei@apple.com
  • 3 edits in tags/Safari-604.1.22.0.1/Source/WebCore

Merged r216807. rdar://problem/32169232

8:44 PM Changeset in webkit [216853] by bshafiei@apple.com
  • 7 edits in tags/Safari-604.1.22.0.1/Source

Versioning.

8:42 PM Changeset in webkit [216852] by bshafiei@apple.com
  • 1 copy in tags/Safari-604.1.22.0.1

New tag.

6:09 PM Changeset in webkit [216851] by weinig@apple.com
  • 22 edits
    2 adds
    1 delete in trunk

[WebIDL/DOM] Remove need for custom bindings for HTMLAllCollection and bring up to spec
https://bugs.webkit.org/show_bug.cgi?id=172095

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

  • web-platform-tests/html/infrastructure/common-dom-interfaces/collections/htmlallcollection-expected.txt:

Update results.

Source/WebCore:

  • Adds support for the legacycaller WebIDL special annotation.
  • Updates implementation of HTMLAllCollection to match the current HTML spec.

Test: fast/dom/document-all.html

  • CMakeLists.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/JSBindingsAllInOne.cpp:
  • bindings/js/JSHTMLAllCollectionCustom.cpp: Removed.

Removed JSHTMLAllCollectionCustom.cpp

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateInterface):
(AddLegacyCallerOperationIfNeeded):
Before code generation, clone all the legacycaller operations and put them
in their own set, so they can form an overload set.

(AddStringifierOperationIfNeeded):
Use IDLParser::cloneType as the FIXME suggested.

(GenerateHeader):
Group call related functionality together and use new IsCallable predicate.

(GenerateOverloadedFunctionOrConstructor):
Generalize a little bit to allow the function being overloaded to be an overloaded legacycaller.

(GenerateImplementation):
Add call to generate the legacycaller code.

(GenerateLegacyCallerDefinitions):
(GenerateLegacyCallerDefinition):
Generate the legacycaller definition, using GenerateArgumentsCountCheck, GenerateParametersCheck
and GenerateImplementationFunctionCall to do all the heavy lifting.

(IsCallable):
Add helper predicate for both custom calls and legacycaller.

  • bindings/scripts/IDLParser.pm:

(cloneType):.
(cloneArgument):.
(cloneOperation):
Add cloning functions for IDLArgument and IDLOperation, and make IDLType's
clone feasible for calling outside the package by removing the unneeded
self parameter.

  • bindings/scripts/test/JS/JSTestObj.cpp
  • bindings/scripts/test/JS/JSTestObj.h
  • bindings/scripts/test/TestObj.idl:

Add testing of legacycaller overloading.

  • dom/Document.cpp:

(WebCore::Document::allFilteredByName):

  • dom/Document.h:

Add new collection access for the HTMLAllNamedSubCollection.

  • html/CachedHTMLCollection.h:

(WebCore::nameShouldBeVisibleInDocumentAll):
Update list of tags to match the current spec.

  • html/CollectionType.h:

Add new type for HTMLAllNamedSubCollection.

  • html/GenericCachedHTMLCollection.cpp:

(WebCore::GenericCachedHTMLCollection<traversalType>::elementMatches):
Specify that DocumentAllNamedItems does not want
the default elementMatches.

  • html/HTMLAllCollection.cpp:

(WebCore::HTMLAllCollection::namedOrIndexedItemOrItems):
(WebCore::HTMLAllCollection::namedItemOrItems):
(WebCore::HTMLAllNamedSubCollection::~HTMLAllNamedSubCollection):
(WebCore::HTMLAllNamedSubCollection::elementMatches):

  • html/HTMLAllCollection.h:

Move implementations from the custom binding, and re-implement to
match the spec. Alternate names to item/namedItem were needed to not
shadow the existing ones in HTMLCollection. HTMLAllNamedSubCollection
is a simple HTMLCollection that matches on a name, following the rules
of document.all about which tags can have name attributes.

  • html/HTMLAllCollection.idl:

Remove custom annotations and add legacycaller which is now supported.

  • html/HTMLCollection.cpp:

(WebCore::invalidationTypeExcludingIdAndNameAttributes):
(WebCore::HTMLCollection::~HTMLCollection):
Add DocumentAllNamedItems.

LayoutTests:

  • fast/dom/collection-null-like-arguments-expected.txt:

Update results.

  • fast/dom/document-all-expected.txt: Added.
  • fast/dom/document-all.html: Added.

New test that covers a bunch of missing coverage.

5:46 PM Changeset in webkit [216850] by commit-queue@webkit.org
  • 3 edits
    6 deletes in trunk/Source/WebKit2

[CoordinatedGraphics] Remove unused files and lines
https://bugs.webkit.org/show_bug.cgi?id=172080

Patch by Daewoong Jang <daewoong.jang@navercorp.com> on 2017-05-14
Reviewed by Darin Adler.

  • Shared/CoordinatedGraphics/CoordinatedGraphicsArgumentCoders.cpp: Removed.
  • Shared/CoordinatedGraphics/CoordinatedGraphicsArgumentCoders.h: Removed.
  • Shared/CoordinatedGraphics/WebCoordinatedSurface.cpp: Removed.
  • Shared/CoordinatedGraphics/WebCoordinatedSurface.h: Removed.
  • UIProcess/CoordinatedGraphics/WKCoordinatedSceneAPICast.h: Removed.
  • UIProcess/WebPageProxy.h:
  • WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp:
  • WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.messages.in: Removed.
2:16 PM Changeset in webkit [216849] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

Remove unused lambda in TextFragmentIterator::TextFragment::split() and cleanup dependencies.
https://bugs.webkit.org/show_bug.cgi?id=172089

Reviewed by David Kilzer.

  • rendering/SimpleLineLayout.cpp:

(WebCore::SimpleLineLayout::splitFragmentToFitLine):

  • rendering/SimpleLineLayoutTextFragmentIterator.h:

(WebCore::SimpleLineLayout::TextFragmentIterator::TextFragment::split):
(WebCore::SimpleLineLayout::TextFragmentIterator::TextFragment::splitWithHyphen):

1:10 PM Changeset in webkit [216848] by jmarcell@apple.com
  • 7 edits in branches/safari-604.1.21-branch/Source

Versioning.

12:27 PM Changeset in webkit [216847] by akling@apple.com
  • 2 edits in trunk/Source/WebKit2

Always reset the assisted node when the main frame commits a new load.
https://bugs.webkit.org/show_bug.cgi?id=172088

Reviewed by Antti Koivisto.

WebPage::m_assistedNode could extend the lifetime of the document it pointed into
if the main frame was navigated while the assisted node was in one of its subframes.
The life-supported document wouldn't be reachable from JavaScript but nevertheless
would consume memory and other resources.

This patch fixes the issue by always clearing WebPage::m_assistedNode when the main
frame commits a new load.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::resetAssistedNodeForFrame):

10:43 AM Changeset in webkit [216846] by ddkilzer@apple.com
  • 3 edits in trunk/LayoutTests

[iOS/macOS Debug WK2] LayoutTests/imported/w3c/web-platform-tests/webrtc/interfaces.html is a flaky crash due to assertion failure
<https://bugs.webkit.org/show_bug.cgi?id=172094>
<rdar://problem/32184256>

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
  • platform/mac-wk2/TestExpectations:
  • Mark test as flaky crash on Debug WK2 builds.
9:36 AM Changeset in webkit [216845] by matthew_hanson@apple.com
  • 1 copy in tags/Safari-604.1.21.3

Tag Safari-604.1.21.3.

6:27 AM Changeset in webkit [216844] by Csaba Osztrogonác
  • 2 edits in trunk/Source/WebKit2

Unreviewed Mac cmake buildfix after r216690, just for fun.

  • PlatformMac.cmake:
4:28 AM Changeset in webkit [216843] by ddkilzer@apple.com
  • 2 edits in trunk/LayoutTests

[macOS Debug WK1] fast/parser/adoption-agency-unload-iframe-4.html is a flaky timeout (always on iOS 10 Release WK1)
<https://webkit.org/b/172092>

Unreviewed test gardening.

  • platform/ios-wk1/TestExpectations:
  • This only times out on Release builds.
4:16 AM Changeset in webkit [216842] by ddkilzer@apple.com
  • 3 edits in trunk/LayoutTests

[macOS Debug WK1] fast/parser/adoption-agency-unload-iframe-4.html is a flaky timeout (always on iOS 10 Release WK1)
<https://webkit.org/b/172092>

Unreviewed test gardening.

See also Bug 169211 for a similar GTK WK1 timeout.

  • platform/ios-wk1/TestExpectations:
  • Mark as always timing out on all builds.
  • platform/mac-wk1/TestExpectations:
  • Mark flaky on Debug builds.
3:41 AM Changeset in webkit [216841] by ddkilzer@apple.com
  • 9 edits in trunk/Source/WebKit2

Fix unused lambdas in WebKit2
<https://webkit.org/b/172090>

Reviewed by Chris Dumez.

Fixes unused lambda warnings found with newer clang.

  • NetworkProcess/cache/NetworkCache.cpp:

(WebKit::NetworkCache::Cache::retrieve):

  • NetworkProcess/cache/NetworkCacheStatistics.cpp:

(WebKit::NetworkCache::Statistics::initialize):

  • Use UNUSED_PARAM() to silence unused lambda warning since 'startTime' is used in Debug builds.
  • NetworkProcess/capture/NetworkCaptureManager.cpp:

(WebKit::NetworkCapture::Manager::fuzzyMatchURLs):

  • Remove unused 'this' from lambda capture.
  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(-[WKNetworkSessionDelegate URLSession:task:willPerformHTTPRedirection:newRequest:completionHandler:]):
(-[WKNetworkSessionDelegate URLSession:task:_schemeUpgraded:completionHandler:]):
(-[WKNetworkSessionDelegate URLSession:task:didReceiveChallenge:completionHandler:]):
(-[WKNetworkSessionDelegate URLSession:dataTask:didReceiveResponse:completionHandler:]):

  • Use UNUSED_PARAM() to silence unused lambda warning since 'taskIdentifier' is used in Debug builds.
  • UIProcess/WebResourceLoadStatisticsStore.cpp:

(WebKit::WebResourceLoadStatisticsStore::registerSharedResourceLoadObserver):
(WebKit::WebResourceLoadStatisticsStore::applicationWillTerminate):

  • Remove unused 'this' from lambda captures.
  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::fetchData):

  • Remove unused 'fetchOptions' from lambda capture.

(WebKit::WebsiteDataStore::fetchDataForTopPrivatelyControlledDomains):

  • Remove unused 'this' from lambda capture.
  • UIProcess/mac/ViewGestureControllerMac.mm:

(WebKit::ViewGestureController::forceRepaintIfNeeded):

  • Remove unused 'this' from lambda capture.
  • WebProcess/cocoa/WebVideoFullscreenManager.mm:

(WebKit::WebVideoFullscreenManager::didExitFullscreen):

  • Remove unused 'this' from nested lambda captures.
1:18 AM Changeset in webkit [216840] by rniwa@webkit.org
  • 2 edits in trunk/Websites/perf.webkit.org

Build fix. Added a missing null check.

  • public/v3/pages/analysis-task-page.js:

(AnalysisTaskConfiguratorPane.prototype.setTestGroups):

12:31 AM Changeset in webkit [216839] by Chris Dumez
  • 11 edits
    1 delete in trunk

Drop PassRefPtr class from WTF
https://bugs.webkit.org/show_bug.cgi?id=172091

Reviewed by Alex Christensen.

Source/WTF:

Drop PassRefPtr class from WTF as it is no longer used or needed.
Also drop RefPtr::release() for the same reasons.

  • WTF.xcodeproj/project.pbxproj:
  • wtf/CMakeLists.txt:
  • wtf/CrossThreadCopier.cpp:
  • wtf/CrossThreadCopier.h:
  • wtf/Forward.h:
  • wtf/PassRefPtr.h: Removed.
  • wtf/RefPtr.h:

(WTF::refIfNotNull):
(WTF::derefIfNotNull):
(WTF::RefPtr::RefPtr):
(WTF::RefPtr::release): Deleted.

  • wtf/SizeLimits.cpp:
  • wtf/Vector.h:

Tools:

Drop API test coverage.

  • TestWebKitAPI/Tests/WTF/Ref.cpp:

(TestWebKitAPI::TEST):
(TestWebKitAPI::passWithPassRefPtr): Deleted.

May 13, 2017:

11:05 PM Changeset in webkit [216838] by ddkilzer@apple.com
  • 2 edits in trunk/Source/WebCore

Unused lambda in JSWebKitSubtleCrypto::wrapKey()
<https://webkit.org/b/172087>

Reviewed by Chris Dumez.

Fixes the following warning with newer clang:

Source/WebCore/bindings/js/JSWebKitSubtleCryptoCustom.cpp:594:35: error: lambda capture 'keyFormat' is not used [-Werror,-Wunused-lambda-capture]

auto exportSuccessCallback = [keyFormat, algorithm, parameters, wrappingKey, wrapper](const Vector<uint8_t>& exportedKeyData) mutable {


  • bindings/js/JSWebKitSubtleCryptoCustom.cpp:

(WebCore::JSWebKitSubtleCrypto::wrapKey): Remove unused lambda.

10:37 PM Changeset in webkit [216837] by ddkilzer@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Unused lambda capture in JSContextGroupAddMarkingConstraint()
<https://webkit.org/b/172084>

Reviewed by Saam Barati.

Fixes the following warning with newer clang:

Source/JavaScriptCore/API/JSMarkingConstraintPrivate.cpp:78:11: error: lambda capture 'vm' is not used [-Werror,-Wunused-lambda-capture]

[&vm, constraintCallback, userData]


  • API/JSMarkingConstraintPrivate.cpp:

(JSContextGroupAddMarkingConstraint): Remove unused lambda
capture for '&vm'.

10:27 PM Changeset in webkit [216836] by eric.carlson@apple.com
  • 39 edits
    2 adds in trunk

[MediaStream] deviceId constraint doesn't work with getUserMedia
https://bugs.webkit.org/show_bug.cgi?id=171877
<rdar://problem/31899730>

Reviewed by Jer Noble.

Source/WebCore:

Test: fast/mediastream/get-user-media-device-id.html

  • Modules/mediastream/MediaConstraintsImpl.h:

(WebCore::MediaConstraintsData::MediaConstraintsData): Add a constructor that
takes a const MediaConstraints&.

  • Modules/mediastream/MediaDevices.cpp:

(WebCore::MediaDevices::~MediaDevices): m_deviceChangedToken is a std::optional<>.

  • Modules/mediastream/MediaDevices.h:
  • Modules/mediastream/MediaDevicesEnumerationRequest.cpp:

(WebCore::MediaDevicesEnumerationRequest::topLevelDocumentOrigin): Don't return
NULL for the main frame so the origin matches that returned for a UserMediaRequest.

  • Modules/mediastream/UserMediaController.h:

(WebCore::UserMediaController::setDeviceIDHashSalt): Deleted, not used.
(WebCore::UserMediaController::deviceIDHashSalt): Deleted, not used.

  • Modules/mediastream/UserMediaRequest.cpp:

(WebCore::UserMediaRequest::allow): Add device ID hash salt parameter, set it on
constraints.

  • Modules/mediastream/UserMediaRequest.h:
  • platform/mediastream/MediaConstraints.h:
  • platform/mediastream/RealtimeMediaSource.cpp:

(WebCore::RealtimeMediaSource::fitnessDistance): ASSERT if called for DeviceId.
(WebCore::RealtimeMediaSource::selectSettings): Special case DeviceId because it
we have to hash the device ID before comparing, and because the DeviceId can't be
changed so it should never be added to the flattened constraints.
(WebCore::RealtimeMediaSource::supportsConstraints):
(WebCore::RealtimeMediaSource::applyConstraints):

  • platform/mediastream/RealtimeMediaSource.h:
  • platform/mediastream/RealtimeMediaSourceCenter.cpp:

(WebCore::RealtimeMediaSourceCenter::validateRequestConstraints): Implement.

  • platform/mediastream/RealtimeMediaSourceCenter.h:
  • platform/mediastream/RealtimeMediaSourceSupportedConstraints.cpp:

(WebCore::RealtimeMediaSourceSupportedConstraints::nameForConstraint): Deleted, unused.
(WebCore::RealtimeMediaSourceSupportedConstraints::constraintFromName): Deleted, unused.

  • platform/mediastream/RealtimeMediaSourceSupportedConstraints.h:
  • platform/mediastream/mac/AVVideoCaptureSource.mm:
  • platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp:

(WebCore::RealtimeMediaSourceCenterMac::bestSourcesForTypeAndConstraints): Pass device
id, not empty string.
(WebCore::RealtimeMediaSourceCenterMac::validateRequestConstraints): Deleted.

  • platform/mediastream/mac/RealtimeMediaSourceCenterMac.h:
  • platform/mock/MockRealtimeMediaSourceCenter.cpp:

(WebCore::MockRealtimeMediaSourceCenter::validateRequestConstraints): Deleted.

  • platform/mock/MockRealtimeMediaSourceCenter.h:

Source/WebKit2:

  • Shared/WebCoreArgumentCoders.cpp:

(IPC::ArgumentCoder<MediaConstraintsData>::encode): Encode deviceIDHashSalt.
(IPC::ArgumentCoder<MediaConstraintsData>::decode): Decode deviceIDHashSalt.

  • UIProcess/UserMediaPermissionCheckProxy.cpp:

(WebKit::UserMediaPermissionCheckProxy::UserMediaPermissionCheckProxy): Initialize
completion handler, frame ID, and security origins.
(WebKit::UserMediaPermissionCheckProxy::setUserMediaAccessInfo): Complete by calling
completion handler because we now sometimes request access info before calling gUM.
(WebKit::UserMediaPermissionCheckProxy::invalidate): Clear completion handler.

  • UIProcess/UserMediaPermissionCheckProxy.h:
  • UIProcess/UserMediaPermissionRequestManagerProxy.cpp:

(WebKit::FrameAuthorizationState::FrameAuthorizationState): Take security origins, not
UserMediaPermissionRequestProxy, so it can be constructed with a UserMediaPermissionCheckProxy.
(WebKit::FrameAuthorizationState::ensureSecurityOriginsAreEqual): Ditto. Clear has salt
when origins don't match.
(WebKit::UserMediaPermissionRequestManagerProxy::stateForRequest): Templatize.
(WebKit::UserMediaPermissionRequestManagerProxy::userMediaAccessWasDenied): Fix typo.
(WebKit::UserMediaPermissionRequestManagerProxy::userMediaAccessWasGranted): Ditto.
Don't set state for empty UIDs. Pass hash salt to web process.
(WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame):
The device ID hash salt is now required to validate constraints, so get it first.
(WebKit::UserMediaPermissionRequestManagerProxy::getUserMediaPermissionInfo): Helper
method used to get the device ID hash salt.
(WebKit::UserMediaPermissionRequestManagerProxy::enumerateMediaDevicesForFrame): Restructure
to use getUserMediaPermissionInfo.
(WebKit::UserMediaPermissionRequestManagerProxy::didCompleteUserMediaPermissionCheck): Deleted.

  • UIProcess/UserMediaPermissionRequestManagerProxy.h:
  • WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:

(WebKit::UserMediaPermissionRequestManager::userMediaAccessWasGranted): Add device ID
hash salt parameter.

  • WebProcess/MediaStream/UserMediaPermissionRequestManager.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::userMediaAccessWasGranted): Ditto.

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:
  • WebProcess/cocoa/UserMediaCaptureManager.cpp:

(WebKit::UserMediaCaptureManager::createCaptureSource): Use new MediaConstraintsData
constructor.

Tools:

The device ID hash salt is now required for getUserMedia to check deviceId constraint, so
implement the "checkUserMediaPermission" callback.

  • TestWebKitAPI/Tests/WebKit2/UserMedia.cpp:

(TestWebKitAPI::decidePolicyForUserMediaPermissionRequestCallBack):
(TestWebKitAPI::checkUserMediaPermissionCallback):
(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKit2Cocoa/UserMediaDisabled.mm:

(-[UserMediaUIDelegate _webView:checkUserMediaPermissionForURL:mainFrameURL:frameIdentifier:decisionHandler:]):

LayoutTests:

  • fast/mediastream/get-user-media-device-id-expected.txt: Added.
  • fast/mediastream/get-user-media-device-id.html: Added.
  • fast/mediastream/apply-constraints-video-expected.txt: Updated.
  • fast/mediastream/apply-constraints-video.html: Ditto.
10:21 PM Changeset in webkit [216835] by ddkilzer@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

[JSC] config.rb fails when checking some clang versions
<https://webkit.org/b/172082>

Reviewed by Mark Lam.

  • offlineasm/config.rb:
  • Add support for quad-dotted version of Apple clang (800.0.12.1).
  • Add support for checking open source clang version (5.0.0).
9:27 PM Changeset in webkit [216834] by ddkilzer@apple.com
  • 2 edits in trunk/LayoutTests

TestExpectations: Remove last refereneces to Legacy Notifications

Unreviewed test gardening fixes these lint warnings:

LayoutTests/TestExpectations:1222 Path does not exist. fast/notifications/notifications-event-stop-propagation.html
LayoutTests/TestExpectations:1223 Path does not exist. fast/notifications/notifications-multi-events.html

Notification support was removed in r216641.

9:04 PM Changeset in webkit [216833] by Chris Dumez
  • 28 edits in trunk

Stop using RefPtr::release()
https://bugs.webkit.org/show_bug.cgi?id=172074

Reviewed by Geoffrey Garen.

Source/WebCore:

  • css/parser/CSSPropertyParser.cpp:

(WebCore::FontVariantLigaturesParser::finalizeValue):
(WebCore::FontVariantNumericParser::finalizeValue):

  • css/parser/CSSPropertyParserHelpers.cpp:

(WebCore::CSSPropertyParserHelpers::CalcParser::consumeValue):

  • loader/SubresourceLoader.cpp:

(WebCore::SubresourceLoader::create):

  • loader/archive/mhtml/MHTMLArchive.cpp:

(WebCore::MHTMLArchive::generateMHTMLData):

  • loader/archive/mhtml/MHTMLArchive.h:
  • loader/archive/mhtml/MHTMLParser.cpp:

(WebCore::MHTMLParser::parseArchiveWithHeader):

  • platform/audio/ios/AudioFileReaderIOS.cpp:

(WebCore::AudioFileReader::createBus):

  • platform/glib/SharedBufferGlib.cpp:

(WebCore::SharedBuffer::createFromReadingFile):

  • platform/graphics/ca/win/CACFLayerTreeHost.cpp:

(WebCore::CACFLayerTreeHost::create):

  • platform/graphics/cairo/CairoUtilities.cpp:

(WebCore::copyCairoImageSurface):

  • platform/graphics/cairo/ImageBufferCairo.cpp:

(WebCore::getImageData):

  • platform/graphics/gtk/IconGtk.cpp:

(WebCore::Icon::createIconForFiles):

  • platform/graphics/win/FontCacheWin.cpp:

(WebCore::FontCache::systemFallbackForCharacters):

  • platform/win/SharedBufferWin.cpp:

(WebCore::SharedBuffer::createFromReadingFile):

Source/WebKit/win:

  • WebFrame.cpp:

(WebFrame::loadPlainTextString):
(WebFrame::loadHTMLString):

  • WebFramePolicyListener.cpp:

(WebFramePolicyListener::receivedPolicyDecision):

Source/WebKit2:

  • Platform/unix/SharedMemoryUnix.cpp:

(WebKit::SharedMemory::create):

  • Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:

(WebKit::CoordinatedGraphicsScene::createImageBacking):

  • Shared/cairo/ShareableBitmapCairo.cpp:

(WebKit::ShareableBitmap::createCairoSurface):

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMNodeFilter.cpp:

(WebKit::core):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::getContentsAsMHTMLData):

Source/WTF:

  • wtf/win/WorkQueueWin.cpp:

(WTF::WorkQueue::dispatchAfter):

Tools:

  • TestWebKitAPI/Tests/WTF/RefPtr.cpp:

(TestWebKitAPI::TEST):

7:20 PM Changeset in webkit [216832] by Ryan Haddad
  • 2 edits in branches/safari-603-branch/LayoutTests

Unreviewed test gardening.

  • platform/ios-simulator/TestExpectations:
7:18 PM Changeset in webkit [216831] by Ryan Haddad
  • 3 edits in branches/safari-603-branch/LayoutTests

Merge r216614.

6:07 PM Changeset in webkit [216830] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Remove flaky expectation for LayoutTest media/media-controls-clone-crash.html.
https://bugs.webkit.org/show_bug.cgi?id=171978

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
2:36 PM Changeset in webkit [216829] by jfernandez@igalia.com
  • 7 edits
    2 adds in trunk

[css-align] Implement the place-self shorthand
https://bugs.webkit.org/show_bug.cgi?id=168846

Reviewed by Zalan Bujtas.

Source/WebCore:

The CSS Box Alignment specification defines a new shorthand to set the
Content Alignment properties (align-self and justify-self) at the
same time.

This patch provides the implementation of the CSS parsing logic and the
required regression tests.

Test: css3/parse-place-self.html

  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::ComputedStyleExtractor::propertyValue):

  • css/CSSProperties.json:
  • css/StyleProperties.cpp:

(WebCore::StyleProperties::getPropertyValue):

  • css/parser/CSSPropertyParser.cpp:

(WebCore::CSSPropertyParser::consumePlaceSelfShorthand):
(WebCore::CSSPropertyParser::parseShorthand):

  • css/parser/CSSPropertyParser.h:

LayoutTests:

Regression tests for the new place-self alignment shorthand.

  • css3/parse-place-self-expected.txt: Added.
  • css3/parse-place-self.html: Added.
1:46 PM Changeset in webkit [216828] by jmarcell@apple.com
  • 6 edits
    2 adds in branches/safari-603-branch/Source

Cherry-pick r214313. rdar://problem/32080658

1:32 PM Changeset in webkit [216827] by commit-queue@webkit.org
  • 24 edits
    1 delete in trunk

Unreviewed, rolling out r216808.
https://bugs.webkit.org/show_bug.cgi?id=172075

caused lldb to hang when debugging (Requested by smfr on
#webkit).

Reverted changeset:

"Use Mach exceptions instead of signals where possible"
https://bugs.webkit.org/show_bug.cgi?id=171865
http://trac.webkit.org/changeset/216808

12:10 PM Changeset in webkit [216826] by commit-queue@webkit.org
  • 15 edits in trunk

Unreviewed, rolling out r216801.
https://bugs.webkit.org/show_bug.cgi?id=172072

Many memory corruption crashes on worker threads (Requested by
ap on #webkit).

Reverted changeset:

"WorkerRunLoop::Task::performTask() should check
!scriptController->isTerminatingExecution()."
https://bugs.webkit.org/show_bug.cgi?id=171775
http://trac.webkit.org/changeset/216801

11:43 AM Changeset in webkit [216825] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

AccessibilityRenderObject::textUnderElement needs to assert on unclean tree.
https://bugs.webkit.org/show_bug.cgi?id=172065

Reviewed by Simon Fraser.

r192103 changed the assert logic incorrectly. If the tree is dirty, regardless of the renderer's type,
TextIterator will end up forcing style update/layout on the render tree.
The original assert would have hit with bug 171546 prior to r216726.

  • accessibility/AccessibilityRenderObject.cpp:

(WebCore::AccessibilityRenderObject::textUnderElement):

11:24 AM Changeset in webkit [216824] by Simon Fraser
  • 7 edits
    2 adds in trunk

event.clientX/clientY should be in layout viewport coordinates
https://bugs.webkit.org/show_bug.cgi?id=172018

Reviewed by Zalan Bujtas.
Source/WebCore:

Fix clientX and clientY on mouse events to be relative to the layout viewport, to match
getBoundingClientRect(), getClientRects() and fixed-position objects.

Also minor cleanup of MouseRelatedEvent to use initializers.

Test: fast/visual-viewport/client-coordinates-relative-to-layout-viewport.html

  • dom/MouseRelatedEvent.cpp:

(WebCore::MouseRelatedEvent::MouseRelatedEvent):
(WebCore::MouseRelatedEvent::init):
(WebCore::MouseRelatedEvent::initCoordinates):
(WebCore::contentsScrollOffset): Deleted.

  • dom/MouseRelatedEvent.h:

LayoutTests:

  • fast/events/clientXY-in-zoom-and-scroll.html:
  • fast/visual-viewport/client-coordinates-relative-to-layout-viewport-expected.txt: Added.
  • fast/visual-viewport/client-coordinates-relative-to-layout-viewport.html: Added.
  • platform/ios/TestExpectations:
  • platform/mac/fast/events/clientXY-in-zoom-and-scroll-expected.txt:
10:33 AM Changeset in webkit [216823] by Chris Dumez
  • 37 edits in trunk/Source/WebKit/win

Drop uses of PassRefPtr in WebKit/win
https://bugs.webkit.org/show_bug.cgi?id=172067

Reviewed by Yusuke Suzuki.

  • DOMEventsClasses.cpp:

(DOMEvent::DOMEvent):
(DOMEvent::createInstance):

  • DOMEventsClasses.h:

(DOMUIEvent::DOMUIEvent):
(DOMKeyboardEvent::DOMKeyboardEvent):
(DOMMouseEvent::DOMMouseEvent):
(DOMMutationEvent::DOMMutationEvent):
(DOMOverflowEvent::DOMOverflowEvent):
(DOMWheelEvent::DOMWheelEvent):

  • MemoryStream.cpp:

(MemoryStream::MemoryStream):
(MemoryStream::createInstance):

  • MemoryStream.h:
  • Plugins/PluginDatabase.cpp:

(WebCore::PluginDatabase::refresh):
(WebCore::PluginDatabase::add):
(WebCore::PluginDatabase::loadPersistentMetadataCache):

  • Plugins/PluginDatabase.h:
  • Plugins/PluginPackage.cpp:

(WebCore::PluginPackage::createPackage):
(WebCore::PluginPackage::createPackageFromCache):

  • Plugins/PluginPackage.h:
  • Plugins/PluginStream.h:

(WebCore::PluginStream::create):

  • WebActionPropertyBag.cpp:

(WebActionPropertyBag::WebActionPropertyBag):
(WebActionPropertyBag::createInstance):

  • WebActionPropertyBag.h:
  • WebArchive.cpp:

(WebArchive::createInstance):
(WebArchive::WebArchive):

  • WebArchive.h:
  • WebBackForwardList.cpp:

(WebBackForwardList::WebBackForwardList):
(WebBackForwardList::createInstance):

  • WebBackForwardList.h:
  • WebCoreSupport/EmbeddedWidget.cpp:

(EmbeddedWidget::create):

  • WebCoreSupport/EmbeddedWidget.h:
  • WebCoreSupport/WebChromeClient.h:
  • WebFrame.cpp:

(WebFrame::loadData):
(WebFrame::createSubframeWithOwnerElement):

  • WebFrame.h:
  • WebFramePolicyListener.cpp:

(WebFramePolicyListener::WebFramePolicyListener):
(WebFramePolicyListener::createInstance):

  • WebFramePolicyListener.h:
  • WebGeolocationPolicyListener.cpp:

(WebGeolocationPolicyListener::createInstance):
(WebGeolocationPolicyListener::WebGeolocationPolicyListener):

  • WebGeolocationPolicyListener.h:
  • WebHistoryItem.cpp:

(WebHistoryItem::WebHistoryItem):
(WebHistoryItem::createInstance):

  • WebHistoryItem.h:
  • WebMutableURLRequest.cpp:

(WebMutableURLRequest::setFormData):
(WebMutableURLRequest::formData):

  • WebMutableURLRequest.h:
  • WebResource.cpp:

(WebResource::createInstance):

  • WebResource.h:
  • WebScriptWorld.cpp:

(WebScriptWorld::WebScriptWorld):
(WebScriptWorld::createInstance):

  • WebScriptWorld.h:
  • WebURLAuthenticationChallengeSender.cpp:

(WebURLAuthenticationChallengeSender::WebURLAuthenticationChallengeSender):
(WebURLAuthenticationChallengeSender::createInstance):

  • WebURLAuthenticationChallengeSender.h:
  • WebView.cpp:

(WebView::setFullScreenElement):

  • WebView.h:
Note: See TracTimeline for information about the timeline view.