Timeline



Dec 15, 2016:

11:12 PM Changeset in webkit [209913] by mmaxfield@apple.com
  • 2 edits in trunk/Source/WTF

Unreviewed build fix after r209910

Unreviewed.

  • wtf/Platform.h:
11:10 PM Changeset in webkit [209912] by jh718.park@samsung.com
  • 3 edits in trunk/Source/WebCore

[EFL] Fix debug build break since r209873. Unreviewed.
https://bugs.webkit.org/show_bug.cgi?id=165945

No new tests, no new behaviours.

Use Primitive System Data Type uint64_t instead of unsigned long long.

  • Modules/indexeddb/IDBFactory.cpp:

(WebCore::IDBFactory::openInternal):

  • Modules/indexeddb/IDBFactory.h:
10:45 PM Changeset in webkit [209911] by bshafiei@apple.com
  • 1 copy in tags/Safari-602.4.3

New tag.

10:32 PM Changeset in webkit [209910] by Alan Bujtas
  • 11 edits
    2 adds in trunk

text-align: justify and word-spacing combine to overflow column
https://bugs.webkit.org/show_bug.cgi?id=165796
rdar://problem/29672168

Reviewed by Myles C. Maxfield.

Source/WebCore:

The value of the word-spacing property is not applied on the inline-tree boxes (normal line layout)
with kerning enabled. It causes hittest failures and selection/rendering glitches.
We normally use the pre-computed 'WordMeasurements' values to figure out the run widths. However
with kerning on, in some cases we need to re-measure a certain part of the text by calling RenderText::width().
This function omits the word-spacing value for leading whitespace, so when this text fragment starts with a whitespace,
(while it's not at the beginning of the run) we have to manually add the word-spacing value back.
r146087 added this logic with the restriction of applying it only to whitespace-only runs.

Test: fast/css/word-spacing-with-normal-layout.html

  • rendering/RenderBlockLineLayout.cpp:

(WebCore::setLogicalWidthForTextRun):

LayoutTests:

These are progressions.

  • fast/css/word-spacing-with-normal-layout-expected.html: Added.
  • fast/css/word-spacing-with-normal-layout.html: Added.
  • platform/mac/css1/text_properties/word_spacing-expected.txt:
  • platform/mac/fast/css/word-space-extra-expected.txt:
  • platform/mac/fast/text/whitespace/span-in-word-space-causes-overflow-expected.txt:
  • platform/mac/fast/text/word-space-expected.txt:
  • platform/mac/svg/custom/svg-fonts-in-html-expected.txt:
  • platform/mac/svg/custom/svg-fonts-word-spacing-expected.txt:
9:54 PM Changeset in webkit [209909] by bshafiei@apple.com
  • 5 edits in tags/Safari-603.1.16.2/Source

Versioning.

9:52 PM Changeset in webkit [209908] by bshafiei@apple.com
  • 1 copy in tags/Safari-603.1.16.2

New tag.

9:19 PM Changeset in webkit [209907] by mmaxfield@apple.com
  • 29 edits in trunk/Source

Stop reinterpret_casting UBreakIterators to the undefined type TextBreakIterator
https://bugs.webkit.org/show_bug.cgi?id=165931

Source/WebCore:

Reviewed by Alex Christensen.

No new tests because there is no behavior change.

  • dom/CharacterData.cpp:

(WebCore::CharacterData::parserAppendData):

  • editing/TextCheckingHelper.cpp:

(WebCore::findMisspellings):

  • editing/VisibleUnits.cpp:

(WebCore::wordBreakIteratorForMinOffsetBoundary):
(WebCore::wordBreakIteratorForMaxOffsetBoundary):
(WebCore::isLogicalStartOfWord):
(WebCore::islogicalEndOfWord):
(WebCore::visualWordPosition):
(WebCore::startSentenceBoundary):
(WebCore::endSentenceBoundary):
(WebCore::previousSentencePositionBoundary):
(WebCore::nextSentencePositionBoundary):

  • html/HTMLInputElement.cpp:
  • html/HTMLTextAreaElement.cpp:
  • html/InputType.cpp:
  • html/TextFieldInputType.cpp:
  • html/TextInputType.cpp:
  • platform/graphics/StringTruncator.cpp:

(WebCore::textBreakAtOrPreceding):
(WebCore::boundedTextBreakFollowing):
(WebCore::rightClipToWordBuffer):

  • platform/graphics/mac/ComplexTextController.cpp:

(WebCore::ComplexTextController::offsetForPosition):

  • platform/text/TextBoundaries.cpp:

(WebCore::findNextWordFromIndex):
(WebCore::findWordBoundary):
(WebCore::findEndWordBoundary):

  • platform/text/mac/TextBoundaries.mm:

(WebCore::findNextWordFromIndex):

  • rendering/BreakLines.h:

(WebCore::nextBreakablePositionNonLoosely):
(WebCore::nextBreakablePositionLoosely):

  • rendering/RenderBlock.cpp:
  • rendering/RenderText.cpp:

(WebCore::makeCapitalized):
(WebCore::RenderText::previousOffset):
(WebCore::RenderText::previousOffsetForBackwardDeletion):
(WebCore::RenderText::nextOffset):

  • rendering/SimpleLineLayoutTextFragmentIterator.h:
  • rendering/line/LineBreaker.h:

Source/WebKit/ios:

Reviewed by Alex Christensen.

  • Misc/WebUIKitSupport.mm:

Source/WTF:

We have a class declaration for TextBreakIterator but no definition for it. When we
create an ICU UBreakIterator, we immediately reinterpret_cast it to this undefined
type, and pass it around our code inside WebCore. Then, whenever we want to actually
use this iterator, we reinterpret_cast it back to UBreakIterator. This is likely due
to some ports historically implementing breaking interators on top of other libraries
other than ICU; however, now, all ports use ICU. Because this internal type is not
helpful and just adds confusion, we should just call our breaking iterators what
they are: UBreakIterators.

This patch is a mechanical replacement of TextBreakIterator to UBreakIterator and
removes the functions we were calling which pass through directly to ubrk_*().

Reviewed by Alex Christensen.

  • wtf/text/LineBreakIteratorPoolICU.h:

(WTF::LineBreakIteratorPool::take):
(WTF::LineBreakIteratorPool::put):

  • wtf/text/StringView.cpp:

(WTF::StringView::GraphemeClusters::Iterator::Impl::computeIndexEnd):

  • wtf/text/TextBreakIterator.cpp:

(WTF::initializeIterator):
(WTF::initializeIteratorWithRules):
(WTF::setTextForIterator):
(WTF::setContextAwareTextForIterator):
(WTF::wordBreakIterator):
(WTF::sentenceBreakIterator):
(WTF::cursorMovementIterator):
(WTF::acquireLineBreakIterator):
(WTF::releaseLineBreakIterator):
(WTF::openLineBreakIterator):
(WTF::closeLineBreakIterator):
(WTF::getNonSharedCharacterBreakIterator):
(WTF::cacheNonSharedCharacterBreakIterator):
(WTF::isWordTextBreak):
(WTF::numGraphemeClusters):
(WTF::numCharactersInGraphemeClusters):
(WTF::textBreakFirst): Deleted.
(WTF::textBreakLast): Deleted.
(WTF::textBreakNext): Deleted.
(WTF::textBreakPrevious): Deleted.
(WTF::textBreakPreceding): Deleted.
(WTF::textBreakFollowing): Deleted.
(WTF::textBreakCurrent): Deleted.
(WTF::isTextBreak): Deleted.

  • wtf/text/TextBreakIterator.h:

(WTF::LazyLineBreakIterator::lastCharacter):
(WTF::LazyLineBreakIterator::secondToLastCharacter):
(WTF::LazyLineBreakIterator::setPriorContext):
(WTF::LazyLineBreakIterator::updatePriorContext):
(WTF::LazyLineBreakIterator::resetPriorContext):
(WTF::LazyLineBreakIterator::priorContextLength):
(WTF::LazyLineBreakIterator::get):
(WTF::NonSharedCharacterBreakIterator::operator UBreakIterator*):
(WTF::NonSharedCharacterBreakIterator::operator TextBreakIterator*): Deleted.

8:52 PM Changeset in webkit [209906] by Darin Adler
  • 34 edits in trunk/Source

Use asString instead of toWTFString, toString, or getString when we already checked isString
https://bugs.webkit.org/show_bug.cgi?id=165895

Reviewed by Yusuke Suzuki.

Source/JavaScriptCore:

Once we have called isString, we should always use asString and value rather than using
functions that have to deal with non-JSString objects. This leads to slightly fewer branches,
slightly less reference count churn, since the string is stored right inside the JSString,
and obviates the need for exception handling.

  • bindings/ScriptValue.cpp:

(Inspector::jsToInspectorValue): Use asString/value instead of getString.

  • dfg/DFGOperations.cpp:

(JSC::DFG::operationMapHash): Call jsMapHash with its new arguments.

  • inspector/JSInjectedScriptHost.cpp:

(Inspector::JSInjectedScriptHost::evaluateWithScopeExtension): Use asString/value instead
of toWTFString.

  • inspector/JSJavaScriptCallFrame.cpp:

(Inspector::JSJavaScriptCallFrame::evaluateWithScopeExtension): Ditto.

  • inspector/agents/InspectorHeapAgent.cpp:

(Inspector::InspectorHeapAgent::getPreview): Use asString/tryGetValue, instead of the
peculiar getString(nullptr) that was here before.

  • jsc.cpp:

(functionGetGetterSetter): Use asString/toIdentifier instead of the much less efficient
toWTFString/Identifier::fromString.
(functionIsRope): Use asString instead of jsCast<JSString*>; same thing, but we should
prefer the asString function, since it exists.
(functionFindTypeForExpression): Use asString/value instead of getString.
(functionHasBasicBlockExecuted): Ditto.
(functionBasicBlockExecutionCount): Ditto.
(functionCreateBuiltin): Use asString/value instead of toWTFString and removed
unneeded RETURN_IF_EXCEPTION.
(valueWithTypeOfWasmValue): Use asString instead of jsCast<String*>.
(box): Ditto.

  • runtime/DateConstructor.cpp:

(JSC::constructDate): Use asString/values instead of getString.

  • runtime/ExceptionHelpers.cpp:

(JSC::errorDescriptionForValue): Tweaked formatting.

  • runtime/HashMapImpl.h:

(JSC::jsMapHash): Changed this function to use asString/value.

  • runtime/JSCJSValue.cpp:

(JSC::JSValue::dumpInContextAssumingStructure): Use asString instead of
jsCast<JSString*>.
(JSC::JSValue::dumpForBacktrace): Ditto.

  • runtime/JSCJSValueInlines.h:

(JSC::toPreferredPrimitiveType): Ditto.

  • runtime/JSGlobalObjectFunctions.cpp:

(JSC::globalFuncEval): Use asString/value instead of toWTFString.

  • runtime/JSString.cpp:

(JSC::JSString::destroy): Streamlined by removing local variable.
(JSC::JSString::estimatedSize): Use asString instead of jsCast<JSString*>.
(JSC::JSString::visitChildren): Ditto.
(JSC::JSString::toThis): Ditto.

  • runtime/JSString.h:

(JSC::JSValue::toString): Ditto.
(JSC::JSValue::toStringOrNull): Ditto.

  • runtime/NumberPrototype.cpp:

(JSC::numberProtoFuncValueOf): Ditto.

  • runtime/ObjectPrototype.cpp:

(JSC::objectProtoFuncToString): Ditto.

  • runtime/StringPrototype.cpp:

(JSC::stringProtoFuncRepeatCharacter): Ditto.
(JSC::stringProtoFuncSubstr): Ditto.
(JSC::builtinStringSubstrInternal): Simplified assertion by removing local variable.

Source/WebCore:

  • Modules/fetch/FetchBody.cpp:

(WebCore::FetchBody::extract): Use asString/value instead of toWTFString.

  • Modules/mediastream/SDPProcessor.cpp:

(WebCore::SDPProcessor::callScript): Use asString/value instead of getString.

  • bindings/js/ArrayValue.cpp:

(WebCore::ArrayValue::get): Use asString/value instead of toWTFString.

  • bindings/js/IDBBindingUtilities.cpp:

(WebCore::get): Use asString/length instead of toString/length.
(WebCore::createIDBKeyFromValue): Use asString/value instead of toWTFString.

  • bindings/js/JSCryptoAlgorithmDictionary.cpp:

(WebCore::JSCryptoAlgorithmDictionary::getAlgorithmIdentifier): Ditto.

  • bindings/js/JSDataCueCustom.cpp:

(WebCore::constructJSDataCue): Use asString/value instead of getString.

  • bindings/js/JSInspectorFrontendHostCustom.cpp:

(WebCore::populateContextMenuItems): Use asString/value instead of toWTFString.

  • bindings/js/ScriptController.cpp:

(WebCore::jsValueToModuleKey): Use asString/toIdentifier instead of
jsCast<JSString*>/value/Identifier::fromString.

  • bindings/js/SerializedScriptValue.cpp:

(WebCore::CloneSerializer::dumpIfTerminal): Streamline by getting rid of local variable.

  • contentextensions/ContentExtensionParser.cpp:

(WebCore::ContentExtensions::getDomainList): Use asString instead of jsCast<JSString*>.
(WebCore::ContentExtensions::loadTrigger): Use asString/value instead of toWTFString.
(WebCore::ContentExtensions::loadAction): Ditto.

  • css/FontFace.cpp:

(WebCore::FontFace::create): Use asString/value instead of getString.

Source/WebKit/mac:

  • Plugins/Hosted/NetscapePluginInstanceProxy.mm:

(WebKit::NetscapePluginInstanceProxy::addValueToArray): Use asString/value instead of
toWTFString.

  • WebView/WebView.mm:

(aeDescFromJSValue): Use asString/value instead of getString.

Source/WebKit2:

  • WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp:

(WebKit::NPRuntimeObjectMap::convertJSValueToNPVariant): Use asString/value instead of toWTFString.

8:40 PM Changeset in webkit [209905] by bshafiei@apple.com
  • 5 edits in tags/Safari-603.1.16.1/Source

Versioning.

8:37 PM Changeset in webkit [209904] by bshafiei@apple.com
  • 1 copy in tags/Safari-603.1.16.1

New tag.

8:37 PM Changeset in webkit [209903] by Alan Bujtas
  • 27 edits in trunk/Source/WebCore

Change ::computeLogicalHeight's computedValues out argument to the return value.
https://bugs.webkit.org/show_bug.cgi?id=165789

Reviewed by Simon Fraser.

No change in functionality.

  • html/shadow/SliderThumbElement.cpp:

(WebCore::RenderSliderContainer::computeLogicalHeight):

  • html/shadow/mac/ImageControlsButtonElementMac.cpp:

(WebCore::RenderImageControlsButton::computeLogicalHeight):

  • html/shadow/mac/ImageControlsRootElementMac.cpp:

(WebCore::RenderImageControls::computeLogicalHeight):

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::computeBlockPreferredLogicalWidths):
(WebCore::RenderBlock::estimateRegionRangeForBoxChild):

  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::checkForPaginationLogicalHeightChange):

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::updateLogicalHeight):
(WebCore::RenderBox::computeLogicalHeight):
(WebCore::RenderBox::computePercentageLogicalHeight):
(WebCore::RenderBox::computeReplacedLogicalHeightUsing):
(WebCore::RenderBox::availableLogicalHeightUsing):

  • rendering/RenderBox.h:

(WebCore::RenderBox::ComputedMarginValues::ComputedMarginValues): Deleted.
(WebCore::RenderBox::LogicalExtentComputedValues::LogicalExtentComputedValues): Deleted.

  • rendering/RenderFlexibleBox.cpp:

(WebCore::RenderFlexibleBox::mainAxisContentExtent):

  • rendering/RenderFlowThread.cpp:

(WebCore::RenderFlowThread::computeLogicalHeight):

  • rendering/RenderFlowThread.h:
  • rendering/RenderListBox.cpp:

(WebCore::RenderListBox::computeLogicalHeight):

  • rendering/RenderListBox.h:
  • rendering/RenderMeter.cpp:

(WebCore::RenderMeter::computeLogicalHeight):

  • rendering/RenderMeter.h:
  • rendering/RenderMultiColumnFlowThread.cpp:

(WebCore::RenderMultiColumnFlowThread::computeLogicalHeight):

  • rendering/RenderMultiColumnFlowThread.h:
  • rendering/RenderMultiColumnSet.cpp:

(WebCore::RenderMultiColumnSet::computeLogicalHeight):

  • rendering/RenderMultiColumnSet.h:
  • rendering/RenderProgress.cpp:

(WebCore::RenderProgress::computeLogicalHeight):

  • rendering/RenderProgress.h:
  • rendering/RenderTextControl.cpp:

(WebCore::RenderTextControl::computeLogicalHeight):

  • rendering/RenderTextControl.h:
  • rendering/RenderView.cpp:

(WebCore::RenderView::computeLogicalHeight):

  • rendering/RenderView.h:
  • rendering/svg/RenderSVGForeignObject.cpp:

(WebCore::RenderSVGForeignObject::computeLogicalHeight):

  • rendering/svg/RenderSVGForeignObject.h:
7:35 PM Changeset in webkit [209902] by dbates@webkit.org
  • 2 edits in trunk/Tools

check-style should not complain about code in icu directories
https://bugs.webkit.org/show_bug.cgi?id=53929

Reviewed by Darin Adler.

Skip style checking of imported ICU headers to avoid a deluge of style issues
as they do not conform to the WebKit Code Style guideline. We want to preserve
the formatting of these headers so as to make it straightforward to merge
changes to them, if necessary.

  • Scripts/webkitpy/style/checker.py:
7:14 PM Changeset in webkit [209901] by Chris Dumez
  • 17 edits
    6 copies in trunk

Make sure HTML validation bubble's state is updated after layout
https://bugs.webkit.org/show_bug.cgi?id=165922
<rdar://problem/29694730>

Reviewed by Simon Fraser.

Source/WebCore:

Make sure HTML validation bubble's state is updated after layout.
In particular, if the validation bubble's associated element has
moved or is no longer visible, we now hide the bubble.

Tests: fast/forms/validation-bubble-disappears-when-input-detached.html

fast/forms/validation-bubble-disappears-when-input-moved.html
fast/forms/validation-bubble-disappears-when-input-no-longer-visible.html

  • page/FrameView.cpp:

(WebCore::FrameView::viewportContentsChanged):

  • page/Page.cpp:

(WebCore::Page::updateValidationBubbleStateIfNeeded):

  • page/Page.h:
  • page/ValidationMessageClient.h:

Source/WebKit/mac:

Make sure HTML validation bubble's state is updated after layout.
In particular, if the validation bubble's associated element has
moved or is no longer visible, we now hide the bubble.

  • WebCoreSupport/WebValidationMessageClient.h:
  • WebCoreSupport/WebValidationMessageClient.mm:

(WebValidationMessageClient::showValidationMessage):
(WebValidationMessageClient::hideValidationMessage):
(WebValidationMessageClient::updateValidationBubbleStateIfNeeded):

Source/WebKit2:

Make sure HTML validation bubble's state is updated after layout.
In particular, if the validation bubble's associated element has
moved or is no longer visible, we now hide the bubble.

  • WebProcess/WebCoreSupport/WebValidationMessageClient.cpp:

(WebKit::WebValidationMessageClient::showValidationMessage):
(WebKit::WebValidationMessageClient::hideValidationMessage):
(WebKit::WebValidationMessageClient::updateValidationBubbleStateIfNeeded):

  • WebProcess/WebCoreSupport/WebValidationMessageClient.h:

LayoutTests:

Add several layout tests to cover this.

  • fast/forms/validation-bubble-disappears-when-input-detached-expected.txt: Added.
  • fast/forms/validation-bubble-disappears-when-input-detached.html: Added.
  • fast/forms/validation-bubble-disappears-when-input-moved-expected.txt: Added.
  • fast/forms/validation-bubble-disappears-when-input-moved.html: Added.
  • fast/forms/validation-bubble-disappears-when-input-no-longer-visible-expected.txt: Added.
  • fast/forms/validation-bubble-disappears-when-input-no-longer-visible.html: Added.
7:01 PM Changeset in webkit [209900] by commit-queue@webkit.org
  • 6 edits in trunk/Source/WebCore

[WebIDL] Remove use of Dictionary from JSCryptoAlgorithmDictionary
https://bugs.webkit.org/show_bug.cgi?id=165919

Patch by Sam Weinig <sam@webkit.org> on 2016-12-15
Reviewed by Darin Adler.

  • bindings/js/JSCryptoAlgorithmDictionary.cpp:
  • bindings/js/JSCryptoAlgorithmDictionary.h:
  • bindings/js/JSCryptoOperationData.cpp:
  • bindings/js/JSCryptoOperationData.h:
  • bindings/js/JSWebKitSubtleCryptoCustom.cpp:

Replace simplistic use of Dictionary with simplistic use of direct JSObject
functions. Also, pass the ExecState by reference.

6:38 PM Changeset in webkit [209899] by keith_miller@apple.com
  • 4 edits
    1 add in trunk

Fix validation of non-void if blocks with no else
https://bugs.webkit.org/show_bug.cgi?id=165938

Reviewed by Saam Barati.

JSTests:

Add a new failing test and a fix an existing one.

  • wasm/function-tests/dead-call.js:
  • wasm/function-tests/if-no-else-non-void.js: Added.

Source/JavaScriptCore:

We should not have been allowing non-void if-blocks that don't
have an else. Since this causes a value to be placed on the
stack that only appears under some control flow and not another.

  • wasm/WasmValidate.cpp:
6:25 PM Changeset in webkit [209898] by achristensen@apple.com
  • 2 edits in trunk/Source/WebKit2

Improve NetworkSession logging
https://bugs.webkit.org/show_bug.cgi?id=165941

Reviewed by Tim Horton.

  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(-[WKNetworkSessionDelegate URLSession:task:didReceiveChallenge:completionHandler:]):
(-[WKNetworkSessionDelegate URLSession:task:didCompleteWithError:]):
(-[WKNetworkSessionDelegate URLSession:dataTask:didReceiveResponse:completionHandler:]):
One of the "didReceiveResponse completionHandler (cancel)" messages was wrong,
and other messages could have more useful information without being overwhelming.

6:16 PM Changeset in webkit [209897] by fpizlo@apple.com
  • 118 edits
    1 delete in trunk/Source

Get rid of HeapRootVisitor and make SlotVisitor less painful to use
https://bugs.webkit.org/show_bug.cgi?id=165911

Reviewed by Geoffrey Garen.
Source/JavaScriptCore:


Previously we had two ways of adding a raw pointer to the GC's mark stack:

  • SlotVisitor::appendUnbarrieredXYZ() methods
  • HeapRootVisitor::visit() methods


HeapRootVisitor existed only to prevent you from calling its non-WriteBarrier<> methods
unless you had permission. But SlotVisitor would let you do it anyway, because that was
a lot more practical.

I think that we should just have one way to do it. This removes HeapRootVisitor. It
also renames appendUnbarrieredXYZ to appendUnbarriered, and it removes the use of extra
indirection (so you now pass const WriteBarrier<>& instead of WriteBarrier<>*).

  • API/JSCallbackObject.h:

(JSC::JSCallbackObjectData::JSPrivatePropertyMap::visitChildren):

  • JavaScriptCore.xcodeproj/project.pbxproj:
  • Scripts/builtins/builtins_templates.py:
  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::visitWeakly):
(JSC::CodeBlock::visitChildren):
(JSC::CodeBlock::propagateTransitions):
(JSC::CodeBlock::determineLiveness):
(JSC::CodeBlock::visitOSRExitTargets):
(JSC::CodeBlock::stronglyVisitStrongReferences):
(JSC::CodeBlock::stronglyVisitWeakReferences):

  • bytecode/DirectEvalCodeCache.cpp:

(JSC::DirectEvalCodeCache::visitAggregate):

  • bytecode/InternalFunctionAllocationProfile.h:

(JSC::InternalFunctionAllocationProfile::visitAggregate):

  • bytecode/ObjectAllocationProfile.h:

(JSC::ObjectAllocationProfile::visitAggregate):

  • bytecode/PolymorphicAccess.cpp:

(JSC::AccessCase::propagateTransitions):

  • bytecode/UnlinkedCodeBlock.cpp:

(JSC::UnlinkedCodeBlock::visitChildren):

  • bytecode/UnlinkedFunctionExecutable.cpp:

(JSC::UnlinkedFunctionExecutable::visitChildren):

  • debugger/DebuggerScope.cpp:

(JSC::DebuggerScope::visitChildren):

  • dfg/DFGDesiredTransitions.cpp:

(JSC::DFG::DesiredTransition::visitChildren):

  • dfg/DFGDesiredWeakReferences.cpp:

(JSC::DFG::DesiredWeakReferences::visitChildren):

  • dfg/DFGGraph.cpp:

(JSC::DFG::Graph::visitChildren):

  • dfg/DFGPlan.cpp:

(JSC::DFG::Plan::markCodeBlocks):
(JSC::DFG::Plan::checkLivenessAndVisitChildren):

  • heap/HandleSet.cpp:

(JSC::HandleSet::visitStrongHandles):

  • heap/HandleSet.h:
  • heap/HandleStack.cpp:

(JSC::HandleStack::visit):

  • heap/HandleStack.h:
  • heap/Heap.cpp:

(JSC::Heap::markToFixpoint):

  • heap/Heap.h:
  • heap/HeapRootVisitor.h: Removed.
  • heap/LargeAllocation.cpp:

(JSC::LargeAllocation::visitWeakSet):

  • heap/LargeAllocation.h:
  • heap/MarkedBlock.h:

(JSC::MarkedBlock::Handle::visitWeakSet):

  • heap/MarkedSpace.cpp:

(JSC::MarkedSpace::visitWeakSets):

  • heap/MarkedSpace.h:
  • heap/SlotVisitor.cpp:

(JSC::SlotVisitor::appendUnbarriered):

  • heap/SlotVisitor.h:
  • heap/SlotVisitorInlines.h:

(JSC::SlotVisitor::appendUnbarriered):
(JSC::SlotVisitor::append):
(JSC::SlotVisitor::appendHidden):
(JSC::SlotVisitor::appendValues):
(JSC::SlotVisitor::appendValuesHidden):
(JSC::SlotVisitor::appendUnbarrieredPointer): Deleted.
(JSC::SlotVisitor::appendUnbarrieredReadOnlyPointer): Deleted.
(JSC::SlotVisitor::appendUnbarrieredValue): Deleted.
(JSC::SlotVisitor::appendUnbarrieredReadOnlyValue): Deleted.
(JSC::SlotVisitor::appendUnbarrieredWeak): Deleted.

  • heap/WeakBlock.cpp:

(JSC::WeakBlock::specializedVisit):
(JSC::WeakBlock::visit):

  • heap/WeakBlock.h:
  • heap/WeakSet.h:

(JSC::WeakSet::visit):

  • interpreter/ShadowChicken.cpp:

(JSC::ShadowChicken::visitChildren):

  • jit/GCAwareJITStubRoutine.cpp:

(JSC::MarkingGCAwareJITStubRoutine::markRequiredObjectsInternal):

  • jit/PolymorphicCallStubRoutine.cpp:

(JSC::PolymorphicCallStubRoutine::markRequiredObjectsInternal):

  • jsc.cpp:

(WTF::Element::visitChildren):
(WTF::ImpureGetter::visitChildren):
(WTF::SimpleObject::visitChildren):

  • runtime/AbstractModuleRecord.cpp:

(JSC::AbstractModuleRecord::visitChildren):

  • runtime/ArgList.cpp:

(JSC::MarkedArgumentBuffer::markLists):

  • runtime/ArgList.h:
  • runtime/ClonedArguments.cpp:

(JSC::ClonedArguments::visitChildren):

  • runtime/DirectArguments.cpp:

(JSC::DirectArguments::visitChildren):

  • runtime/EvalExecutable.cpp:

(JSC::EvalExecutable::visitChildren):

  • runtime/Exception.cpp:

(JSC::Exception::visitChildren):

  • runtime/FunctionExecutable.cpp:

(JSC::FunctionExecutable::visitChildren):

  • runtime/FunctionRareData.cpp:

(JSC::FunctionRareData::visitChildren):

  • runtime/GetterSetter.cpp:

(JSC::GetterSetter::visitChildren):

  • runtime/HashMapImpl.cpp:

(JSC::HashMapBucket<Data>::visitChildren):
(JSC::HashMapImpl<HashMapBucket>::visitChildren):

  • runtime/InferredTypeTable.cpp:

(JSC::InferredTypeTable::visitChildren):

  • runtime/InternalFunction.cpp:

(JSC::InternalFunction::visitChildren):

  • runtime/IntlCollator.cpp:

(JSC::IntlCollator::visitChildren):

  • runtime/IntlCollatorConstructor.cpp:

(JSC::IntlCollatorConstructor::visitChildren):

  • runtime/IntlDateTimeFormat.cpp:

(JSC::IntlDateTimeFormat::visitChildren):

  • runtime/IntlDateTimeFormatConstructor.cpp:

(JSC::IntlDateTimeFormatConstructor::visitChildren):

  • runtime/IntlNumberFormat.cpp:

(JSC::IntlNumberFormat::visitChildren):

  • runtime/IntlNumberFormatConstructor.cpp:

(JSC::IntlNumberFormatConstructor::visitChildren):

  • runtime/JSBoundFunction.cpp:

(JSC::JSBoundFunction::visitChildren):

  • runtime/JSCallee.cpp:

(JSC::JSCallee::visitChildren):

  • runtime/JSCellInlines.h:

(JSC::JSCell::visitChildren):

  • runtime/JSCustomGetterSetterFunction.cpp:

(JSC::JSCustomGetterSetterFunction::visitChildren):

  • runtime/JSFunction.cpp:

(JSC::JSFunction::visitChildren):

  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::visitChildren):

  • runtime/JSMapIterator.cpp:

(JSC::JSMapIterator::visitChildren):

  • runtime/JSModuleEnvironment.cpp:

(JSC::JSModuleEnvironment::visitChildren):

  • runtime/JSModuleNamespaceObject.cpp:

(JSC::JSModuleNamespaceObject::visitChildren):

  • runtime/JSModuleRecord.cpp:

(JSC::JSModuleRecord::visitChildren):

  • runtime/JSNativeStdFunction.cpp:

(JSC::JSNativeStdFunction::visitChildren):

  • runtime/JSObject.cpp:

(JSC::JSObject::visitButterflyImpl):

  • runtime/JSPromiseDeferred.cpp:

(JSC::JSPromiseDeferred::visitChildren):

  • runtime/JSPropertyNameEnumerator.cpp:

(JSC::JSPropertyNameEnumerator::visitChildren):

  • runtime/JSPropertyNameIterator.cpp:

(JSC::JSPropertyNameIterator::visitChildren):

  • runtime/JSProxy.cpp:

(JSC::JSProxy::visitChildren):

  • runtime/JSScope.cpp:

(JSC::JSScope::visitChildren):

  • runtime/JSSegmentedVariableObject.cpp:

(JSC::JSSegmentedVariableObject::visitChildren):

  • runtime/JSSetIterator.cpp:

(JSC::JSSetIterator::visitChildren):

  • runtime/JSString.cpp:

(JSC::JSRopeString::visitFibers):

  • runtime/JSSymbolTableObject.cpp:

(JSC::JSSymbolTableObject::visitChildren):

  • runtime/JSWeakMap.cpp:

(JSC::JSWeakMap::visitChildren):

  • runtime/JSWeakSet.cpp:

(JSC::JSWeakSet::visitChildren):

  • runtime/JSWithScope.cpp:

(JSC::JSWithScope::visitChildren):

  • runtime/JSWrapperObject.cpp:

(JSC::JSWrapperObject::visitChildren):

  • runtime/LazyClassStructure.cpp:

(JSC::LazyClassStructure::visit):

  • runtime/LazyPropertyInlines.h:

(JSC::ElementType>::visit):

  • runtime/MapBase.cpp:

(JSC::MapBase<HashMapBucketType>::visitChildren):

  • runtime/ModuleProgramExecutable.cpp:

(JSC::ModuleProgramExecutable::visitChildren):

  • runtime/NativeErrorConstructor.cpp:

(JSC::NativeErrorConstructor::visitChildren):

  • runtime/ProgramExecutable.cpp:

(JSC::ProgramExecutable::visitChildren):

  • runtime/ProxyObject.cpp:

(JSC::ProxyObject::visitChildren):

  • runtime/ProxyRevoke.cpp:

(JSC::ProxyRevoke::visitChildren):

  • runtime/RegExpCachedResult.cpp:

(JSC::RegExpCachedResult::visitChildren):

  • runtime/RegExpObject.cpp:

(JSC::RegExpObject::visitChildren):

  • runtime/RegExpPrototype.cpp:

(JSC::RegExpPrototype::visitChildren):

  • runtime/SamplingProfiler.cpp:

(JSC::SamplingProfiler::visit):

  • runtime/ScopedArguments.cpp:

(JSC::ScopedArguments::visitChildren):

  • runtime/SmallStrings.cpp:

(JSC::SmallStrings::visitStrongReferences):

  • runtime/SparseArrayValueMap.cpp:

(JSC::SparseArrayValueMap::visitChildren):

  • runtime/Structure.cpp:

(JSC::Structure::visitChildren):
(JSC::Structure::markIfCheap):

  • runtime/StructureChain.cpp:

(JSC::StructureChain::visitChildren):

  • runtime/StructureRareData.cpp:

(JSC::StructureRareData::visitChildren):

  • runtime/SymbolTable.cpp:

(JSC::SymbolTable::visitChildren):

  • runtime/TypeProfilerLog.cpp:

(JSC::TypeProfilerLog::visit):

  • runtime/WeakMapData.cpp:

(JSC::WeakMapData::DeadKeyCleaner::visitWeakReferences):

  • wasm/js/JSWebAssemblyInstance.cpp:

(JSC::JSWebAssemblyInstance::visitChildren):

  • wasm/js/JSWebAssemblyMemory.cpp:

(JSC::JSWebAssemblyMemory::visitChildren):

  • wasm/js/JSWebAssemblyModule.cpp:

(JSC::JSWebAssemblyModule::visitChildren):

  • wasm/js/JSWebAssemblyTable.cpp:

(JSC::JSWebAssemblyTable::visitChildren):

  • wasm/js/WebAssemblyFunction.cpp:

(JSC::WebAssemblyFunction::visitChildren):

  • wasm/js/WebAssemblyModuleRecord.cpp:

(JSC::WebAssemblyModuleRecord::visitChildren):

Source/WebCore:

No new tests because no new behavior.

This updates WebCore code to new JSC API.

  • bindings/js/JSDOMBinding.cpp:

(WebCore::DOMConstructorJSBuiltinObject::visitChildren):

  • bindings/js/JSDOMGlobalObject.cpp:

(WebCore::JSDOMGlobalObject::visitChildren):

  • bindings/js/JSDOMPromise.h:

(WebCore::DeferredPromise::visitAggregate):

  • bindings/js/JSEventListener.cpp:

(WebCore::JSEventListener::visitJSFunction):

  • bindings/js/JSWorkerGlobalScopeBase.cpp:

(WebCore::JSWorkerGlobalScopeBase::visitChildren):

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateImplementation):

5:54 PM Changeset in webkit [209896] by mmaxfield@apple.com
  • 14 edits in trunk/Source

Sort Xcode project files
https://bugs.webkit.org/show_bug.cgi?id=165937

Reviewed by Simon Fraser.

Source/bmalloc:

  • bmalloc.xcodeproj/project.pbxproj:

Source/JavaScriptCore:

Source/ThirdParty/ANGLE:

  • ANGLE.xcodeproj/project.pbxproj:

Source/WebCore:

No new tests because there is no behavior change.

  • WebCore.xcodeproj/project.pbxproj:

Source/WebKit:

  • WebKit.xcodeproj/project.pbxproj:

Source/WebKit2:

  • WebKit2.xcodeproj/project.pbxproj:

Source/WTF:

  • WTF.xcodeproj/project.pbxproj:
5:29 PM Changeset in webkit [209895] by Chris Dumez
  • 22 edits in trunk

Move charCode / keyCode / which attributes from UIEvent to KeyboardEvent
https://bugs.webkit.org/show_bug.cgi?id=165904

Reviewed by Sam Weinig.

LayoutTests/imported/w3c:

Rebaseline W3C test now that one more check is passing.

  • web-platform-tests/dom/events/Event-subclasses-constructors-expected.txt:

Source/WebCore:

Move 'charCode' / 'keyCode' attributes from UIEvent to KeyboardEvent and add
'which' to KeyboardEvent to match the specification:

We keep a 'which' attribute on UIEvent even though the specification does
not say we should because Firefox and Chrome have 'which' on UIEvent still.

Specification:

  • 'charCode' / 'keyCode' / 'which' on KeyboardEvent only

Firefox:

  • 'charCode' / 'keyCode' on KeyboardEvent only
  • 'which' on UIEvent only

Chrome:

  • 'charCode' / 'keyCode' / 'which' on KeyboardEvent
  • 'which' on UIEvent as well

Old WebKit behavior:

  • 'charCode' / 'keyCode' / 'which' on UIEvent only

New WebKit behavior:

  • 'charCode' / 'keyCode' / 'which' on KeyboardEvent
  • 'which' on UIEvent as well

Our new behavior is identical to Chrome, much closer to the specification,
and closer to Firefox as well.

No new tests, updated / rebaselined existing tests.

  • dom/KeyboardEvent.cpp:

(WebCore::KeyboardEvent::KeyboardEvent):
(WebCore::KeyboardEvent::keyCode):
(WebCore::KeyboardEvent::charCode):
(WebCore::KeyboardEvent::which):

  • dom/KeyboardEvent.h:
  • dom/KeyboardEvent.idl:
  • dom/MouseEvent.cpp:

(WebCore::MouseEvent::which):

  • dom/UIEvent.cpp:
  • dom/UIEvent.h:
  • dom/UIEvent.idl:

Source/WebKit/mac:

Update ObjC bindings so they keep building.

  • DOM/DOMUIEvent.mm:

(-[DOMUIEvent keyCode]):
(-[DOMUIEvent charCode]):

LayoutTests:

Extend existing testing.

  • fast/events/arrow-keys-on-body-expected.txt:
  • fast/events/arrow-keys-on-body.html:
  • fast/events/key-events-in-input-button-expected.txt:
  • fast/events/key-events-in-input-button.html:
  • fast/events/key-events-in-input-text-expected.txt:
  • fast/events/key-events-in-input-text.html:
5:28 PM Changeset in webkit [209894] by ap@apple.com
  • 3 edits in trunk/Tools

Move JSC testers from Yosemite to Sierra
https://bugs.webkit.org/show_bug.cgi?id=165925

Reviewed by Lucas Forschler.

  • BuildSlaveSupport/build.webkit.org-config/config.json:
  • BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/WebKitBuildbot.js:

(WebKitBuildbot):

5:20 PM Changeset in webkit [209893] by beidson@apple.com
  • 4 edits
    1 add in trunk/Source/WebCore

IndexedDB: Add an "IDBCursorRecord" struct.
https://bugs.webkit.org/show_bug.cgi?id=165929

Reviewed by Alex Christensen.

No new tests (Refactor, no behavior change).

  • Modules/indexeddb/server/SQLiteIDBCursor.cpp:

(WebCore::IDBServer::SQLiteIDBCursor::currentData):
(WebCore::IDBServer::SQLiteIDBCursor::resetAndRebindStatement):
(WebCore::IDBServer::SQLiteIDBCursor::advanceUnique):
(WebCore::IDBServer::SQLiteIDBCursor::internalAdvanceOnce):
(WebCore::IDBServer::SQLiteIDBCursor::iterate):

  • Modules/indexeddb/server/SQLiteIDBCursor.h:

(WebCore::IDBServer::SQLiteIDBCursor::currentKey):
(WebCore::IDBServer::SQLiteIDBCursor::currentPrimaryKey):
(WebCore::IDBServer::SQLiteIDBCursor::currentValue):

  • Modules/indexeddb/shared/IDBCursorRecord.h: Added.

(WebCore::IDBCursorRecord::encode):
(WebCore::IDBCursorRecord::decode):

  • WebCore.xcodeproj/project.pbxproj:
5:14 PM Changeset in webkit [209892] by commit-queue@webkit.org
  • 8 edits in trunk

Add coordinate space to event streams and streamline tests
https://bugs.webkit.org/show_bug.cgi?id=165119

Patch by Megan Gardner <Megan Gardner> on 2016-12-15
Reviewed by Simon Fraser.

Tools:

Update event streams to allow for both content and global coordinate space.
Update example script to more accurately show all the available options.

  • TestRunnerShared/UIScriptContext/Bindings/UIScriptController.idl:
  • WebKitTestRunner/ios/HIDEventGenerator.h:
  • WebKitTestRunner/ios/HIDEventGenerator.mm:
  • WebKitTestRunner/ios/UIScriptControllerIOS.mm:

(WTR::convertCoordinates):
(WTR::UIScriptController::sendEventStream):

LayoutTests:

Streamline tests. Make them more readable and only use one function for drags.
Update for new content coordinate space.

  • fast/events/touch/ios/long-press-then-drag-down-to-change-selected-text.html:
  • fast/events/touch/ios/long-press-then-drag-up-to-change-selected-text.html:
5:06 PM Changeset in webkit [209891] by keith_miller@apple.com
  • 3 edits
    1 add in trunk

Wasm should not create empty unlinked callsites
https://bugs.webkit.org/show_bug.cgi?id=165933

Reviewed by Mark Lam.

JSTests:

  • wasm/function-tests/dead-call.js: Added.

Source/JavaScriptCore:

Wasm would create holes in the unlinked callsite vector if B3 was able to
eliminate the callsite.

  • wasm/WasmB3IRGenerator.cpp:

(JSC::Wasm::B3IRGenerator::addCall):

5:04 PM Changeset in webkit [209890] by Keith Rollin
  • 2 edits in trunk/Source/WebCore

Refactor Document::suspend/resume
https://bugs.webkit.org/show_bug.cgi?id=165921

Reviewed by Chris Dumez.

Update Document::suspend to call Document::suspendScheduledTasks
rather than duplicating the latter's code within itself. Similar
treatment of Document::resume and Document::resumeScheduledTasks.

No new tests -- no new functionality, just refactoring existing code.

  • dom/Document.cpp:

(WebCore::Document::suspend):
(WebCore::Document::resume):

5:02 PM Changeset in webkit [209889] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Marking js/dom/global-constructors-attributes.html as failing on ElCapitan WK1.
https://bugs.webkit.org/show_bug.cgi?id=165934

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
5:00 PM Changeset in webkit [209888] by Simon Fraser
  • 2 edits in trunk/LayoutTests

fast/visual-viewport/ios/zoomed-focus-in-fixed.html always times out

Skip this test, which relies on touch events.

  • platform/ios-simulator/TestExpectations:
4:46 PM Changeset in webkit [209887] by Simon Fraser
  • 3 edits in trunk/LayoutTests

Fix flakiness of fast/visual-viewport/ios/zoomed-focus-in-fixed.html
https://bugs.webkit.org/show_bug.cgi?id=165930

Reviewed by Tim Horton.

The test zooms when focussing the input, which completes after the keyboard shows,
so we need to wait for zooming to finish using the uiController.didEndZoomingCallback.

  • fast/visual-viewport/ios/zoomed-focus-in-fixed-expected.txt:
  • fast/visual-viewport/ios/zoomed-focus-in-fixed.html:
4:06 PM Changeset in webkit [209886] by bshafiei@apple.com
  • 6 edits
    1 copy in branches/safari-602-branch

Merged r204664. rdar://problem/29690089

4:04 PM Changeset in webkit [209885] by bshafiei@apple.com
  • 7 edits
    2 copies in branches/safari-602-branch

Merged r204618. rdar://problem/29690089

3:58 PM Changeset in webkit [209884] by bshafiei@apple.com
  • 5 edits
    1 delete in branches/safari-602-branch

Roll out r204664. rdar://problem/29690089

3:53 PM Changeset in webkit [209883] by achristensen@apple.com
  • 9 edits
    2 adds
    1 delete in trunk

Remove flex and bison build dependencies; commit generated XPath parser
https://bugs.webkit.org/show_bug.cgi?id=165783

Reviewed by Brent Fulgham.

.:

  • Source/cmake/WebKitCommon.cmake:
  • Source/cmake/WebKitMacros.cmake:

Source/WebCore:

flex and bison are annoying to install and use, especially on Windows.
Since only XPathGrammar uses them and that's not actively developed, let's just check in the one generated file
and make building WebKit easier forever!

  • CMakeLists.txt:
  • DerivedSources.make:
  • WebCore.xcodeproj/project.pbxproj:
  • css/makegrammar.pl: Removed.
  • xml/XPathGrammar.cpp: Added.

(xpathyylex):
(xpathyyerror):
(yysyntax_error):

  • xml/XPathGrammar.h: Added.
  • xml/XPathGrammar.y: Rename TEXT to TEXT_ to fix a build error on Windows. TEXT is already defined.
3:52 PM Changeset in webkit [209882] by Matt Baker
  • 6 edits in trunk/Source/WebInspectorUI

Web Inspector: console search bar jumps, behaves poorly at narrow widths
https://bugs.webkit.org/show_bug.cgi?id=164047
<rdar://problem/29055582>

Reviewed by Timothy Hatcher.

At narrow widths the find banner behaves poorly in the split console
toolbar. It should work like the main content browser, appearing below
the toolbar when Command-F is pressed and either the split console or
quick console prompt has the focus.

  • UserInterface/Base/Main.js:

(WebInspector.contentLoaded):
Enable split content browser find banner.

  • UserInterface/Views/ContentBrowser.js:

(WebInspector.ContentBrowser.prototype.showFindBanner):
Check for custom find banner support at runtime.
(WebInspector.ContentBrowser.prototype._findBannerDidShow):
(WebInspector.ContentBrowser.prototype._findBannerDidHide):
Refresh search results when banner is shown/hidden, instead of relying
on toggling the "showing-find-banner" class name for everything.

(WebInspector.ContentBrowser.prototype.handleFindEvent): Deleted.
Renamed showFindBanner.

  • UserInterface/Views/ContentView.js:

(WebInspector.ContentView.prototype.get supportsCustomFindBanner):
(WebInspector.ContentView.prototype.showCustomFindBanner):
Custom find banner support (used by LogContentView).

  • UserInterface/Views/LogContentView.js:

(WebInspector.LogContentView):
(WebInspector.LogContentView.prototype.get supportsSearch):
(WebInspector.LogContentView.prototype.get numberOfSearchResults):
(WebInspector.LogContentView.prototype.get hasPerformedSearch):
Cleanup.
(WebInspector.LogContentView.prototype.get supportsCustomFindBanner):
Use toolbar item find banner when showing Console tab.
(WebInspector.LogContentView.prototype.findBannerRevealPreviousResult):
(WebInspector.LogContentView.prototype.findBannerRevealNextResult):
(WebInspector.LogContentView.prototype._isMessageVisible):
(WebInspector.LogContentView.prototype._visibleMessageElements):
(WebInspector.LogContentView.prototype._logCleared):
(WebInspector.LogContentView.prototype._filterMessageElements):
(WebInspector.LogContentView.prototype.findBannerPerformSearch):
(WebInspector.LogContentView.prototype.findBannerSearchCleared):
(WebInspector.LogContentView.prototype.performSearch):
Support both the standard and custom (toolbar item) find banners.
(WebInspector.LogContentView.prototype.searchCleared):
Refresh search results.
(WebInspector.LogContentView.prototype._highlightRanges):
Correct spelling: _selectedSearchMathIsValid -> _selectedSearchMatchIsValid.
(WebInspector.LogContentView.prototype.get searchInProgress): Deleted.
Override ContentView.prototype.hasPerformedSearch instead.
(WebInspector.LogContentView.prototype.handleFindEvent): Deleted.
Replaced by showCustomFindBanner.
(WebInspector.LogContentView.prototype.highlightPreviousSearchMatch): Deleted.
Absorbed by findBannerRevealPreviousResult.
(WebInspector.LogContentView.prototype.highlightNextSearchMatch): Deleted.
Absorbed by findBannerRevealNextResult.
(WebInspector.LogContentView.prototype._performSearch): Deleted.
Override ContentView.prototype.performSearch instead.

  • UserInterface/Views/Main.css:

(#split-content-browser > .navigation-bar :matches(.find-banner, .find-banner + .divider)):
Hide the toolbar banner and divider.

3:42 PM Changeset in webkit [209881] by beidson@apple.com
  • 4 edits in trunk/Source/WebCore

Enhance some of the logging statements just added for IndexedDB Operation scheduling.

Rubberstamped by Tim Horton.

No new tests (No behavior change).

  • Modules/indexeddb/IDBTransaction.cpp:

(WebCore::IDBTransaction::iterateCursor):
(WebCore::IDBTransaction::requestGetRecord):
(WebCore::IDBTransaction::requestIndexRecord):
(WebCore::IDBTransaction::requestPutOrAdd):

  • Modules/indexeddb/shared/IDBCursorInfo.cpp:

(WebCore::IDBCursorInfo::loggingString):

  • Modules/indexeddb/shared/IDBIterateCursorData.cpp:

(WebCore::IDBIterateCursorData::loggingString):

3:42 PM Changeset in webkit [209880] by jfbastien@apple.com
  • 24 edits in trunk

WebAssembly: improve compilation error messages
https://bugs.webkit.org/show_bug.cgi?id=163919

Reviewed by Saam Barati.

JSTests:

Update error messages in these tests.
Use the assert.throws facility in many of them which weren't already.

  • wasm/js-api/element.js:

(assert.throws.new.WebAssembly.Module.builder.WebAssembly):
(assert.throws):

  • wasm/js-api/global-error.js:

(assert.throws.new.WebAssembly.Module.bin):
(assert.throws):
(new.Number):

  • wasm/js-api/table.js:

(assert.throws.new.WebAssembly.Module.builder.WebAssembly):
(assert.throws):
(assertBadTableImport):

  • wasm/js-api/test_Data.js:

(DataSectionWithoutMemory):

  • wasm/js-api/test_Start.js:

(InvalidStartFunctionIndex):

  • wasm/js-api/test_basic_api.js:

(const.c.in.constructorProperties.switch):

Source/JavaScriptCore:

The error handling messages were underwhelming because most
locations merely returned false on failure. This patch uses
std::expected to denote that failure isn't expected. Doing this
makes it almost impossible to mess up the code: either a function
returns a result (or a partial result for internal helpers) or an
error. We're not synchronizing the error string with the m_failed
bool anymore, and the caller will abort if they try to get a
result but the outcome was an error.

This also shortens the code significantly using macros, while also
judiciously preventing inlining of error handling code and biasing
towards success using UNLIKELY. This means that the generated code
should be more efficient (no string formatting on success, and
regalloc can avoid these unlikely paths).

The patch adds a few missing checks as well, especially related to
count limits and memory allocation failure.

As a follow-up I'd like to improve WTF::makeString further, so it
does coercions to string and understands ADL as I did in this
patch.

  • wasm/WasmB3IRGenerator.cpp:

(JSC::Wasm::B3IRGenerator::fail):
(JSC::Wasm::parseAndCompile):

  • wasm/WasmB3IRGenerator.h:
  • wasm/WasmFormat.h:

(JSC::Wasm::isValidExternalKind):
(JSC::Wasm::makeString):

  • wasm/WasmFunctionParser.h:
  • wasm/WasmModuleParser.cpp:
  • wasm/WasmModuleParser.h:
  • wasm/WasmParser.h:

(JSC::Wasm::FailureHelper::makeString):
(JSC::Wasm::Parser::fail):
(JSC::Wasm::Parser<SuccessType>::Parser):
(JSC::Wasm::Parser<SuccessType>::consumeCharacter):
(JSC::Wasm::Parser<SuccessType>::consumeString):
(JSC::Wasm::Parser<SuccessType>::consumeUTF8String):
(JSC::Wasm::Parser<SuccessType>::parseVarUInt32):
(JSC::Wasm::Parser<SuccessType>::parseVarUInt64):
(JSC::Wasm::Parser<SuccessType>::parseVarInt32):
(JSC::Wasm::Parser<SuccessType>::parseVarInt64):
(JSC::Wasm::Parser<SuccessType>::parseUInt32):
(JSC::Wasm::Parser<SuccessType>::parseUInt64):
(JSC::Wasm::Parser<SuccessType>::parseUInt8):
(JSC::Wasm::Parser<SuccessType>::parseInt7):
(JSC::Wasm::Parser<SuccessType>::parseUInt7):
(JSC::Wasm::Parser<SuccessType>::parseVarUInt1):
(JSC::Wasm::Parser<SuccessType>::parseResultType):
(JSC::Wasm::Parser<SuccessType>::parseValueType):
(JSC::Wasm::Parser<SuccessType>::parseExternalKind):

  • wasm/WasmPlan.cpp:

(JSC::Wasm::Plan::run):

  • wasm/WasmSections.h:

(JSC::Wasm::isValidSection):
(JSC::Wasm::validateOrder):
(JSC::Wasm::makeString):

  • wasm/WasmValidate.cpp:

(JSC::Wasm::Validate::fail):
(JSC::Wasm::Validate::addUnreachable):
(JSC::Wasm::validateFunction):

  • wasm/WasmValidate.h:
  • wasm/generateWasmB3IRGeneratorInlinesHeader.py:
  • wasm/generateWasmOpsHeader.py:
  • wasm/generateWasmValidateInlinesHeader.py:

(loadMacro):
(storeMacro):

  • wasm/js/WebAssemblyInstanceConstructor.cpp:

(JSC::constructJSWebAssemblyInstance):

  • wasm/js/WebAssemblyModuleRecord.cpp:

(JSC::WebAssemblyModuleRecord::link):

3:12 PM Changeset in webkit [209879] by bshafiei@apple.com
  • 5 edits
    1 copy in branches/safari-602-branch

Merged r204664. rdar://problem/29690089

3:06 PM Changeset in webkit [209878] by bshafiei@apple.com
  • 2 edits in branches/safari-602-branch/Source/WebCore

Merged r209819. rdar://problem/29686479

3:05 PM Changeset in webkit [209877] by bshafiei@apple.com
  • 2 edits in branches/safari-602-branch/Source/WebCore

Merged r209776. rdar://problem/29686479

2:48 PM Changeset in webkit [209876] by andersca@apple.com
  • 3 edits in trunk/Source/WebKit2

Add more mach_msg logging instrumentation
https://bugs.webkit.org/show_bug.cgi?id=165914

Reviewed by Darin Adler.

  • Platform/IPC/mac/ConnectionMac.mm:

(IPC::Connection::sendMessage):
(IPC::Connection::sendOutgoingMessage):

  • Platform/IPC/mac/MachMessage.h:

(IPC::MachMessage::messageName):
(IPC::MachMessage::setMessageName):

2:12 PM Changeset in webkit [209875] by mmaxfield@apple.com
  • 16 edits
    4 adds in trunk

[Cocoa] Implement font-synthesis: small-caps
https://bugs.webkit.org/show_bug.cgi?id=165892

Reviewed by David Hyatt.

Source/WebCore:

The CSS Fonts level 4 spec adds a new value to the "font-synthesis"
property which controls whether or not small-caps is allowed to be
synthesized. Luckily, we already have an implementation of this
straightforward, so the implementation is quite simple.

Tests: css3/font-synthesis-small-caps.html

fast/text/font-synthesis-parsing.html

  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::fontSynthesisFromStyle):

  • css/StyleBuilderConverter.h:

(WebCore::StyleBuilderConverter::convertFontSynthesis):

  • css/parser/CSSPropertyParser.cpp:

(WebCore::consumeFontSynthesis):

  • platform/graphics/FontCache.h:

(WebCore::FontDescriptionKey::makeFlagsKey):

  • platform/graphics/FontDescription.cpp:

(WebCore::FontDescription::FontDescription):

  • platform/graphics/FontDescription.h:

(WebCore::FontCascadeDescription::initialFontSynthesis):

  • platform/graphics/mac/ComplexTextController.cpp:

(WebCore::shouldSynthesize):
(WebCore::ComplexTextController::collectComplexTextRuns):

LayoutTests:

  • fast/text/font-synthesis-parsing-expected.txt: Added.
  • fast/text/font-synthesis-parsing.html: Added.
  • css3/font-synthesis-small-caps-expected.html: Added.
  • css3/font-synthesis-small-caps.html: Added.
  • fast/css/getComputedStyle/computed-style-expected.txt:
  • fast/css/getComputedStyle/computed-style-font-family-expected.txt:
  • fast/css/getComputedStyle/computed-style-without-renderer-expected.txt:
  • fast/css3-text/font-synthesis-parse-expected.txt:
  • fast/css3-text/font-synthesis-parse.html:
  • svg/css/getComputedStyle-basic-expected.txt:
2:08 PM Changeset in webkit [209874] by jfbastien@apple.com
  • 5 edits
    1 add in trunk

JSTests:
WebAssembly API: improve data section errors
https://bugs.webkit.org/show_bug.cgi?id=165733

Reviewed by Keith Miller.

  • wasm/js-api/element-data.js: Added.

(ElementBeforeData.set const):
(ElementBeforeData): check the order of initialization, which is observable on failure

  • wasm/js-api/test_Data.js:

(DataSectionWithoutMemory):
(DataSectionOffTheEnd): Deleted.
(DataSectionPartlyOffTheEnd): Deleted.
(DataSectionEmptyOffTheEnd): Deleted.
(DataSectionSeenByStart): Deleted.

Source/JavaScriptCore:
WebAssembly API: improve data section errors, initialize after Element
https://bugs.webkit.org/show_bug.cgi?id=165733

Reviewed by Keith Miller.

  • wasm/WasmModuleParser.cpp:

(JSC::Wasm::ModuleParser::parseData): Data section without Memory section or import is a validation error

  • wasm/js/WebAssemblyModuleRecord.cpp:

(JSC::dataSegmentFail):
(JSC::WebAssemblyModuleRecord::evaluate): tighten checks (though the spec isn't fully baked), and move after Element initialization

2:08 PM Changeset in webkit [209873] by beidson@apple.com
  • 17 edits in trunk/Source/WebCore

Add a new Logging Channel for IndexedDB Operation scheduling.
https://bugs.webkit.org/show_bug.cgi?id=165912

Reviewed by Alex Christensen.

No new tests (No behavior change).

  • Modules/indexeddb/IDBDatabase.cpp:

(WebCore::IDBDatabase::transaction):

  • Modules/indexeddb/IDBFactory.cpp:

(WebCore::IDBFactory::openInternal):
(WebCore::IDBFactory::deleteDatabase):

  • Modules/indexeddb/IDBTransaction.cpp:

(WebCore::IDBTransaction::internalAbort):
(WebCore::IDBTransaction::commit):
(WebCore::IDBTransaction::createObjectStore):
(WebCore::IDBTransaction::renameObjectStore):
(WebCore::IDBTransaction::createIndex):
(WebCore::IDBTransaction::renameIndex):
(WebCore::IDBTransaction::doRequestOpenCursor):
(WebCore::IDBTransaction::iterateCursor):
(WebCore::IDBTransaction::requestGetAllObjectStoreRecords):
(WebCore::IDBTransaction::requestGetAllIndexRecords):
(WebCore::IDBTransaction::requestGetRecord):
(WebCore::IDBTransaction::requestIndexRecord):
(WebCore::IDBTransaction::requestCount):
(WebCore::IDBTransaction::requestDeleteRecord):
(WebCore::IDBTransaction::requestClearObjectStore):
(WebCore::IDBTransaction::requestPutOrAdd):
(WebCore::IDBTransaction::deleteObjectStore):
(WebCore::IDBTransaction::deleteIndex):

  • Modules/indexeddb/shared/IDBCursorInfo.cpp:

(WebCore::IDBCursorInfo::loggingString):

  • Modules/indexeddb/shared/IDBCursorInfo.h:
  • Modules/indexeddb/shared/IDBGetAllRecordsData.cpp:

(WebCore::IDBGetAllRecordsData::loggingString):

  • Modules/indexeddb/shared/IDBGetAllRecordsData.h:
  • Modules/indexeddb/shared/IDBGetRecordData.cpp:

(WebCore::IDBGetRecordData::loggingString):

  • Modules/indexeddb/shared/IDBGetRecordData.h:
  • Modules/indexeddb/shared/IDBIndexInfo.cpp:

(WebCore::IDBIndexInfo::condensedLoggingString):

  • Modules/indexeddb/shared/IDBIndexInfo.h:
  • Modules/indexeddb/shared/IDBIterateCursorData.cpp:

(WebCore::IDBIterateCursorData::loggingString):

  • Modules/indexeddb/shared/IDBIterateCursorData.h:
  • Modules/indexeddb/shared/IDBObjectStoreInfo.cpp:

(WebCore::IDBObjectStoreInfo::condensedLoggingString):

  • Modules/indexeddb/shared/IDBObjectStoreInfo.h:
  • platform/Logging.h:
2:07 PM Changeset in webkit [209872] by keith_miller@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Turn on WebAssembly by default
https://bugs.webkit.org/show_bug.cgi?id=165918

Reviewed by Saam Barati.

  • runtime/Options.h:
1:26 PM Changeset in webkit [209871] by Konstantin Tokarev
  • 88 edits in trunk/Source

Added missing override and final specifiers
https://bugs.webkit.org/show_bug.cgi?id=165903

Reviewed by Darin Adler.

Source/JavaScriptCore:

  • bytecompiler/BytecodeGenerator.h:
  • jsc.cpp:
  • parser/Nodes.h:

Source/WebCore:

No new tests needed.

  • Modules/mediastream/OverconstrainedErrorEvent.h:
  • bindings/js/JSCallbackData.h:
  • bindings/js/JSCustomXPathNSResolver.h:
  • bindings/js/JSErrorHandler.h:
  • css/StyleRuleImport.h:
  • dom/SecurityPolicyViolationEvent.h:
  • editing/CreateLinkCommand.h:
  • editing/DeleteSelectionCommand.h:
  • editing/DictationCommand.h:
  • editing/Editor.cpp:
  • editing/FormatBlockCommand.h:
  • editing/IndentOutdentCommand.h:
  • editing/InsertLineBreakCommand.h:
  • editing/InsertParagraphSeparatorCommand.h:
  • editing/ModifySelectionListLevel.h:
  • editing/MoveSelectionCommand.h:
  • editing/RemoveFormatCommand.h:
  • editing/RemoveNodePreservingChildrenCommand.h:
  • editing/ReplaceSelectionCommand.h:
  • editing/SimplifyMarkupCommand.h:
  • editing/SplitTextNodeContainingElementCommand.h:
  • editing/UnlinkCommand.h:
  • fileapi/FileReaderLoader.h:
  • html/canvas/ANGLEInstancedArrays.h:
  • html/canvas/WebGLVertexArrayObjectBase.h:
  • loader/SinkDocument.h:
  • loader/archive/mhtml/MHTMLArchive.h:
  • page/animation/CSSPropertyAnimation.cpp:
  • platform/audio/MultiChannelResampler.cpp:
  • platform/audio/SincResampler.cpp:
  • platform/audio/gstreamer/AudioDestinationGStreamer.h:
  • platform/audio/gstreamer/AudioSourceProviderGStreamer.h:
  • platform/graphics/TextTrackRepresentation.cpp:
  • platform/graphics/displaylists/DisplayListItems.h:
  • platform/graphics/filters/FEBlend.h:
  • platform/graphics/filters/FEColorMatrix.h:
  • platform/graphics/filters/FEComponentTransfer.h:
  • platform/graphics/filters/FEConvolveMatrix.h:
  • platform/graphics/filters/FEDiffuseLighting.h:
  • platform/graphics/filters/FEDropShadow.h:
  • platform/graphics/filters/FEGaussianBlur.h:
  • platform/graphics/filters/FELighting.h:
  • platform/graphics/filters/FEMerge.h:
  • platform/graphics/filters/FEMorphology.h:
  • platform/graphics/filters/FEOffset.h:
  • platform/graphics/filters/FESpecularLighting.h:
  • platform/graphics/filters/FETile.h:
  • platform/graphics/filters/FETurbulence.h:
  • platform/graphics/filters/SourceAlpha.h:
  • platform/graphics/filters/SourceGraphic.h:
  • platform/graphics/opengl/Extensions3DOpenGL.h:
  • platform/graphics/opengl/Extensions3DOpenGLCommon.h:
  • platform/graphics/texmap/TextureMapperBackingStore.h:
  • platform/mediastream/openwebrtc/RealtimeMediaSourceOwr.h:
  • platform/mock/GeolocationClientMock.h:
  • platform/text/TextCodecICU.h:
  • platform/text/TextCodecLatin1.h:
  • platform/text/TextCodecUTF16.h:
  • platform/text/TextCodecUTF8.h:
  • platform/text/TextCodecUserDefined.h:
  • rendering/RenderFullScreen.cpp:
  • storage/StorageEvent.h:
  • svg/properties/SVGListProperty.h:
  • svg/properties/SVGStaticListPropertyTearOff.h:
  • svg/properties/SVGStaticPropertyTearOff.h:
  • xml/NativeXPathNSResolver.h:
  • xml/XMLHttpRequestProgressEvent.h:
  • xml/XMLHttpRequestProgressEventThrottle.h:
  • xml/XPathVariableReference.h:
  • xml/XSLImportRule.h:

Source/WebKit2:

  • UIProcess/API/gtk/WebKitGeolocationProvider.h:
  • UIProcess/WebFormSubmissionListenerProxy.h:
  • UIProcess/WebFramePolicyListenerProxy.h:
  • WebProcess/Automation/WebAutomationSessionProxy.h:
  • WebProcess/InjectedBundle/API/gtk/DOM/GObjectXPathNSResolver.h:
  • WebProcess/MediaCache/WebMediaKeyStorageManager.h:
  • WebProcess/Plugins/Netscape/NPRuntimeObjectMap.h:
  • WebProcess/WebCoreSupport/WebPlugInClient.h:
  • WebProcess/WebCoreSupport/soup/WebFrameNetworkingContext.h:
  • WebProcess/WebPage/FindController.h:

Source/WTF:

  • wtf/RunLoop.h:
1:08 PM Changeset in webkit [209870] by Chris Dumez
  • 3 edits in trunk/Source/WebCore

Inline Document::existingAXObjectCache()
https://bugs.webkit.org/show_bug.cgi?id=165906

Reviewed by Darin Adler.

Inline Document::existingAXObjectCache() to avoid paying function call
cost in the common case where AX is disabled.

  • dom/Document.cpp:

(WebCore::Document::existingAXObjectCacheSlow):
(WebCore::Document::existingAXObjectCache): Deleted.

  • dom/Document.h:

(WebCore::Document::existingAXObjectCache):

12:55 PM Changeset in webkit [209869] by Chris Dumez
  • 2 edits in trunk/Source/JavaScriptCore

Harden JSObject::getOwnPropertyDescriptor()
https://bugs.webkit.org/show_bug.cgi?id=165908

Reviewed by Geoffrey Garen.

  • runtime/JSObject.cpp:

(JSC::JSObject::getOwnPropertyDescriptor):

12:18 PM Changeset in webkit [209868] by Ryan Haddad
  • 2 edits in trunk/Source/WebCore

Rebaseline bindings tests after r209864.

Unreviewed test gardening.

  • bindings/scripts/test/JS/JSTestStandaloneDictionary.cpp:

(WebCore::convertDictionary<DictionaryImplName>):

11:19 AM Changeset in webkit [209867] by Simon Fraser
  • 11 edits
    3 adds in trunk

[iOS WK2] Don't disable position:fixed when a form element has focus
https://bugs.webkit.org/show_bug.cgi?id=165891
rdar://problem/29271694

Reviewed by Wenson Hsieh.

Source/WebKit2:

Before visual viewports, we had to lay out position:fixed relative to the document rect (effectively
disabling position:fixed) when a form element was focused, to ensure that we could scroll to inputs
inside position:Fixed.

When visual viewports are enabled, we can do a better job of this, and keep position:fixed active.

Test: fast/visual-viewport/ios/zoomed-focus-in-fixed.html

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _zoomToFocusRect:selectionRect:insideFixed:fontSize:minimumScale:maximumScale:allowScaling:forceScroll:]): Soon this will use
insideFixed to have better scroll-into-view behavior.
(-[WKWebView _zoomToFocusRect:selectionRect:fontSize:minimumScale:maximumScale:allowScaling:forceScroll:]): Deleted.

  • UIProcess/API/Cocoa/WKWebViewInternal.h:
  • UIProcess/ios/WKContentView.h:
  • UIProcess/ios/WKContentView.mm:

(-[WKContentView _zoomToFocusRect:selectionRect:insideFixed:fontSize:minimumScale:maximumScale:allowScaling:forceScroll:]):
(-[WKContentView _zoomToFocusRect:selectionRect:fontSize:minimumScale:maximumScale:allowScaling:forceScroll:]): Deleted.

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView _displayFormNodeInputView]):

  • UIProcess/ios/WebPageProxyIOS.mm:

(WebKit::WebPageProxy::computeCustomFixedPositionRect): Don't fall back to using the documentRect as the fixed
position rect if visual viewports are enabled.

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::getAssistedNodeInformation): Don't reset the customtFixedPositionRect around computing element
coordinates if visual viewports are enabled.

LayoutTests:

  • TestExpectations:
  • fast/visual-viewport/ios/zoomed-focus-in-fixed-expected.txt: Added.
  • fast/visual-viewport/ios/zoomed-focus-in-fixed.html: Added.
  • platform/ios-simulator-wk2/TestExpectations:
11:17 AM Changeset in webkit [209866] by keith_miller@apple.com
  • 5 edits
    5 adds in trunk

Fix 64-bit shift family Wasm opcodes
https://bugs.webkit.org/show_bug.cgi?id=165902

Reviewed by Geoffrey Garen.

JSTests:

Add tests for shift family of instructions. Since
we can't generate i64 values to pass to wasm we only compile
the code for those functions. Attempting to generate any i64
code using these instructions would have been enough to cause
the B3 Validation error anyway.

  • wasm/assert.js:
  • wasm/function-tests/rotl.js: Added.
  • wasm/function-tests/rotr.js: Added.
  • wasm/function-tests/shl.js: Added.
  • wasm/function-tests/shr-s.js: Added.
  • wasm/function-tests/shr-u.js: Added.
  • wasm/wasm.json:

Source/JavaScriptCore:

The Int64 versions of the shift family B3 opcodes take an Int32
for the shift value. Wasm, however, takes an i64, so we need to
Trunc the shift value. Also, this fixes a bug where shr_u mapped
to signed shift and shr_s mapped to the unsigned shift.

  • wasm/wasm.json:
10:37 AM Changeset in webkit [209865] by akling@apple.com
  • 7 edits in trunk/Source

Always clear RenderLayer backing stores when going into page cache.
<https://webkit.org/b/165901>

Reviewed by Simon Fraser.

Source/WebCore:

We were already doing this for the iOS and GTK+ ports, let's do it everywhere
for consistency, and a bit of memory usage improvement.

This patch just removes the setting and always calls FrameView::clearBackingStores()
when there is composited content going into page cache.

  • history/CachedFrame.cpp:

(WebCore::CachedFrame::CachedFrame):

  • history/PageCache.h:

(WebCore::PageCache::shouldClearBackingStores): Deleted.
(WebCore::PageCache::setShouldClearBackingStores): Deleted.

Source/WebKit/mac:

  • WebView/WebView.mm:

(+[WebView _setCacheModel:]):

Source/WebKit2:

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::WebProcess):

9:25 AM Changeset in webkit [209864] by Darin Adler
  • 25 edits
    3 adds
    2 deletes in trunk

Remove custom binding for MediaDevices
https://bugs.webkit.org/show_bug.cgi?id=165894

Reviewed by Eric Carlson.

Source/WebCore:

Removes the explicit code to parse the MediaStreamConstraints and
MediaTrackConstraints. Next step could be to change the internal
code to use the structs from bindings directly so we don't need
code to convert to an internal format.

  • CMakeLists.txt: Added MediaTrackConstraints.idl and MediaTrackConstraints.cpp,

removed JSMediaDevicesCustom.cpp.

  • DerivedSources.make: Added MediaTrackConstraints.idl.

Also sorted list of IDL files and fixed use of tabs.

  • Modules/mediastream/MediaDevices.cpp:

(WebCore::createMediaConstraintsImpl): Added.
(WebCore::MediaDevices::getUserMedia): Changed this function to take arguments that
are generated by the bindings script, and call createMediaConstraintsImpl to convert
into the internal data structure.

  • Modules/mediastream/MediaDevices.h: Added StreamConstraints struct and changed

getUserMedia to take that as specified in the IDL.

  • Modules/mediastream/MediaDevices.idl: Added definition of the MediaStreamConstraints

dictionary. Removed [Custom] from getUserMedia.

  • Modules/mediastream/MediaStream.cpp:

(WebCore::MediaStream::MediaStream): Pass a reference to addObserver.
(WebCore::MediaStream::~MediaStream): Pass a rference to removeObserver.
(WebCore::MediaStream::internalAddTrack): Ditto.
(WebCore::MediaStream::internalRemoveTrack): Ditto.

  • Modules/mediastream/MediaStreamTrack.cpp:

(WebCore::createMediaConstraintsImpl): Added.
(WebCore::MediaStreamTrack::applyConstraints): Changed to take an optional
MediaTrackConstraints argument and call createMediaConstraintsImpl to convert
into the internal data structure. Also merged the multiple overloads of this
all into a single function, used auto to make the code easier to read, and
moved the code that stores new constrains into the success handling, since the
specification says that's the only case where we should store it.
(WebCore::MediaStreamTrack::addObserver): Take a reference instead of a pointer.
(WebCore::MediaStreamTrack::removeObserver): Ditto.

  • Modules/mediastream/MediaStreamTrack.h: Removed many unneeded includes.

Changed getConstraints to return const MediaTrackConstraints&, applyConstraints
to take an optional MediaTrackConstraints, add/removeObserver to take a reference
rather than a pointer, and changed m_constraints to be a MediaTrackConstraints
instead of a RefPtr<MediaConstraints>.

  • Modules/mediastream/MediaStreamTrack.idl: Removed [Custom] from getConstraints

and applyConstraints.

  • Modules/mediastream/MediaTrackConstraints.cpp: Added.

(WebCore::set): Overloaded function to set constriaints in a
MediaTrackConstraintSetMap.
(WebCore::convertToInternalForm): Helper function that takes a
MediaTrackConstraintSet and turns it into a MediaTrackConstraintSetMap.
(WebCore::convertAdvancedToInternalForm): More of the same, but for vectors.
(WebCore::createMediaConstraintsImpl): Top level function. Calls the other
functions and then MediaConstraintsImpl::create.

  • Modules/mediastream/MediaTrackConstraints.h: Added. Contains all the structures

and type definitions for the dictionaries defined in the IDL file, and also the
createMediaConstraintsImpl function declaration.

  • Modules/mediastream/MediaTrackConstraints.idl: Added. Contains the

MediaTrackConstraints and all the other dictionaries and typedefs that are needed
to define that dictionary.

  • Modules/mediastream/UserMediaRequest.cpp:

(WebCore::UserMediaRequest::start): Changed to not depend on MediaDevices::Promise.
(WebCore::UserMediaRequest::UserMediaRequest): Ditto.
(WebCore::isSecure): Rearranged to be easier to understand.
(WebCore::UserMediaRequest::start): Removed a local variable for simplicity.
(WebCore::UserMediaRequest::document): Removed a redundant null check.

  • Modules/mediastream/UserMediaRequest.h: Reduced includes, changed to not depend

on MediaDevices::Promise, removing the reason to include MediaDevices.h.

  • WebCore.xcodeproj/project.pbxproj: Updated to remove old files and add new ones.
  • bindings/js/JSBindingsAllInOne.cpp: Removed JSMediaDevicesCustom.cpp.
  • bindings/js/JSMediaDevicesCustom.cpp: Removed.
  • bindings/js/JSMediaDevicesCustom.h: Removed.
  • bindings/js/JSMediaStreamTrackCustom.cpp:

(WebCore::JSMediaStreamTrack::applyConstraints): Deleted.
(WebCore::JSMediaStreamTrack::getConstraints): Deleted.

  • bindings/scripts/CodeGenerator.pm:

(ProcessDocument): Updated to allow multiple standalone dictionaries, as long as
the name of one of the dictionaries matches the name of the file.

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateDictionary): Added "other dictionaries" argument so we can support
files with multiple dictionaries in them.
(GenerateDictionariesHeaderContent): Completed support for dictionaries that
are not named after a top level interface by added one more check for a missing
$interface in a place that otherwise would not handle it correctly.
(GenerateImplementation): Removed code that set $currentCachedAttribute and
$cacheIndex, since no was reading the value of either any longer.
(GenerateDictionaryHeader): Added "other dictionaries".
(GenerateDictionaryImplementation): Ditto.
(WriteData): Removed unnnecessarily indirect code that was using FileNamePrefix
and a local variable named $prefix instead of just writing "JS".

  • bindings/scripts/generate-bindings.pl: Corrected the use of the fileparse

function from the Path::Basename module; after reading the documentation for
this it is clear that there is no need to first call basename, and fileparse
should also be used instead of basename.

  • platform/mediastream/MediaConstraints.h: Removed unneeded includes.

(WebCore::StringConstraint::appendExact): Removed an incorrect use of clear
here that would mess up cases where there is supposed to be more than one
exact value.

  • platform/mediastream/MediaStreamTrackPrivate.cpp: Remvoed unneeded includes.

(WebCore::MediaStreamTrackPrivate::clone): Removed code to copy m_constraints.
(WebCore::MediaStreamTrackPrivate::constraints): Deleted.

  • platform/mediastream/MediaStreamTrackPrivate.h: Removed the constraints

function member and the m_constraints data member.

Source/WebKit2:

  • WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:

Added include of MediaConstraintsImpl.h, now needed because we
removed some unneeded includes from the WebCore headers.

LayoutTests:

  • fast/mediastream/MediaDevices-getUserMedia-expected.txt: Expect the exception the

generated bindings code throws, rather than the different one the hand-written binding
was throwing before.

8:53 AM Changeset in webkit [209863] by keith_miller@apple.com
  • 3 edits in trunk/JSTests

WebAssembly: test_BuilderJSON.js is broken
https://bugs.webkit.org/show_bug.cgi?id=165893

Reviewed by Michael Saboff.

  • wasm/Builder.js:

(const._isValidValue):

  • wasm/self-test/test_BuilderJSON.js:
7:46 AM Changeset in webkit [209862] by hyatt@apple.com
  • 5 edits in trunk/Source

[CSS Parser] Enable CSS Deferred Parsing
https://bugs.webkit.org/show_bug.cgi?id=165869

Reviewed by Sam Weinig.

Source/WebCore:

Enable CSS deferred parsing once again. It's now behind a pref,
so it's easy to flip off and on.

To address the memory regression that caused the previous rollout,
the tokenizer is no longer retained. Instead the sheet text and escaped
strings are retained by CSSDeferredParser, and then DeferredStyleProperties
and DeferredStyleGroupRuleList make copies of the tokens from the original
tokenization process. As the rules get parsed, these tokens get thrown
away.

This means that instead of the entire set of tokens staying in memory
as long as even one unparsed rule remained, now only the tokens that
still need parsing will remain alive.

Unparsed rules will consume slightly more memory than parsed rules, but
the more unparsed rules you have, the bigger the performance win as
well, so this is a tradeoff. Given that the parsing speed is going up
by anywhere from 25-40% on cold loads of pages (where all stylesheets
have to parse), this seems worth it to me.

  • css/parser/CSSParserMode.h:
  • page/Settings.in:

Source/WebKit2:

  • Shared/WebPreferencesDefinitions.h:
5:47 AM Changeset in webkit [209861] by commit-queue@webkit.org
  • 139 edits
    4 copies
    87 adds in trunk/LayoutTests

Sync web-platform-tests up to revision a4c2b37
https://bugs.webkit.org/show_bug.cgi?id=165041

LayoutTests/imported/w3c:

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

  • resources/ImportExpectations:
  • resources/TestRepositories:
  • resources/resource-files.json:
  • web-platform-tests/IndexedDB/historical-expected.txt: Added.
  • web-platform-tests/IndexedDB/historical.html: Added.
  • web-platform-tests/IndexedDB/interfaces-expected.txt:
  • web-platform-tests/IndexedDB/interfaces.html:
  • web-platform-tests/IndexedDB/interfaces.idl:
  • web-platform-tests/IndexedDB/interfaces.worker-expected.txt:
  • web-platform-tests/IndexedDB/interfaces.worker.js:

(async_test):
(request.onload): Deleted.

  • web-platform-tests/IndexedDB/name-scopes-expected.txt: Added.
  • web-platform-tests/IndexedDB/name-scopes.html: Added.
  • web-platform-tests/IndexedDB/support-promises.js:

(const.databaseName):
(const.requestWatcher):
(const.migrateDatabase):
(const.migrateNamedDatabase):
(const.createDatabase):
(const.createNamedDatabase):
(const.openDatabase):
(const.openNamedDatabase):
(const.createBooksStore):
(const.checkStoreIndexes):
(const.checkStoreGenerator):
(const.checkStoreContents):
(const.checkAuthorIndexContents):
(const.checkTitleIndexContents):

  • web-platform-tests/IndexedDB/w3c-import.log:
  • web-platform-tests/README.md:
  • web-platform-tests/XMLHttpRequest/event-readystatechange-loaded-expected.txt:
  • web-platform-tests/XMLHttpRequest/event-readystatechange-loaded.htm:
  • web-platform-tests/check_stability.py:

(TravisFold):
(TravisFold.init):
(TravisFold.enter):
(TravisFold.exit):
(markdown_adjust):
(table):
(write_inconsistent):
(write_results):
(main):

  • web-platform-tests/common/dummy.xhtml: Added.
  • web-platform-tests/common/dummy.xml: Added.
  • web-platform-tests/common/w3c-import.log:
  • web-platform-tests/config.default.json:
  • web-platform-tests/dom/events/EventTarget-dispatchEvent-expected.txt:
  • web-platform-tests/dom/events/ProgressEvent-expected.txt:
  • web-platform-tests/dom/events/ProgressEvent.html:
  • web-platform-tests/dom/nodes/DOMImplementation-createDocument-expected.txt:
  • web-platform-tests/dom/nodes/DOMImplementation-createDocument.html:
  • web-platform-tests/dom/nodes/Document-createElement-expected.txt:
  • web-platform-tests/dom/nodes/Document-createElement.html:
  • web-platform-tests/dom/nodes/Document-createElementNS-expected.txt:
  • web-platform-tests/dom/nodes/Document-createElementNS.html:
  • web-platform-tests/dom/nodes/Document-createElementNS.js:
  • web-platform-tests/dom/nodes/Document-createEvent-expected.txt:
  • web-platform-tests/dom/nodes/Document-createEvent.html:
  • web-platform-tests/dom/nodes/Document-createEvent.js:
  • web-platform-tests/dom/nodes/Element-closest-expected.txt:
  • web-platform-tests/dom/nodes/Element-closest.html:
  • web-platform-tests/domparsing/OWNERS:
  • web-platform-tests/domparsing/createContextualFragment-expected.txt:
  • web-platform-tests/domparsing/createContextualFragment.html:
  • web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-encrypted-clear-sources.html:
  • web-platform-tests/encrypted-media/content/video_512x288_h264-360k_multikey_key1_dashinit.mp4: Added.
  • web-platform-tests/encrypted-media/drm-mp4-playback-temporary-encrypted-clear-sources.html:
  • web-platform-tests/encrypted-media/scripts/playback-persistent-license-events.js:

(runTest):

  • web-platform-tests/encrypted-media/scripts/playback-persistent-usage-record-events.js:

(runTest):

  • web-platform-tests/encrypted-media/scripts/playback-temporary-events.js:

(runTest):

  • web-platform-tests/encrypted-media/scripts/playback-temporary-multikey-sequential.js:

(runTest):

  • web-platform-tests/encrypted-media/scripts/unique-origin.js:

(runTest.):

  • web-platform-tests/fetch/api/basic/mode-same-origin-expected.txt:
  • web-platform-tests/fetch/api/basic/mode-same-origin-worker-expected.txt:
  • web-platform-tests/fetch/api/cors/cors-redirect-credentials-expected.txt:
  • web-platform-tests/fetch/api/cors/cors-redirect-credentials-worker-expected.txt:
  • web-platform-tests/fetch/api/headers/headers-idl.html:
  • web-platform-tests/fetch/api/headers/headers-normalize-expected.txt:
  • web-platform-tests/fetch/api/headers/headers-normalize.html:
  • web-platform-tests/fetch/api/redirect/redirect-count.js:

(redirectCount):

  • web-platform-tests/fetch/api/request/request-error-expected.txt:
  • web-platform-tests/fetch/api/request/request-error.html:
  • web-platform-tests/fetch/api/request/request-idl.html:
  • web-platform-tests/fetch/api/resources/redirect.py:

(main):

  • web-platform-tests/fetch/api/response/response-consume-expected.txt:
  • web-platform-tests/fetch/api/response/response-consume.html:
  • web-platform-tests/fetch/api/response/response-idl.html:
  • web-platform-tests/fonts/math/mathvariant-bold-fraktur.woff: Added.
  • web-platform-tests/fonts/math/mathvariant-bold-italic.woff: Added.
  • web-platform-tests/fonts/math/mathvariant-bold-sans-serif.woff: Added.
  • web-platform-tests/fonts/math/mathvariant-bold-script.woff: Added.
  • web-platform-tests/fonts/math/mathvariant-bold.woff: Added.
  • web-platform-tests/fonts/math/mathvariant-double-struck.woff: Added.
  • web-platform-tests/fonts/math/mathvariant-fraktur.woff: Added.
  • web-platform-tests/fonts/math/mathvariant-initial.woff: Added.
  • web-platform-tests/fonts/math/mathvariant-italic.woff: Added.
  • web-platform-tests/fonts/math/mathvariant-looped.woff: Added.
  • web-platform-tests/fonts/math/mathvariant-monospace.woff: Added.
  • web-platform-tests/fonts/math/mathvariant-sans-serif-bold-italic.woff: Added.
  • web-platform-tests/fonts/math/mathvariant-sans-serif-italic.woff: Added.
  • web-platform-tests/fonts/math/mathvariant-sans-serif.woff: Added.
  • web-platform-tests/fonts/math/mathvariant-script.woff: Added.
  • web-platform-tests/fonts/math/mathvariant-stretched.woff: Added.
  • web-platform-tests/fonts/math/mathvariant-tailed.woff: Added.
  • web-platform-tests/fonts/math/w3c-import.log:
  • web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/014.html:
  • web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-return-value-handling.html:
  • web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-function-src.html:
  • web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-function.html:
  • web-platform-tests/html/browsers/history/the-history-interface/history_go_to_uri-1.html: Added.
  • web-platform-tests/html/browsers/history/the-history-interface/history_go_to_uri-expected.txt: Added.
  • web-platform-tests/html/browsers/history/the-history-interface/history_go_to_uri.html: Added.
  • web-platform-tests/html/browsers/history/the-history-interface/w3c-import.log:
  • web-platform-tests/html/browsers/history/the-location-interface/location_reload-iframe.html:
  • web-platform-tests/html/browsers/history/the-location-interface/location_reload.html:
  • web-platform-tests/html/browsers/the-window-object/support/noopener-target.html: Added.
  • web-platform-tests/html/browsers/the-window-object/support/w3c-import.log: Copied from LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/resetting-a-form/w3c-import.log.
  • web-platform-tests/html/browsers/the-window-object/w3c-import.log:
  • web-platform-tests/html/browsers/the-window-object/window-open-noopener-expected.txt: Added.
  • web-platform-tests/html/browsers/the-window-object/window-open-noopener.html: Added.
  • web-platform-tests/html/browsers/windows/nested-browsing-contexts/w3c-import.log:
  • web-platform-tests/html/browsers/windows/support-open-cross-origin.sub.html: Added.
  • web-platform-tests/html/browsers/windows/targeting-multiple-cross-origin-manual.sub.html: Added.
  • web-platform-tests/html/browsers/windows/w3c-import.log:
  • web-platform-tests/html/dom/interfaces.html:
  • web-platform-tests/html/dom/new-harness.js:

(ReflectionHarness.test):
(ReflectionHarness.run): Deleted.
(ReflectionHarness.testException): Deleted.

  • web-platform-tests/html/dom/original-harness.js:

(ReflectionHarness.test):
(ReflectionHarness.assertEquals):
(ReflectionHarness.assertThrows):
(ReflectionHarness.testWrapper): Deleted.
(ReflectionHarness.run): Deleted.
(ReflectionHarness.testException): Deleted.

  • web-platform-tests/html/dom/reflection.js:

(ReflectionTests.reflects):
(ReflectionTests.doReflects): Deleted.

  • web-platform-tests/html/semantics/document-metadata/the-link-element/all: Added.
  • web-platform-tests/html/semantics/document-metadata/the-link-element/all.headers: Added.
  • web-platform-tests/html/semantics/document-metadata/the-link-element/resources/empty-href.css: Added.

(body):

  • web-platform-tests/html/semantics/document-metadata/the-link-element/resources/w3c-import.log:
  • web-platform-tests/html/semantics/document-metadata/the-link-element/stylesheet-empty-href-expected.html: Added.
  • web-platform-tests/html/semantics/document-metadata/the-link-element/stylesheet-empty-href.html: Added.
  • web-platform-tests/html/semantics/document-metadata/the-link-element/stylesheet-media-expected.html: Added.
  • web-platform-tests/html/semantics/document-metadata/the-link-element/stylesheet-media.html: Added.
  • web-platform-tests/html/semantics/document-metadata/the-link-element/w3c-import.log:
  • web-platform-tests/html/semantics/embedded-content/the-embed-element/historical-expected.txt: Added.
  • web-platform-tests/html/semantics/embedded-content/the-embed-element/historical.html: Added.
  • web-platform-tests/html/semantics/embedded-content/the-embed-element/w3c-import.log:
  • web-platform-tests/html/semantics/embedded-content/the-object-element/historical-expected.txt: Added.
  • web-platform-tests/html/semantics/embedded-content/the-object-element/historical.html: Added.
  • web-platform-tests/html/semantics/embedded-content/the-object-element/w3c-import.log:
  • web-platform-tests/html/semantics/forms/resetting-a-form/reset-event-expected.txt: Added.
  • web-platform-tests/html/semantics/forms/resetting-a-form/reset-event.html: Added.
  • web-platform-tests/html/semantics/forms/resetting-a-form/reset-form-expected.txt:
  • web-platform-tests/html/semantics/forms/resetting-a-form/reset-form.html:
  • web-platform-tests/html/semantics/forms/resetting-a-form/w3c-import.log:
  • web-platform-tests/html/semantics/forms/the-fieldset-element/HTMLFieldSetElement-expected.txt:
  • web-platform-tests/html/semantics/forms/the-fieldset-element/HTMLFieldSetElement.html:
  • web-platform-tests/html/semantics/forms/the-form-element/form-action-url-expected.txt: Added.
  • web-platform-tests/html/semantics/forms/the-form-element/form-action-url.html: Added.
  • web-platform-tests/html/semantics/forms/the-form-element/resources/form-action-url-iframe.html: Added.
  • web-platform-tests/html/semantics/forms/the-form-element/resources/target/form-action-url-target.html: Added.
  • web-platform-tests/html/semantics/forms/the-form-element/resources/target/w3c-import.log: Copied from LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/resetting-a-form/w3c-import.log.
  • web-platform-tests/html/semantics/forms/the-form-element/resources/w3c-import.log: Copied from LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/resetting-a-form/w3c-import.log.
  • web-platform-tests/html/semantics/forms/the-form-element/w3c-import.log:
  • web-platform-tests/html/semantics/forms/the-input-element/radio.html:
  • web-platform-tests/html/semantics/forms/the-select-element/common-HTMLOptionsCollection-add-expected.txt: Added.
  • web-platform-tests/html/semantics/forms/the-select-element/common-HTMLOptionsCollection-add.html: Added.
  • web-platform-tests/html/semantics/forms/the-select-element/common-HTMLOptionsCollection-expected.txt:
  • web-platform-tests/html/semantics/forms/the-select-element/common-HTMLOptionsCollection.html:
  • web-platform-tests/html/semantics/forms/the-select-element/selected-index-expected.txt: Added.
  • web-platform-tests/html/semantics/forms/the-select-element/selected-index.html: Added.
  • web-platform-tests/html/semantics/forms/the-select-element/w3c-import.log:
  • web-platform-tests/html/semantics/grouping-content/the-li-element/grouping-li-reftest-001-expected.html:
  • web-platform-tests/html/semantics/grouping-content/the-li-element/grouping-li-reftest-001.html:
  • web-platform-tests/html/semantics/grouping-content/the-li-element/grouping-li-reftest-002-expected.html:
  • web-platform-tests/html/semantics/grouping-content/the-li-element/grouping-li-reftest-002.html:
  • web-platform-tests/html/semantics/grouping-content/the-li-element/grouping-li-reftest-display-list-item-expected.html: Added.
  • web-platform-tests/html/semantics/grouping-content/the-li-element/grouping-li-reftest-display-list-item.html: Added.
  • web-platform-tests/html/semantics/grouping-content/the-li-element/grouping-li-reftest-list-owner-mixed-expected.html: Added.
  • web-platform-tests/html/semantics/grouping-content/the-li-element/grouping-li-reftest-list-owner-mixed.html: Added.
  • web-platform-tests/html/semantics/grouping-content/the-li-element/grouping-li-reftest-list-owner-not-dir-expected.html: Added.
  • web-platform-tests/html/semantics/grouping-content/the-li-element/grouping-li-reftest-list-owner-not-dir.html: Added.
  • web-platform-tests/html/semantics/grouping-content/the-li-element/grouping-li-reftest-list-owner-ol-expected.html: Added.
  • web-platform-tests/html/semantics/grouping-content/the-li-element/grouping-li-reftest-list-owner-ol.html: Added.
  • web-platform-tests/html/semantics/grouping-content/the-li-element/grouping-li-reftest-list-owner-parent-expected.html: Added.
  • web-platform-tests/html/semantics/grouping-content/the-li-element/grouping-li-reftest-list-owner-parent.html: Added.
  • web-platform-tests/html/semantics/grouping-content/the-li-element/grouping-li-reftest-list-owner-ul-expected.html: Added.
  • web-platform-tests/html/semantics/grouping-content/the-li-element/grouping-li-reftest-list-owner-ul.html: Added.
  • web-platform-tests/html/semantics/grouping-content/the-li-element/grouping-li-reftest-not-being-rendered-expected.html: Added.
  • web-platform-tests/html/semantics/grouping-content/the-li-element/grouping-li-reftest-not-being-rendered.html: Added.
  • web-platform-tests/html/semantics/grouping-content/the-li-element/w3c-import.log:
  • web-platform-tests/html/semantics/grouping-content/the-ol-element/grouping-ol-rev-reftest-001-expected.html:
  • web-platform-tests/html/semantics/grouping-content/the-ol-element/grouping-ol-rev-reftest-001.html:
  • web-platform-tests/html/semantics/grouping-content/the-ol-element/grouping-ol-start-reftest-001-expected.html:
  • web-platform-tests/html/semantics/grouping-content/the-ol-element/grouping-ol-start-reftest-001.html:
  • web-platform-tests/html/semantics/grouping-content/the-ol-element/grouping-ol-start-reftest-002-expected.html:
  • web-platform-tests/html/semantics/grouping-content/the-ol-element/grouping-ol-start-reftest-002.html:
  • web-platform-tests/html/semantics/grouping-content/the-ol-element/grouping-ol-type-reftest-001-expected.html:
  • web-platform-tests/html/semantics/grouping-content/the-ol-element/grouping-ol-type-reftest-001.html:
  • web-platform-tests/html/semantics/grouping-content/the-ol-element/grouping-ol-type-reftest-002-expected.html:
  • web-platform-tests/html/semantics/grouping-content/the-ol-element/grouping-ol-type-reftest-002.html:
  • web-platform-tests/html/semantics/grouping-content/the-ol-element/grouping-ol-type-reftest-003-expected.html:
  • web-platform-tests/html/semantics/grouping-content/the-ol-element/grouping-ol-type-reftest-003.html:
  • web-platform-tests/html/semantics/grouping-content/the-ol-element/reversed-1e-expected.html: Added.
  • web-platform-tests/html/semantics/grouping-content/the-ol-element/reversed-1e.html: Added.
  • web-platform-tests/html/semantics/grouping-content/the-ol-element/w3c-import.log:
  • web-platform-tests/html/semantics/scripting-1/the-template-element/template-element/node-document-changes.html:
  • web-platform-tests/html/webappapis/scripting/events/messageevent-constructor.https-expected.txt: Added.
  • web-platform-tests/html/webappapis/scripting/events/messageevent-constructor.https.html: Added.
  • web-platform-tests/html/webappapis/scripting/events/uncompiled_event_handler_with_scripting_disabled-expected.txt: Added.
  • web-platform-tests/html/webappapis/scripting/events/uncompiled_event_handler_with_scripting_disabled.html: Added.
  • web-platform-tests/html/webappapis/scripting/events/w3c-import.log:
  • web-platform-tests/lint.whitelist:
  • web-platform-tests/media-source/OWNERS:
  • web-platform-tests/serve.py:
  • web-platform-tests/shadow-dom/OWNERS:
  • web-platform-tests/streams/readable-streams/count-queuing-strategy-integration.js:

(promise_test):

  • web-platform-tests/url/a-element-expected.txt:
  • web-platform-tests/url/a-element-origin-expected.txt: Added.
  • web-platform-tests/url/a-element-origin-xhtml-expected.txt: Added.
  • web-platform-tests/url/a-element-origin-xhtml.xhtml: Added.
  • web-platform-tests/url/a-element-origin.html: Added.
  • web-platform-tests/url/a-element-origin.js: Added.

(setup.async_test.string_appeared_here.setup.step):
(setBase):
(bURL):
(runURLTests):

  • web-platform-tests/url/a-element-xhtml-expected.txt:
  • web-platform-tests/url/historical-expected.txt:
  • web-platform-tests/url/historical.html:
  • web-platform-tests/url/historical.worker-expected.txt:
  • web-platform-tests/url/historical.worker.js:

(test):

  • web-platform-tests/url/interfaces-expected.txt:
  • web-platform-tests/url/interfaces.html:
  • web-platform-tests/url/setters_tests.json:
  • web-platform-tests/url/url-constructor-expected.txt:
  • web-platform-tests/url/url-origin-expected.txt: Added.
  • web-platform-tests/url/url-origin.html: Added.
  • web-platform-tests/url/urlsearchparams-foreach-expected.txt: Added.
  • web-platform-tests/url/urlsearchparams-foreach.html: Added.
  • web-platform-tests/url/urltestdata.json:
  • web-platform-tests/url/w3c-import.log:
  • web-platform-tests/webrtc/rtcpeerconnection/rtcpeerconnection-constructor-expected.txt:
  • web-platform-tests/webrtc/rtcpeerconnection/rtcpeerconnection-constructor.html:
  • web-platform-tests/webrtc/simplecall-expected.txt:
  • web-platform-tests/webrtc/simplecall.html:

LayoutTests:

Patch by Youenn Fablet <youennf@gmail.com> on 2016-12-15
Reviewed by Alex Christensen.

  • platform/ios-simulator-wk2/imported/w3c/web-platform-tests/dom/events/EventTarget-dispatchEvent-expected.txt: Added.
  • platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/dom/reflection-embedded-expected.txt:
  • platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/dom/reflection-forms-expected.txt: Added.
  • tests-options.json:
5:15 AM Changeset in webkit [209860] by commit-queue@webkit.org
  • 9 edits
    3 copies in trunk

[OWR] Unskip fast/mediastream/MediaStream-video-element-track-stop.html
https://bugs.webkit.org/show_bug.cgi?id=165316

Patch by Alejandro G. Castro <alex@igalia.com> on 2016-12-15
Reviewed by Philippe Normand.

Source/WebCore:

Fixed the ended support of the video element in the OWR player and
fixed the videoTracks support. Now the OW player properly adds and
removes the audio and video tracks. Added the getSettings support
to the mediastream interface. Solved also the size handling in
some of the enable/muted situations.

Unskipping fast/mediastream/MediaStream-video-element-track-stop.html.

  • platform/GStreamer.cmake: Added the new

RealtimeMediaSourceOwr.cpp with the new code handling the
settings.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamerOwr.cpp:

(WebCore::MediaPlayerPrivateGStreamerOwr::~MediaPlayerPrivateGStreamerOwr):
Release the new video and audio maps that creates a relationship
of the mediastream tracks with the mediatracks of the video element.
(WebCore::MediaPlayerPrivateGStreamerOwr::play): Set ended to
false when we start playing.
(WebCore::MediaPlayerPrivateGStreamerOwr::load): Create the media
tracks to the player so that the videoTracks API returns it, and
add an entry in the map to be able to restore it using the
mediastream track.
(WebCore::MediaPlayerPrivateGStreamerOwr::disableMediaTracks):
Move some part of the stop function to this one in order to use it
in pause method and avoid changing the video selection in that
case.
(WebCore::MediaPlayerPrivateGStreamerOwr::stop): Now we call the
function disableMediaTracks and we also change teh selected
videoTrack.
(WebCore::MediaPlayerPrivateGStreamerOwr::trackEnded): For
videoTrack reset the size and the selected element. In case there
is no media playing we Make sure we set the ended variable to true
and call the timeChange to modify the state of the player.
(WebCore::MediaPlayerPrivateGStreamerOwr::trackEnabledChanged):
Handle properly the situation when the user changed the enabled
value, we disable the media.
(WebCore::MediaPlayerPrivateGStreamerOwr::setSize): Modify the
size of the source.
(WebCore::MediaPlayerPrivateGStreamerOwr::naturalSize): Overrided
to make sure we return a size even when the sample is not ready
for gst.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamerOwr.h:

Added the ended attribute and the maps.

  • platform/mediastream/openwebrtc/MediaEndpointOwr.cpp:

(WebCore::MediaEndpointOwr::createMutedRemoteSource): Use the new
realtime video and audio sources classes, this new classes
implement the settings of each type of media element.

  • platform/mediastream/openwebrtc/RealtimeMediaSourceCenterOwr.cpp:

(WebCore::RealtimeMediaSourceCenterOwr::mediaSourcesAvailable):
Use the new audio and video source classes instead of the general
one in order to handle the settings properly.

  • platform/mediastream/openwebrtc/RealtimeMediaSourceOwr.cpp: Added

(WebCore::RealtimeMediaSourceOwr::settings): Initialize using the
subclass and return the new currentSettings attribute.
(WebCore::RealtimeMediaSourceOwr::supportedConstraints): Call the
subclass initialization of the supportedSettings.

  • platform/mediastream/openwebrtc/RealtimeMediaSourceOwr.h:

(WebCore::RealtimeMediaSourceOwr::initializeSettings): Added to
initialize the settings before returning the value. Implemented in
the subclass.
(WebCore::RealtimeMediaSourceOwr::initializeSupportedConstraints):
Added to initialize the supported settings of the
media. Implemented in the subclass.
(WebCore::RealtimeMediaSourceOwr::settings): Moved to the cpp
file, implemented using the initialize functions of the subclass

  • platform/mediastream/openwebrtc/RealtimeVideoSourceOwr.h: Added

this new class to handle the settings of the video elements. The
class initializes the settings and the supportedSettings.

  • platform/mediastream/openwebrtc/RealtimeAudioSourceOwr.h: Added

this new class to handle the settings of the audio elements. The
class initializes the settings and the supportedSettings.

LayoutTests:

  • platform/gtk/TestExpectations: Unskipped the test and moved the

stop one, now it does not timeout because we correctly handle the
ended value but still fails, we need more features in the mock
classes for owr.

5:05 AM Changeset in webkit [209859] by Claudio Saavedra
  • 2 edits in trunk/Tools

[GTK] Ensure gst* docs are not built with update-webkitgtk-libs
https://bugs.webkit.org/show_bug.cgi?id=165855

Reviewed by Philippe Normand.

GStreamer's autogen.sh enables gtk-doc always so we end up building
docs even if we disable them. Use the configure script instead, since
we build from packages and these include it already.

  • gtk/jhbuild.modules: Use shipped configure instead of autogen.sh for

upstream gstreamer packages.

2:28 AM Changeset in webkit [209858] by Yusuke Suzuki
  • 2 edits in trunk/Source/WTF

[JSC] Optimize Kraken stringify
https://bugs.webkit.org/show_bug.cgi?id=165857

Reviewed by Darin Adler.

Kraken json-stringify-tinderbox performance heavily relies on StringBuilder::appendQuotedJSONString.
According to the result produced by Linux perf, it occupies 28% of execution time.

We tighten the hottest loop in the above function. We create the super fast path for non escaping case.
And add " and \ cases (since including " in the string is common). Then we fallback to the slow case.

It improves the performance 5.5% in Kraken json-stringify-tinderbox in MBP.

Performance result in my MBP (dandelion).

Collected 100 samples per benchmark/VM, with 100 VM invocations per benchmark. Emitted a call to gc()
between sample measurements. Used 1 benchmark iteration per VM invocation for warm-up. Used the
jsc-specific preciseTime() function to get microsecond-level timing. Reporting benchmark execution times
with 95% confidence intervals in milliseconds.

baseline patched

json-stringify-tinderbox 29.243+-0.241 27.701+-0.235 definitely 1.0557x faster

<arithmetic> 29.243+-0.241 27.701+-0.235 definitely 1.0557x faster

Performance result in my Linux laptop (hanayamata).

Collected 100 samples per benchmark/VM, with 100 VM invocations per benchmark. Emitted a call to gc()
between sample measurements. Used 1 benchmark iteration per VM invocation for warm-up. Used the
jsc-specific preciseTime() function to get microsecond-level timing. Reporting benchmark execution times
with 95% confidence intervals in milliseconds.

baseline patched

json-stringify-tinderbox 26.711+-0.475 25.255+-0.034 definitely 1.0577x faster

<arithmetic> 26.711+-0.475 25.255+-0.034 definitely 1.0577x faster

  • wtf/text/StringBuilder.cpp:

(WTF::appendQuotedJSONStringInternalSlow):
(WTF::appendQuotedJSONStringInternal):

12:19 AM Changeset in webkit [209857] by achristensen@apple.com
  • 6 edits in trunk

REGRESSION (r208902) Null pointer dereference in wkIsPublicSuffix
https://bugs.webkit.org/show_bug.cgi?id=165885
<rdar://problem/29476917>

Reviewed by Darin Adler.

Source/WebCore:

wkIsPublicSuffix crashes if you give it a nil NSString*.
This was possible before IDN2008 adoption, but it's more common now
because domains like "r4---asdf.example.com" fail in uidna_nameToASCII but not in uidna_IDNToASCII.
decodeHostName can return a nil NSString. We can't use it unchecked, so instead we use an algorithm that allows
for decoding failures while still finding top privately controlled domains correctly.

Tested by new API tests which crash before this change and verify the behavior matches behavior before r208902.

  • platform/mac/PublicSuffixMac.mm:

(WebCore::isPublicSuffix):
(WebCore::topPrivatelyControlledDomain):

Tools:

  • TestWebKitAPI/Tests/WebCore/URLParser.cpp:

(TestWebKitAPI::utf16String): Deleted.

  • TestWebKitAPI/Tests/mac/PublicSuffix.mm:

(TestWebKitAPI::TEST_F):

  • TestWebKitAPI/WTFStringUtilities.h:

(utf16String):
Moved from URLParser to share with other tests.

12:17 AM Changeset in webkit [209856] by achristensen@apple.com
  • 6 edits in trunk/Source

Fix Windows WebGL build after r209832

  • CMakeLists.txt:

Source/ThirdParty/ANGLE:

  • include/EGL/egl.h:
  • include/GLES2/gl2.h:

Dec 14, 2016:

9:15 PM Changeset in webkit [209855] by rniwa@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Jumping to the definition of a custom elements is broken
https://bugs.webkit.org/show_bug.cgi?id=165890

Reviewed by Joseph Pecoraro.

Fix the regression from https://trac.webkit.org/changeset/208304.

  • UserInterface/Views/DOMTreeElement.js:

(WebInspector.DOMTreeElement.prototype._showCustomElementDefinition): Use the main target
since a custom element definition can never come from a worker.

9:10 PM Changeset in webkit [209854] by Hunseop Jeong
  • 2 edits in trunk/Source/WebCore

Unreviewed build fix after r209832

  • platform/graphics/PlatformDisplay.cpp:

(WebCore::PlatformDisplay::sharedDisplay): Added the guard for the clang

8:45 PM Changeset in webkit [209853] by keith_miller@apple.com
  • 2 edits in trunk/JSTests

Unreviewed, fix test.

  • wasm/function-tests/i32-const.js:
8:36 PM Changeset in webkit [209852] by keith_miller@apple.com
  • 8 edits
    3 adds in trunk

Wasm should decode constants correctly
https://bugs.webkit.org/show_bug.cgi?id=165886

Reviewed by Saam Barati.

JSTests:

  • wasm/Builder.js:

(const._isValidValue):

  • wasm/Builder_WebAssemblyBinary.js:

(const.putOp):

  • wasm/LowLevelBinary.js:

(export.default.LowLevelBinary.prototype.float):
(export.default.LowLevelBinary.prototype.double):

  • wasm/function-tests/f32-const.js: Added.
  • wasm/function-tests/f64-const.js: Added.
  • wasm/function-tests/i32-const.js: Added.
  • wasm/wasm.json:

Source/JavaScriptCore:

This patch fixes how we decode the constant part of i32, i64, f32,
and f64.const opcodes.

  • wasm/WasmFunctionParser.h:

(JSC::Wasm::FunctionParser<Context>::parseExpression):

  • wasm/wasm.json:
7:48 PM Changeset in webkit [209851] by akling@apple.com
  • 2 edits in trunk/Source/WebKit2

Only send Messages::WebPageProxy::DidSaveToPageCache once when entering page cache.
<https://webkit.org/b/165887>

Reviewed by Brady Eidson.

We were sending one of these IPC messages per frame when a page enters the page cache,
and we really only need one, so only do it for the main frame.

(This message is used to adopt the page cache on the UI process side, in case another
web process currently owns the cache. That happens in WebProcessPool::processDidCachePage().)

  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::didSaveToPageCache):

7:30 PM Changeset in webkit [209850] by sbarati@apple.com
  • 12 edits in trunk

WebAssembly: Add various low hanging fruit that will allow us to run the LLVM torture tests in Wasm
https://bugs.webkit.org/show_bug.cgi?id=165883

Reviewed by Keith Miller.

JSTests:

  • wasm/Builder.js:

(export.default.Builder.prototype._registerSectionBuilders.switch.case.string_appeared_here.this.section):

  • wasm/Builder_WebAssemblyBinary.js:

(const.emitters.Export):

  • wasm/js-api/table.js:

(assertBadBinary):
(assertBadTable):
(assert.truthy):

  • wasm/js-api/test_memory.js:

(binaryShouldNotParse):
(test):
(test.testMemImportError):
(assert.truthy):
(assert): Deleted.

Source/JavaScriptCore:

This patch implements some low hanging fruit:

  • Exporting Table
  • Exporting Memory
  • Load16 with zero extension to both 32 and 64 bit values.
  • Fixes Unreachable to emit code that will prevent B3 from having a validation error.
  • wasm/WasmB3IRGenerator.cpp:

(JSC::Wasm::B3IRGenerator::addUnreachable):
(JSC::Wasm::sizeOfLoadOp):
(JSC::Wasm::B3IRGenerator::emitLoadOp):

  • wasm/WasmFunctionParser.h:

(JSC::Wasm::FunctionParser<Context>::parseExpression):

  • wasm/WasmModuleParser.cpp:

(JSC::Wasm::ModuleParser::parseExport):

  • wasm/WasmValidate.cpp:

(JSC::Wasm::Validate::addUnreachable):

  • wasm/js/WebAssemblyInstanceConstructor.cpp:

(JSC::constructJSWebAssemblyInstance):

  • wasm/js/WebAssemblyModuleRecord.cpp:

(JSC::WebAssemblyModuleRecord::finishCreation):
(JSC::WebAssemblyModuleRecord::link):

6:31 PM Changeset in webkit [209849] by Yusuke Suzuki
  • 4 edits in trunk

[GTK] Support latest SubtleCrypto HMAC APIs
https://bugs.webkit.org/show_bug.cgi?id=165863

Reviewed by Sam Weinig.

Source/WebCore:

SubtleCrypto spec is updated, and new delegate implementations are required to support these interfaces.
This patch implements platformSign and platformVerify with WorkQueues for gcrypt backend.

  • crypto/gcrypt/CryptoAlgorithmHMACGCrypt.cpp:

(WebCore::calculateSignature):
(WebCore::CryptoAlgorithmHMAC::platformSign):
(WebCore::CryptoAlgorithmHMAC::platformVerify):

LayoutTests:

Enable HMAC tests.

  • platform/gtk/TestExpectations:
6:23 PM Changeset in webkit [209848] by Yusuke Suzuki
  • 3 edits in trunk/Source/JavaScriptCore

Update ModuleLoader code by using the latest builtin primitives
https://bugs.webkit.org/show_bug.cgi?id=165851

Reviewed by Sam Weinig.

Update the module loader code,

  1. Use @globalPrivate for the utilities, instead of setting them as the member of ModuleLoader.
  2. Use @putByValDirect instead of @push. @push is user-observable since it uses Set() operation and it can be observed by defining indexed setters in Array.prototype.
  • builtins/ModuleLoaderPrototype.js:

(ensureRegistered):
(fulfillFetch):
(commitInstantiated):
(requestFetch):
(requestSatisfy):
(setStateToMax): Deleted.
(newRegistryEntry): Deleted.

  • runtime/ModuleLoaderPrototype.cpp:
5:41 PM Changeset in webkit [209847] by msaboff@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

The stress GC bot crashes in JavaScriptCore beneath ShadowChicken::update and Inspector::jsToInspectorValue
https://bugs.webkit.org/show_bug.cgi?id=165871

Reviewed by Mark Lam.

This fixes two issues with the VM watch dog timer firing in a worker.

The first issue has to do with bytecode ordering. Prior to this change, the first few opcodes
generated when the watch dog is enabled are:

op_enter
op_watchdog
op_get_scope

When the watchdog fires, the function will get an exception at op_watchdog. In processing that exception,
we'll try to update the ShadowChicken shadow stack. That update assumes that if there is a scope
VirtualRegister allocated, then the slot contains a valid JSScope. With the current bytecode ordering,
this is not true at op_watchdog as op_enter will put JSUndefined in the scope slot. It isn't until the
op_get_scope gets processed that we'll have a valid scope in the slot. The fix for this issue is to
ensure that op_get_scope happens before the op_watchdog.

The second issue is that ScriptFunctionCall::call() will not tell its caller that a terminated
execution exception happened. Instead call() returns an empty JSValue. InjectedScript::wrapCallFrames()
wasn't checking for an empty JSValue, but was passing it to another function. Added a short circuit
return when call returns an empty JSValue.

Added <https://bugs.webkit.org/show_bug.cgi?id=165875> to fix other callers of ScriptFunctionCall::call()
to check for an empty JSValue return value.
Also tracked with <rdar://problem/29671015>.

  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::BytecodeGenerator):
(JSC::BytecodeGenerator::emitEnter):

  • inspector/InjectedScript.cpp:

(Inspector::InjectedScript::wrapCallFrames):

5:25 PM Changeset in webkit [209846] by fpizlo@apple.com
  • 9 edits
    1 add in trunk

DirectTailCall implementation needs to tell the shuffler what to put into the ArgumentCount explicitly
https://bugs.webkit.org/show_bug.cgi?id=165882

Reviewed by Mark Lam.
JSTests:

  • stress/direct-tail-call-arity-mismatch-count-args.js: Added.

(foo):
(bar):

Source/JavaScriptCore:


The CallFrameShuffler was assuming that the ArgumentCount that it should store into the
callee frame is simply the size of the args vector.

That's not true for DirectTailCall, which will pad the args vector with undefined if we
are optimizing an arity mismatch. We need to pass the ArgumentCount explicitly in this
case.

  • dfg/DFGSpeculativeJIT32_64.cpp:

(JSC::DFG::SpeculativeJIT::emitCall):

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::emitCall):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileDirectCallOrConstruct):
(JSC::FTL::DFG::LowerDFGToB3::compileTailCall):

  • jit/CallFrameShuffleData.h:
  • jit/CallFrameShuffler.cpp:

(JSC::CallFrameShuffler::CallFrameShuffler):
(JSC::CallFrameShuffler::prepareAny):

  • jit/CallFrameShuffler.h:

(JSC::CallFrameShuffler::snapshot):

  • jit/JITCall.cpp:

(JSC::JIT::compileOpCall):

5:06 PM Changeset in webkit [209845] by Simon Fraser
  • 13 edits in trunk

Fix cause of viewport-related flakiness in iOS tests
https://bugs.webkit.org/show_bug.cgi?id=165878

Reviewed by Tim Horton.

Source/WebKit2:

When TestController::platformConfigureViewForTest() changes the view size for a flexible
viewport test, the page would not have updated with the new scale by the time the load event
fired, causing flakiness depending on test order.

This was caused by code added in r170325 that delayed visible content rect updates until
after the UI process has received the transaction after didCommitLoad. So fix by overriding
this mechanism if the view has been resized.

  • Shared/VisibleContentRectUpdateInfo.cpp:

(WebKit::VisibleContentRectUpdateInfo::encode):
(WebKit::VisibleContentRectUpdateInfo::decode):
(WebKit::operator<<):

  • Shared/VisibleContentRectUpdateInfo.h:

(WebKit::VisibleContentRectUpdateInfo::VisibleContentRectUpdateInfo):
(WebKit::VisibleContentRectUpdateInfo::isFirstUpdateForNewViewSize):
(WebKit::operator==):

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _frameOrBoundsChanged]):
(-[WKWebView _updateContentRectsWithState:]):

  • UIProcess/DrawingAreaProxy.cpp:

(WebKit::DrawingAreaProxy::setSize):

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

(WebKit::WebPageProxy::WebPageProxy):

  • UIProcess/WebPageProxy.h:
  • UIProcess/ios/WKContentView.h:
  • UIProcess/ios/WKContentView.mm:

(-[WKContentView didUpdateVisibleRect:unobscuredRect:unobscuredRectInScrollViewCoordinates:obscuredInset:scale:minimumScale:inStableState:isChangingObscuredInsetsInteractively:enclosedInScrollableAncestorView:]):

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::updateVisibleContentRects):

LayoutTests:

Try un-flaking some viewport tests.

  • platform/ios-simulator-wk2/TestExpectations:
4:47 PM Changeset in webkit [209844] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Unreviewed, rolling out r209415.

This workaround is no longer needed now that
<rdar://problem/29518605> has been fixed

Reverted changeset:

"Add HTML interactive form validation blacklist for some
WebKit-specific sites"
https://bugs.webkit.org/show_bug.cgi?id=165470
http://trac.webkit.org/changeset/209415

4:35 PM Changeset in webkit [209843] by jonlee@apple.com
  • 1 edit
    50 copies
    1 delete in trunk/LayoutTests

Full Pass CSS Variables Test Suite
https://bugs.webkit.org/show_bug.cgi?id=150183

Reviewed by Simon Fraser.

The new CSS parser progresses these tests. Move them out of the failures/ sub-directory.
One of the tests needs the Ahem font, which was not available when put in the sub-directory.

  • fast/css/variables/test-suite/024-expected.html: Renamed from LayoutTests/fast/css/variables/test-suite/failures/024-expected.html.
  • fast/css/variables/test-suite/024.html: Renamed from LayoutTests/fast/css/variables/test-suite/failures/024.html.
  • fast/css/variables/test-suite/025-expected.html: Renamed from LayoutTests/fast/css/variables/test-suite/failures/025-expected.html.
  • fast/css/variables/test-suite/025.html: Renamed from LayoutTests/fast/css/variables/test-suite/failures/025.html.
  • fast/css/variables/test-suite/026-expected.html: Renamed from LayoutTests/fast/css/variables/test-suite/failures/026-expected.html.
  • fast/css/variables/test-suite/026.html: Renamed from LayoutTests/fast/css/variables/test-suite/failures/026.html.
  • fast/css/variables/test-suite/028-expected.html: Renamed from LayoutTests/fast/css/variables/test-suite/failures/028-expected.html.
  • fast/css/variables/test-suite/028.html: Renamed from LayoutTests/fast/css/variables/test-suite/failures/028.html.
  • fast/css/variables/test-suite/030-expected.html: Renamed from LayoutTests/fast/css/variables/test-suite/failures/030-expected.html.
  • fast/css/variables/test-suite/030.html: Renamed from LayoutTests/fast/css/variables/test-suite/failures/030.html.
  • fast/css/variables/test-suite/054-expected.html: Renamed from LayoutTests/fast/css/variables/test-suite/failures/054-expected.html.
  • fast/css/variables/test-suite/054.html: Renamed from LayoutTests/fast/css/variables/test-suite/failures/054.html.
  • fast/css/variables/test-suite/055-expected.html: Renamed from LayoutTests/fast/css/variables/test-suite/failures/055-expected.html.
  • fast/css/variables/test-suite/055.html: Renamed from LayoutTests/fast/css/variables/test-suite/failures/055.html.
  • fast/css/variables/test-suite/056-expected.html: Renamed from LayoutTests/fast/css/variables/test-suite/failures/056-expected.html.
  • fast/css/variables/test-suite/056.html: Renamed from LayoutTests/fast/css/variables/test-suite/failures/056.html.
  • fast/css/variables/test-suite/058-expected.html: Renamed from LayoutTests/fast/css/variables/test-suite/failures/058-expected.html.
  • fast/css/variables/test-suite/058.html: Renamed from LayoutTests/fast/css/variables/test-suite/failures/058.html.
  • fast/css/variables/test-suite/071-expected.html: Renamed from LayoutTests/fast/css/variables/test-suite/failures/071-expected.html.
  • fast/css/variables/test-suite/071.html: Renamed from LayoutTests/fast/css/variables/test-suite/failures/071.html.
  • fast/css/variables/test-suite/081-expected.html: Renamed from LayoutTests/fast/css/variables/test-suite/failures/081-expected.html.
  • fast/css/variables/test-suite/081.html: Renamed from LayoutTests/fast/css/variables/test-suite/failures/081.html.
  • fast/css/variables/test-suite/082-expected.html: Renamed from LayoutTests/fast/css/variables/test-suite/failures/082-expected.html.
  • fast/css/variables/test-suite/082.html: Renamed from LayoutTests/fast/css/variables/test-suite/failures/082.html.
  • fast/css/variables/test-suite/085-expected.html: Renamed from LayoutTests/fast/css/variables/test-suite/failures/085-expected.html.
  • fast/css/variables/test-suite/085.html: Renamed from LayoutTests/fast/css/variables/test-suite/failures/085.html.
  • fast/css/variables/test-suite/086-expected.html: Renamed from LayoutTests/fast/css/variables/test-suite/failures/086-expected.html.
  • fast/css/variables/test-suite/086.html: Renamed from LayoutTests/fast/css/variables/test-suite/failures/086.html.
  • fast/css/variables/test-suite/087-expected.html: Renamed from LayoutTests/fast/css/variables/test-suite/failures/087-expected.html.
  • fast/css/variables/test-suite/087.html: Renamed from LayoutTests/fast/css/variables/test-suite/failures/087.html.
  • fast/css/variables/test-suite/091-expected.html: Renamed from LayoutTests/fast/css/variables/test-suite/failures/091-expected.html.
  • fast/css/variables/test-suite/091.html: Renamed from LayoutTests/fast/css/variables/test-suite/failures/091.html.
  • fast/css/variables/test-suite/103-expected.html: Renamed from LayoutTests/fast/css/variables/test-suite/failures/103-expected.html.
  • fast/css/variables/test-suite/103.html: Renamed from LayoutTests/fast/css/variables/test-suite/failures/103.html.
  • fast/css/variables/test-suite/111-expected.html: Renamed from LayoutTests/fast/css/variables/test-suite/failures/111-expected.html.
  • fast/css/variables/test-suite/111.html: Renamed from LayoutTests/fast/css/variables/test-suite/failures/111.html.
  • fast/css/variables/test-suite/115-expected.html: Renamed from LayoutTests/fast/css/variables/test-suite/failures/115-expected.html.
  • fast/css/variables/test-suite/115.html: Renamed from LayoutTests/fast/css/variables/test-suite/failures/115.html.
  • fast/css/variables/test-suite/126-expected.html: Renamed from LayoutTests/fast/css/variables/test-suite/failures/126-expected.html.
  • fast/css/variables/test-suite/126.html: Renamed from LayoutTests/fast/css/variables/test-suite/failures/126.html.
  • fast/css/variables/test-suite/152-expected.html: Renamed from LayoutTests/fast/css/variables/test-suite/failures/152-expected.html.
  • fast/css/variables/test-suite/152.html: Renamed from LayoutTests/fast/css/variables/test-suite/failures/152.html.
  • fast/css/variables/test-suite/159-expected.html: Renamed from LayoutTests/fast/css/variables/test-suite/failures/159-expected.html.
  • fast/css/variables/test-suite/159.html: Renamed from LayoutTests/fast/css/variables/test-suite/failures/159.html.
  • fast/css/variables/test-suite/161-expected.html: Renamed from LayoutTests/fast/css/variables/test-suite/failures/161-expected.html.
  • fast/css/variables/test-suite/161.html: Renamed from LayoutTests/fast/css/variables/test-suite/failures/161.html.
  • fast/css/variables/test-suite/163-expected.html: Renamed from LayoutTests/fast/css/variables/test-suite/failures/163-expected.html.
  • fast/css/variables/test-suite/163.html: Renamed from LayoutTests/fast/css/variables/test-suite/failures/163.html.
  • fast/css/variables/test-suite/169-expected.html: Renamed from LayoutTests/fast/css/variables/test-suite/failures/169-expected.html.
  • fast/css/variables/test-suite/169.html: Renamed from LayoutTests/fast/css/variables/test-suite/failures/169.html.
4:12 PM Changeset in webkit [209842] by dino@apple.com
  • 6 edits in trunk

Update prefers-reduced-motion syntax
https://bugs.webkit.org/show_bug.cgi?id=165880
<rdar://problems/29671807>

Reviewed by Sam Weinig.

Source/WebCore:

After discussion in:
https://github.com/w3c/csswg-drafts/issues/442
... the syntax of prefers-reduced-motion was changed
to accept "reduce" or "no-preference".

Updated the tests in fast/media.

  • css/CSSValueKeywords.in: Add no-preference keyword.
  • css/MediaQueryEvaluator.cpp:

(WebCore::prefersReducedMotionEvaluate):

LayoutTests:

  • fast/media/mq-prefers-reduced-motion-forced-value.html:
  • fast/media/mq-prefers-reduced-motion.html:
4:04 PM Changeset in webkit [209841] by weinig@apple.com
  • 8 edits in trunk

Source/WebCore:
REGRESSION (204679): Google notifications never load (expecting DOMStringList rather than JS array for Location.ancestorOrigins)
<rdar://problem/29573563>
https://bugs.webkit.org/show_bug.cgi?id=165872

Reviewed by Chris Dumez.

Revert the Location.ancestorOrigins part of r204679 because google.com is relying on
it returning a DOMStringList (or at least something with a .item() function), rather
than a frozen javascript array.

Spec changes are tracked with https://github.com/whatwg/html/issues/2179.

  • page/Location.cpp:

(WebCore::Location::ancestorOrigins):

  • page/Location.h:
  • page/Location.idl:

Change Location.ancestorOrigins back to returning a DOMStringList.

Source/WebKit2:
[WebIDL] Add support for converting dictionaries to JS
https://bugs.webkit.org/show_bug.cgi?id=165367

Reviewed by Chris Dumez.

  • CMakeLists.txt:

Add missing directories to look in for headers.

LayoutTests:
REGRESSION (204679): Google notifications never load (expecting DOMStringList rather than JS array for Location.ancestorOrigins)
<rdar://problem/29573563>
https://bugs.webkit.org/show_bug.cgi?id=165872

Reviewed by Chris Dumez.

  • fast/dom/Window/Location/ancestor-origins-expected.txt:
  • fast/dom/Window/Location/ancestor-origins.html:

Change back to test that Location.ancestorOrigins returns a DOMStringList.

4:00 PM Changeset in webkit [209840] by andersca@apple.com
  • 9 edits in trunk/Source/WebKit2

Add WKContextRefreshPlugIns
https://bugs.webkit.org/show_bug.cgi?id=165879
rdar://problem/29602414

Reviewed by Tim Horton.

  • UIProcess/API/C/WKContext.cpp:

(WKContextRefreshPlugIns):

  • UIProcess/API/C/WKContext.h:
  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::refreshPlugins):

  • UIProcess/WebProcessPool.h:
  • WebProcess/Plugins/WebPluginInfoProvider.h:
  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::refreshPlugins):

  • WebProcess/WebProcess.h:
  • WebProcess/WebProcess.messages.in:
3:42 PM Changeset in webkit [209839] by timothy_horton@apple.com
  • 5 edits in trunk/Source/WebKit2

API Test Fullscreen.TopContentInset is asserting on Yosemite
https://bugs.webkit.org/show_bug.cgi?id=165877

Reviewed by Brady Eidson.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::setTopContentInset):

  • WebProcess/WebPage/WebPage.cpp:
  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:

We don't use fences on Yosemite, but this codepath still tried to.
Instead of guarding with PLATFORM(COCOA), make use of the more accurate
HAVE(COREANIMATION_FENCES) guard.

3:15 PM Changeset in webkit [209838] by hyatt@apple.com
  • 13 edits in trunk/Source/WebCore

[CSS Parser] Rename StyleKeyframe to StyleRuleKeyframe
https://bugs.webkit.org/show_bug.cgi?id=165876

Reviewed by Simon Fraser.

  • css/CSSKeyframeRule.cpp:

(WebCore::StyleRuleKeyframe::StyleRuleKeyframe):
(WebCore::StyleRuleKeyframe::~StyleRuleKeyframe):
(WebCore::StyleRuleKeyframe::mutableProperties):
(WebCore::StyleRuleKeyframe::keyText):
(WebCore::StyleRuleKeyframe::setKeyText):
(WebCore::StyleRuleKeyframe::cssText):
(WebCore::CSSKeyframeRule::CSSKeyframeRule):
(WebCore::StyleKeyframe::StyleKeyframe): Deleted.
(WebCore::StyleKeyframe::~StyleKeyframe): Deleted.
(WebCore::StyleKeyframe::mutableProperties): Deleted.
(WebCore::StyleKeyframe::keyText): Deleted.
(WebCore::StyleKeyframe::setKeyText): Deleted.
(WebCore::StyleKeyframe::cssText): Deleted.

  • css/CSSKeyframeRule.h:
  • css/CSSKeyframesRule.cpp:

(WebCore::StyleRuleKeyframes::keyframes):
(WebCore::StyleRuleKeyframes::parserAppendKeyframe):
(WebCore::StyleRuleKeyframes::wrapperAppendKeyframe):
(WebCore::CSSKeyframesRule::appendRule):
(WebCore::CSSKeyframesRule::item):

  • css/CSSKeyframesRule.h:
  • css/StyleResolver.cpp:

(WebCore::StyleResolver::styleForKeyframe):
(WebCore::StyleResolver::keyframeStylesForAnimation):

  • css/StyleResolver.h:
  • css/StyleRule.cpp:

(WebCore::StyleRuleBase::destroy):

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

(WebCore::CSSParser::parseKeyframeRule):

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

(WebCore::CSSParserImpl::parseDeferredKeyframeList):
(WebCore::CSSParserImpl::consumeKeyframesRule):
(WebCore::CSSParserImpl::consumeKeyframeStyleRule):

  • css/parser/CSSParserImpl.h:
3:01 PM Changeset in webkit [209837] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Marking streams/pipe-to.html as flaky on macOS debug.
https://bugs.webkit.org/show_bug.cgi?id=165874

Unreviewed test gardening.

  • platform/mac/TestExpectations:
2:48 PM Changeset in webkit [209836] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Removing Release annotation from three tests that are also flaky on Debug.
https://bugs.webkit.org/show_bug.cgi?id=163361

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
2:34 PM Changeset in webkit [209835] by hyatt@apple.com
  • 5 edits in trunk/Source/WebCore

[CSS Parser] Make deferred parsing retain the sheet text. Fix invalidation to avoid deferred parsing.
https://bugs.webkit.org/show_bug.cgi?id=165868

Reviewed by Simon Fraser.

With this new model of token copying, the sheet text needs to be retained. The tokenizer did this,
but we're no longer keeping it around.

StyleInvalidation is also aggressively crawling media rules, even unsupported ones, so fix it
to avoid deferred parsing.

  • css/StyleInvalidationAnalysis.cpp:

(WebCore::shouldDirtyAllStyle):

  • css/parser/CSSDeferredParser.cpp:

(WebCore::CSSDeferredParser::CSSDeferredParser):

  • css/parser/CSSDeferredParser.h:

(WebCore::CSSDeferredParser::create):

  • css/parser/CSSParserImpl.cpp:

(WebCore::CSSParserImpl::CSSParserImpl):

2:04 PM Changeset in webkit [209834] by Matt Baker
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Zooming in on the Timeline should always zoom right where the cursor is
https://bugs.webkit.org/show_bug.cgi?id=151118
<rdar://problem/23487912>

Reviewed by Timothy Hatcher.

Use correct left edge for timeline overview graph elements.

  • UserInterface/Views/TimelineOverview.js:

(WebInspector.TimelineOverview.prototype._handleWheelEvent):
(WebInspector.TimelineOverview._handleGestureStart):
(WebInspector.TimelineOverview.prototype._handleGestureChange):

1:57 PM Changeset in webkit [209833] by rniwa@webkit.org
  • 8 edits
    2 adds in trunk

iOS: An element with tabindex is not focusable unless there is no mouse event handler
https://bugs.webkit.org/show_bug.cgi?id=165843

Reviewed by Antti Koivisto.

Source/WebCore:

The bug was caused by ancestorRespondingToClickEvents not checking the precense of tabindex attribute.
Check that condition along with event listeners.

Test: fast/events/focusing-element-with-tabindex-by-tap-or-click.html

  • page/ios/FrameIOS.mm:

(WebCore::ancestorRespondingToClickEvents):

Tools:

Add testRunner.isWebKit2 which is always true in WebKitTestRunner.
Without this, it's really hard to reliably differentiate DumpRenderTree and WebKitTestRunner,
and DumpRenderTree's runUIScript would hit an assertion :(

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

(WTR::TestRunner::isWebKit2):

LayoutTests:

Added a regression test for focusing an element with just tabindex using UIHelper.

Also fixed UIHelper to work in iOS DumpRenderTree which was hitting an assertion
by explicitly checking testRunner.isWebKit2. Prior to fixing this, it was hitting
an assertion in RunLoop::main() which was asserting that there is a runloop,
which doesn't exist in DumpRenderTree.

  • fast/events/focusing-element-with-tabindex-by-tap-or-click-expected.txt: Added.
  • fast/events/focusing-element-with-tabindex-by-tap-or-click.html: Added.
  • platform/ios-simulator-wk2/TestExpectations:
  • resources/ui-helper.js:

(window.UIHelper.isWebKit2):
(window.UIHelper.wait): Added the support for js-test.js / js-test-pre.js style tests.

1:45 PM Changeset in webkit [209832] by achristensen@apple.com
  • 22 edits
    14 adds in trunk/Source

Progress towards using ANGLE to do WebGL rendering
https://bugs.webkit.org/show_bug.cgi?id=165864

Reviewed by Dean Jackson.

Source/ThirdParty/ANGLE:

  • ANGLE.xcodeproj/project.pbxproj:

Compile more files, and add some more "public" headers.
ANGLE is not a public framework, so these headers just go in
WebKitBuild/Release/usr/local/include/ANGLE to be included when compiling WebCore.

  • ANGLE/egl.h: Added.
  • ANGLE/eglext.h: Added.
  • ANGLE/eglplatform.h: Added.
  • ANGLE/entry_points_gles_2_0.h: Added.
  • ANGLE/entry_points_gles_2_0_ext.h: Added.
  • ANGLE/entry_points_gles_3_0.h: Added.
  • ANGLE/export.h: Added.
  • ANGLE/gl2.h: Added.
  • ANGLE/gl2ext.h: Added.
  • ANGLE/gl2platform.h: Added.
  • ANGLE/gl3.h: Added.
  • ANGLE/gl31.h: Added.
  • ANGLE/gl3platform.h: Added.
  • ANGLE/khrplatform.h: Added.

Add more forwarding headers. There are already a few, but we need more.

  • CMakeLists.txt:
  • PlatformMac.cmake:

Make the frameworks linked to by ANGLE be private so frameworks that link with
ANGLE don't automatically link with them. This allows me to switch ANGLE from a
static library to a dynamic library to make sure WebCore isn't directly using OpenGL.

  • PlatformWin.cmake:

Move HLSL-specific files to only be built on Windows.

  • include/EGL/egl.h:
  • include/EGL/eglplatform.h:
  • include/GLES2/gl2.h:
  • include/GLES2/gl2platform.h:
  • include/GLES3/gl3.h:
  • include/GLES3/gl31.h:
  • include/GLES3/gl32.h:
  • include/GLES3/gl3platform.h:
  • src/libGLESv2/entry_points_egl.h:
  • src/libGLESv2/entry_points_egl_ext.h:
  • src/libGLESv2/entry_points_gles_2_0.h:
  • src/libGLESv2/entry_points_gles_2_0_ext.h:
  • src/libGLESv2/entry_points_gles_3_0.h:
  • src/libGLESv2/entry_points_gles_3_1.h:

Include ANGLE headers as #include <ANGLE/*> instead of #include <KHR/*> or #include <GLES/*>
This is needed to distinguish the ANGLE headers from any system OpenGL/OpenGLES headers.
We will eventually only include ANGLE's entry_points_*.h directly from WebCore.

Source/WebCore:

No new tests, no change in behavior.
Just compile fixes for a configuration that will soon be standard
that can be landed now without breaking anything.

  • platform/graphics/PlatformDisplay.cpp:

(WebCore::PlatformDisplay::sharedDisplay):
Ignore some clang warnings that will cause problems when this is compiled on Mac.

1:31 PM Changeset in webkit [209831] by andersca@apple.com
  • 2 edits in trunk/Source/WebKit2

Add some instrumentation to try to detect a crash on the bots
https://bugs.webkit.org/show_bug.cgi?id=165866

Reviewed by Sam Weinig.

  • Platform/IPC/mac/ConnectionMac.mm:

(IPC::Connection::sendMessage):

1:29 PM Changeset in webkit [209830] by keith_miller@apple.com
  • 18 edits
    6 adds in trunk

WebAssembly JS API: implement Global
https://bugs.webkit.org/show_bug.cgi?id=164133

Reviewed by Saam Barati.

JSTests:

  • wasm/Builder.js:

(export.default.Builder.prototype._registerSectionBuilders.switch.case.string_appeared_here.this.section):

  • wasm/Builder_WebAssemblyBinary.js:

(const.valueType.WASM.description.type.i32.type.const.putGlobalType):
(const.putOp):
(const.putInitExpr):
(const.emitters.Import):
(const.emitters.Global):
(const.emitters.Export):
(const.emitters.Code):

  • wasm/LowLevelBinary.js:

(export.default.LowLevelBinary.prototype.varuint32):
(export.default.LowLevelBinary.prototype.varint32):

  • wasm/js-api/global-error.js: Added.

(catch):
(assert.truthy):

  • wasm/js-api/global-external-init-from-import.js: Added.
  • wasm/js-api/global-internal-init-from-import.js: Added.
  • wasm/js-api/global-mutate.js: Added.

(createInternalGlobalModule):

  • wasm/js-api/globals-export.js: Added.
  • wasm/js-api/globals-import.js: Added.
  • wasm/wasm.json:

Source/JavaScriptCore:

This patch adds support for globals. It handles imports, exports
and internal globals. In the MVP only internal globals are allowed
to be mutable. This means we can store a C-array of 64-bit slots
off the instance holding them. When globals are exported to JS
they are done so as numbers. This means that i64 globals cannot be
imported or exported.

  • wasm/WasmB3IRGenerator.cpp:

(JSC::Wasm::B3IRGenerator::B3IRGenerator):
(JSC::Wasm::B3IRGenerator::getGlobal):
(JSC::Wasm::B3IRGenerator::setGlobal):
(JSC::Wasm::B3IRGenerator::addCallIndirect):
(JSC::Wasm::parseAndCompile):

  • wasm/WasmFormat.h:
  • wasm/WasmFunctionParser.h:

(JSC::Wasm::FunctionParser<Context>::parseExpression):

  • wasm/WasmModuleParser.cpp:

(JSC::Wasm::ModuleParser::parseImport):
(JSC::Wasm::ModuleParser::parseGlobal):
(JSC::Wasm::ModuleParser::parseExport):
(JSC::Wasm::ModuleParser::parseElement):
(JSC::Wasm::ModuleParser::parseInitExpr):
(JSC::Wasm::ModuleParser::parseGlobalType):
(JSC::Wasm::ModuleParser::parseData):

  • wasm/WasmModuleParser.h:
  • wasm/WasmParser.h:

(JSC::Wasm::Parser::parseVarInt32):
(JSC::Wasm::Parser::parseVarInt64):
(JSC::Wasm::Parser::parseUInt64):

  • wasm/WasmValidate.cpp:

(JSC::Wasm::Validate::hasMemory):
(JSC::Wasm::Validate::Validate):
(JSC::Wasm::Validate::getGlobal):
(JSC::Wasm::Validate::setGlobal):
(JSC::Wasm::validateFunction):

  • wasm/generateWasmOpsHeader.py:
  • wasm/js/JSWebAssemblyInstance.cpp:

(JSC::JSWebAssemblyInstance::create):
(JSC::JSWebAssemblyInstance::finishCreation):
(JSC::JSWebAssemblyInstance::visitChildren):

  • wasm/js/JSWebAssemblyInstance.h:

(JSC::JSWebAssemblyInstance::loadI32Global):
(JSC::JSWebAssemblyInstance::loadI64Global):
(JSC::JSWebAssemblyInstance::loadF32Global):
(JSC::JSWebAssemblyInstance::loadF64Global):
(JSC::JSWebAssemblyInstance::setGlobal):
(JSC::JSWebAssemblyInstance::offsetOfGlobals):

  • wasm/js/WebAssemblyInstanceConstructor.cpp:

(JSC::constructJSWebAssemblyInstance):

  • wasm/js/WebAssemblyModuleRecord.cpp:

(JSC::WebAssemblyModuleRecord::finishCreation):
(JSC::WebAssemblyModuleRecord::link):

1:18 PM Changeset in webkit [209829] by bshafiei@apple.com
  • 7 edits
    4 copies in tags/Safari-603.1.16

Merged r209824. rdar://problem/29666094

1:14 PM Changeset in webkit [209828] by dino@apple.com
  • 2 edits in trunk/Source/WebCore

[iOS] MediaDocuments have controls on the bottom of the page
https://bugs.webkit.org/show_bug.cgi?id=165865
<rdar://problem/28757268>

Reviewed by Jon Lee.

MediaDocuments on iOS are incorrectly placing the controls at
the bottom of the page. This is due to the <video> element
getting a height of 100%. It should be "auto" instead.

  • html/MediaDocument.cpp:

(WebCore::MediaDocumentParser::createDocumentStructure):

1:05 PM Changeset in webkit [209827] by fpizlo@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed, re-enable concurrent GC on ARM64 now that the most likely culprit of the memory
regressions is fixed. Lets see what the bots think!

  • runtime/Options.cpp:

(JSC::recomputeDependentOptions):

1:02 PM Changeset in webkit [209826] by hyatt@apple.com
  • 46 edits
    23 adds in trunk

[CSS Parser] Implement deferred parsing of properties, @media, @supports and @keyframes
https://bugs.webkit.org/show_bug.cgi?id=165743

Reviewed by Dean Jackson.

Source/WebCore:

Added new tests in fast/css/deferred-parsing.

This patch implements deferred parsing in CSS. By default, when parsing
author stylesheets, the parser goes into a deferred mode where it leaves
the declaration block of all style rules unparsed initially. Instead of
creating and setting an ImmutableStyleProperties object on the StyleRule,
the parser creates a DeferredStyleProperties object instead that is
capable of calling into CSSDeferredParser to parse the properties and values
only when the properties are finally asked for.

In addition, this patch defers the parsing of the interior of @media,
@supports, and @keyframes rules. @media blocks that are never matched will
never parse any of the rules inside. @supports conditions for unsupported
features will also not be parsed. For @keyframes, if the animation is never
referenced/used, then the @keyframes child rules will never be parsed.

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

Add CSSDeferredParser to the build.

  • css/CSSFontFaceSet.cpp:

(WebCore::CSSFontFaceSet::matchingFaces):
Patched to drop the StyleSheetContents* argument from parseValue, since it
is no longer needed.

  • css/CSSKeyframesRule.cpp:

(WebCore::StyleRuleKeyframes::StyleRuleKeyframes):
(WebCore::StyleRuleKeyframes::parseDeferredRulesIfNeeded):
(WebCore::StyleRuleKeyframes::keyframes):
(WebCore::StyleRuleKeyframes::wrapperAppendKeyframe):
(WebCore::StyleRuleKeyframes::wrapperRemoveKeyframe):
(WebCore::StyleRuleKeyframes::findKeyframeIndex):

  • css/CSSKeyframesRule.h:

Keyframes now hold both a keyframes Vector and a DeferredStyleGroupRuleList
object. The keyframes vector won't be populated until it is needed, and the
population is done by DeferredStyleGroupRuleList, which holds both the original
tokens of the keyframes rule interior, and a references to the
CSSDeferredParser that will do the parsing.

  • css/DOMCSSNamespace.cpp:

(WebCore::DOMCSSNamespace::supports):
Patched to drop the StyleSheetContents* argument from parseValue, since it
is no longer needed.

  • css/ElementRuleCollector.cpp:

(WebCore::ElementRuleCollector::collectMatchingRulesForList):
ElementRuleCollector tests to see if a rule is empty by counting properties(),
but we don't want to initiate deferred parsing just to check this. Instead we
invoke propertiesWithoutDeferredParsing, which will hand back a nullptr if
the properties haven't been parsed yet. In order to ensure this optimization
continues to work, any rules whose interiors consist of only whitespace do
not get deferred.

  • css/FontFace.cpp:

(WebCore::FontFace::setVariant):

  • css/PropertySetCSSStyleDeclaration.cpp:

(WebCore::PropertySetCSSStyleDeclaration::setProperty):
(WebCore::PropertySetCSSStyleDeclaration::setPropertyInternal):
Patched to drop the StyleSheetContents* argument from parseValue, since it
is no longer needed.

  • css/StyleProperties.cpp:

(WebCore::MutableStyleProperties::MutableStyleProperties):
(WebCore::MutableStyleProperties::setProperty):
(WebCore::DeferredStyleProperties::create):
(WebCore::DeferredStyleProperties::DeferredStyleProperties):
(WebCore::DeferredStyleProperties::~DeferredStyleProperties):
(WebCore::DeferredStyleProperties::parseDeferredProperties):

  • css/StyleProperties.h:

(WebCore::StylePropertiesBase::type):
(WebCore::StylePropertiesBase::cssParserMode):
(WebCore::StylePropertiesBase::StylePropertiesBase):
(WebCore::StyleProperties::isMutable):
(WebCore::StyleProperties::StyleProperties):
(WebCore::StylePropertiesBase::deref):
(isType):
(WebCore::StyleProperties::cssParserMode): Deleted.
(WebCore::StyleProperties::deref): Deleted.
Right now StyleProperties has two subclasses, ImmutableStyleProperties (which
is created by the parser when not deferring), and MutableStyleProperties (used
when making changes and doing DOM Manipulations).

This patch adds a new base class called StylePropertiesBase, and StyleProperties
now derives from it. DeferredStyleProperties derives from this base. The members
of StyleProperties have been moved up into StylePropertiesBase.

The m_isMutable bit, used to determine the type for downcasting has been enhanced
to m_type (2 bits), since there are now three possible subclasses.

  • css/StyleRule.cpp:

(WebCore::StyleRule::StyleRule):
(WebCore::StyleRule::properties):
(WebCore::StyleRule::mutableProperties):
(WebCore::StyleRule::splitIntoMultipleRulesWithMaximumSelectorComponentCount):
Patched to ensure that when properties() are accessed, that if the current
stored StylePropertyBase in the rule is a DeferredStyleProperties, we then
parse and replace DeferredStyleProperties with ImmutableStyleProperties on the
rule. By using a common base class, we avoid increasing memory usage in
StyleRule.

(WebCore::DeferredStyleGroupRuleList::create):
(WebCore::DeferredStyleGroupRuleList::DeferredStyleGroupRuleList):
(WebCore::DeferredStyleGroupRuleList::parseDeferredRules):
(WebCore::DeferredStyleGroupRuleList::parseDeferredKeyframes):
DeferredStyleGroupList is used to handle deferred parsing of objects with
child rules. These include @media, @supports and @keyframes.

(WebCore::StyleRuleGroup::StyleRuleGroup):
(WebCore::StyleRuleGroup::childRules):
(WebCore::StyleRuleGroup::wrapperInsertRule):
(WebCore::StyleRuleGroup::wrapperRemoveRule):
(WebCore::StyleRuleGroup::parseDeferredRulesIfNeeded):
(WebCore::StyleRuleMedia::StyleRuleMedia):
(WebCore::StyleRuleSupports::StyleRuleSupports):
StyleRuleGroup now holds both a child rules Vector and a
DeferredStyleGroupRuleList. If DeferredStyleGroupRuleList is set, then
when the childRules are finally accessed, we will populate the childRules
Vector and then null out the DeferredStyleGroupRuleList.

  • css/StyleRule.h:

(WebCore::StyleRule::propertiesWithoutDeferredParsing):
(WebCore::StyleRuleGroup::childRulesWithoutDeferredParsing):
(WebCore::StyleRuleGroup::childRules): Deleted.
Add new accesors for fetching properties and child rules without causing
deferred parsing to happen.

  • css/StyleSheetContents.cpp:

(WebCore::StyleSheetContents::parseAuthorStyleSheet):
(WebCore::StyleSheetContents::parseString):
Patched to turn on deferred parsing for author sheets and for all
non-UA stylesheets parsed from a string (e.g., <style>).

(WebCore::traverseSubresourcesInRules):
The broken resource check was aggressively accessing properties(). Patch
it to call propertiesWithoutDeferredParsing() instead so that it doesn't
defeat the new optimization.

  • css/WebKitCSSMatrix.cpp:

(WebCore::WebKitCSSMatrix::setMatrixValue):
Patched to drop the StyleSheetContents* argument from parseValue, since it
is no longer needed.

  • css/parser/CSSDeferredParser.cpp: Added.

(WebCore::CSSDeferredParser::CSSDeferredParser):
(WebCore::CSSDeferredParser::parseDeclaration):
(WebCore::CSSDeferredParser::parseRuleList):
(WebCore::CSSDeferredParser::parseKeyframeList):

  • css/parser/CSSDeferredParser.h: Added.

(WebCore::CSSDeferredParser::create):
(WebCore::CSSDeferredParser::tokenizer):
(WebCore::CSSDeferredParser::mode):
(WebCore::CSSDeferredParser::context):
(WebCore::CSSDeferredParser::styleSheet):
The CSSDeferredParser. It caches the original tokenizer's' escaped strings. Because
the CSSDeferredParser is referenced by all the rules that have yet to parse,
it will stay alive until all rules in the stylesheet has been fully parsed.

The parser receives CSSParserTokenRanges from DeferredStyleProperties or
DeferredStyleGroupRuleList and feeds them to CSSParserImpl, which then
is able to do the parsing as it would have occurred originally had the
range not been deferred.

  • css/parser/CSSParser.cpp:

(WebCore::CSSParser::parseSheet):
(WebCore::CSSParser::parseSupportsCondition):
(WebCore::CSSParser::parseSingleValue):
(WebCore::CSSParser::parseValue):

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

(WebCore::CSSParserFastPaths::isValidKeywordPropertyAndValue):
(WebCore::parseKeywordValue):
(WebCore::CSSParserFastPaths::maybeParseValue):

  • css/parser/CSSParserFastPaths.h:

Drop the StyleSheetContents* argument from the methods that no longer need
them.

  • css/parser/CSSParserImpl.cpp:

(WebCore::CSSParserImpl::CSSParserImpl):
(WebCore::CSSParserImpl::tokenizer):
(WebCore::CSSParserImpl::parseValue):
(WebCore::CSSParserImpl::parseCustomPropertyValue):
(WebCore::CSSParserImpl::parseDeclarationList):
(WebCore::CSSParserImpl::parseInlineStyleDeclaration):
(WebCore::CSSParserImpl::parseRule):
(WebCore::CSSParserImpl::parseStyleSheet):
(WebCore::CSSParserImpl::parseDeclarationListForInspector):
(WebCore::CSSParserImpl::parseStyleSheetForInspector):
(WebCore::CSSParserImpl::consumeQualifiedRule):
(WebCore::CSSParserImpl::consumeMediaRule):
(WebCore::CSSParserImpl::consumeSupportsRule):
(WebCore::CSSParserImpl::consumeKeyframesRule):
(WebCore::CSSParserImpl::consumeStyleRule):
Drop the StyleSheetContents* argument from the methods that no longer need
them.

(WebCore::CSSParserImpl::createDeferredStyleProperties):
(WebCore::CSSParserImpl::parseDeferredDeclaration):
(WebCore::CSSParserImpl::parseDeferredRuleList):
(WebCore::CSSParserImpl::parseDeferredKeyframeList):
The methods that handle deferred parsing. They make sure to initialize
new CSSParserImpls with the original deferred parser, and then call existing
methods to do the parsing.

  • css/parser/CSSParserImpl.h:

Patched to remove StyleSheetContents* arguments from some methods and
to add the new deferred parsing methods.

  • css/parser/CSSParserTokenRange.cpp:

(WebCore::CSSParserTokenRange::consumeBlockCheckingForEditability):

  • css/parser/CSSParserTokenRange.h:

In order to preserve the editability optimization from r180867, when
a style rule's block is consumed, we use a special method that looks
for -webkit-user-modify tokens. If one is seen, then the editability
optimization is turned off. Because we do this at the token level,
the optimization keeps working even if properties don't get parsed.

  • css/parser/CSSPropertyParser.cpp:

(WebCore::CSSPropertyParser::parseSingleValue):
(WebCore::CSSPropertyParser::parseFontFaceDescriptor):
(WebCore::CSSPropertyParser::consumeFont):
(WebCore::CSSPropertyParser::parseShorthand):
Patched to remove StyleSheetContents* arguments now that the editability
check is in CSSTokenizer instead.

  • css/parser/CSSTokenizer.cpp:

(WebCore::CSSTokenizer::tokenRange):

  • css/parser/CSSTokenizer.h:

Make tokenRange() const.

  • html/canvas/CanvasRenderingContext2D.cpp:

(WebCore::CanvasRenderingContext2D::setFont):
Patched to drop the StyleSheetContents* argument.

  • testing/Internals.cpp:

(WebCore::deferredStyleRulesCountForList):
(WebCore::Internals::deferredStyleRulesCount):
(WebCore::deferredGroupRulesCountForList):
(WebCore::Internals::deferredGroupRulesCount):
(WebCore::deferredKeyframesRulesCountForList):
(WebCore::Internals::deferredKeyframesRulesCount):

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

Add new testing methods that can count the deferred style rules and
group child rule lists. These methods are used by the new layout tests.

Source/WebKit2:

Repurpose the newCSSParserEnabled preference for deferred parsing. Just change the name
from "new" to "deferred."

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

(WKPreferencesSetDeferredCSSParserEnabled):
(WKPreferencesGetDeferredCSSParserEnabled):
(WKPreferencesSetNewCSSParserEnabled): Deleted.
(WKPreferencesGetNewCSSParserEnabled): Deleted.

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

(WebKit::WebPage::updatePreferences):

LayoutTests:

  • fast/css/deferred-parsing: Added.
  • fast/css/deferred-parsing/dynamic-external-style-expected.txt: Added.
  • fast/css/deferred-parsing/dynamic-external-style.html: Added.
  • fast/css/deferred-parsing/dynamic-style-in-document-expected.txt: Added.
  • fast/css/deferred-parsing/dynamic-style-in-document.html: Added.
  • fast/css/deferred-parsing/hover-test-expected.txt: Added.
  • fast/css/deferred-parsing/hover-test.html: Added.
  • fast/css/deferred-parsing/keyframes-rule-expected.txt: Added.
  • fast/css/deferred-parsing/keyframes-rule.html: Added.
  • fast/css/deferred-parsing/media-print-expected.txt: Added.
  • fast/css/deferred-parsing/media-print.html: Added.
  • fast/css/deferred-parsing/nth-of-type-expected.txt: Added.
  • fast/css/deferred-parsing/nth-of-type.html: Added.
  • fast/css/deferred-parsing/resources: Added.
  • fast/css/deferred-parsing/resources/basic-sheet.css: Added.
  • fast/css/deferred-parsing/simple-external-style-expected.txt: Added.
  • fast/css/deferred-parsing/simple-external-style.html: Added.
  • fast/css/deferred-parsing/simple-style-in-document-expected.txt: Added.
  • fast/css/deferred-parsing/simple-style-in-document.html: Added.
  • fast/css/deferred-parsing/supports-rule-expected.txt: Added.
  • fast/css/deferred-parsing/supports-rule.html: Added.
12:57 PM Changeset in webkit [209825] by fpizlo@apple.com
  • 4 edits in trunk/Source/JavaScriptCore

Devices with fewer cores should use a more aggressive GC schedule by default
https://bugs.webkit.org/show_bug.cgi?id=165859

Reviewed by Mark Lam.

  • heap/Heap.cpp:

(JSC::Heap::markToFixpoint): Log when we have an unexpected delay in wake-up.

  • heap/SlotVisitor.cpp:

(JSC::SlotVisitor::drainInParallelPassively): Don't drain passively if there aren't many cores.

  • runtime/Options.cpp:

(JSC::overrideDefaults): Change the heuristics if we have fewer cores.
(JSC::Options::initialize):

  • runtime/Options.h:
12:56 PM Changeset in webkit [209824] by beidson@apple.com
  • 7 edits
    4 adds in trunk

IndexedDB 2.0: Massively speedup IDBIndex.get().
https://bugs.webkit.org/show_bug.cgi?id=165802

Reviewed by Alex Christensen.

Source/WebCore:

No new tests (No behavior change to Javascript, table upgrade change covered by API test).

This change upgrades the IndexRecords schema to include the ObjectStore record ID for the referenced record.
It also adds a SQLite Index-by-key on IndexRecords.

This speeds up PerformanceTests/IndexedDB/index-get.html by 15-20x.

  • Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:

(WebCore::IDBServer::v3IndexRecordsTableSchema):
(WebCore::IDBServer::v3IndexRecordsTableSchemaAlternate):
(WebCore::IDBServer::v1IndexRecordsIndexSchema):
(WebCore::IDBServer::SQLiteIDBBackingStore::ensureValidIndexRecordsTable):
(WebCore::IDBServer::SQLiteIDBBackingStore::ensureValidIndexRecordsIndex):
(WebCore::IDBServer::SQLiteIDBBackingStore::getOrEstablishDatabaseInfo):
(WebCore::IDBServer::SQLiteIDBBackingStore::createIndex):
(WebCore::IDBServer::SQLiteIDBBackingStore::uncheckedPutIndexKey):
(WebCore::IDBServer::SQLiteIDBBackingStore::uncheckedPutIndexRecord):
(WebCore::IDBServer::SQLiteIDBBackingStore::updateOneIndexForAddRecord):
(WebCore::IDBServer::SQLiteIDBBackingStore::updateAllIndexesForAddRecord):
(WebCore::IDBServer::SQLiteIDBBackingStore::addRecord):
(WebCore::IDBServer::SQLiteIDBBackingStore::getIndexRecord):
(WebCore::IDBServer::SQLiteIDBBackingStore::uncheckedGetIndexRecordForOneKey):

  • Modules/indexeddb/server/SQLiteIDBBackingStore.h:
  • Modules/indexeddb/server/SQLiteIDBCursor.cpp:

(WebCore::IDBServer::SQLiteIDBCursor::markAsErrored):
(WebCore::IDBServer::SQLiteIDBCursor::internalAdvanceOnce):

  • Modules/indexeddb/server/SQLiteIDBCursor.h:

(WebCore::IDBServer::SQLiteIDBCursor::currentRecordRowID):

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit2Cocoa/IDBIndexUpgradeToV2.html: Added.
  • TestWebKitAPI/Tests/WebKit2Cocoa/IDBIndexUpgradeToV2.mm: Added.
  • TestWebKitAPI/Tests/WebKit2Cocoa/IndexUpgrade.blob: Added.
  • TestWebKitAPI/Tests/WebKit2Cocoa/IndexUpgrade.sqlite3: Added.
12:42 PM Changeset in webkit [209823] by weinig@apple.com
  • 2 edits in trunk/Source/WebCore

Actually set the shipping contact when validating the payment request

Reviewed by Anders Carlsson.

  • Modules/applepay/ApplePaySession.cpp:

(WebCore::convertAndValidate):
Fix typo.

12:30 PM Changeset in webkit [209822] by wilander@apple.com
  • 2 edits in trunk/Source/WebCore

Handle key generation with empty challenge string
https://bugs.webkit.org/show_bug.cgi?id=165835
<rdar://problem/29128710>

Reviewed by Anders Carlsson.

https://bugs.webkit.org/show_bug.cgi?id=160945 didn't set the challenge length to
1 for empty challenge strings. Thus the null terminator was not included. Empty
challenge strings are allowed:
"If the element has a challenge attribute, then let challenge be that attribute's
value. Otherwise, let challenge be the empty string."
https://www.w3.org/TR/html5/forms.html#the-keygen-element (fetched 2016-12-13)

Email certificate generation at
https://www.comodo.com/home/email-security/free-email-certificate.php broke
because of https://bugs.webkit.org/show_bug.cgi?id=160945.

No new tests. The original patch did not have tests and the breakage was in the
produced key material so a test would have to validate the crypto output.

  • platform/mac/SSLKeyGeneratorMac.mm:

(WebCore::signedPublicKeyAndChallengeString):

Now adds 1 to the length of the challenge to account for its null terminator.
This matches the old behavior.

12:17 PM Changeset in webkit [209821] by dbates@webkit.org
  • 4 edits
    2 adds in trunk

CSP: Allow HTTPS URL to match HTTP source expression
https://bugs.webkit.org/show_bug.cgi?id=159520
<rdar://problem/27287177>

Reviewed by Brent Fulgham.

Source/WebCore:

Test: http/tests/security/contentSecurityPolicy/script-src-parsing-implicit-and-explicit-port-number.html

  • page/csp/ContentSecurityPolicySource.cpp:

(WebCore::ContentSecurityPolicySource::schemeMatches):
(WebCore::ContentSecurityPolicySource::portMatches):

LayoutTests:

  • http/tests/security/contentSecurityPolicy/script-src-parsing-implicit-and-explicit-port-number-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/script-src-parsing-implicit-and-explicit-port-number.html: Added.
  • platform/wk2/TestExpectations: Skip the test on WebKit2 because it makes use of Internals.registerDefaultPortForProtocol(),

which does not work with NetworkProcess.

11:58 AM Changeset in webkit [209820] by mark.lam@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

BytecodeBasicBlock::computeImpl() should not keep iterating blocks if all jump targets have already been found.
https://bugs.webkit.org/show_bug.cgi?id=165820

Reviewed by Saam Barati.

Currently, if an opcode is a branch type opcode, BytecodeBasicBlock::computeImpl()
will iterate over all basic blocks looking for the block containing the jump
target, and it will continue to do this even when all the jump targets have been
found. This is wasted work, and all the more so given that most branch type
opcodes only have a single jump target.

  • bytecode/BytecodeBasicBlock.cpp:

(JSC::BytecodeBasicBlock::computeImpl):

11:53 AM Changeset in webkit [209819] by achristensen@apple.com
  • 2 edits in trunk/Source/WebCore

REGRESSION (r209776): [ios-simulator] LayoutTest http/tests/xmlhttprequest/on-network-timeout-error-during-preflight.html is timing out
https://bugs.webkit.org/show_bug.cgi?id=165836

Reviewed by Brady Eidson.

  • loader/CrossOriginAccessControl.cpp:

(WebCore::createAccessControlPreflightRequest):
Use the platform default timeout for CORS preflight requests.

11:27 AM Changeset in webkit [209818] by Ryan Haddad
  • 1 edit
    3 adds in trunk/LayoutTests

Add mac-elcapitan baseline for js/dom/global-constructors-attributes.html.

Unreviewed test gardening.

  • platform/mac-elcapitan/js/dom/global-constructors-attributes-expected.txt: Added.
10:54 AM Changeset in webkit [209817] by Antti Koivisto
  • 2 edits in trunk/Source/WebCore

WebContent crash under WebCore::CachedResource::load in WebCore::FrameLoader::outgoingReferrer const
https://bugs.webkit.org/show_bug.cgi?id=165852
<rdar://problem/27297153>

Reviewed by Chris Dumez.

There appears to be some path where we get here with a null frame.
No test, don't know how exactly this happens.

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::outgoingReferrer):

Null check the frame.

10:44 AM Changeset in webkit [209816] by bshafiei@apple.com
  • 5 edits in trunk/Source

Versioning.

10:39 AM Changeset in webkit [209815] by bshafiei@apple.com
  • 1 copy in tags/Safari-603.1.16

New tag.

10:27 AM Changeset in webkit [209814] by Brent Fulgham
  • 2 edits in trunk/Source/WebKit2

Unreviewed test fix after r209806.

Plugin-common doesn't define 'home-subpath'. Instead it has 'home-library-subpath'. Switch to the correct
function. Also, 'home-library-subpath' adds '/Library' to the path, so revise the arguments so that we
do not generate paths like '/home/username/Library/Library/Keychains'.

  • PluginProcess/mac/com.apple.WebKit.plugin-common.sb.in:
10:07 AM Changeset in webkit [209813] by barraclough@apple.com
  • 2 edits in trunk/Source

Source/JavaScriptCore:
MarkedBlock::marksConveyLivenessDuringMarking should take into account collection scope
https://bugs.webkit.org/show_bug.cgi?id=165741

Unreviewed, re-landing this with fix (revert erroneous change to Options).

  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • heap/CellContainer.cpp: Added.

(JSC::CellContainer::isNewlyAllocated):

  • heap/CellContainer.h:
  • heap/MarkedAllocator.cpp:

(JSC::MarkedAllocator::addBlock):
(JSC::MarkedAllocator::removeBlock):
(JSC::MarkedAllocator::dumpBits):

  • heap/MarkedAllocator.h:

(JSC::MarkedAllocator::forEachBitVector):
(JSC::MarkedAllocator::forEachBitVectorWithName):

  • heap/MarkedBlock.cpp:

(JSC::MarkedBlock::tryCreate):
(JSC::MarkedBlock::Handle::~Handle):
(JSC::MarkedBlock::MarkedBlock):
(JSC::MarkedBlock::Handle::specializedSweep):
(JSC::MarkedBlock::Handle::sweepHelperSelectMarksMode):
(JSC::MarkedBlock::Handle::stopAllocating):
(JSC::MarkedBlock::Handle::resumeAllocating):
(JSC::MarkedBlock::aboutToMarkSlow):
(JSC::MarkedBlock::Handle::didConsumeFreeList):
(JSC::MarkedBlock::Handle::dumpState):

  • heap/MarkedBlock.h:

(JSC::MarkedBlock::markingVersion):
(JSC::MarkedBlock::isMarkedRaw):
(JSC::MarkedBlock::isMarked):

  • heap/MarkedBlockInlines.h:

(JSC::MarkedBlock::marksConveyLivenessDuringMarking):

  • heap/SlotVisitor.cpp:

(JSC::SlotVisitor::appendJSCellOrAuxiliary):

  • runtime/StructureIDTable.h:

(JSC::StructureIDTable::size):
(JSC::StructureIDTable::get):

Source/WTF:
Unreviewed, rolling out r209795.
https://bugs.webkit.org/show_bug.cgi?id=165853

rolled out the wrong revision (Requested by pizlo on #webkit).

Reverted changeset:

"MarkedBlock::marksConveyLivenessDuringMarking should take
into account collection scope"
https://bugs.webkit.org/show_bug.cgi?id=165741
http://trac.webkit.org/changeset/209795

Patch by Commit Queue <commit-queue@webkit.org> on 2016-12-14

9:50 AM Changeset in webkit [209812] by Chris Dumez
  • 27 edits in trunk/Source

Unreviewed, rolling out r209766.

Regressed Dromaeo JSLib by ~50%

Reverted changeset:

"Make opaque root scanning truly constraint-based"
https://bugs.webkit.org/show_bug.cgi?id=165760
http://trac.webkit.org/changeset/209766

9:41 AM Changeset in webkit [209811] by aestes@apple.com
  • 7 edits in trunk/Source/WebCore

EventDispatcher::dispatchEvent() should take its Node by reference
https://bugs.webkit.org/show_bug.cgi?id=165840

Reviewed by Andreas Kling.

No new tests. No change in behavior.

  • dom/Element.cpp:

(WebCore::Element::dispatchWheelEvent): Dereferenced |this| when calling
EventDispatcher::dispatchEvent().
(WebCore::Element::dispatchKeyEvent): Ditto.
(WebCore::Element::dispatchFocusEvent): Ditto.
(WebCore::Element::dispatchBlurEvent): Ditto.

  • dom/EventDispatcher.cpp:

(WebCore::EventDispatcher::dispatchEvent): Changed |origin| from a Node* to a Node&, renamed
it to |node|, and protected it with a Ref called |protectedNode| to match our preferred
style.

  • dom/EventDispatcher.h: Changed dispatchEvent's first parameter type from Node* to Node&.
  • dom/Node.cpp:

(WebCore::Node::dispatchEvent): Dereferenced |this| when calling
EventDispatcher::dispatchEvent().
(WebCore::Node::dispatchTouchEvent): Ditto.
(WebCore::Node::dispatchUIRequestEvent): Ditto.

  • dom/ScopedEventQueue.cpp:

(WebCore::ScopedEventQueue::dispatchEvent): Dereferenced |node| when calling
EventDispatcher::dispatchEvent().

  • dom/SimulatedClick.cpp:

(WebCore::simulateMouseEvent): Passed |element| as a reference to
EventDispatcher::dispatchEvent().

9:37 AM Changeset in webkit [209810] by Chris Dumez
  • 16 edits
    2 adds
    10 deletes in trunk

Remove Unicode case-insensitive matching for usemap=""
https://bugs.webkit.org/show_bug.cgi?id=163894

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

Rebaseline W3C test now that more checks are passing.

  • web-platform-tests/html/semantics/embedded-content/the-img-element/usemap-casing-expected.txt:

Source/WebCore:

Remove Unicode case-insensitive matching for usemap="" as this no longer
matches the specification [1] or Firefox. Also align our parsing logic for
the usemap attribute to match the specification [2].

This simplifies the code a bit, is more efficient and the compatibility
risk should be low based on Firefox's behavior and Chome's usage data.

[1] https://github.com/whatwg/html/commit/6acdb2122298d2bb7bb839c0a61b4e1f9b0f9bc9
[2] https://html.spec.whatwg.org/#rules-for-parsing-a-hash-name-reference

Test: fast/images/image-usemap-parsing.html

  • dom/Document.cpp:

(WebCore::Document::addImageElementByUsemap):
(WebCore::Document::removeImageElementByUsemap):
(WebCore::Document::imageElementByUsemap):

  • dom/Document.h:
  • dom/DocumentOrderedMap.cpp:

(WebCore::DocumentOrderedMap::getElementByUsemap):

  • dom/DocumentOrderedMap.h:
  • dom/TreeScope.cpp:

(WebCore::TreeScope::getImageMap):

  • html/HTMLImageElement.cpp:

(WebCore::HTMLImageElement::parseAttribute):
(WebCore::HTMLImageElement::insertedInto):
(WebCore::HTMLImageElement::removedFrom):
(WebCore::HTMLImageElement::matchesUsemap):

  • html/HTMLImageElement.h:
  • html/HTMLMapElement.cpp:

(WebCore::HTMLMapElement::imageElement):
(WebCore::HTMLMapElement::parseAttribute):

  • html/parser/HTMLParserIdioms.cpp:

(WebCore::parseHTMLHashNameReference):

  • html/parser/HTMLParserIdioms.h:

LayoutTests:

  • fast/images/image-map-multiple.html:

Fix case of the usemap.

  • fast/images/image-usemap-parsing-expected.txt: Added.
  • fast/images/image-usemap-parsing.html: Added.

Add layout test coverage.

  • fast/images/imagemap-case.html: Removed.
  • platform/efl/fast/images/imagemap-case-expected.png: Removed.
  • platform/efl/fast/images/imagemap-case-expected.txt: Removed.
  • platform/gtk/fast/images/imagemap-case-expected.png: Removed.
  • platform/gtk/fast/images/imagemap-case-expected.txt: Removed.
  • platform/ios-simulator-wk2/fast/images/imagemap-case-expected.txt: Removed.
  • platform/ios-simulator/fast/images/imagemap-case-expected.txt: Removed.
  • platform/mac/fast/images/imagemap-case-expected.png: Removed.
  • platform/mac/fast/images/imagemap-case-expected.txt: Removed.
  • platform/win/fast/images/imagemap-case-expected.txt: Removed.

Drop outdated pixel test case. Case sensitivity is now covered by
the new fast/images/image-usemap-parsing.html test.

9:28 AM Changeset in webkit [209809] by Ryan Haddad
  • 2 edits in trunk/Source/WebCore

Attempt to fix the Windows build after r209805.

Unreviewed build fix.

  • css/CSSAllInOne.cpp:
9:25 AM Changeset in webkit [209808] by commit-queue@webkit.org
  • 21 edits
    4 copies in trunk/Source

Unreviewed, rolling out r209795.
https://bugs.webkit.org/show_bug.cgi?id=165853

rolled out the wrong revision (Requested by pizlo on #webkit).

Reverted changeset:

"MarkedBlock::marksConveyLivenessDuringMarking should take
into account collection scope"
https://bugs.webkit.org/show_bug.cgi?id=165741
http://trac.webkit.org/changeset/209795

9:19 AM Changeset in webkit [209807] by fpizlo@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed, disable concurrent GC on ARM while we investigate a memory use regression.

  • runtime/Options.cpp:

(JSC::recomputeDependentOptions):

9:17 AM Changeset in webkit [209806] by Brent Fulgham
  • 3 edits in trunk/Source/WebKit2

Unreviewed test fix after r209779.

The 'Keygen' element requires the ability to create new keys in '$HOME/Library/Keychains'. Remove the
WebProcess and Plugin sandbox restrictions on per-user Keychain creation to support this use.

  • PluginProcess/mac/com.apple.WebKit.plugin-common.sb.in:
  • WebProcess/com.apple.WebProcess.sb.in:
8:34 AM Changeset in webkit [209805] by hyatt@apple.com
  • 24 edits
    3 deletes in trunk

[CSS Parser] Remove WebkitCSSTransformValue
https://bugs.webkit.org/show_bug.cgi?id=165844

Reviewed by Zalan Bujtas.

Source/WebCore:

Remove WebkitCSSTransformValue and just use a CSSFunctionValue instead. No other
browsers support it, and the information it provides is easily obtainable from cssText.

  • CMakeLists.txt:
  • DerivedSources.cpp:
  • DerivedSources.make:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/JSCSSValueCustom.cpp:

(WebCore::toJSNewlyCreated):

  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::matrixTransformValue):

  • css/CSSValue.cpp:

(WebCore::CSSValue::equals):
(WebCore::CSSValue::cssText):
(WebCore::CSSValue::destroy):
(WebCore::CSSValue::cloneForCSSOM):

  • css/CSSValue.h:

(WebCore::CSSValue::isSpringTimingFunctionValue):
(WebCore::CSSValue::isWebKitCSSTransformValue): Deleted.

  • css/StyleResolver.cpp:
  • css/TransformFunctions.cpp:

(WebCore::transformOperationType):
(WebCore::transformsForValue):

  • css/TransformFunctions.h:
  • css/WebKitCSSTransformValue.cpp: Removed.
  • css/WebKitCSSTransformValue.h: Removed.
  • css/WebKitCSSTransformValue.idl: Removed.
  • css/parser/CSSParserFastPaths.cpp:

(WebCore::parseTransformTranslateArguments):
(WebCore::parseTransformNumberArguments):
(WebCore::parseSimpleTransformValue):
(WebCore::parseSimpleTransformList):

  • css/parser/CSSPropertyParser.cpp:

(WebCore::consumeTranslate3d):
(WebCore::consumeNumbers):
(WebCore::consumePerspective):
(WebCore::consumeTransformValue):
(WebCore::transformOperationForCSSValueID): Deleted.

LayoutTests:

  • fast/css/getFloatValueForUnit-expected.txt:
  • fast/css/getFloatValueForUnit.html:
  • platform/mac-wk1/js/dom/global-constructors-attributes-expected.txt:
  • platform/mac-yosemite/js/dom/global-constructors-attributes-expected.txt:
  • platform/mac/fast/dom/wrapper-classes-objc-expected.txt:
  • platform/mac/fast/dom/wrapper-classes-objc.html:
  • platform/mac/js/dom/global-constructors-attributes-expected.txt:
  • transforms/2d/transform-value-types-expected.txt:
  • transforms/2d/transform-value-types.html:
8:19 AM Changeset in webkit [209804] by clopez@igalia.com
  • 2 edits in trunk/Tools

[GTK][EFL] Update the JHBuild version.
https://bugs.webkit.org/show_bug.cgi?id=165838

Reviewed by Michael Catanzaro.

  • jhbuild/jhbuild-wrapper: This new version fixes a bug with the

usage of the JHBUILD_MIRROR feature with git repositories.

8:16 AM Changeset in webkit [209803] by Yusuke Suzuki
  • 2 edits in trunk/LayoutTests

Unreviewed, LayoutTest http/tests/misc/module-script-async.html is a flaky timeout
https://bugs.webkit.org/show_bug.cgi?id=165764

Annotate it as Slow.

8:06 AM Changeset in webkit [209802] by Antti Koivisto
  • 3 edits in trunk/Source/WebCore

Make Style::Update const in RenderTreeUpdater
https://bugs.webkit.org/show_bug.cgi?id=165845

Reviewed by Andreas Kling.

Moving style away from unique_ptrs leaves them in weird state.

  • style/RenderTreeUpdater.cpp:

(WebCore::findRenderingRoots):
(WebCore::RenderTreeUpdater::commit):
(WebCore::RenderTreeUpdater::updateElementRenderer):

Clone the style instead of moving it. This is not meaningfully more expensive.
Remove null checks, style is never null.

  • style/RenderTreeUpdater.h:
8:04 AM Changeset in webkit [209801] by Yusuke Suzuki
  • 47 edits in trunk/Source

Use JSValue::toWTFString instead of calling toString(exec) and value(exec)
https://bugs.webkit.org/show_bug.cgi?id=165795

Reviewed by Saam Barati.

Source/JavaScriptCore:

In old days, we frequently use the idiom like, value.toString(exec)->value(exec) to
get WTFString from the given JSValue. But now, we have better function, toWTFString.
toWTFString does not create intermediate JSString objects, then reduce unnecessary
allocations.

This patch mechanically replaces value.toString(exec)->value(exec) with toWTFString(exec).

  • API/JSValueRef.cpp:

(JSValueToStringCopy):

  • bindings/ScriptValue.cpp:

(Deprecated::ScriptValue::toString):

  • inspector/JSGlobalObjectInspectorController.cpp:

(Inspector::JSGlobalObjectInspectorController::reportAPIException):

  • inspector/JSInjectedScriptHost.cpp:

(Inspector::JSInjectedScriptHost::evaluateWithScopeExtension):

  • inspector/JSJavaScriptCallFrame.cpp:

(Inspector::JSJavaScriptCallFrame::evaluateWithScopeExtension):

  • inspector/ScriptCallStackFactory.cpp:

(Inspector::extractSourceInformationFromException):

  • runtime/ConsoleObject.cpp:

(JSC::valueToStringWithUndefinedOrNullCheck):
(JSC::valueOrDefaultLabelString):

  • runtime/DateConstructor.cpp:

(JSC::dateParse):

  • runtime/DatePrototype.cpp:

(JSC::formatLocaleDate):

  • runtime/ErrorInstance.cpp:

(JSC::ErrorInstance::sanitizedToString):

  • runtime/ErrorPrototype.cpp:

(JSC::errorProtoFuncToString):

  • runtime/InspectorInstrumentationObject.cpp:

(JSC::inspectorInstrumentationObjectLog):

  • runtime/JSGlobalObjectFunctions.cpp:

(JSC::globalFuncEval):

  • runtime/JSModuleLoader.cpp:

(JSC::JSModuleLoader::fetch):

  • runtime/ModuleLoaderPrototype.cpp:

(JSC::moduleLoaderPrototypeParseModule):

  • runtime/RegExpConstructor.cpp:

(JSC::regExpCreate):

  • runtime/RegExpPrototype.cpp:

(JSC::regExpProtoFuncCompile):
(JSC::regExpProtoFuncToString):

  • runtime/StringPrototype.cpp:

(JSC::replaceUsingRegExpSearch):
(JSC::replaceUsingStringSearch):
(JSC::stringProtoFuncSlice):
(JSC::stringProtoFuncSplitFast):
(JSC::stringProtoFuncSubstr):
(JSC::stringProtoFuncLocaleCompare):
(JSC::stringProtoFuncBig):
(JSC::stringProtoFuncSmall):
(JSC::stringProtoFuncBlink):
(JSC::stringProtoFuncBold):
(JSC::stringProtoFuncFixed):
(JSC::stringProtoFuncItalics):
(JSC::stringProtoFuncStrike):
(JSC::stringProtoFuncSub):
(JSC::stringProtoFuncSup):
(JSC::stringProtoFuncFontcolor):
(JSC::stringProtoFuncFontsize):
(JSC::stringProtoFuncAnchor):
(JSC::stringProtoFuncLink):
(JSC::trimString):
(JSC::stringProtoFuncStartsWith):
(JSC::stringProtoFuncEndsWith):
(JSC::stringProtoFuncIncludes):
(JSC::builtinStringIncludesInternal):
(JSC::stringProtoFuncNormalize):

  • tools/JSDollarVMPrototype.cpp:

(JSC::functionPrint):

  • wasm/js/JSWebAssemblyCompileError.h:

(JSC::JSWebAssemblyCompileError::create):

  • wasm/js/JSWebAssemblyRuntimeError.h:

(JSC::JSWebAssemblyRuntimeError::create):

Source/WebCore:

  • bindings/js/IDBBindingUtilities.cpp:

(WebCore::createIDBKeyFromValue):

  • bindings/js/JSAudioTrackCustom.cpp:

(WebCore::JSAudioTrack::setKind):
(WebCore::JSAudioTrack::setLanguage):

  • bindings/js/JSCryptoAlgorithmDictionary.cpp:

(WebCore::JSCryptoAlgorithmDictionary::getAlgorithmIdentifier):

  • bindings/js/JSCustomXPathNSResolver.cpp:

(WebCore::JSCustomXPathNSResolver::lookupNamespaceURI):

  • bindings/js/JSDOMWindowCustom.cpp:

(WebCore::JSDOMWindow::setLocation):

  • bindings/js/JSDeviceMotionEventCustom.cpp:

(WebCore::JSDeviceMotionEvent::initDeviceMotionEvent):

  • bindings/js/JSDeviceOrientationEventCustom.cpp:

(WebCore::JSDeviceOrientationEvent::initDeviceOrientationEvent):

  • bindings/js/JSEventListener.cpp:

(WebCore::JSEventListener::handleEvent):

  • bindings/js/JSHTMLAllCollectionCustom.cpp:

(WebCore::callHTMLAllCollection):
(WebCore::JSHTMLAllCollection::namedItem):

  • bindings/js/JSHTMLFormControlsCollectionCustom.cpp:

(WebCore::JSHTMLFormControlsCollection::namedItem):

  • bindings/js/JSHTMLInputElementCustom.cpp:

(WebCore::JSHTMLInputElement::setSelectionDirection):

  • bindings/js/JSInspectorFrontendHostCustom.cpp:

(WebCore::populateContextMenuItems):

  • bindings/js/JSMessageEventCustom.cpp:

(WebCore::handleInitMessageEvent):

  • bindings/js/JSSQLTransactionCustom.cpp:

(WebCore::JSSQLTransaction::executeSql):

  • bindings/js/JSTextTrackCustom.cpp:

(WebCore::JSTextTrack::setLanguage):

  • bindings/js/JSVideoTrackCustom.cpp:

(WebCore::JSVideoTrack::setKind):
(WebCore::JSVideoTrack::setLanguage):

  • bindings/js/JSWebKitSubtleCryptoCustom.cpp:

(WebCore::cryptoKeyFormatFromJSValue):
(WebCore::cryptoKeyUsagesFromJSValue):

  • bindings/js/JSXMLHttpRequestCustom.cpp:

(WebCore::JSXMLHttpRequest::send):

  • bindings/js/JSXSLTProcessorCustom.cpp:

(WebCore::JSXSLTProcessor::setParameter):
(WebCore::JSXSLTProcessor::getParameter):
(WebCore::JSXSLTProcessor::removeParameter):

  • bindings/js/ScheduledAction.cpp:

(WebCore::ScheduledAction::create):

  • bridge/c/c_utility.cpp:

(JSC::Bindings::convertValueToNPVariant):

  • bridge/testbindings.cpp:

(main):

Source/WebKit2:

  • WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp:

(WebKit::NPRuntimeObjectMap::convertJSValueToNPVariant):

7:31 AM Changeset in webkit [209800] by jh718.park@samsung.com
  • 2 edits in trunk/Source/WebCore

[EFL] Fix debug build break since r207192. Unreviewed.
https://bugs.webkit.org/show_bug.cgi?id=165847

No new tests, no new behaviours.

In JSDOMBinding.h, JSClass::info() returns each js class's
"static const JSC::ClassInfo s_info"'s address.
It's static variable's address, so always non-null.

  • bindings/js/JSDOMBinding.h:

(WebCore::BindingCaller::callPromiseOperation):
(WebCore::BindingCaller::callOperation):
(WebCore::BindingCaller::setAttribute):
(WebCore::BindingCaller::attribute):

5:41 AM Changeset in webkit [209799] by clopez@igalia.com
  • 2 edits in trunk/Tools

[GTK] Yasm is needed for building the JHBuild after r208940
https://bugs.webkit.org/show_bug.cgi?id=165837

Reviewed by Alejandro G. Castro.

  • gtk/install-dependencies: Yasm is needed for building libvpx.
4:22 AM Changeset in webkit [209798] by commit-queue@webkit.org
  • 23 edits in trunk

Test infrastructure should allow to filter out text output before doing a comparison with the baseline
https://bugs.webkit.org/show_bug.cgi?id=161310

Patch by Youenn Fablet <youenn@apple.com> on 2016-12-14
Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

  • web-platform-tests/fetch/api/cors/cors-preflight.html: Adding a console log line to ensure the DumpJSConsoleLogInStdErr modifier works.

Tools:

Adding --dump-jsconsolelog-in-stderr test option for DRT and WTR.
When set, WTR and DRT output JS console log in the stderr and not the test output.
This allows removing potentially flaky information while still being able to read it for investigation.

Updated webkitpy infrastructure to use this test option in case of DumpJSConsoleLogInStdErr modifier.

Changes are covered by updating a fetch test to output console log and set its option to --dump-jsconsolelog-in-stderr in TestExpectations.
This test should have this option when fetch API will start logging resource loader errors.

  • DumpRenderTree/DumpRenderTree.h:

(TestCommand::TestCommand): Deleted.

  • DumpRenderTree/DumpRenderTreeCommon.cpp:

(parseInputLine):

  • DumpRenderTree/TestRunner.h:

(TestRunner::setDumpJSConsoleLogInStdErr):
(TestRunner::dumpJSConsoleLogInStdErr):

  • DumpRenderTree/mac/DumpRenderTree.mm:

(runTest):

  • DumpRenderTree/mac/UIDelegate.mm:

(-[UIDelegate webView:addMessageToConsole:withSource:]):

  • DumpRenderTree/win/DumpRenderTree.cpp:

(runTest):

  • DumpRenderTree/win/UIDelegate.cpp:

(UIDelegate::webViewAddMessageToConsole):

  • Scripts/webkitpy/layout_tests/models/test_expectations.py:

(TestExpectationParser._tokenize_line):

  • Scripts/webkitpy/port/driver.py:

(Driver._command_from_driver_input):

  • WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:

(WTR::InjectedBundle::didReceiveMessageToPage):
(WTR::InjectedBundle::dumpToStdErr):

  • WebKitTestRunner/InjectedBundle/InjectedBundle.h:

(WTR::InjectedBundle::dumpJSConsoleLogInStdErr):

  • WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:

(WTR::InjectedBundlePage::willAddMessageToConsole):

  • WebKitTestRunner/TestController.cpp:

(WTR::parseInputLine):
(WTR::TestController::runTest):
(WTR::TestCommand::TestCommand): Deleted.

  • WebKitTestRunner/TestInvocation.cpp:

(WTR::TestInvocation::invoke):
(WTR::TestInvocation::didReceiveMessageFromInjectedBundle):

  • WebKitTestRunner/TestInvocation.h:

(WTR::TestInvocation::setDumpJSConsoleLogInStdErr):

LayoutTests:

  • TestExpectations: Adding DumpJSConsoleLogInStdErr to the fetch modified test to ensure this modifier works as expected.
3:16 AM Changeset in webkit [209797] by eocanha@igalia.com
  • 28 edits
    1 copy
    1 add in trunk

REGRESSION(r207879-207891): [GStreamer] Introduced many layout test failures and crashes, bots exiting early
https://bugs.webkit.org/show_bug.cgi?id=164022

Reviewed by Xabier Rodriguez-Calvar.

Source/WebCore:

Covered by existing tests.

  • page/Settings.cpp:

Added new setting to disable GStreamer players, so the selection of
MockMediaPlayerMediaSource can be forced for some tests, just like
it's already being done for the AVFoundation player in Mac.
(WebCore::Settings::setGStreamerEnabled):

  • page/Settings.h:

(WebCore::Settings::isGStreamerEnabled):

  • platform/graphics/MediaPlayer.cpp:

(WebCore::buildMediaEnginesVector):
Don't register GStreamer players when they're disabled.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::durationMediaTime):
Use doubles instead of floats.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:

Use doubles instead of floats for m_durationAtEOS.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:

Don't reset m_sample on videoSink drain, it causes too many problems.
(WebCore::MediaPlayerPrivateGStreamerBase::createVideoSink):

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:

Removed unused methods.

  • platform/graphics/gstreamer/VideoSinkGStreamer.cpp:

Keep releasing m_sample on drain, but don't report the event
externally via signal anymore. The base player private isn't
listening to it anymore.
(webkitVideoSinkEvent):
(webkit_video_sink_class_init):

  • platform/graphics/gstreamer/mse/AppendPipeline.cpp:

(WebCore::AppendPipeline::parseDemuxerSrcPadCaps):
Check if the demuxer caps correspond to a supported codec.
(WebCore::AppendPipeline::didReceiveInitializationSegment):
Empty m_track is now legal and means unsupported codec.
(WebCore::AppendPipeline::connectDemuxerSrcPadToAppsinkFromAnyThread):
Warn about more than one stream, but "support" it by ignoring it using
a black hole probe.
(WebCore::AppendPipeline::connectDemuxerSrcPadToAppsink):
Also report the duration when it's detected for the first time. Invalid
stream types now mean that unsupported codecs have been detected.
Complete init segment processing in that case.
(WebCore::AppendPipeline::disconnectDemuxerSrcPadFromAppsinkFromAnyThread):
Disconnect black hole probe.
(WebCore::appendPipelineDemuxerBlackHolePadProbe): Ignore buffers.
(WebCore::appendPipelineDemuxerPadRemoved): New parameter used.

  • platform/graphics/gstreamer/mse/AppendPipeline.h:
  • platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp:

(WebCore::MediaPlayerPrivateGStreamerMSE::supportsCodecs):
Check supported codecs by matching against wildcard expressions.
(WebCore::MediaPlayerPrivateGStreamerMSE::supportsType):
Check for supported codecs.

  • platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.h:

New supportsCodecs() method.

  • platform/graphics/gstreamer/mse/MediaSourceClientGStreamerMSE.cpp:

(WebCore::MediaSourceClientGStreamerMSE::resetParserState):
Implemented parser resetting by aborting the AppendPipeline.

  • platform/graphics/gstreamer/mse/MediaSourceClientGStreamerMSE.h:

Added resetParserState().

  • platform/graphics/gstreamer/mse/SourceBufferPrivateGStreamer.cpp:

(WebCore::SourceBufferPrivateGStreamer::resetParserState):
Implemented it.

  • testing/Internals.cpp:

(WebCore::Internals::initializeMockMediaSource):
Disable the GStreamer players when initializing the mock media source,
like it's already done for the AVFoundation player to force the
selection of MockMediaPlayerMediaSource.

Source/WebKit2:

  • Shared/WebPreferencesDefinitions.h:

New GStreamerEnabled preference, defaults to true.

  • WebProcess/WebPage/WebPage.cpp: Ditto.

(WebKit::WebPage::updatePreferences):

Source/WTF:

  • wtf/glib/GLibUtilities.h:

Added new macros to convert gulong to/from gpointer.

Tools:

  • Scripts/webkitperl/FeatureList.pm: Re-enable MEDIA_SOURCE for the GTK+ port.

LayoutTests:

  • media/media-source/media-source-resize-expected.txt:

Expect the resize event.

  • media/media-source/media-source-resize.html:

The test now succeeds no matter if the dimension is reported after
processing the init-segment (GTK+ case) or after the media segment
is processed (Mac case).

  • platform/gtk/TestExpectations:

Reenabled all the media/media-source tests except one.

  • platform/gtk/media/media-source/media-source-resize-expected.txt:

Copied from LayoutTests/media/media-source/media-source-resize-expected.txt.
The right dimensions are received earlier than in Mac.

2:36 AM Changeset in webkit [209796] by eocanha@igalia.com
  • 3 edits in trunk/Source/WebCore

[GStreamer][MSE] Fix player private selection when MSE is enabled
https://bugs.webkit.org/show_bug.cgi?id=164116

Reviewed by Philippe Normand.

Covered by existing tests.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::load):

  • platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp:

(WebCore::MediaPlayerPrivateGStreamerMSE::load):

1:35 AM Changeset in webkit [209795] by barraclough@apple.com
  • 21 edits
    4 deletes in trunk/Source

MarkedBlock::marksConveyLivenessDuringMarking should take into account collection scope
https://bugs.webkit.org/show_bug.cgi?id=165741

Unreviewed rollout due to performance regression.

Source/JavaScriptCore:

  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • heap/CellContainer.cpp: Removed.
  • heap/CellContainer.h:
  • heap/MarkedAllocator.cpp:

(JSC::MarkedAllocator::addBlock):
(JSC::MarkedAllocator::removeBlock):
(JSC::MarkedAllocator::dumpBits):

  • heap/MarkedAllocator.h:

(JSC::MarkedAllocator::forEachBitVector):
(JSC::MarkedAllocator::forEachBitVectorWithName):

  • heap/MarkedBlock.cpp:

(JSC::MarkedBlock::tryCreate):
(JSC::MarkedBlock::Handle::~Handle):
(JSC::MarkedBlock::MarkedBlock):
(JSC::MarkedBlock::Handle::specializedSweep):
(JSC::MarkedBlock::Handle::sweepHelperSelectMarksMode):
(JSC::MarkedBlock::Handle::stopAllocating):
(JSC::MarkedBlock::Handle::resumeAllocating):
(JSC::MarkedBlock::aboutToMarkSlow):
(JSC::MarkedBlock::Handle::didConsumeFreeList):
(JSC::MarkedBlock::Handle::dumpState): Deleted.

  • heap/MarkedBlock.h:

(JSC::MarkedBlock::isMarked):
(JSC::MarkedBlock::markingVersion): Deleted.
(JSC::MarkedBlock::isMarkedRaw): Deleted.

  • heap/MarkedBlockInlines.h:

(JSC::MarkedBlock::marksConveyLivenessDuringMarking):

  • heap/SlotVisitor.cpp:

(JSC::SlotVisitor::appendJSCellOrAuxiliary):

  • runtime/Options.h:
  • runtime/StructureIDTable.h:

(JSC::StructureIDTable::get):
(JSC::StructureIDTable::size): Deleted.

Source/WTF:

  • WTF.xcodeproj/project.pbxproj:
  • wtf/CMakeLists.txt:
  • wtf/DataLog.cpp:

(WTF::initializeLogFileOnce):
(WTF::initializeLogFile):
(WTF::dataFile):

  • wtf/DataLog.h:
  • wtf/LockedPrintStream.cpp: Removed.
  • wtf/LockedPrintStream.h: Removed.
  • wtf/PrintStream.cpp:

(WTF::PrintStream::printfVariableFormat): Deleted.
(WTF::PrintStream::begin): Deleted.
(WTF::PrintStream::end): Deleted.

  • wtf/PrintStream.h:

(WTF::PrintStream::print):
(WTF::PrintStream::println):
(WTF::PrintStream::atomically): Deleted.
(WTF::PrintStream::printImpl): Deleted.
(): Deleted.
(WTF::>::unpack): Deleted.
(WTF::FormatImpl::FormatImpl): Deleted.
(WTF::FormatImpl::dump): Deleted.
(WTF::format): Deleted.

  • wtf/RecursiveLockAdapter.h: Removed.
  • wtf/WordLock.cpp:
  • wtf/WordLock.h:
12:23 AM Changeset in webkit [209794] by barraclough@apple.com
  • 39 edits
    3 deletes in trunk

Source/WebCore:
Unreviewed, rolling out r209792.
https://bugs.webkit.org/show_bug.cgi?id=165841

Cause build failures (Requested by yusukesuzuki on #webkit).

Reverted changeset:

"Use JSValue::toWTFString instead of calling toString(exec)
and value(exec)"
https://bugs.webkit.org/show_bug.cgi?id=165795
http://trac.webkit.org/changeset/209792

Patch by Commit Queue <commit-queue@webkit.org> on 2016-12-13

LayoutTests:
ASSERTION FAILED: hasParserBlockingScript() seen with js/dom/modules/module-will-fire-beforeload.html
https://bugs.webkit.org/show_bug.cgi?id=164883

Patch by Yusuke Suzuki <Yusuke Suzuki> on 2016-12-13
Reviewed by Ryosuke Niwa.

  • platform/mac-wk2/TestExpectations:

Dec 13, 2016:

11:20 PM Changeset in webkit [209793] by commit-queue@webkit.org
  • 48 edits in trunk/Source

Unreviewed, rolling out r209792.
https://bugs.webkit.org/show_bug.cgi?id=165841

Cause build failures (Requested by yusukesuzuki on #webkit).

Reverted changeset:

"Use JSValue::toWTFString instead of calling toString(exec)
and value(exec)"
https://bugs.webkit.org/show_bug.cgi?id=165795
http://trac.webkit.org/changeset/209792

11:02 PM Changeset in webkit [209792] by Yusuke Suzuki
  • 48 edits in trunk/Source

Use JSValue::toWTFString instead of calling toString(exec) and value(exec)
https://bugs.webkit.org/show_bug.cgi?id=165795

Reviewed by Saam Barati.

Source/JavaScriptCore:

In old days, we frequently use the idiom like, value.toString(exec)->value(exec) to
get WTFString from the given JSValue. But now, we have better function, toWTFString.
toWTFString does not create intermediate JSString objects, then reduce unnecessary
allocations.

This patch mechanically replaces value.toString(exec)->value(exec) with toWTFString(exec).

  • API/JSValueRef.cpp:

(JSValueToStringCopy):

  • bindings/ScriptValue.cpp:

(Deprecated::ScriptValue::toString):

  • inspector/JSGlobalObjectInspectorController.cpp:

(Inspector::JSGlobalObjectInspectorController::reportAPIException):

  • inspector/JSInjectedScriptHost.cpp:

(Inspector::JSInjectedScriptHost::evaluateWithScopeExtension):

  • inspector/JSJavaScriptCallFrame.cpp:

(Inspector::JSJavaScriptCallFrame::evaluateWithScopeExtension):

  • inspector/ScriptCallStackFactory.cpp:

(Inspector::extractSourceInformationFromException):

  • runtime/ConsoleObject.cpp:

(JSC::valueToStringWithUndefinedOrNullCheck):
(JSC::valueOrDefaultLabelString):

  • runtime/DateConstructor.cpp:

(JSC::dateParse):

  • runtime/DatePrototype.cpp:

(JSC::formatLocaleDate):

  • runtime/ErrorInstance.cpp:

(JSC::ErrorInstance::sanitizedToString):

  • runtime/ErrorPrototype.cpp:

(JSC::errorProtoFuncToString):

  • runtime/InspectorInstrumentationObject.cpp:

(JSC::inspectorInstrumentationObjectLog):

  • runtime/JSCJSValue.cpp:

(JSC::JSValue::toWTFStringSlowCase):

  • runtime/JSGlobalObjectFunctions.cpp:

(JSC::globalFuncEval):

  • runtime/JSModuleLoader.cpp:

(JSC::JSModuleLoader::fetch):

  • runtime/ModuleLoaderPrototype.cpp:

(JSC::moduleLoaderPrototypeParseModule):

  • runtime/RegExpConstructor.cpp:

(JSC::regExpCreate):

  • runtime/RegExpPrototype.cpp:

(JSC::regExpProtoFuncCompile):
(JSC::regExpProtoFuncToString):

  • runtime/StringPrototype.cpp:

(JSC::replaceUsingRegExpSearch):
(JSC::replaceUsingStringSearch):
(JSC::stringProtoFuncSlice):
(JSC::stringProtoFuncSplitFast):
(JSC::stringProtoFuncSubstr):
(JSC::stringProtoFuncLocaleCompare):
(JSC::stringProtoFuncBig):
(JSC::stringProtoFuncSmall):
(JSC::stringProtoFuncBlink):
(JSC::stringProtoFuncBold):
(JSC::stringProtoFuncFixed):
(JSC::stringProtoFuncItalics):
(JSC::stringProtoFuncStrike):
(JSC::stringProtoFuncSub):
(JSC::stringProtoFuncSup):
(JSC::stringProtoFuncFontcolor):
(JSC::stringProtoFuncFontsize):
(JSC::stringProtoFuncAnchor):
(JSC::stringProtoFuncLink):
(JSC::trimString):
(JSC::stringProtoFuncStartsWith):
(JSC::stringProtoFuncEndsWith):
(JSC::stringProtoFuncIncludes):
(JSC::builtinStringIncludesInternal):
(JSC::stringProtoFuncNormalize):

  • tools/JSDollarVMPrototype.cpp:

(JSC::functionPrint):

  • wasm/js/JSWebAssemblyCompileError.h:

(JSC::JSWebAssemblyCompileError::create):

  • wasm/js/JSWebAssemblyRuntimeError.h:

(JSC::JSWebAssemblyRuntimeError::create):

Source/WebCore:

  • bindings/js/IDBBindingUtilities.cpp:

(WebCore::createIDBKeyFromValue):
(WebCore::getNthValueOnKeyPath): Deleted.
(WebCore::internalCreateIDBKeyFromScriptValueAndKeyPath): Deleted.
(WebCore::ensureNthValueOnKeyPath): Deleted.
(WebCore::canInjectNthValueOnKeyPath): Deleted.
(WebCore::injectIDBKeyIntoScriptValue): Deleted.
(WebCore::maybeCreateIDBKeyFromScriptValueAndKeyPath): Deleted.
(WebCore::canInjectIDBKeyIntoScriptValue): Deleted.
(WebCore::deserializeIDBValueToJSValue): Deleted.
(WebCore::scriptValueToIDBKey): Deleted.
(WebCore::idbKeyDataToScriptValue): Deleted.
(WebCore::createKeyPathArray): Deleted.
(WebCore::generateIndexKeyForValue): Deleted.

  • bindings/js/JSAudioTrackCustom.cpp:

(WebCore::JSAudioTrack::setKind):
(WebCore::JSAudioTrack::setLanguage):

  • bindings/js/JSCryptoAlgorithmDictionary.cpp:

(WebCore::JSCryptoAlgorithmDictionary::getAlgorithmIdentifier):

  • bindings/js/JSCustomXPathNSResolver.cpp:

(WebCore::JSCustomXPathNSResolver::lookupNamespaceURI):

  • bindings/js/JSDOMWindowCustom.cpp:

(WebCore::JSDOMWindow::setLocation):

  • bindings/js/JSDeviceMotionEventCustom.cpp:

(WebCore::JSDeviceMotionEvent::initDeviceMotionEvent):

  • bindings/js/JSDeviceOrientationEventCustom.cpp:

(WebCore::JSDeviceOrientationEvent::initDeviceOrientationEvent):

  • bindings/js/JSEventListener.cpp:

(WebCore::JSEventListener::handleEvent):
(WebCore::JSEventListener::virtualisAttribute): Deleted.
(WebCore::JSEventListener::operator==): Deleted.
(WebCore::eventHandlerAttribute): Deleted.
(WebCore::createEventListenerForEventHandlerAttribute): Deleted.
(WebCore::setEventHandlerAttribute): Deleted.
(WebCore::windowEventHandlerAttribute): Deleted.
(WebCore::setWindowEventHandlerAttribute): Deleted.
(WebCore::documentEventHandlerAttribute): Deleted.
(WebCore::setDocumentEventHandlerAttribute): Deleted.

  • bindings/js/JSHTMLAllCollectionCustom.cpp:

(WebCore::callHTMLAllCollection):
(WebCore::JSHTMLAllCollection::namedItem):

  • bindings/js/JSHTMLFormControlsCollectionCustom.cpp:

(WebCore::JSHTMLFormControlsCollection::namedItem):

  • bindings/js/JSHTMLInputElementCustom.cpp:

(WebCore::JSHTMLInputElement::setSelectionDirection):
(WebCore::JSHTMLInputElement::setSelectionRange): Deleted.

  • bindings/js/JSInspectorFrontendHostCustom.cpp:

(WebCore::populateContextMenuItems):
(WebCore::JSInspectorFrontendHost::showContextMenu): Deleted.

  • bindings/js/JSMessageEventCustom.cpp:

(WebCore::handleInitMessageEvent):

  • bindings/js/JSSQLTransactionCustom.cpp:

(WebCore::JSSQLTransaction::executeSql):

  • bindings/js/JSTextTrackCustom.cpp:

(WebCore::JSTextTrack::setLanguage):

  • bindings/js/JSVideoTrackCustom.cpp:

(WebCore::JSVideoTrack::setKind):
(WebCore::JSVideoTrack::setLanguage):

  • bindings/js/JSWebKitSubtleCryptoCustom.cpp:

(WebCore::cryptoKeyFormatFromJSValue):
(WebCore::cryptoKeyUsagesFromJSValue):

  • bindings/js/JSXMLHttpRequestCustom.cpp:

(WebCore::JSXMLHttpRequest::send):
(WebCore::JSXMLHttpRequest::responseText): Deleted.
(WebCore::JSXMLHttpRequest::retrieveResponse): Deleted.

  • bindings/js/JSXSLTProcessorCustom.cpp:

(WebCore::JSXSLTProcessor::setParameter):
(WebCore::JSXSLTProcessor::getParameter):
(WebCore::JSXSLTProcessor::removeParameter):

  • bindings/js/ScheduledAction.cpp:

(WebCore::ScheduledAction::create):

  • bridge/c/c_utility.cpp:

(JSC::Bindings::convertValueToNPVariant):

  • bridge/testbindings.cpp:

(main):

  • inspector/InspectorDOMAgent.cpp:

(WebCore::InspectorDOMAgent::buildObjectForEventListener):

Source/WebKit2:

  • WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp:

(WebKit::NPRuntimeObjectMap::convertJSValueToNPVariant):

10:22 PM Changeset in webkit [209791] by Yusuke Suzuki
  • 4 edits in trunk

ASSERTION FAILED: hasParserBlockingScript() seen with js/dom/modules/module-will-fire-beforeload.html
https://bugs.webkit.org/show_bug.cgi?id=164883

Reviewed by Ryosuke Niwa.

Source/WebCore:

This is *attempt to fix* patch since I cannot reproduce the crash reported in this issue.
One possible scenario of this crash is the following.

  1. There is pending deferred scripts, that is not fetched yet.
  2. Then, we start watching on the script. And stop document parser.
  3. The document parser is stopped/detached by calling finishJSTest in beforeload.
  4. At this critical timing, (2)'s script is fetched, and notifyFinished is called since it is watched.

In this patch, we ignore the script execution if the document parser is stopped / detached.
Previously, it goes into the wrong path. And it causes assertion failure.

  • html/parser/HTMLDocumentParser.cpp:

(WebCore::HTMLDocumentParser::notifyFinished):

LayoutTests:

  • platform/mac-wk2/TestExpectations:
10:09 PM Changeset in webkit [209790] by dbates@webkit.org
  • 2 edits in trunk/Source/WebCore

Memory warning logging appears to capture resident footprint, missing compress/swap.
https://bugs.webkit.org/show_bug.cgi?id=165533
<rdar://problem/29318410>

Patch by Keith Rollin <Keith Rollin> on 2016-12-13
Reviewed by Daniel Bates.

Fix GTK build by adding an explicit constructor.

  • platform/MemoryPressureHandler.h:

(WebCore::MemoryPressureHandler::ReliefLogger::MemoryUsage::MemoryUsage):

8:18 PM Changeset in webkit [209789] by dbates@webkit.org
  • 3 edits
    8 adds in trunk

CSP: ws: and wss: blocked with connect-src *
https://bugs.webkit.org/show_bug.cgi?id=165804
<rdar://problem/28563643>

Reviewed by David Kilzer.

Source/WebCore:

Allow * to match ws: and wss:. This will make our behavior of * more closely conform
the behavior of * in the Content Security Policy Level 3 spec.,
<https://w3c.github.io/webappsec-csp/#match-url-to-source-expression> (Editor's Draft, 2 December 2016).

Tests: http/tests/security/contentSecurityPolicy/connect-src-star-secure-websocket-allowed.html

http/tests/security/contentSecurityPolicy/connect-src-star-websocket-allowed.html
http/tests/security/contentSecurityPolicy/default-src-star-secure-websocket-allowed.html
http/tests/security/contentSecurityPolicy/default-src-star-websocket-allowed.html

  • page/csp/ContentSecurityPolicySourceList.cpp:

(WebCore::ContentSecurityPolicySourceList::isProtocolAllowedByStar):

LayoutTests:

Add tests to ensure that * matches ws: and wss:.

  • http/tests/security/contentSecurityPolicy/connect-src-star-secure-websocket-allowed-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/connect-src-star-secure-websocket-allowed.html: Added.
  • http/tests/security/contentSecurityPolicy/connect-src-star-websocket-allowed-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/connect-src-star-websocket-allowed.html: Added.
  • http/tests/security/contentSecurityPolicy/default-src-star-secure-websocket-allowed-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/default-src-star-secure-websocket-allowed.html: Added.
  • http/tests/security/contentSecurityPolicy/default-src-star-websocket-allowed-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/default-src-star-websocket-allowed.html: Added.
7:24 PM Changeset in webkit [209788] by hyatt@apple.com
  • 7 edits in trunk/Source/WebCore

[CSS Parser] Make CSSFunctionValue derive from CSSValueList
https://bugs.webkit.org/show_bug.cgi?id=165832

Reviewed by Dean Jackson.

With the old parser gone, we can now shrink CSSFunctionValue a bit by
having it derive from CSSValueList instead of having an extra member
that holds a value list of arguments. This is similar to the trick
already employed by WebkitCSSTransformValue.

  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::specifiedValueForGridTrackSize):

  • css/CSSFunctionValue.cpp:

(WebCore::CSSFunctionValue::customCSSText):
(WebCore::CSSFunctionValue::CSSFunctionValue): Deleted.
(WebCore::CSSFunctionValue::equals): Deleted.
(WebCore::CSSFunctionValue::append): Deleted.

  • css/CSSFunctionValue.h:
  • css/StyleBuilderConverter.h:

(WebCore::StyleBuilderConverter::convertScrollSnapPoints):
(WebCore::StyleBuilderConverter::createGridTrackSize):

  • css/StyleResolver.cpp:

(WebCore::StyleResolver::createFilterOperations):

  • css/parser/CSSPropertyParser.cpp:

(WebCore::isGridTrackFixedSized):

6:39 PM Changeset in webkit [209787] by Chris Dumez
  • 3 edits in trunk/Source/WebCore

Make Document a FrameDestructionObserver
https://bugs.webkit.org/show_bug.cgi?id=165810
<rdar://problem/29157645>

Reviewed by Ryosuke Niwa.

Make Document a FrameDestructionObserver to make sure Document::m_frame
is properly nulled out when a Frame gets destroyed.
Document::disconnectFromFrame() is supposed to be called before the Frame
gets destroyed so this also adds an assertion to try and identify places
where we fail to call it.

No new tests, no known reproduction case.

  • dom/Document.cpp:

(WebCore::Document::Document):
(WebCore::Document::disconnectFromFrame):
(WebCore::Document::frameDestroyed):

  • dom/Document.h:

(WebCore::Document::frame): Deleted.

6:39 PM Changeset in webkit [209786] by achristensen@apple.com
  • 4 edits in trunk

Fix CMake build.

Source/WebKit2:

  • PlatformMac.cmake:

Tools:

  • DumpRenderTree/PlatformMac.cmake:

Define NS_RETURNS_RETAINED as nothing for now.

5:31 PM Changeset in webkit [209785] by sbarati@apple.com
  • 8 edits
    2 adds in trunk

WebAssembly: implement the elements section
https://bugs.webkit.org/show_bug.cgi?id=165715

Reviewed by Keith Miller.

JSTests:

  • wasm/Builder.js:

(export.default.Builder.prototype._registerSectionBuilders.switch.case.string_appeared_here.this.section):
(export.default.Builder.prototype._registerSectionBuilders.switch):

  • wasm/Builder_WebAssemblyBinary.js:

(const.emitters.Element):

  • wasm/function-tests/basic-element.js: Added.
  • wasm/js-api/element.js: Added.

(assertBadBinary):
(assertBadBinary.badInstantiation):

Source/JavaScriptCore:

This is a straight forward implementation of the Element
section in the Wasm spec:
https://github.com/WebAssembly/design/blob/master/BinaryEncoding.md#element-section

There are a few ambiguities I encountered when implementing this, so I've
filed bugs against the Wasm design repo, and corresponding bugzilla bugs
for us to address after they've been discussed by the various Wasm folks:

  • wasm/WasmFormat.h:
  • wasm/WasmModuleParser.cpp:

(JSC::Wasm::ModuleParser::parseElement):
(JSC::Wasm::ModuleParser::parseInitExpr):
(JSC::Wasm::ModuleParser::parseData):

  • wasm/WasmModuleParser.h:
  • wasm/js/WebAssemblyModuleRecord.cpp:

(JSC::WebAssemblyModuleRecord::evaluate):

4:20 PM Changeset in webkit [209784] by commit-queue@webkit.org
  • 6 edits
    2 adds in trunk

REGRESSION(r204163): Web Inspector: Page crashes when Inspector tries to load insecure SourceMap
https://bugs.webkit.org/show_bug.cgi?id=165806
<rdar://problem/28169025>

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-12-13
Reviewed by Alex Christensen.

Source/WebCore:

Test: http/tests/inspector/network/loadResource-insecure-resource.html

  • inspector/InspectorNetworkAgent.cpp:

(WebCore::InspectorNetworkAgent::loadResource):
DocumentThreadableLoader now triggers the ThreadableLoaderClient's didFail
callback, so this didFailLoaderCreation is now redundent and incorrect.

LayoutTests:

  • http/tests/inspector/network/loadResource-insecure-resource-expected.txt: Added.
  • http/tests/inspector/network/loadResource-insecure-resource.html: Added.
  • http/tests/inspector/network/resource-timing.html:
  • http/tests/inspector/resources/inspector-test.js:

(runTestHTTPS):

4:18 PM Changeset in webkit [209783] by hyatt@apple.com
  • 2 edits in trunk/Source/WebCore

[CSS Parser] Enhance fast path translate transforms to allow percentages
https://bugs.webkit.org/show_bug.cgi?id=165822

Reviewed by Simon Fraser.

  • css/parser/CSSParserFastPaths.cpp:

(WebCore::parseTransformTranslateArguments):

3:37 PM Changeset in webkit [209782] by jer.noble@apple.com
  • 6 edits in trunk

Fullscreen in WebKit2 does not restore topContentInset upon exiting; leaves top of page not visible
https://bugs.webkit.org/show_bug.cgi?id=165697

Source/WebKit2:

Delegate the values of topContentInset() from WebViewImpl (used by WKWebView and WKView) to the
WebPageProxy, so that setting the topContentInset() on WebPageProxy is reflected in the getters
for the two view classes.

Reviewed by Tim Horton.

  • UIProcess/Cocoa/WebViewImpl.h:

(WebKit::WebViewImpl::topContentInset): Deleted.

  • UIProcess/Cocoa/WebViewImpl.mm:

(WebKit::WebViewImpl::updateContentInsetsIfAutomatic):
(WebKit::WebViewImpl::topContentInset):
(WebKit::WebViewImpl::setTopContentInset):
(WebKit::WebViewImpl::dispatchSetTopContentInset):

  • UIProcess/mac/WKFullScreenWindowController.mm:

(-[WKFullScreenWindowController enterFullScreen:]):
(-[WKFullScreenWindowController finishedEnterFullScreenAnimation:]):
(-[WKFullScreenWindowController finishedExitFullScreenAnimation:]):
(-[WKFullScreenWindowController _saveTopContentInset]): Deleted.
(-[WKFullScreenWindowController _restoreTopContentInset]): Deleted.

Tools:

Reviewed by Tim Horton.

  • TestWebKitAPI/Tests/WebKit2Cocoa/FullscreenTopContentInset.mm:

(TestWebKitAPI::TEST):

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

Rebaseline js/dom/global-constructors-attributes.html after r209777.

Unreviewed test gardening.

  • platform/mac-wk1/js/dom/global-constructors-attributes-expected.txt:
3:22 PM Changeset in webkit [209780] by rniwa@webkit.org
  • 5 edits
    4 adds in trunk

:hover rule causes a single tap to not activate a slotted anchor element
https://bugs.webkit.org/show_bug.cgi?id=165551

Reviewed by Antti Koivisto.

Source/WebCore:

Fixed a bug in ancestorRespondingToClickEvents that we were traversing the ancestor nodes without taking
shadow roots and slots into account. This prevented tapping on a text node assigned to a slot inside
an anchor element to activate the hyperlink on iOS.

This bug was supposed to be fixed in r206605, and it was still broken on iOS due to the bug in
ancestorRespondingToClickEvents. It is now tested by click-text-inside-linked-slot.html.

Tests: fast/shadow-dom/click-on-slotted-anchor-with-hover.html

fast/shadow-dom/click-text-inside-linked-slot.html

  • page/ios/FrameIOS.mm:

(WebCore::ancestorRespondingToClickEvents):
(WebCore::Frame::qualifyingNodeAtViewportLocation):

LayoutTests:

Added a test for tapping on an anchor element assigned to a slot, which has been fixed in r209065.

Also added a new helper JS wrapepr, UIHelper, defined inside LayoutTests/resources/js-helper.js
to provide an abstraction around EventSender and UIScriptController.

Fixed click-text-inside-linked-slot.html on iOS using UIHelper.

  • fast/shadow-dom/click-on-slotted-anchor-with-hover-expected.txt: Added.
  • fast/shadow-dom/click-on-slotted-anchor-with-hover.html: Added.
  • fast/shadow-dom/click-text-inside-linked-slot.html:
  • platform/ios-simulator/fast/shadow-dom/click-text-inside-linked-slot-expected.txt: Added.
  • resources/ui-helper.js: Added.

(window.UIHelper.isIOS):
(window.UIHelper.activateAt.return.new.Promise):
(window.UIHelper.activateAt):
(window.UIHelper.wait):
(window.UIHelper):

  • platform/ios-simulator-wk2/TestExpectations: Skip the test in the open source iOS's WebKit2.
2:56 PM Changeset in webkit [209779] by Brent Fulgham
  • 4 edits in trunk/Source/WebKit2

[Mac][WK2] Tighten Keychain directory access
https://bugs.webkit.org/show_bug.cgi?id=165818
<rdar://problem/16863857>

Reviewed by Anders Carlsson.

Lock down Keychain directory access to just the file-read-data, file-read-metadata, and
file-write-data operations we actually need.

  • NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in:
  • PluginProcess/mac/com.apple.WebKit.plugin-common.sb.in:
  • WebProcess/com.apple.WebProcess.sb.in:
2:27 PM Changeset in webkit [209778] by jfbastien@apple.com
  • 2 edits in trunk/Source/WTF

std::expected: fix rvalue forwarding issues
https://bugs.webkit.org/show_bug.cgi?id=165812

Reviewed by Mark Lam.

  • wtf/Expected.h:

(WTF::UnexpectedType::UnexpectedType):
(WTF::ExpectedDetail::Base::Base):
(WTF::Expected::Expected):

2:15 PM Changeset in webkit [209777] by hyatt@apple.com
  • 51 edits
    6 deletes in trunk

[CSS Parser] Eliminate SVGPaint and SVGColor
https://bugs.webkit.org/show_bug.cgi?id=165819

Reviewed by Dean Jackson.

Source/WebCore:

Remove SVGColor and SVGPaint CSS values from the tree. The new parser
already stopped making these values when parsing, so all that's left
is to make sure computed style doesn't use these values either.

We are the only browser engine to support these CSS values, they see no use
on the Web, and they're already gone at the parsing level, so it's time
to remove these interfaces from our tree.

  • CMakeLists.txt:
  • DerivedSources.make:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/JSCSSValueCustom.cpp:

(WebCore::toJSNewlyCreated):

  • css/CSSComputedStyleDeclaration.h:
  • css/CSSValue.cpp:

(WebCore::CSSValue::equals):
(WebCore::CSSValue::cssText):
(WebCore::CSSValue::destroy):
(WebCore::CSSValue::cloneForCSSOM):

  • css/CSSValue.h:

(WebCore::CSSValue::isSubtypeExposedToCSSOM):
(WebCore::CSSValue::isSVGColor): Deleted.
(WebCore::CSSValue::isSVGPaint): Deleted.

  • css/SVGCSSComputedStyleDeclaration.cpp:

(WebCore::ComputedStyleExtractor::adjustSVGPaintForCurrentColor):
(WebCore::ComputedStyleExtractor::svgPropertyValue):

  • css/StyleBuilderConverter.h:

(WebCore::StyleBuilderConverter::convertSVGColor):

  • css/StyleBuilderCustom.h:

(WebCore::StyleBuilderCustom::applyValueFill):
(WebCore::StyleBuilderCustom::applyValueStroke):

  • page/animation/CSSPropertyAnimation.cpp:

(WebCore::PropertyWrapperSVGPaint::PropertyWrapperSVGPaint):

  • rendering/style/RenderStyle.h:

(WebCore::RenderStyle::fillPaintType):
(WebCore::RenderStyle::setFillPaintColor):
(WebCore::RenderStyle::strokePaintType):
(WebCore::RenderStyle::setStrokePaintColor):

  • rendering/style/SVGRenderStyle.h:

(WebCore::SVGRenderStyle::initialFillPaintType):
(WebCore::SVGRenderStyle::initialStrokePaintType):
(WebCore::SVGRenderStyle::setFillPaint):
(WebCore::SVGRenderStyle::setStrokePaint):
(WebCore::SVGRenderStyle::fillPaintType):
(WebCore::SVGRenderStyle::strokePaintType):
(WebCore::SVGRenderStyle::visitedLinkFillPaintType):
(WebCore::SVGRenderStyle::visitedLinkStrokePaintType):
(WebCore::SVGRenderStyle::hasStroke):
(WebCore::SVGRenderStyle::hasFill):

  • rendering/style/SVGRenderStyleDefs.h:
  • rendering/svg/RenderSVGResource.cpp:

(WebCore::requestPaintingResource):

  • rendering/svg/SVGResources.cpp:

(WebCore::paintingResourceFromSVGPaint):

  • svg/SVGAllInOne.cpp:
  • svg/SVGAnimatedColor.cpp:

(WebCore::SVGAnimatedColorAnimator::constructFromString):
(WebCore::parseColorFromString):
(WebCore::SVGAnimatedColorAnimator::calculateDistance):

  • svg/SVGAnimatedType.cpp:

(WebCore::SVGAnimatedType::setValueAsString):

  • svg/SVGAnimatedType.h:
  • svg/SVGColor.cpp: Removed.
  • svg/SVGColor.h: Removed.
  • svg/SVGColor.idl: Removed.
  • svg/SVGFEDiffuseLightingElement.cpp:
  • svg/SVGFESpecularLightingElement.cpp:
  • svg/SVGPaint.cpp: Removed.
  • svg/SVGPaint.h: Removed.
  • svg/SVGPaint.idl: Removed.

LayoutTests:

  • fast/dom/Window/resources/window-properties.js:
  • platform/mac-yosemite/js/dom/global-constructors-attributes-expected.txt:
  • platform/mac/fast/dom/Window/window-lookup-precedence-expected.txt:
  • platform/mac/js/dom/global-constructors-attributes-expected.txt:
  • svg/animations/additive-type-by-animation-expected.txt:
  • svg/animations/animate-color-calcMode-discrete-expected.txt:
  • svg/animations/animate-color-fill-currentColor-expected.txt:
  • svg/animations/animate-color-fill-from-by-expected.txt:
  • svg/animations/animate-color-transparent-expected.txt:
  • svg/animations/animate-currentColor-expected.txt:
  • svg/animations/animate-dynamic-update-attributeName-expected.txt:
  • svg/animations/animate-elem-03-t-drt-expected.txt:
  • svg/animations/animate-inherit-css-property-expected.txt:
  • svg/animations/attributeTypes-expected.txt:
  • svg/animations/resources/SVGAnimationTestCase.js:

(expectColor):

  • svg/animations/script-tests/animate-color-fill-currentColor.js:

(sample1):
(sample2):
(sample3):

  • svg/animations/script-tests/animate-color-fill-from-by.js:

(sample1):
(sample2):
(sample3):

  • svg/css/getComputedStyle-basic-expected.txt:
  • svg/css/rect-system-color-expected.txt:
  • svg/css/rect-system-color.xhtml:
  • svg/custom/global-constructors-expected.txt:
  • svg/custom/js-svg-constructors-expected.txt:
  • svg/custom/js-svg-constructors.svg:
  • svg/custom/script-tests/global-constructors.js:
2:11 PM Changeset in webkit [209776] by achristensen@apple.com
  • 2 edits in trunk/Source/WebCore

Restore NSURLRequest's default time interval to match behavior before NSURLSession adoption
https://bugs.webkit.org/show_bug.cgi?id=165821
<rdar://problem/28492939>

Reviewed by Brady Eidson.

Before adopting NSURLSession, iOS used CFURLConnection, not NSURLConnection.
iOS used to have a default timeout of INT_MAX and it now has a default timeout of 0, which means use the
default NSURLRequest timeout, which is 60 seconds. This is not enough for some slow mobile networks,
so we want to match behavior of our CFURLConnection code here.

  • platform/network/ResourceRequestBase.cpp:

Use INT_MAX as the default timeout of requests on iOS.

2:08 PM Changeset in webkit [209775] by aestes@apple.com
  • 7 edits in trunk

[Cocoa] Implement -shouldInsertText: on WKWebProcessPlugInEditingDelegate
https://bugs.webkit.org/show_bug.cgi?id=165785
<rdar://problem/26929398>

Reviewed by Darin Adler.

Source/WebKit2:

  • WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInEditingDelegate.h: Defined

WKEditorInsertAction and declared
-_webProcessPlugInBrowserContextController:shouldInsertText:replacingRange:givenAction:.

  • WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:

(toWK): Added. Mapped a WebCore::EditorInsertAction to a WKEditorInsertAction.
(-[WKWebProcessPlugInBrowserContextController _setEditingDelegate:]): Implemented
EditorClient::shouldInsertText() by calling
-_webProcessPlugInBrowserContextController:shouldInsertText:replacingRange:givenAction: with
the text, wrapped range handle, and action. Added shouldInsertText to DelegateMethods and
initialized it according to whether the delegate responds to shouldInsertText:.

Tools:

  • TestWebKitAPI/Tests/WebKit2Cocoa/BundleEditingDelegate.mm:

(-[BundleEditingDelegateRemoteObject shouldInsertText:replacingRange:givenAction:]): Added
expectations for the text, range, and action.
(TEST): Set the "EditingDelegateShouldInsertText" bundle parameter to NO so that the plug-in
will return NO in -_webProcessPlugInBrowserContextController:willInsertText:. Added a
plain-text string to the pasteboard, executed a paste action, and verified that the selected
text in the web view did not change.

  • TestWebKitAPI/Tests/WebKit2Cocoa/BundleEditingDelegatePlugIn.mm:

(-[BundleEditingDelegatePlugIn webProcessPlugIn:didCreateBrowserContextController:]): Set
_editingDelegateShouldInsertText according to the "EditingDelegateShouldInsertText" bundle
parameter.
(-[BundleEditingDelegatePlugIn _webProcessPlugInBrowserContextController:shouldInsertText:replacingRange:givenAction:]):
Added. Called -shouldInsertText:replacingRange:givenAction: on the remote object proxy
and returned the value of _editingDelegateShouldInsertText.

  • TestWebKitAPI/Tests/WebKit2Cocoa/BundleEditingDelegateProtocol.h: Declared

-shouldInsertText:replacingRange:givenAction:.

2:05 PM Changeset in webkit [209774] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Rebaseline js/dom/global-constructors-attributes.html after r209760.

Unreviewed test gardening.

  • platform/mac/js/dom/global-constructors-attributes-expected.txt:
12:44 PM Changeset in webkit [209773] by Chris Dumez
  • 6 edits in trunk

Unreviewed, rolling out r209544.

Looks like r209489 did not cause the performance regression
after all

Reverted changeset:

"Unreviewed, rolling out r209489."
https://bugs.webkit.org/show_bug.cgi?id=165550
http://trac.webkit.org/changeset/209544

12:41 PM Changeset in webkit [209772] by beidson@apple.com
  • 1 edit
    1 add in trunk/PerformanceTests

Add a PerfTest targeting IDBObjectStore.get().
https://bugs.webkit.org/show_bug.cgi?id=165816

Reviewed by Alex Christensen.

  • IndexedDB/objectstore-get.html: Added.
12:32 PM Changeset in webkit [209771] by sbarati@apple.com
  • 27 edits
    4 adds in trunk

WebAssembly: implement the table section and table import
https://bugs.webkit.org/show_bug.cgi?id=165716

Reviewed by Keith Miller.

JSTests:

  • wasm/Builder.js:

(const._importMemoryContinuation):
(const._importTableContinuation):
(export.default.Builder.prototype._registerSectionBuilders.switch.case.string_appeared_here.this.section):
(const._importMemoryContinuation.section): Deleted.
(const): Deleted.
(const._importMemoryContinuation.assert): Deleted.

  • wasm/Builder_WebAssemblyBinary.js:

(const.putResizableLimits):
(const.putTable):
(const.emitters.Import):
(const.emitters.Table):

  • wasm/function-tests/call-indirect-params.js:
  • wasm/function-tests/call-indirect.js:
  • wasm/function-tests/table-basic-2.js: Added.

(import.Builder.from.string_appeared_here.import.as.assert.from.string_appeared_here.makeInstance):
(func):

  • wasm/function-tests/table-basic.js: Added.

(import.Builder.from.string_appeared_here.import.as.assert.from.string_appeared_here.makeInstance):

  • wasm/js-api/call-indirect-results.js:

(const.wasmModuleWhichImportJS): Deleted.
(MonomorphicImport): Deleted.

  • wasm/js-api/call-indirect.js:

(const.wasmModuleWhichImportJS):
(const.makeTable):
(Polyphic2Import):
(VirtualImport):
(MonomorphicImport): Deleted.

  • wasm/js-api/table.js: Added.

(assertBadBinary):
(assert.truthy):
(assertBadTable):
(assertBadTableImport):
(assertBadBinary.assertBadTableInstance):
(assertBadTableInstance):
(new.WebAssembly.Table):

  • wasm/js-api/test_basic_api.js:

(const.c.in.constructorProperties.switch):

Source/JavaScriptCore:

This patch implements the Table space for wasm:
https://github.com/WebAssembly/design/blob/master/BinaryEncoding.md#table-section

It only implements defining and importing a table. The bulk
of this patch is implementing the various wasm Table prototype
methods and the underlying Table object:
https://github.com/WebAssembly/design/blob/master/JS.md#webassemblytable-constructor

This patch also fixes a bug in our implementation with call_indirect.
We initially implemented call_indirect as a way to call functions that
are imported or defined in the module. This was the wrong
interpretation of the spec. Instead, call_indirect can only index into
the table index space.

  • JavaScriptCore.xcodeproj/project.pbxproj:
  • wasm/WasmB3IRGenerator.cpp:

(JSC::Wasm::B3IRGenerator::B3IRGenerator):
(JSC::Wasm::B3IRGenerator::addCallIndirect):
(JSC::Wasm::parseAndCompile):

  • wasm/WasmFormat.h:

(JSC::Wasm::TableInformation::TableInformation):
(JSC::Wasm::TableInformation::operator bool):
(JSC::Wasm::TableInformation::isImport):
(JSC::Wasm::TableInformation::initial):
(JSC::Wasm::TableInformation::maximum):
(JSC::Wasm::CallableFunction::CallableFunction):

  • wasm/WasmFunctionParser.h:

(JSC::Wasm::FunctionParser<Context>::parseExpression):

  • wasm/WasmModuleParser.cpp:

(JSC::Wasm::ModuleParser::parseImport):
(JSC::Wasm::ModuleParser::parseResizableLimits):
(JSC::Wasm::ModuleParser::parseTableHelper):
(JSC::Wasm::ModuleParser::parseTable):
(JSC::Wasm::ModuleParser::parseMemoryHelper):
(JSC::Wasm::ModuleParser::parseExport):

  • wasm/WasmModuleParser.h:
  • wasm/js/JSWebAssemblyHelpers.h: Added.

(JSC::toNonWrappingUint32):

  • wasm/js/JSWebAssemblyInstance.cpp:

(JSC::JSWebAssemblyInstance::visitChildren):

  • wasm/js/JSWebAssemblyInstance.h:

(JSC::JSWebAssemblyInstance::table):
(JSC::JSWebAssemblyInstance::setTable):
(JSC::JSWebAssemblyInstance::offsetOfTable):

  • wasm/js/JSWebAssemblyTable.cpp:

(JSC::JSWebAssemblyTable::create):
(JSC::JSWebAssemblyTable::JSWebAssemblyTable):
(JSC::JSWebAssemblyTable::visitChildren):
(JSC::JSWebAssemblyTable::grow):
(JSC::JSWebAssemblyTable::clearFunction):
(JSC::JSWebAssemblyTable::setFunction):

  • wasm/js/JSWebAssemblyTable.h:

(JSC::JSWebAssemblyTable::maximum):
(JSC::JSWebAssemblyTable::size):
(JSC::JSWebAssemblyTable::getFunction):
(JSC::JSWebAssemblyTable::offsetOfSize):
(JSC::JSWebAssemblyTable::offsetOfFunctions):
(JSC::JSWebAssemblyTable::isValidSize):

  • wasm/js/WebAssemblyFunction.cpp:

(JSC::WebAssemblyFunction::call):
(JSC::WebAssemblyFunction::create):
(JSC::WebAssemblyFunction::visitChildren):
(JSC::WebAssemblyFunction::finishCreation):

  • wasm/js/WebAssemblyFunction.h:

(JSC::WebAssemblyFunction::signature):
(JSC::WebAssemblyFunction::wasmEntrypoint):
(JSC::WebAssemblyFunction::webAssemblyCallee): Deleted.

  • wasm/js/WebAssemblyInstanceConstructor.cpp:

(JSC::constructJSWebAssemblyInstance):

  • wasm/js/WebAssemblyMemoryConstructor.cpp:

(JSC::constructJSWebAssemblyMemory):

  • wasm/js/WebAssemblyModuleRecord.cpp:

(JSC::WebAssemblyModuleRecord::finishCreation):
(JSC::WebAssemblyModuleRecord::link):

  • wasm/js/WebAssemblyTableConstructor.cpp:

(JSC::constructJSWebAssemblyTable):

  • wasm/js/WebAssemblyTablePrototype.cpp:

(JSC::getTable):
(JSC::webAssemblyTableProtoFuncLength):
(JSC::webAssemblyTableProtoFuncGrow):
(JSC::webAssemblyTableProtoFuncGet):
(JSC::webAssemblyTableProtoFuncSet):
(JSC::WebAssemblyTablePrototype::create):
(JSC::WebAssemblyTablePrototype::finishCreation):

  • wasm/js/WebAssemblyTablePrototype.h:
12:24 PM Changeset in webkit [209770] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Remove ios-simulator-wk2 pass expectation for a directory that requires touch events.
https://bugs.webkit.org/show_bug.cgi?id=165787

Unreviewed test gardening.

  • platform/ios-simulator-wk2/TestExpectations:
12:23 PM Changeset in webkit [209769] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit2

NSArray leaks seen in Safari, allocated under WKIconDatabaseTryCopyCGImageArrayForURL
https://bugs.webkit.org/show_bug.cgi?id=165809

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-12-13
Reviewed by Dan Bernstein.

  • UIProcess/API/C/cg/WKIconDatabaseCG.cpp:

(WKIconDatabaseTryCopyCGImageArrayForURL):
Avoid an extra retain on already newly created array.

12:18 PM Changeset in webkit [209768] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Marking two scroll-to-fragid tests as flaky on ios-simulator.

Unreviewed test gardening.

  • platform/ios-simulator-wk2/TestExpectations:
12:14 PM Changeset in webkit [209767] by fpizlo@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Add null checks to opaque root APIs.

Rubber stamped by Saam Barati.

If we got a crash report about null in the opaque root HashSet, we would probably not
celebrate how great it is that we found out about a new race - instead we would probably
be annoyed that null wasn't just silently ignored.

  • heap/SlotVisitor.cpp:

(JSC::SlotVisitor::addOpaqueRoot):
(JSC::SlotVisitor::containsOpaqueRoot):
(JSC::SlotVisitor::containsOpaqueRootTriState):

11:54 AM Changeset in webkit [209766] by fpizlo@apple.com
  • 27 edits in trunk/Source

Make opaque root scanning truly constraint-based
https://bugs.webkit.org/show_bug.cgi?id=165760

Reviewed by Saam Barati.
Source/JavaScriptCore:


We have bugs when visitChildren() changes its mind about what opaque root to add, since
we don't have barriers on opaque roots. This supposedly once worked for generational GC,
and I started adding more barriers to support concurrent GC. But I think that the real
bug here is that we want the JSObject->OpaqueRoot to be evaluated as a constraint that
participates in the fixpoint. A constraint is different from the normal visiting in that
the GC will not wait for a barrier to rescan the object.

So, it's now possible for any visitChildren() method to become a constraint by calling
slotVisitor.rescanAsConstraint(). Because opaque roots are constraints, addOpaqueRoot()
does rescanAsConstraint() for you.

The constraint set is simply a HashSet<JSCell*> that accumulates with every
rescanAsConstraint() call and is only cleared at the start of full GC. This trivially
resolves most classes of GC bugs that would have arisen from opaque roots being changed
in a way that the GC did not anticipate.

Looks like this is perf-neutral.

  • heap/Heap.cpp:

(JSC::Heap::markToFixpoint):
(JSC::Heap::setMutatorShouldBeFenced):
(JSC::Heap::writeBarrierOpaqueRootSlow): Deleted.
(JSC::Heap::addMutatorShouldBeFencedCache): Deleted.

  • heap/Heap.h:
  • heap/HeapInlines.h:

(JSC::Heap::writeBarrierOpaqueRoot): Deleted.

  • heap/MarkedSpace.cpp:

(JSC::MarkedSpace::visitWeakSets):

  • heap/MarkedSpace.h:
  • heap/SlotVisitor.cpp:

(JSC::SlotVisitor::visitChildren):
(JSC::SlotVisitor::visitSubsequently):
(JSC::SlotVisitor::drain):
(JSC::SlotVisitor::addOpaqueRoot):
(JSC::SlotVisitor::rescanAsConstraint):
(JSC::SlotVisitor::mergeIfNecessary):
(JSC::SlotVisitor::mergeOpaqueRootsAndConstraints):
(JSC::SlotVisitor::mergeOpaqueRootsIfNecessary): Deleted.

  • heap/SlotVisitor.h:
  • heap/SlotVisitorInlines.h:

(JSC::SlotVisitor::reportExtraMemoryVisited):
(JSC::SlotVisitor::reportExternalMemoryVisited):
(JSC::SlotVisitor::didNotRace):

  • heap/WeakBlock.cpp:

(JSC::WeakBlock::specializedVisit):
(JSC::WeakBlock::visit):

  • heap/WeakBlock.h:
  • heap/WeakSet.h:

(JSC::WeakSet::visit):

Source/WebCore:

No new tests yet. I think that writing tests for this is a big investigation:
https://bugs.webkit.org/show_bug.cgi?id=165808

Remove the previous advancing wavefront DOM write barrier. I don't think this will scale
very well. It's super confusing.

This change makes it so that visitChildren can become a GC constraint that executes as
part of the fixpoint. This changes all WebCore visitChildren methods that do opaque
roots into constraints.

  • bindings/js/CommonVM.cpp:

(WebCore::commonVMSlow):
(WebCore::writeBarrierOpaqueRootSlow): Deleted.

  • bindings/js/CommonVM.h:

(WebCore::writeBarrierOpaqueRoot): Deleted.

  • bindings/js/JSAttrCustom.cpp:

(WebCore::JSAttr::visitAdditionalChildren):

  • bindings/js/JSDOMWindowCustom.cpp:

(WebCore::JSDOMWindow::visitAdditionalChildren):

  • bindings/js/JSIDBCursorCustom.cpp:

(WebCore::JSIDBCursor::visitAdditionalChildren):

  • bindings/js/JSMessageChannelCustom.cpp:

(WebCore::JSMessageChannel::visitAdditionalChildren):

  • bindings/js/JSMessagePortCustom.cpp:

(WebCore::JSMessagePort::visitAdditionalChildren):

  • bindings/js/JSNodeIteratorCustom.cpp:

(WebCore::JSNodeIterator::visitAdditionalChildren):

  • bindings/js/JSTextTrackCueCustom.cpp:

(WebCore::JSTextTrackCue::visitAdditionalChildren):

  • bindings/js/JSTreeWalkerCustom.cpp:

(WebCore::JSTreeWalker::visitAdditionalChildren):

  • bindings/js/JSWorkerGlobalScopeCustom.cpp:

(WebCore::JSWorkerGlobalScope::visitAdditionalChildren):

  • bindings/js/JSXMLHttpRequestCustom.cpp:

(WebCore::JSXMLHttpRequest::visitAdditionalChildren):

  • bindings/js/JSXPathResultCustom.cpp:

(WebCore::JSXPathResult::visitAdditionalChildren):

  • dom/ContainerNodeAlgorithms.cpp:

(WebCore::notifyChildNodeInserted):
(WebCore::notifyChildNodeRemoved):

11:44 AM Changeset in webkit [209765] by beidson@apple.com
  • 1 edit
    1 add in trunk/PerformanceTests

Add a PerfTest targeting IDBIndex.get().
https://bugs.webkit.org/show_bug.cgi?id=165803

Reviewed by Alex Christensen.

  • IndexedDB/index-get.html: Added.
11:38 AM Changeset in webkit [209764] by commit-queue@webkit.org
  • 105 edits
    14 deletes in trunk

Unreviewed, rolling out r209725.
https://bugs.webkit.org/show_bug.cgi?id=165811

"Broke ARMv7 builds" (Requested by msaboff on #webkit).

Reverted changeset:

"REGRESSION(r209653): speedometer crashes making virtual slow
path tailcalls"
https://bugs.webkit.org/show_bug.cgi?id=165748
http://trac.webkit.org/changeset/209725

11:28 AM Changeset in webkit [209763] by fpizlo@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed, revert the collectorPermittedIdleRatio back to 0 because of 100MB
regression on membuster. Also, it didn't seem to help perf.

  • runtime/Options.h:
11:26 AM Changeset in webkit [209762] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Skip fast/events/page-visibility-onvisibilitychange.html on ios-simulator.
https://bugs.webkit.org/show_bug.cgi?id=165799

Unreviewed test gardening.

  • platform/ios-simulator/TestExpectations:
11:15 AM Changeset in webkit [209761] by jfbastien@apple.com
  • 6 edits in trunk/Source

[WTF] Turn tryMakeString(), makeString() into variadic templates
https://bugs.webkit.org/show_bug.cgi?id=147142

Reviewed by Mark Lam.

Source/JavaScriptCore:

  • runtime/JSStringBuilder.h:

(JSC::jsMakeNontrivialString): remove WTF:: prefix, it isn't needed anymore

  • runtime/Lookup.cpp:

(JSC::reifyStaticAccessor): remove WTF:: prefix, it isn't needed anymore

  • runtime/ObjectPrototype.cpp:

(JSC::objectProtoFuncToString): remove WTF:: prefix, it isn't needed anymore

Source/WTF:

I wrote this patch while improving WebAssembly's error messages,
and only found this bug afterwards. My implementation does the
bare minimum to make this code variadic without changing
behavior. I think it's better to go with this baby step first, and
improve the code later.

Notable, for my WebAssembly patch I also taught the code to handle
integers and other types (including WebAssembly types). A
follow-up could rely on ADL magic to pretty-format these other
types.

  • wtf/text/StringConcatenate.h:

(WTF::sumWithOverflow): This unconditionally does the sum for all
inputs, which the compiler is more likely to appreciate (because
it's the common case) compared to testing for overflow and bailing
on each addition
(WTF::are8Bit): are: the plural of is!
(WTF::makeStringAccumulator): accumulate strings
(WTF::tryMakeStringFromAdapters): a small helper which creates the string adapters
(WTF::tryMakeString): expose out of WTF, since it's part of this file's used API
(WTF::makeString): make it variadic

10:47 AM Changeset in webkit [209760] by weinig@apple.com
  • 14 edits
    3 adds
    1 delete in trunk

[WebIDL] Remove use of Dictionary in ApplePaySession
https://bugs.webkit.org/show_bug.cgi?id=165787

Reviewed by Anders Carlsson.

Source/WebCore:

First take at generating the bindings for ApplePaySession and removing
all use of Dictionary.

  • Removes all use of Dictionary!
  • Removes use of logging errors to the console with improved Exception messages.
  • Use ExceptionOr extensively to pass exception state.


Still to do:

  • Reconcile / merge ApplePaySession::PaymentRequest with WebCore::PaymentRequest and all the sub-objects held within.
  • Remove PaymentRequestValidator entirely, merging validation into the validation we already do in ApplePaySession.cpp
  • Make ApplePayEvents use generated dictionary creation code.

Test: http/tests/ssl/applepay/ApplePaySession.html

  • Modules/applepay/ApplePaySession.cpp:

(WebCore::convertAndValidate):
(WebCore::canCallApplePaySessionAPIs):
(WebCore::ApplePaySession::create):
(WebCore::ApplePaySession::ApplePaySession):
(WebCore::ApplePaySession::supportsVersion):
(WebCore::ApplePaySession::canMakePayments):
(WebCore::ApplePaySession::canMakePaymentsWithActiveCard):
(WebCore::ApplePaySession::openPaymentSetup):
(WebCore::ApplePaySession::begin):
(WebCore::ApplePaySession::completeMerchantValidation):
(WebCore::ApplePaySession::completeShippingMethodSelection):
(WebCore::ApplePaySession::completeShippingContactSelection):
(WebCore::ApplePaySession::completePaymentMethodSelection):
(WebCore::ApplePaySession::didSelectShippingMethod):
(WebCore::createContactFields): Deleted.
(WebCore::toLineItemType): Deleted.
(WebCore::isValidLineItemPropertyName): Deleted.
(WebCore::createLineItem): Deleted.
(WebCore::createLineItems): Deleted.
(WebCore::createMerchantCapabilities): Deleted.
(WebCore::createSupportedNetworks): Deleted.
(WebCore::toShippingType): Deleted.
(WebCore::isValidShippingMethodPropertyName): Deleted.
(WebCore::createShippingMethod): Deleted.
(WebCore::createShippingMethods): Deleted.
(WebCore::isValidPaymentRequestPropertyName): Deleted.
(WebCore::createPaymentRequest): Deleted.

  • Modules/applepay/ApplePaySession.h:

Replace hand written dictionary extraction code with autogenerated code
and hand written additional validation.

  • Modules/applepay/ApplePaySession.idl:

Add helper dictionaries and enums.

  • Modules/applepay/PaymentRequestValidator.cpp:

(WebCore::PaymentRequestValidator::validate):
(WebCore::PaymentRequestValidator::validateTotal):
(WebCore::validateCountryCode):
(WebCore::validateCurrencyCode):
(WebCore::validateMerchantCapabilities):
(WebCore::validateSupportedNetworks):
(WebCore::validateShippingMethod):
(WebCore::validateShippingMethods):
(WebCore::PaymentRequestValidator::PaymentRequestValidator): Deleted.
(WebCore::PaymentRequestValidator::~PaymentRequestValidator): Deleted.
(WebCore::PaymentRequestValidator::validateCountryCode): Deleted.
(WebCore::PaymentRequestValidator::validateCurrencyCode): Deleted.
(WebCore::PaymentRequestValidator::validateMerchantCapabilities): Deleted.
(WebCore::PaymentRequestValidator::validateShippingMethod): Deleted.
(WebCore::PaymentRequestValidator::validateSupportedNetworks): Deleted.
(WebCore::PaymentRequestValidator::validateShippingMethods): Deleted.

  • Modules/applepay/PaymentRequestValidator.h:

Instead of reporting the validation errors to the console, pass them in the exception.
This allows us to remove the window member, and move the helpers to the implementation
file as statics.

  • WebCore.xcodeproj/project.pbxproj:

Remove file.

  • bindings/generic/IDLTypes.h:

(WebCore::IDLObject::nullValue):
(WebCore::IDLObject::isNullValue):
(WebCore::IDLObject::extractValueFromNullable):
Add nullability traits for IDLObject.

  • bindings/js/JSApplePaySessionCustom.cpp:

Removed.

Tools:

  • WebKitTestRunner/cocoa/TestControllerCocoa.mm:

(WTR::initializeWebViewConfiguration):
(WTR::TestController::platformCreateWebView):
Enable ApplePay for the tests (where supported).

LayoutTests:

  • http/tests/ssl/applepay: Added.
  • http/tests/ssl/applepay/ApplePaySession-expected.txt: Added.
  • http/tests/ssl/applepay/ApplePaySession.html: Added.

Add a compressive test of the handling of the payment request to the ApplePaySession
constructor. For further testing, we will need to mock out bits of the underlying
coordinator, but this allows for testing the aspect I am changing. The applepay
directory is in the ssl directory, as all use of ApplePay requires https.

  • TestExpectations:
  • platform/ios-simulator-wk2/TestExpectations:
  • platform/mac-wk2/TestExpectations:

Only enable the tests on iOS 10.10 and greater, and macOS 10.12 and greater, WebKit2.

10:21 AM Changeset in webkit [209759] by dbates@webkit.org
  • 5 edits
    8 adds in trunk

CSP: Teach the preload scanner about the 'nonce' attribute
https://bugs.webkit.org/show_bug.cgi?id=161192
<rdar://problem/28010354>

Reviewed by Darin Adler.

Source/WebCore:

This patch was inspired by a similar Blink change:
<https://chromium.googlesource.com/chromium/src/+/dde5487f380cf774e4c0e96ba7f88ea68e723907>

Preload external scripts and stylesheets whose HTML script and link elements have a nonce
attribute that is listed in the Content Security Policy (CSP) of the page.

Currently the preload scanner ignores the nonce attribute on HTML script and link elements.
So, WebKit does not preload their associated subresources unless the value of the src
attribute or href attribute is whitelisted in the CSP of the page for script and link
elements, respectively. Instead the preload scanner should recognize the nonce attribute on
script and link elements and query the CSP of the page with it. If the nonce attribute is
whitelisted then the request should be preloaded.

Tests: http/tests/loading/do-not-preload-css-blocked-by-csp.html

http/tests/loading/do-not-preload-script-src-blocked-by-csp.html
http/tests/loading/preload-css-with-csp-nonce.html
http/tests/loading/preload-script-src-with-csp-nonce.html

  • html/parser/HTMLPreloadScanner.cpp:

(WebCore::TokenPreloadScanner::StartTagScanner::createPreloadRequest): Set the nonce on the
PreloadRequest to the nonce that we found during the scan.
(WebCore::TokenPreloadScanner::StartTagScanner::processAttribute): For script and link tag names,
save the value of the nonce attribute (if it has one).

  • html/parser/HTMLResourcePreloader.cpp:

(WebCore::PreloadRequest::resourceRequest): Skip CSP policy check if the nonce is listed in
the CSP of the page.

  • html/parser/HTMLResourcePreloader.h:

(WebCore::PreloadRequest::setNonce): Added.

LayoutTests:

Add tests to ensure that we preload <script>s and <link>s whose nonce is allowed by the
Content Security Policy of the page.

  • http/tests/loading/do-not-preload-css-blocked-by-csp-expected.txt: Added.
  • http/tests/loading/do-not-preload-css-blocked-by-csp.html: Added.
  • http/tests/loading/do-not-preload-script-src-blocked-by-csp-expected.txt: Added.
  • http/tests/loading/do-not-preload-script-src-blocked-by-csp.html: Added.
  • http/tests/loading/preload-css-with-csp-nonce-expected.txt: Added.
  • http/tests/loading/preload-css-with-csp-nonce.html: Added.
  • http/tests/loading/preload-script-src-with-csp-nonce-expected.txt: Added.
  • http/tests/loading/preload-script-src-with-csp-nonce.html: Added.
9:39 AM Changeset in webkit [209758] by hyatt@apple.com
  • 20 edits in trunk/Source/WebCore

[CSS Parser] Rename CSSPrimitiveValue::UnitTypes to CSSPrimitiveValue::UnitType
https://bugs.webkit.org/show_bug.cgi?id=165776

Reviewed by Zalan Bujtas.

  • css/CSSCalculationValue.cpp:

(WebCore::unitCategory):
(WebCore::hasDoubleValue):
(WebCore::determineCategory):
(WebCore::CSSCalcExpressionNodeParser::parseValue):

  • css/CSSCalculationValue.h:
  • css/CSSPrimitiveValue.cpp:

(WebCore::isValidCSSUnitTypeForDoubleConversion):
(WebCore::isStringType):
(WebCore::CSSPrimitiveValue::unitCategory):
(WebCore::CSSPrimitiveValue::CSSPrimitiveValue):
(WebCore::CSSPrimitiveValue::cleanup):
(WebCore::CSSPrimitiveValue::computeLengthDouble):
(WebCore::CSSPrimitiveValue::computeNonCalcLengthDouble):
(WebCore::CSSPrimitiveValue::conversionToCanonicalUnitsScaleFactor):
(WebCore::CSSPrimitiveValue::getFloatValue):
(WebCore::CSSPrimitiveValue::doubleValue):
(WebCore::CSSPrimitiveValue::canonicalUnitTypeForCategory):
(WebCore::CSSPrimitiveValue::doubleValueInternal):
(WebCore::CSSPrimitiveValue::cloneForCSSOM):

  • css/CSSPrimitiveValue.h:

(WebCore::CSSPrimitiveValue::isFontRelativeLength):
(WebCore::CSSPrimitiveValue::isLength):
(WebCore::CSSPrimitiveValue::isResolution):
(WebCore::CSSPrimitiveValue::createAllowingMarginQuirk):

  • css/CSSValue.h:
  • css/CSSValuePool.cpp:

(WebCore::CSSValuePool::createValue):

  • css/CSSValuePool.h:

(WebCore::CSSValuePool::createValue):

  • css/MediaQueryExp.cpp:

(WebCore::featureWithValidDensity):
(WebCore::MediaQueryExpression::MediaQueryExpression):

  • css/parser/CSSParserFastPaths.cpp:

(WebCore::parseSimpleLength):
(WebCore::parseSimpleLengthValue):
(WebCore::parseColorIntOrPercentage):
(WebCore::fastParseColorInternal):
(WebCore::parseTransformTranslateArguments):
(WebCore::parseTransformNumberArguments):

  • css/parser/CSSParserToken.cpp:

(WebCore::cssPrimitiveValueUnitFromTrie):
(WebCore::stringToUnitType):
(WebCore::CSSParserToken::CSSParserToken):
(WebCore::CSSParserToken::convertToPercentage):

  • css/parser/CSSParserToken.h:

(WebCore::CSSParserToken::unitType):

  • css/parser/CSSPropertyParser.cpp:

(WebCore::CSSPropertyParser::consumeTransformOrigin):
(WebCore::consumeCounter):
(WebCore::consumeAnimationName):
(WebCore::consumePerspective):
(WebCore::consumePositionLonghand):
(WebCore::consumeCounterContent):
(WebCore::consumeReflect):
(WebCore::consumeGridBreadth):
(WebCore::CSSPropertyParser::consumeFlex):

  • css/parser/CSSPropertyParserHelpers.cpp:

(WebCore::CSSPropertyParserHelpers::CalcParser::consumeNumber):
(WebCore::CSSPropertyParserHelpers::consumeInteger):
(WebCore::CSSPropertyParserHelpers::consumeLength):
(WebCore::CSSPropertyParserHelpers::consumePercent):
(WebCore::CSSPropertyParserHelpers::consumeAngle):
(WebCore::CSSPropertyParserHelpers::consumeTime):
(WebCore::CSSPropertyParserHelpers::consumeCustomIdent):
(WebCore::CSSPropertyParserHelpers::consumeString):
(WebCore::CSSPropertyParserHelpers::consumeUrl):
(WebCore::CSSPropertyParserHelpers::consumeDeprecatedGradientPoint):
(WebCore::CSSPropertyParserHelpers::consumeDeprecatedGradientColorStop):
(WebCore::CSSPropertyParserHelpers::consumeCrossFade):
(WebCore::CSSPropertyParserHelpers::consumeImageSet):
(WebCore::CSSPropertyParserHelpers::consumeFilterFunction):

  • css/parser/MediaQueryParser.cpp:

(WebCore::MediaQueryParser::readFeatureValue):

  • css/parser/SizesAttributeParser.cpp:

(WebCore::SizesAttributeParser::computeLength):

  • css/parser/SizesAttributeParser.h:
  • dom/StyledElement.cpp:

(WebCore::StyledElement::setInlineStyleProperty):
(WebCore::StyledElement::addPropertyToPresentationAttributeStyle):

  • dom/StyledElement.h:
  • svg/SVGLengthValue.cpp:

(WebCore::SVGLengthValue::toCSSPrimitiveValue):

8:59 AM Changeset in webkit [209757] by eric.carlson@apple.com
  • 6 edits in trunk

Annotate MediaStream and WebRTC idl with EnabledAtRuntime flag
https://bugs.webkit.org/show_bug.cgi?id=165251

Reviewed by Youenn Fablet.

Source/WebCore:

No new tests, fixes an API test.

  • page/Settings.in: Delete mediaStreamEnabled and peerConnectionEnabled, we don't need a

setting and a runtime feature.

Source/WebKit2:

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updatePreferences): Update the media stream and peer connection runtime
feature instead of the setting.

Tools:

  • TestWebKitAPI/Tests/WebKit2/EnumerateMediaDevices.cpp:

(TestWebKitAPI::TEST): Enable MediaStream, create web view from the page group upon which
the preferences have been set.

8:08 AM Changeset in webkit [209756] by Antti Koivisto
  • 13 edits
    2 adds in trunk

Source/WebCore:
REGRESSION (r198990): Cannot edit content inside <details> in wysiwyg editor
https://bugs.webkit.org/show_bug.cgi?id=165757

Reviewed by Andreas Kling.

Test: fast/html/details-edit.html

-webkit-user-modify is reset on shadow boundary so it doesn't go through <details> shadow tree.

  • css/StyleResolver.cpp:

(WebCore::StyleResolver::styleForElement):
(WebCore::StyleResolver::pseudoStyleForElement):
(WebCore::StyleResolver::styleForPage):
(WebCore::StyleResolver::applyMatchedProperties):

  • dom/Node.cpp:

(WebCore::computeEditabilityFromComputedStyle):
(WebCore::Node::computeEditability):

Make -webkit-user-modify (which we would want to get rid of completely eventually) have no effect in shadow trees.
Check for contenteditable directly instead.

  • html/HTMLInputElement.cpp:

(WebCore::HTMLInputElement::createInnerTextStyle):

  • html/HTMLTextAreaElement.cpp:

(WebCore::HTMLTextAreaElement::createInnerTextStyle):

  • html/shadow/TextControlInnerElements.cpp:
  • rendering/RenderFlowThread.cpp:

(WebCore::RenderFlowThread::createFlowThreadStyle):

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::calculateClipRects):

  • rendering/RenderListItem.cpp:

(WebCore::RenderListItem::styleDidChange):

  • rendering/style/RenderStyle.cpp:

(WebCore::RenderStyle::createAnonymousStyleWithDisplay):
(WebCore::RenderStyle::createStyleInheritingFromPseudoStyle):
(WebCore::RenderStyle::inheritFrom):

Let -webkit-user-modify inherit through shadow boundary as normal.

  • rendering/style/RenderStyle.h:

LayoutTests:
REGRESSION (r198990): Safari - Cannot edit content inside <details> in wysiwyg editor
https://bugs.webkit.org/show_bug.cgi?id=165757

Reviewed by Andreas Kling.

  • editing/execCommand/justify-right-then-indent-with-problematic-body-expected.txt:
  • fast/html/details-edit-expected.txt: Added.
  • fast/html/details-edit.html: Added.
4:49 AM Changeset in webkit [209755] by Konstantin Tokarev
  • 2 edits in trunk/Source/WTF

Unreviewed, silence -Wsuggest-attribute for GCC with pragmas

  • wtf/PrintStream.cpp:

(WTF::PrintStream::printfVariableFormat):

4:25 AM Changeset in webkit [209754] by pvollan@apple.com
  • 2 edits in trunk/LayoutTests

Unreviewed test gardening.

Update test expectations on Windows for failing tests. These failures are tracked in
https://bugs.webkit.org/show_bug.cgi?id=160447.

  • platform/win/TestExpectations:
2:23 AM Changeset in webkit [209753] by svillar@igalia.com
  • 2 edits in trunk/Source/WebKit2

Fix GTK build after r209733
https://bugs.webkit.org/show_bug.cgi?id=165794

Document::visibilityState() now returns an IDL string enumeration.

Reviewed by Žan Doberšek.

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDocument.cpp:

(webkit_dom_document_get_visibility_state):

Dec 12, 2016:

9:17 PM Changeset in webkit [209752] by Darin Adler
  • 24 edits in trunk

Remove bindings generation support for legacy WebCore::Dictionary
https://bugs.webkit.org/show_bug.cgi?id=165762

Reviewed by Sam Weinig.

LayoutTests/imported/w3c:

  • web-platform-tests/webrtc/datachannel-emptystring-expected.txt:
  • web-platform-tests/webrtc/no-media-call-expected.txt:
  • web-platform-tests/webrtc/promises-call-expected.txt:
  • web-platform-tests/webrtc/rtcpeerconnection/rtcpeerconnection-constructor-expected.txt:
  • web-platform-tests/webrtc/rtcpeerconnection/rtcpeerconnection-idl-expected.txt:

Updated to expect error messages with "dictionary" with a lowercase D.

Source/WebCore:

After this patch, all use of legacy WebCore::Dictionary is within custom bindings or
inside the DOM code itself. Bindings generation machinery no longer has a special
type named "Dictionary" but has increasingly good support for IDL-defined dictionaries.

  • Modules/applepay/ApplePaySession.cpp:

(WebCore::ApplePaySession::create): Take ExecState and a JSValue rather than a Dictionary.
(WebCore::ApplePaySession::completeMerchantValidation): Ditto.

  • Modules/applepay/ApplePaySession.h: Updated for the above changes.
  • Modules/applepay/ApplePaySession.idl: For this last file using Dictionary in IDL, move

to "[CallWith=ScriptState]" and "any" as a stopgap. Later we can return and use IDL
dictionaries or other more modern solutions.

  • Modules/mediastream/MediaDevices.idl: For the custom binding written in JavaScript,

use the type mentioned in the specification rather than Dictionary. The bindings generator
ignores the type, so this is more like changing a comment rather than changing source code.

  • Modules/mediastream/RTCPeerConnection.js:

(initializeRTCPeerConnection): Refer to a non-object as not a valid "dictionary", lowercase
rather than "Dictionary".

  • Modules/mediastream/RTCPeerConnectionInternals.js:

(callbacksAndDictionaryOverload): Ditto.

  • bindings/generic/IDLTypes.h: Removed IDLLegacyDictionary.
  • bindings/js/JSCryptoAlgorithmDictionary.cpp:

(WebCore::getHashAlgorithm): Fixed a comment.

  • bindings/js/JSDOMConvert.h:

(WebCore::Converter<IDLLegacyDictionary<T>>::convert): Deleted.

  • bindings/scripts/CodeGenerator.pm:

(IsBuiltinType): Removed special case for "Dictionary".

  • bindings/scripts/CodeGeneratorJS.pm:

(AddToIncludesForIDLType): Ditto.
(AreTypesDistinguishableForOverloadResolution): Ditto.
(GenerateOverloadedFunctionOrConstructor): Ditto.
(GenerateParametersCheck): Ditto.
(GetBaseIDLType): Ditto.

  • bindings/scripts/test/JS/JSTestObj.cpp: Regenerated results.
  • bindings/scripts/test/TestObj.idl: Removed test case for Dictionary.

LayoutTests:

  • fast/mediastream/RTCPeerConnection-expected.txt:
  • fast/mediastream/RTCPeerConnection-overloaded-operations-params-expected.txt:
  • fast/mediastream/RTCPeerConnection-overloaded-operations-params.html:

Updated to expect error messages with "dictionary" with a lowercase D.

6:20 PM Changeset in webkit [209751] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Drop unnecessary null check in removeDetachedChildrenInContainer()
https://bugs.webkit.org/show_bug.cgi?id=165778

Reviewed by Alex Christensen.

Drop unnecessary null check in removeDetachedChildrenInContainer().
Node cannot be null but we do an implicit null check.

No new tests, no Web-exposed behavior change.

  • dom/ContainerNodeAlgorithms.cpp:

(WebCore::removeDetachedChildrenInContainer):

6:05 PM Changeset in webkit [209750] by Chris Dumez
  • 3 edits
    2 adds in trunk

Add Document.onvisibilitychange event handler attribute
https://bugs.webkit.org/show_bug.cgi?id=165784

Reviewed by Daniel Bates.

Source/WebCore:

Add Document.onvisibilitychange event handler attribute as per Page
Visibility Level 2 API:

Test: fast/events/page-visibility-onvisibilitychange.html

  • dom/Document.idl:

LayoutTests:

Add layout test coverage.

  • fast/events/page-visibility-onvisibilitychange-expected.txt: Added.
  • fast/events/page-visibility-onvisibilitychange.html: Added.
5:32 PM Changeset in webkit [209749] by jiewen_tan@apple.com
  • 2 edits
    4 moves
    15 adds in trunk/LayoutTests

[WebCrypto] Migrate some tests from webkitSubtle to subtle
https://bugs.webkit.org/show_bug.cgi?id=165554

Reviewed by Brent Fulgham.

To improve test coverage for subtle.

  • crypto/crypto-key-algorithm-gc-expected.txt: Renamed from LayoutTests/crypto/webkitSubtle/crypto-key-algorithm-gc-expected.txt.
  • crypto/crypto-key-algorithm-gc.html: Renamed from LayoutTests/crypto/webkitSubtle/crypto-key-algorithm-gc.html.
  • crypto/crypto-key-usages-gc-expected.txt: Renamed from LayoutTests/crypto/webkitSubtle/crypto-key-usages-gc-expected.txt.
  • crypto/crypto-key-usages-gc.html: Renamed from LayoutTests/crypto/webkitSubtle/crypto-key-usages-gc.html.
  • crypto/subtle/resources/rsa-indexeddb-non-exportable.js: Added.
  • crypto/subtle/resources/rsa-indexeddb.js: Added.
  • crypto/subtle/rsa-indexeddb-expected.txt: Added.
  • crypto/subtle/rsa-indexeddb-non-exportable-expected.txt: Added.
  • crypto/subtle/rsa-indexeddb-non-exportable-private-expected.txt: Added.
  • crypto/subtle/rsa-indexeddb-non-exportable-private.html: Added.
  • crypto/subtle/rsa-indexeddb-non-exportable.html: Added.
  • crypto/subtle/rsa-indexeddb-private-expected.txt: Added.
  • crypto/subtle/rsa-indexeddb-private.html: Added.
  • crypto/subtle/rsa-indexeddb.html: Added.
  • crypto/subtle/rsa-oaep-plaintext-length-expected.txt: Added.
  • crypto/subtle/rsa-oaep-plaintext-length.html: Added.
  • crypto/subtle/rsassa-pkcs1-v1_5-generate-key-with-leading-zeroes-in-exponent-expected.txt: Added.
  • crypto/subtle/rsassa-pkcs1-v1_5-generate-key-with-leading-zeroes-in-exponent.html: Added.
  • platform/ios-simulator-wk1/TestExpectations:
5:05 PM Changeset in webkit [209748] by Nikita Vasilyev
  • 1 edit
    1 add in trunk/Source/WebInspectorUI

[GTK] Web Inspector: Add NavigationItemCodeCoverage.svg icon
https://bugs.webkit.org/show_bug.cgi?id=165698

Reviewed by Joseph Pecoraro.

  • UserInterface/Images/gtk/NavigationItemCodeCoverage.svg: Added.

Match in style the existing NavigationItemTypes.svg icon.

4:45 PM Changeset in webkit [209747] by dino@apple.com
  • 12 edits in trunk/Source

[iOS] MediaDocument "Done" button should navigate the page back
https://bugs.webkit.org/show_bug.cgi?id=165779

Reviewed by Sam Weinig.

Source/WebCore:

Detect if the exit from fullscreen was caused by the Done button,
and if so, tell the page to navigate back.

Unfortunately this is not yet testable. It's waiting on the
UI-based device testing in development by the media team.

  • platform/cocoa/WebVideoFullscreenModel.h: Add a finishedWithMedia parameter to

requestFullscreenMode, to indicate if the change in mode is associated with
the closing of the media document.

  • platform/cocoa/WebVideoFullscreenModelVideoElement.h:
  • platform/cocoa/WebVideoFullscreenModelVideoElement.mm:

(WebVideoFullscreenModelVideoElement::requestFullscreenMode): If we're a media
document, and we say we're finished with the media, tell the document
to navigate back a page.

  • platform/ios/WebVideoFullscreenControllerAVKit.mm:

(WebVideoFullscreenControllerContext::requestFullscreenMode):

  • platform/ios/WebVideoFullscreenInterfaceAVKit.mm:

(WebVideoFullscreenInterfaceAVKit::shouldExitFullscreenWithReason):

Source/WebKit2:

  • UIProcess/Cocoa/WebVideoFullscreenManagerProxy.h:
  • UIProcess/Cocoa/WebVideoFullscreenManagerProxy.mm:

(WebKit::WebVideoFullscreenModelContext::requestFullscreenMode):
(WebKit::WebVideoFullscreenManagerProxy::requestFullscreenMode):

  • WebProcess/cocoa/WebVideoFullscreenManager.h:
  • WebProcess/cocoa/WebVideoFullscreenManager.messages.in:
  • WebProcess/cocoa/WebVideoFullscreenManager.mm:

(WebKit::WebVideoFullscreenManager::requestFullscreenMode):

4:37 PM Changeset in webkit [209746] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit/mac

Remove unused workaround for Silverlight
https://bugs.webkit.org/show_bug.cgi?id=165773

Patch by Alex Christensen <achristensen@webkit.org> on 2016-12-12
Reviewed by Dean Jackson.

  • Plugins/WebNetscapePluginView.mm:

(-[WebNetscapePluginView _workaroundSilverlightFullscreenBug:]): Deleted.
This code was introduced in January 2010. Microsoft fixed their bug shortly thereafter.
Allowing 6 years for users to update Silverlight is more than enough.
Safari doesn't even use WebKit1 for this any more.
I need this to be removed because this is the only non-WebGL code that needs to link against
the OpenGL framework, and I'm changing how that is done to link only through ANGLE instead.

4:35 PM Changeset in webkit [209745] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

Infinite recursion when viewport is set to the size of the content but the content overflows the viewport.
https://bugs.webkit.org/show_bug.cgi?id=165775
rdar://problem/29366628

Reviewed by Simon Fraser.

In certain cases when the viewport is sized to accomodate the content and
the content always overflows the viewport, we might end up in recursive FrameView::layout calls.
This is specific to content with viewport units, because we always invalidate elements with vw/vh units on
viewport size change. However if this viewport size change is in response to content size change (layout),
invalidating elements could trigger synchronous layout, while we are still inside this current layout.
This is very similar to the m_setNeedsLayoutWasDeferred case and they should eventually be merged.
It also means that we might be behind by one layout on elements with vw/vh units (fixed layout only though).

Currently not testable.

  • page/FrameView.cpp:

(WebCore::FrameView::availableContentSizeChanged):

4:28 PM Changeset in webkit [209744] by Keith Rollin
  • 8 edits in trunk/Source/WebCore

Memory warning logging appears to capture resident footprint, missing compress/swap.
https://bugs.webkit.org/show_bug.cgi?id=165533
<rdar://problem/29318410>

Reviewed by Andreas Kling.

Have platformMemoryUsage return both resident and resident + swapped
values. This is now returned as a struct in a std::optional to better
support cases where values cannot or are not returned. Report these
values in logMemoryUsageChange.

Remove most of the ReliefLogger instances and their messages. We no
longer free up fastMalloc memory after each memory-release operation,
so there are no memory regions returned to the OS. Instead, we now
free up fastMalloc memory regions at the end of all memory-releasing
operations in one fell swoop and report a grand total of memory
returned.

No new tests -- no changes to user accessible functionality.

  • page/MemoryRelease.cpp:

(WebCore::releaseNoncriticalMemory):
(WebCore::releaseCriticalMemory):
(WebCore::releaseMemory):

  • page/cocoa/MemoryReleaseCocoa.mm:

(WebCore::platformReleaseMemory):

  • platform/MemoryPressureHandler.cpp:

(WebCore::MemoryPressureHandler::releaseMemory):
(WebCore::MemoryPressureHandler::ReliefLogger::logMemoryUsageChange):
(WebCore::MemoryPressureHandler::ReliefLogger::platformMemoryUsage):

  • platform/MemoryPressureHandler.h:

(WebCore::MemoryPressureHandler::ReliefLogger::ReliefLogger):
(WebCore::MemoryPressureHandler::ReliefLogger::~ReliefLogger):
(WebCore::MemoryPressureHandler::ReliefLogger::loggingEnabled):

  • platform/cocoa/MemoryPressureHandlerCocoa.mm:

(WebCore::MemoryPressureHandler::platformReleaseMemory):
(WebCore::MemoryPressureHandler::ReliefLogger::platformMemoryUsage):

  • platform/linux/MemoryPressureHandlerLinux.cpp:
  • platform/win/MemoryPressureHandlerWin.cpp:

(WebCore::MemoryPressureHandler::ReliefLogger::platformMemoryUsage):

4:23 PM Changeset in webkit [209743] by matthew_hanson@apple.com
  • 5 edits in tags/Safari-603.1.15.1

Merge r209485. rdar://problem/29502055

4:23 PM Changeset in webkit [209742] by matthew_hanson@apple.com
  • 5 edits in tags/Safari-603.1.15.1

Merge r209479. rdar://problem/29502055

4:21 PM Changeset in webkit [209741] by matthew_hanson@apple.com
  • 5 edits in tags/Safari-603.1.14.4

Merge r209485. rdar://problem/29502055

4:21 PM Changeset in webkit [209740] by matthew_hanson@apple.com
  • 5 edits in tags/Safari-603.1.14.4

Merge r209479. rdar://problem/29502055

4:19 PM Changeset in webkit [209739] by matthew_hanson@apple.com
  • 5 edits in tags/Safari-603.1.14.4/Source

Versioning.

4:12 PM Changeset in webkit [209738] by beidson@apple.com
  • 3 edits
    3 adds in trunk/PerformanceTests

More IndexedDB perf tests.
https://bugs.webkit.org/show_bug.cgi?id=165634

Reviewed by Sam Weinig.

  • IndexedDB/index-multientry.html:
  • IndexedDB/large-number-of-inserts-responsiveness.html: Added.
  • IndexedDB/large-number-of-inserts.html: Added.
  • IndexedDB/objectstore-cursor.html: Added. Runtime cut in 1/4th compared to r209672.
  • resources/runner.js:
4:11 PM Changeset in webkit [209737] by matthew_hanson@apple.com
  • 1 copy in tags/Safari-603.1.14.4

New tag.

4:07 PM Changeset in webkit [209736] by timothy_horton@apple.com
  • 5 edits in trunk/Source/WebKit2

Provide SPI to avoid blocking on painting when coming into view
https://bugs.webkit.org/show_bug.cgi?id=165780
<rdar://problem/29009559>

Reviewed by Simon Fraser.

By default, when parenting a WKWebView which was previously in-window,
we block on painting to ensure that we don't flash stale content.
We added SPI to disable this behavior to WKWebViewConfiguration, but
some clients might want the behavior most of the time, but sometimes
instead want to not block the UI process main thread, but instead do
their own work (e.g. removing a snapshot) when painting eventually occurs.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _doAfterNextPresentationUpdateWithoutWaitingForPainting:]):

  • UIProcess/API/Cocoa/WKWebViewPrivate.h:

Tell WebPageProxy not to block on painting next time we are parented,
and use doAfterNextPresentationUpdate to call the block when the painting
does eventually happen. This SPI must be called before - but in the same
runloop cycle - the WKWebView is brought back in-window to work correctly.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::dispatchActivityStateChange):

  • UIProcess/WebPageProxy.h:

(WebKit::WebPageProxy::skipWaitingForPaintAfterNextViewDidMoveToWindow):
If we would block because we're coming in-window, but the bit to skip
blocking the next time we get brought in-window is set, reset the bit,
and avoid blocking.

3:56 PM Changeset in webkit [209735] by Matt Baker
  • 2 edits in trunk/LayoutTests

Unreviewed, follow-up after r209706.

  • inspector/debugger/breakpoint-action-log.html:

Add missing test case description.

3:36 PM Changeset in webkit [209734] by Joseph Pecoraro
  • 2 edits
    3 adds in trunk/LayoutTests

Web Inspector: Add tests for Fetch API Network Data (CORs, Opaque Responses, Filtered Headers)
https://bugs.webkit.org/show_bug.cgi?id=165683

Reviewed by Brian Burg.

  • http/tests/inspector/network/fetch-network-data-expected.txt: Added.
  • http/tests/inspector/network/fetch-network-data.html: Added.
  • http/tests/inspector/network/resources/cors-data.pl: Added.
  • http/tests/inspector/resources/inspector-test.js:
3:27 PM Changeset in webkit [209733] by Chris Dumez
  • 14 edits
    1 delete in trunk/Source

Document.visibilityState should use an IDL string enumeration
https://bugs.webkit.org/show_bug.cgi?id=165774

Reviewed by Daniel Bates.

Source/WebCore:

Document.visibilityState should use an IDL string enumeration:

No new tests, there should be no Web-exposed behavior change.

  • CMakeLists.txt:
  • Modules/vibration/NavigatorVibration.cpp:

(WebCore::NavigatorVibration::vibrate):

  • WebCore.xcodeproj/project.pbxproj:
  • dom/Document.cpp:

(WebCore::Document::hidden):
(WebCore::Document::pageVisibilityState): Deleted.
(WebCore::Document::visibilityState): Deleted.

  • dom/Document.h:
  • dom/Document.idl:
  • page/Page.cpp:

(WebCore::Page::visibilityState):

  • page/PageVisibilityState.cpp: Removed.
  • page/PageVisibilityState.h:

(): Deleted.

Source/WebKit/mac:

  • DOM/DOMDocument.mm:

(-[DOMDocument visibilityState]):

  • WebView/WebView.mm:

(kit):

Source/WebKit2:

  • Shared/API/c/WKSharedAPICast.h:

(WebKit::toPageVisibilityState):

3:25 PM Changeset in webkit [209732] by Ryan Haddad
  • 5 edits
    40 adds in branches/safari-602-branch

Merge r209540.

3:21 PM Changeset in webkit [209731] by matthew_hanson@apple.com
  • 5 edits in tags/Safari-603.1.15.1/Source

Versioning.

3:12 PM Changeset in webkit [209730] by jer.noble@apple.com
  • 16 edits
    2 deletes in trunk

Remove implementation of legacy Mozilla-based Fullscreen API.
https://bugs.webkit.org/show_bug.cgi?id=165689
Source/WebCore:

Reviewed by Eric Carlson.

Alias the legacy webkitRequestFull_S_creen() function on Element to webkitRequestFull_s_creen().
Remove the custom behavior in Document::requestFullScreenForElement() to handle the legacy path.

  • dom/Document.cpp:

(WebCore::Document::requestFullScreenForElement):

  • dom/Document.h:
  • dom/Element.cpp:

(WebCore::Element::webkitRequestFullscreen):
(WebCore::Element::webkitRequestFullScreen): Deleted.

  • dom/Element.h:
  • dom/Element.idl:
  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::enterFullscreen):

  • html/shadow/MediaControlElements.cpp:

(WebCore::MediaControlFullscreenButtonElement::defaultEventHandler):

Source/WebKit/mac:

<rdar://problem/29603053>

Reviewed by Eric Carlson.

  • DOM/DOMElement.mm:

(-[DOMElement webkitRequestFullScreen:]):

LayoutTests:

Reviewed by Eric Carlson.

  • fullscreen/full-screen-css-expected.txt:
  • fullscreen/full-screen-css.html:
  • fullscreen/full-screen-keyboard-disabled-expected.txt: Removed.
  • fullscreen/full-screen-keyboard-disabled.html: Removed.
  • fullscreen/full-screen-twice-expected.txt:
  • fullscreen/full-screen-twice.html:
  • js/dom/dom-static-property-for-in-iteration-expected.txt:
3:11 PM Changeset in webkit [209729] by matthew_hanson@apple.com
  • 1 copy in tags/Safari-603.1.15.1

New tag.

3:11 PM Changeset in webkit [209728] by mark.lam@apple.com
  • 4 edits in trunk/Source/JavaScriptCore

Rename BytecodeGenerator's ControlFlowContext to ControlFlowScope.
https://bugs.webkit.org/show_bug.cgi?id=165777

Reviewed by Keith Miller.

The existing code sometimes refer to ControlFlowContext (and associated references)
as context, and sometimes as scope. Let's be consistent and always call it a scope.

Also renamed push/popScopedControlFlowContext() to push/popLocalControlFlowScope()
because these are only used when we inc/dec the m_localScopeDepth.

  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::initializeVarLexicalEnvironment):
(JSC::BytecodeGenerator::pushLexicalScopeInternal):
(JSC::BytecodeGenerator::popLexicalScopeInternal):
(JSC::BytecodeGenerator::emitPushWithScope):
(JSC::BytecodeGenerator::emitPopWithScope):
(JSC::BytecodeGenerator::pushFinallyControlFlowScope):
(JSC::BytecodeGenerator::pushIteratorCloseControlFlowScope):
(JSC::BytecodeGenerator::popFinallyControlFlowScope):
(JSC::BytecodeGenerator::popIteratorCloseControlFlowScope):
(JSC::BytecodeGenerator::emitComplexPopScopes):
(JSC::BytecodeGenerator::emitPopScopes):
(JSC::BytecodeGenerator::pushLocalControlFlowScope):
(JSC::BytecodeGenerator::popLocalControlFlowScope):
(JSC::BytecodeGenerator::emitEnumeration):
(JSC::BytecodeGenerator::pushFinallyContext): Deleted.
(JSC::BytecodeGenerator::pushIteratorCloseContext): Deleted.
(JSC::BytecodeGenerator::popFinallyContext): Deleted.
(JSC::BytecodeGenerator::popIteratorCloseContext): Deleted.
(JSC::BytecodeGenerator::pushScopedControlFlowContext): Deleted.
(JSC::BytecodeGenerator::popScopedControlFlowContext): Deleted.

  • bytecompiler/BytecodeGenerator.h:
  • bytecompiler/NodesCodegen.cpp:

(JSC::TryNode::emitBytecode):

2:06 PM Changeset in webkit [209727] by fpizlo@apple.com
  • 6 edits
    2 adds in trunk/Source/JavaScriptCore

GC scheduler should avoid consecutive pauses
https://bugs.webkit.org/show_bug.cgi?id=165758

Reviewed by Michael Saboff.

This factors out the scheduler from lambdas in Heap::markToFixpoint to an actual class.
It's called the SpaceTimeScheduler because it is a linear controller that ties the
amount of time you spend on things to the amount of space you are using.

This patch uses this refactoring to fix a bug where the GC would pause even though we
still had time during a mutator timeslice. This is a 15% improvement on
JetStream/splay-latency. Seems neutral on everything else. However, it's not at all
clear if this is the right policy or not since retreating wavefront can sometimes be so
sensitive to scheduling decisions. For this reason, there is a tunable option that lets
you decide how long the GC will sit idle before the start of its timeslice.

So, we can revert this policy change in this patch without reverting the patch.

  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • heap/Heap.cpp:

(JSC::Heap::markToFixpoint):

  • heap/Heap.h:
  • heap/SpaceTimeScheduler.cpp: Added.

(JSC::SpaceTimeScheduler::Decision::targetMutatorUtilization):
(JSC::SpaceTimeScheduler::Decision::targetCollectorUtilization):
(JSC::SpaceTimeScheduler::Decision::elapsedInPeriod):
(JSC::SpaceTimeScheduler::Decision::phase):
(JSC::SpaceTimeScheduler::Decision::shouldBeResumed):
(JSC::SpaceTimeScheduler::Decision::timeToResume):
(JSC::SpaceTimeScheduler::Decision::timeToStop):
(JSC::SpaceTimeScheduler::SpaceTimeScheduler):
(JSC::SpaceTimeScheduler::snapPhase):
(JSC::SpaceTimeScheduler::currentDecision):

  • heap/SpaceTimeScheduler.h: Added.

(JSC::SpaceTimeScheduler::Decision::Decision):
(JSC::SpaceTimeScheduler::Decision::operator bool):

  • runtime/Options.h:
1:49 PM Changeset in webkit [209726] by hyatt@apple.com
  • 5 edits in trunk/Source/WebCore

[CSS Parser] MediaQueryParser should use Ref and not RefPtr
https://bugs.webkit.org/show_bug.cgi?id=165771

Reviewed by Simon Fraser.

  • css/MediaList.cpp:

(WebCore::MediaQuerySet::create):

  • css/parser/CSSParserImpl.cpp:

(WebCore::CSSParserImpl::consumeImportRule):
(WebCore::CSSParserImpl::consumeMediaRule):

  • css/parser/MediaQueryParser.cpp:

(WebCore::MediaQueryParser::parseMediaQuerySet):
(WebCore::MediaQueryParser::parseMediaCondition):
(WebCore::MediaQueryParser::parseInternal):

  • css/parser/MediaQueryParser.h:
1:46 PM Changeset in webkit [209725] by msaboff@apple.com
  • 105 edits
    14 adds in trunk

REGRESSION(r209653): speedometer crashes making virtual slow path tailcalls
https://bugs.webkit.org/show_bug.cgi?id=165748

Reviewed by Filip Pizlo.

JSTests:

New regression test.

  • stress/regress-165748.js: Added.

(sum1):
(sum2):
(sum3):
(sum4):
(sum5):
(sum6):
(tailCaller):
(test):

Source/JavaScriptCore:

The virtual slow path for tailcalls always passes arguments on the stack.
The fix here is to link to the stack argument entrypoint instead of a register
argument entrypoint.

While fixing this bug, I found that we weren't clearing the code origin when
shuffling the call frame for a register argument tailcall.

Also rolling back in r209653, r209654, r209663, and r209673.

  • jit/CallFrameShuffler.cpp:

(JSC::CallFrameShuffler::prepareAny):

  • jit/ThunkGenerators.cpp:

(JSC::virtualThunkFor):

Source/WTF:

Rolling back in r209653, r209654, r209663, and r209673.

  • wtf/Platform.h:
1:26 PM Changeset in webkit [209724] by mark.lam@apple.com
  • 2 edits in trunk/JSTests

Debug JSC test timeout: stress/string-prototype-replace-should-throw-out-of-memory-error-when-using-too-much-memory.js.ftl-no-cjit.
https://bugs.webkit.org/show_bug.cgi?id=164630

Reviewed by Keith Miller.

Speculative fix for timeout issue. It looks like this test just runs a bit
slower on debug builds. So, we'll give it a little more time to run.

  • stress/string-prototype-replace-should-throw-out-of-memory-error-when-using-too-much-memory.js:
1:03 PM Changeset in webkit [209723] by mark.lam@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

Rename BytecodeGenerator's m_symbolTableStack to m_lexicalScopeStack.
https://bugs.webkit.org/show_bug.cgi?id=165768

Reviewed by Saam Barati.

The lexical scope in "m_lexicalScopeStack" here refers to a pair of { } in the
source code that bounds the scope of variables.

There are 4 places in the code where we call m_symbolTableStack.append() to
append a new stack entry. In only 3 of the 4 cases, a symbol table is provided
in the new stack entry. In all 4 cases, a scope register is provided in the new
stack entry.

Also, 3 of the 4 functions that appends an entry to this stack are named:

  1. initializeVarLexicalEnvironment()
  2. pushLexicalScopeInternal()
  3. emitPushWithScope()

The 4th function is the BytecodeGenerator constructor where it pushes the scope
for a module environment.

Based on these details, m_lexicalScopeStack is a better name for this stack than
m_symbolTableStack.

  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::BytecodeGenerator):
(JSC::BytecodeGenerator::initializeArrowFunctionContextScopeIfNeeded):
(JSC::BytecodeGenerator::initializeVarLexicalEnvironment):
(JSC::BytecodeGenerator::pushLexicalScopeInternal):
(JSC::BytecodeGenerator::initializeBlockScopedFunctions):
(JSC::BytecodeGenerator::hoistSloppyModeFunctionIfNecessary):
(JSC::BytecodeGenerator::popLexicalScopeInternal):
(JSC::BytecodeGenerator::prepareLexicalScopeForNextForLoopIteration):
(JSC::BytecodeGenerator::variable):
(JSC::BytecodeGenerator::resolveType):
(JSC::BytecodeGenerator::emitResolveScope):
(JSC::BytecodeGenerator::emitPushWithScope):
(JSC::BytecodeGenerator::emitPopWithScope):
(JSC::BytecodeGenerator::pushFinallyContext):
(JSC::BytecodeGenerator::pushIteratorCloseContext):
(JSC::BytecodeGenerator::emitComplexPopScopes):
(JSC::BytecodeGenerator::popTryAndEmitCatch):
(JSC::BytecodeGenerator::emitPushFunctionNameScope):

  • bytecompiler/BytecodeGenerator.h:
12:55 PM Changeset in webkit [209722] by sbarati@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

Unreviewed. Try to fix the cloop build.

  • interpreter/StackVisitor.cpp:

(JSC::StackVisitor::Frame::calleeSaveRegisters):

  • interpreter/StackVisitor.h:
12:49 PM Changeset in webkit [209721] by Manuel Rego Casasnovas
  • 7 edits in trunk/LayoutTests

[css-grid] Add some test cases that were removed in r209562
https://bugs.webkit.org/show_bug.cgi?id=165750

Reviewed by Sergio Villar Senin.

Some valid test cases were removed in r209562, this patch adds them back.

  • fast/css-grid-layout/grid-template-shorthand-get-set.html: The specified style is now preserved,

so we've to use a different value for it (as it doesn't merge the line names).

  • fast/css-grid-layout/resources/grid-columns-rows-get-set.js: Flexible sizes must be non-negative,

but 0fr should be accepted (this is new as it was not working like that with the old parser).
A space between the dimension and the unit is wrong for flexible sizes.

  • fast/css-grid-layout/resources/non-grid-columns-rows-get-set.js: Ditto.
12:35 PM Changeset in webkit [209720] by Ryan Haddad
  • 5 edits in branches/safari-602-branch/Tools

Merge r209216. rdar://problem/29560678

12:17 PM Changeset in webkit [209719] by Alan Bujtas
  • 3 edits
    2 adds in trunk

The CSS 'columns' property when set on the <body> element makes short columns
https://bugs.webkit.org/show_bug.cgi?id=164891

Reviewed by Darin Adler and David Hyatt.

Source/WebCore:

Currently when the body has auto height, we use the height of the viewport as
the available height for the columns defined on the body element.
This is the desired behaviour for paginated content.
However in case of a simple, non-paginated multicolumn context, we should let the columns grow beyond
the viewport vertically. This is also what other browsers do.
This patch sets the available height on columns (in non-paginated context) only if the logical height
is defined (we are right before layout, so applying non-defined values does not make much sense anyway).
The reason why it is only broken on the <body> is because it stretches to the viewport by
default (see stretchesToViewport()) while other block renderers do not.

Test: fast/multicol/columns-on-body.html

  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::checkForPaginationLogicalHeightChange):

LayoutTests:

  • fast/multicol/columns-on-body-expected.html: Added.
  • fast/multicol/columns-on-body.html: Added.
11:55 AM Changeset in webkit [209718] by hyatt@apple.com
  • 36 edits
    23 adds in trunk

[CSS Parser] Implement deferred parsing of properties, @media, @supports and @keyframes
https://bugs.webkit.org/show_bug.cgi?id=165743

Reviewed by Darin Adler.

Source/WebCore:

Added new tests in fast/css/deferred-parsing.

This patch implements deferred parsing in CSS. By default, when parsing
author stylesheets, the parser goes into a deferred mode where it leaves
the declaration block of all style rules unparsed initially. Instead of
creating and setting an ImmutableStyleProperties object on the StyleRule,
the parser creates a DeferredStyleProperties object instead that is
capable of calling into CSSDeferredParser to parse the properties and values
only when the properties are finally asked for.

In addition, this patch defers the parsing of the interior of @media,
@supports, and @keyframes rules. @media blocks that are never matched will
never parse any of the rules inside. @supports conditions for unsupported
features will also not be parsed. For @keyframes, if the animation is never
referenced/used, then the @keyframes child rules will never be parsed.

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

Add CSSDeferredParser to the build.

  • css/CSSFontFaceSet.cpp:

(WebCore::CSSFontFaceSet::matchingFaces):
Patched to drop the StyleSheetContents* argument from parseValue, since it
is no longer needed.

  • css/CSSKeyframesRule.cpp:

(WebCore::StyleRuleKeyframes::StyleRuleKeyframes):
(WebCore::StyleRuleKeyframes::parseDeferredRulesIfNeeded):
(WebCore::StyleRuleKeyframes::keyframes):
(WebCore::StyleRuleKeyframes::wrapperAppendKeyframe):
(WebCore::StyleRuleKeyframes::wrapperRemoveKeyframe):
(WebCore::StyleRuleKeyframes::findKeyframeIndex):

  • css/CSSKeyframesRule.h:

Keyframes now hold both a keyframes Vector and a DeferredStyleGroupRuleList
object. The keyframes vector won't be populated until it is needed, and the
population is done by DeferredStyleGroupRuleList, which holds both the original
CSSParserTokenRange of the keyframes rule interior, and a references to the
CSSDeferredParser that will do the parsing.

  • css/DOMCSSNamespace.cpp:

(WebCore::DOMCSSNamespace::supports):
Patched to drop the StyleSheetContents* argument from parseValue, since it
is no longer needed.

  • css/ElementRuleCollector.cpp:

(WebCore::ElementRuleCollector::collectMatchingRulesForList):
ElementRuleCollector tests to see if a rule is empty by counting properties(),
but we don't want to initiate deferred parsing just to check this. Instead we
invoke propertiesWithoutDeferredParsing, which will hand back a nullptr if
the properties haven't been parsed yet. In order to ensure this optimization
continues to work, any rules whose interiors consist of only whitespace do
not get deferred.

  • css/FontFace.cpp:

(WebCore::FontFace::setVariant):

  • css/PropertySetCSSStyleDeclaration.cpp:

(WebCore::PropertySetCSSStyleDeclaration::setProperty):
(WebCore::PropertySetCSSStyleDeclaration::setPropertyInternal):
Patched to drop the StyleSheetContents* argument from parseValue, since it
is no longer needed.

  • css/StyleProperties.cpp:

(WebCore::MutableStyleProperties::MutableStyleProperties):
(WebCore::MutableStyleProperties::setProperty):
(WebCore::DeferredStyleProperties::create):
(WebCore::DeferredStyleProperties::DeferredStyleProperties):
(WebCore::DeferredStyleProperties::~DeferredStyleProperties):
(WebCore::DeferredStyleProperties::parseDeferredProperties):

  • css/StyleProperties.h:

(WebCore::StylePropertiesBase::type):
(WebCore::StylePropertiesBase::cssParserMode):
(WebCore::StylePropertiesBase::StylePropertiesBase):
(WebCore::StyleProperties::isMutable):
(WebCore::StyleProperties::StyleProperties):
(WebCore::StylePropertiesBase::deref):
(isType):
(WebCore::StyleProperties::cssParserMode): Deleted.
(WebCore::StyleProperties::deref): Deleted.
Right now StyleProperties has two subclasses, ImmutableStyleProperties (which
is created by the parser when not deferring), and MutableStyleProperties (used
when making changes and doing DOM Manipulations).

This patch adds a new base class called StylePropertiesBase, and StyleProperties
now derives from it. DeferredStyleProperties derives from this base. The members
of StyleProperties have been moved up into StylePropertiesBase.

The m_isMutable bit, used to determine the type for downcasting has been enhanced
to m_type (2 bits), since there are now three possible subclasses.

  • css/StyleRule.cpp:

(WebCore::StyleRule::StyleRule):
(WebCore::StyleRule::properties):
(WebCore::StyleRule::mutableProperties):
(WebCore::StyleRule::splitIntoMultipleRulesWithMaximumSelectorComponentCount):
Patched to ensure that when properties() are accessed, that if the current
stored StylePropertyBase in the rule is a DeferredStyleProperties, we then
parse and replace DeferredStyleProperties with ImmutableStyleProperties on the
rule. By using a common base class, we avoid increasing memory usage in
StyleRule.

(WebCore::DeferredStyleGroupRuleList::create):
(WebCore::DeferredStyleGroupRuleList::DeferredStyleGroupRuleList):
(WebCore::DeferredStyleGroupRuleList::parseDeferredRules):
(WebCore::DeferredStyleGroupRuleList::parseDeferredKeyframes):
DeferredStyleGroupList is used to handle deferred parsing of objects with
child rules. These include @media, @supports and @keyframes.

(WebCore::StyleRuleGroup::StyleRuleGroup):
(WebCore::StyleRuleGroup::childRules):
(WebCore::StyleRuleGroup::wrapperInsertRule):
(WebCore::StyleRuleGroup::wrapperRemoveRule):
(WebCore::StyleRuleGroup::parseDeferredRulesIfNeeded):
(WebCore::StyleRuleMedia::StyleRuleMedia):
(WebCore::StyleRuleSupports::StyleRuleSupports):
StyleRuleGroup now holds both a child rules Vector and a
DeferredStyleGroupRuleList. If DeferredStyleGroupRuleList is set, then
when the childRules are finally accessed, we will populate the childRules
Vector and then null out the DeferredStyleGroupRuleList.

  • css/StyleRule.h:

(WebCore::StyleRule::propertiesWithoutDeferredParsing):
(WebCore::StyleRuleGroup::childRulesWithoutDeferredParsing):
(WebCore::StyleRuleGroup::childRules): Deleted.
Add new accesors for fetching properties and child rules without causing
deferred parsing to happen.

  • css/StyleSheetContents.cpp:

(WebCore::StyleSheetContents::parseAuthorStyleSheet):
(WebCore::StyleSheetContents::parseString):
Patched to turn on deferred parsing for author sheets and for all
non-UA stylesheets parsed from a string (e.g., <style>).

(WebCore::traverseSubresourcesInRules):
The broken resource check was aggressively accessing properties(). Patch
it to call propertiesWithoutDeferredParsing() instead so that it doesn't
defeat the new optimization.

  • css/WebKitCSSMatrix.cpp:

(WebCore::WebKitCSSMatrix::setMatrixValue):
Patched to drop the StyleSheetContents* argument from parseValue, since it
is no longer needed.

  • css/parser/CSSDeferredParser.cpp: Added.

(WebCore::CSSDeferredParser::CSSDeferredParser):
(WebCore::CSSDeferredParser::parseDeclaration):
(WebCore::CSSDeferredParser::parseRuleList):
(WebCore::CSSDeferredParser::parseKeyframeList):

  • css/parser/CSSDeferredParser.h: Added.

(WebCore::CSSDeferredParser::create):
(WebCore::CSSDeferredParser::tokenizer):
(WebCore::CSSDeferredParser::mode):
(WebCore::CSSDeferredParser::context):
(WebCore::CSSDeferredParser::styleSheet):
The CSSDeferredParser. It caches the original CSSTokenizer used to parse
the sheet, which in turn retains all the tokens and escaped strings. Because
the CSSDeferredParser is referenced by all the rules that have yet to parse,
it will stay alive until all rules in the stylesheet has been fully parsed.

The parser receives CSSParserTokenRanges from DeferredStyleProperties or
DeferredStyleGroupRuleList and feeds them to CSSParserImpl, which then
is able to do the parsing as it would have occurred originally had the
range not been deferred.

  • css/parser/CSSParser.cpp:

(WebCore::CSSParser::parseSheet):
(WebCore::CSSParser::parseSupportsCondition):
(WebCore::CSSParser::parseSingleValue):
(WebCore::CSSParser::parseValue):

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

(WebCore::CSSParserFastPaths::isValidKeywordPropertyAndValue):
(WebCore::parseKeywordValue):
(WebCore::CSSParserFastPaths::maybeParseValue):

  • css/parser/CSSParserFastPaths.h:

Drop the StyleSheetContents* argument from the methods that no longer need
them.

  • css/parser/CSSParserImpl.cpp:

(WebCore::CSSParserImpl::CSSParserImpl):
(WebCore::CSSParserImpl::tokenizer):
(WebCore::CSSParserImpl::parseValue):
(WebCore::CSSParserImpl::parseCustomPropertyValue):
(WebCore::CSSParserImpl::parseDeclarationList):
(WebCore::CSSParserImpl::parseInlineStyleDeclaration):
(WebCore::CSSParserImpl::parseRule):
(WebCore::CSSParserImpl::parseStyleSheet):
(WebCore::CSSParserImpl::parseDeclarationListForInspector):
(WebCore::CSSParserImpl::parseStyleSheetForInspector):
(WebCore::CSSParserImpl::consumeQualifiedRule):
(WebCore::CSSParserImpl::consumeMediaRule):
(WebCore::CSSParserImpl::consumeSupportsRule):
(WebCore::CSSParserImpl::consumeKeyframesRule):
(WebCore::CSSParserImpl::consumeStyleRule):
Drop the StyleSheetContents* argument from the methods that no longer need
them.

(WebCore::CSSParserImpl::createDeferredStyleProperties):
(WebCore::CSSParserImpl::parseDeferredDeclaration):
(WebCore::CSSParserImpl::parseDeferredRuleList):
(WebCore::CSSParserImpl::parseDeferredKeyframeList):
The methods that handle deferred parsing. They make sure to initialize
new CSSParserImpls with the original deferred parser, and then call existing
methods to do the parsing.

  • css/parser/CSSParserImpl.h:

Patched to remove StyleSheetContents* arguments from some methods and
to add the new deferred parsing methods.

  • css/parser/CSSParserTokenRange.cpp:

(WebCore::CSSParserTokenRange::consumeBlockCheckingForEditability):

  • css/parser/CSSParserTokenRange.h:

In order to preserve the editability optimization from r180867, when
a style rule's block is consumed, we use a special method that looks
for -webkit-user-modify tokens. If one is seen, then the editability
optimization is turned off. Because we do this at the token level,
the optimization keeps working even if properties don't get parsed.

  • css/parser/CSSPropertyParser.cpp:

(WebCore::CSSPropertyParser::parseSingleValue):
(WebCore::CSSPropertyParser::parseFontFaceDescriptor):
(WebCore::CSSPropertyParser::consumeFont):
(WebCore::CSSPropertyParser::parseShorthand):
Patched to remove StyleSheetContents* arguments now that the editability
check is in CSSTokenizer instead.

  • css/parser/CSSTokenizer.cpp:

(WebCore::CSSTokenizer::tokenRange):

  • css/parser/CSSTokenizer.h:

Make tokenRange() const.

  • html/canvas/CanvasRenderingContext2D.cpp:

(WebCore::CanvasRenderingContext2D::setFont):
Patched to drop the StyleSheetContents* argument.

  • testing/Internals.cpp:

(WebCore::deferredStyleRulesCountForList):
(WebCore::Internals::deferredStyleRulesCount):
(WebCore::deferredGroupRulesCountForList):
(WebCore::Internals::deferredGroupRulesCount):
(WebCore::deferredKeyframesRulesCountForList):
(WebCore::Internals::deferredKeyframesRulesCount):

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

Add new testing methods that can count the deferred style rules and
group child rule lists. These methods are used by the new layout tests.

LayoutTests:

  • fast/css/deferred-parsing: Added.
  • fast/css/deferred-parsing/dynamic-external-style-expected.txt: Added.
  • fast/css/deferred-parsing/dynamic-external-style.html: Added.
  • fast/css/deferred-parsing/dynamic-style-in-document-expected.txt: Added.
  • fast/css/deferred-parsing/dynamic-style-in-document.html: Added.
  • fast/css/deferred-parsing/hover-test-expected.txt: Added.
  • fast/css/deferred-parsing/hover-test.html: Added.
  • fast/css/deferred-parsing/keyframes-rule-expected.txt: Added.
  • fast/css/deferred-parsing/keyframes-rule.html: Added.
  • fast/css/deferred-parsing/media-print-expected.txt: Added.
  • fast/css/deferred-parsing/media-print.html: Added.
  • fast/css/deferred-parsing/nth-of-type-expected.txt: Added.
  • fast/css/deferred-parsing/nth-of-type.html: Added.
  • fast/css/deferred-parsing/resources: Added.
  • fast/css/deferred-parsing/resources/basic-sheet.css: Added.
  • fast/css/deferred-parsing/simple-external-style-expected.txt: Added.
  • fast/css/deferred-parsing/simple-external-style.html: Added.
  • fast/css/deferred-parsing/simple-style-in-document-expected.txt: Added.
  • fast/css/deferred-parsing/simple-style-in-document.html: Added.
  • fast/css/deferred-parsing/supports-rule-expected.txt: Added.
  • fast/css/deferred-parsing/supports-rule.html: Added.
11:49 AM Changeset in webkit [209717] by Antti Koivisto
  • 4 edits in trunk/Tools

Enable network cache speculative revalidation in MiniBrowser
https://bugs.webkit.org/show_bug.cgi?id=165616

Reviewed by Darin Adler.

Match Safari. Also add a menu item to disable it.

  • MiniBrowser/mac/AppDelegate.m:

(defaultConfiguration):

  • MiniBrowser/mac/SettingsController.h:
  • MiniBrowser/mac/SettingsController.m:

(-[SettingsController _populateMenu]):
(-[SettingsController validateMenuItem:]):
(-[SettingsController networkCacheSpeculativeRevalidationDisabled]):
(-[SettingsController toggleNetworkCacheSpeculativeRevalidationDisabled:]):

11:04 AM WebInspectorCodingStyleGuide edited by Joseph Pecoraro
Removed section about bugs that have been fixed. (diff)
11:02 AM WebInspectorCodingStyleGuide edited by Joseph Pecoraro
Added style notes for trivial getters. (diff)
10:59 AM Changeset in webkit [209716] by commit-queue@webkit.org
  • 3 edits
    3 deletes in trunk/PerformanceTests

Unreviewed, rolling out r209672.
https://bugs.webkit.org/show_bug.cgi?id=165766

IndexedDB/objectstore-cursor.html perf test always times out
(Requested by ap on #webkit).

Reverted changeset:

"More IndexedDB perf tests."
https://bugs.webkit.org/show_bug.cgi?id=165634
http://trac.webkit.org/changeset/209672

10:42 AM Changeset in webkit [209715] by dino@apple.com
  • 5 edits
    3 adds in trunk

Autoplay isn't working in iPhone MediaDocuments
https://bugs.webkit.org/show_bug.cgi?id=165710
<rdar://problems/29606761>

Reviewed by Darin Adler.
Source/WebCore:

Our silent video autoplay detection disabled autoplay
of videos in MediaDocuments.

Test: media/ios/autoplay-only-in-main-document.html

  • html/MediaElementSession.cpp:

(WebCore::MediaElementSession::playbackPermitted):
Return true if we're in a top-level media document.

LayoutTests:

  • media/ios/autoplay-only-in-main-document.html: Make sure that

an iframe pointing to media is not autoplayed.

10:18 AM Changeset in webkit [209714] by ap@apple.com
  • 2 edits in trunk/Tools

ChangeLogs become readonly after resolving a conflict
https://bugs.webkit.org/show_bug.cgi?id=165440
rdar://problem/29491002

Reviewed by Darin Adler.

  • Scripts/resolve-ChangeLogs: (resolveChangeLog): Set correct permissions when

moving the file.

10:17 AM Changeset in webkit [209713] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Marking http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-iframe-in-main-frame.html as flaky on ios-simulator.
https://bugs.webkit.org/show_bug.cgi?id=165691

Unreviewed test gardening.

  • platform/ios-simulator/TestExpectations:
9:38 AM Changeset in webkit [209712] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Rebaseline js/dom/global-constructors-attributes.html for mac-wk1 after r209666.

Unreviewed test gardening.

  • platform/mac-wk1/js/dom/global-constructors-attributes-expected.txt:
9:24 AM Changeset in webkit [209711] by Matt Baker
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Cleanup HierarchicalPathComponent
https://bugs.webkit.org/show_bug.cgi?id=165745

Reviewed by Brian Burg.

Prefer toggle for style class names, remove single use CSS class name
constants, and back all properties by the model not the DOM.

  • UserInterface/Views/HierarchicalPathComponent.js:

(WebInspector.HierarchicalPathComponent):
(WebInspector.HierarchicalPathComponent.prototype.get element):
(WebInspector.HierarchicalPathComponent.prototype.get representedObject):
(WebInspector.HierarchicalPathComponent.prototype.get minimumWidth):
(WebInspector.HierarchicalPathComponent.prototype.get forcedWidth):
(WebInspector.HierarchicalPathComponent.prototype.set forcedWidth):
(WebInspector.HierarchicalPathComponent.prototype.get hidden):
(WebInspector.HierarchicalPathComponent.prototype.set hidden):
(WebInspector.HierarchicalPathComponent.prototype.get collapsed):
(WebInspector.HierarchicalPathComponent.prototype.set collapsed):
(WebInspector.HierarchicalPathComponent.prototype.get selectorArrows):
(WebInspector.HierarchicalPathComponent.prototype.set selectorArrows):
(WebInspector.HierarchicalPathComponent.prototype.get previousSibling):
(WebInspector.HierarchicalPathComponent.prototype.set previousSibling):
(WebInspector.HierarchicalPathComponent.prototype.get nextSibling):
(WebInspector.HierarchicalPathComponent.prototype.set nextSibling):
(WebInspector.HierarchicalPathComponent.prototype._updateElementTitleAndText):
(WebInspector.HierarchicalPathComponent.prototype._updateSelectElement.createOption):
(WebInspector.HierarchicalPathComponent.prototype._updateSelectElement):

9:21 AM Changeset in webkit [209710] by fpizlo@apple.com
  • 2 edits in trunk/Tools

Re-enable collectContinuously since it doesn't crash anymore

Rubber stamped by Michael Saboff.

  • Scripts/run-jsc-stress-tests:
9:20 AM Changeset in webkit [209709] by Matt Baker
  • 5 edits in trunk/Source/WebInspectorUI

Web Inspector: Allow keyboard navigation in Heap Snapshot data grids
https://bugs.webkit.org/show_bug.cgi?id=165752

Reviewed by Brian Burg.

  • UserInterface/Views/DOMTreeOutline.css:

(.tree-outline.dom:focus li.selected > span::after):
Use new color variable.

  • UserInterface/Views/HeapSnapshotInstanceDataGridNode.js:

(WebInspector.HeapSnapshotInstanceDataGridNode.prototype.get selectable): Deleted.
Should be selectable.

  • UserInterface/Views/HeapSnapshotInstancesContentView.css:

(.heap-snapshot > .data-grid:focus tr.selected > td .sub-retained):
(.heap-snapshot > .data-grid:focus tr.selected .object-id,):
(.heap-snapshot > .data-grid:focus tr.selected .formatted-string,):
(.heap-snapshot > .data-grid:focus tr.selected td .location):
Selected row text should just be white, except for values that are usually
gray (object ID, object size, and sub-retained size values). These should
be styled like the "= $0" marker in the DOM tree outline.

(.heap-snapshot > .data-grid:matches(:focus, .force-focus) tr.selected td .location): Deleted.
Removed forced-focus reference. Only used by TreeOutlineDataGridSynchronizer.

  • UserInterface/Views/Variables.css:

(:root):
Added --selected-secondary-text-color.

9:10 AM Changeset in webkit [209708] by msaboff@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

FTL: Dumping disassembly requires that code origin is set when making polymorphic tail calls.
https://bugs.webkit.org/show_bug.cgi?id=165747

Reviewed by Filip Pizlo.

Setting the code origin needs to be done for both the fast and slow path as we might need
it when linking a polymorphic or virtual call stub.

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileTailCall):

8:17 AM Changeset in webkit [209707] by pvollan@apple.com
  • 2 edits in trunk/LayoutTests

Unreviewed test gardening.

Update test expectations on Windows for failing tests. These failures are tracked in
https://bugs.webkit.org/show_bug.cgi?id=160447.

  • platform/win/TestExpectations:
3:11 AM Changeset in webkit [209706] by Matt Baker
  • 8 edits
    5 adds in trunk

Web Inspector: Breakpoint Log action should support template literals
https://bugs.webkit.org/show_bug.cgi?id=165116
<rdar://problem/29464765>

Reviewed by Joseph Pecoraro.

Source/WebInspectorUI:

  • Localizations/en.lproj/localizedStrings.js:

New string "${expr} = expression" for breakpoint popover.

  • UserInterface/Controllers/BreakpointLogMessageLexer.js: Added.

To support template literal placeholders in message text, it is necessary
to distinguish plain text parts of the message from placeholders, since
plain text must be escaped.

(WebInspector.BreakpointLogMessageLexer):
(WebInspector.BreakpointLogMessageLexer.prototype.tokenize):
(WebInspector.BreakpointLogMessageLexer.prototype.reset):
(WebInspector.BreakpointLogMessageLexer.prototype._finishPlainText):
(WebInspector.BreakpointLogMessageLexer.prototype._finishExpression):
(WebInspector.BreakpointLogMessageLexer.prototype._appendToken):
(WebInspector.BreakpointLogMessageLexer.prototype._consume):
(WebInspector.BreakpointLogMessageLexer.prototype._peek):
(WebInspector.BreakpointLogMessageLexer.prototype._expression):
(WebInspector.BreakpointLogMessageLexer.prototype._plainText):
(WebInspector.BreakpointLogMessageLexer.prototype._possiblePlaceholder):
(WebInspector.BreakpointLogMessageLexer.prototype._regExpOrStringLiteral):

  • UserInterface/Controllers/DebuggerManager.js:

(WebInspector.DebuggerManager.prototype._debuggerBreakpointOptions):
Build breakpoint "options" object for DebuggerAgent. If a Log action
contains template literal placeholders it is changed to an Evaluate
action, which calls console.log with a template literal.

(WebInspector.DebuggerManager.prototype._setBreakpoint):
Use converted breakpoint options.

  • UserInterface/Main.html:
  • UserInterface/Test.html:

New file.

  • UserInterface/Views/BreakpointActionView.css:

(.breakpoint-action-block-body > .description):
Styles for breakpoint Log action hint text.

  • UserInterface/Views/BreakpointActionView.js:

(WebInspector.BreakpointActionView.prototype._updateBody):
Add Log action hint text element.

LayoutTests:

  • inspector/debugger/breakpoint-action-log-expected.txt: Added.
  • inspector/debugger/breakpoint-action-log.html: Added.

Check that breakpoint log actions support template literal placeholders.

  • inspector/unit-tests/breakpoint-log-message-lexer-expected.txt: Added.
  • inspector/unit-tests/breakpoint-log-message-lexer.html: Added.

Check that the lexer correctly scans breakpoint log action text.

1:10 AM Changeset in webkit [209705] by zandobersek@gmail.com
  • 2 edits in trunk/Source/WebCore

Unreviewed. Fixing build breakage in GStreamer's WebKitCommonEncryptionDecryptorGStreamer.

  • platform/graphics/gstreamer/eme/WebKitCommonEncryptionDecryptorGStreamer.cpp:

(webkitMediaCommonEncryptionDecryptTransformInPlace):
WTF::Seconds should be used instead of std::chrono::seconds.

12:32 AM Changeset in webkit [209704] by Konstantin Tokarev
  • 3 edits in trunk/Source/WTF

Unreviewed, rolling out r209703.
https://bugs.webkit.org/show_bug.cgi?id=165749

Broke Apple builds (Requested by annulen|home on #webkit).

Reverted changeset:

"Unreviewed, use WTF_ATTRIBUTE_PRINTF instead of clang pragma"
http://trac.webkit.org/changeset/209703

Patch by Commit Queue <commit-queue@webkit.org> on 2016-12-12

12:14 AM Changeset in webkit [209703] by Konstantin Tokarev
  • 3 edits in trunk/Source/WTF

Unreviewed, use WTF_ATTRIBUTE_PRINTF instead of clang pragma

  • wtf/PrintStream.cpp:

(WTF::PrintStream::printfVariableFormat):

  • wtf/PrintStream.h:

Dec 11, 2016:

11:44 PM Changeset in webkit [209702] by sbarati@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed. Try to fix the linux build.

  • runtime/StackFrame.h:
11:20 PM Changeset in webkit [209701] by Konstantin Tokarev
  • 2 edits in trunk/Source/WTF

Unreviewed, guarded clang pragma with COMPILER(CLANG) to fix -Werror

  • wtf/PrintStream.cpp:

(WTF::PrintStream::printfVariableFormat):

11:13 PM Changeset in webkit [209700] by Konstantin Tokarev
  • 4 edits in trunk

Unreviewed attempt to fix EFL and Mac/cmake builds after r209665.
https://bugs.webkit.org/show_bug.cgi?id=165686

Source/WebKit2:

  • PlatformEfl.cmake: WebKit2 should precede other target so that right

config.h comes first in include path.

Tools:

  • DumpRenderTree/CMakeLists.txt: WebKit2 should precede other target

so that right config.h comes first in include path.

10:39 PM Changeset in webkit [209699] by hyatt@apple.com
  • 2 edits in trunk/Tools

[CSS Parser] Make sure content extensions initialize AtomicString
https://bugs.webkit.org/show_bug.cgi?id=165737

Reviewed by Darin Adler.

  • TestWebKitAPI/Tests/WebCore/ContentExtensions.cpp:

(TestWebKitAPI::makeBackend):

8:59 PM Changeset in webkit [209698] by Matt Baker
  • 6 edits in trunk/Source/WebInspectorUI

Web Inspector: ThreadTreeElement should have a "Resume" status button when paused
https://bugs.webkit.org/show_bug.cgi?id=165581

Reviewed by Joseph Pecoraro.

  • UserInterface/Images/Resume.svg:

Fill/stroke should be unspecified so that both can be styled in CSS.

  • UserInterface/Views/DebuggerDashboardView.css:

(.dashboard.debugger .navigation-bar .item.debugger-dashboard-pause.activated):

  • UserInterface/Views/DebuggerSidebarPanel.css:

(.sidebar > .panel.navigation.debugger > .navigation-bar .debugger-pause-resume):
(.sidebar > .panel.navigation.debugger > .navigation-bar .debugger-pause-resume.activated):
Recreate original style which relied on 'fill="none"' being specified in the SVG.

  • UserInterface/Views/ThreadTreeElement.css:

(.tree-outline > .item.thread .icon):
(.tree-outline > .item.thread .status-button.resume):
(.tree-outline > .item.thread .status-button.resume:active):
(.tree-outline:matches(:focus, .force-focus) > .item.thread.selected .status-button.resume):
(.tree-outline > .item.thread.selected .status-button.resume,):
(.details-section.call-stack .thread .icon): Deleted.
Status button styles. Colors match those of the goto-arrow button.

  • UserInterface/Views/ThreadTreeElement.js:

(WebInspector.ThreadTreeElement.prototype.refresh):
Update status icon.
(WebInspector.ThreadTreeElement.prototype.oncontextmenu):
(WebInspector.ThreadTreeElement.prototype._updateStatus):
Add/remove status button based on paused state.
Stop propagation of "mousedown" events on the status button, to
prevent button press from selecting the tree element.
(WebInspector.ThreadTreeElement):

8:58 PM Changeset in webkit [209697] by Simon Fraser
  • 4 edits
    2 adds in trunk

REGRESSION (r200283): Transform, overflow hidden and filter combination completely hides the element
https://bugs.webkit.org/show_bug.cgi?id=161509

Reviewed by David Hyatt.
Source/WebCore:

When the filter painting code needs to recompute a paintDirtyRect, it was using selfClipRect()
which is obviously wrong because it returns a rect in absolute coordinates. Use code factored
out of localClipRect() instead, which returns a rect relative to the painting root.

Test: css3/filters/filter-on-overflow-hidden.html

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::paintLayerContents):

LayoutTests:

  • css3/filters/filter-on-overflow-hidden-expected.html: Added.
  • css3/filters/filter-on-overflow-hidden.html: Added.
7:11 PM Changeset in webkit [209696] by sbarati@apple.com
  • 39 edits
    2 adds in trunk

We should be able to throw exceptions from Wasm code and when Wasm frames are on the stack
https://bugs.webkit.org/show_bug.cgi?id=165429

Reviewed by Keith Miller.

JSTests:

  • wasm/function-tests/trap-load.js: Added.

(assert):
(wasmFrameCountFromError):
(i.catch):
(assert.continuation):

  • wasm/function-tests/trap-store.js: Added.

(import.Builder.from.string_appeared_here.assert):
(i.catch):
(assert.continuation):
(assert):

  • wasm/js-api/test_memory_constructor.js:

(assert):

Source/JavaScriptCore:

This patch teaches the stack walking runtime about wasm.
To do this, I taught StackVisitor that a callee is not
always an object.

To be able to unwind callee save registers properly, I've given
JSWebAssemblyCallee a list of RegisterAtOffsetList for the callee
saves that B3 saved in the prologue. Also, because we have two
B3Compilations per wasm function, one for wasm entrypoint, and
one for the JS entrypoint, I needed to create a callee for each
because they each might spill callee save registers.

I also fixed a bug inside the Wasm::Memory constructor where we
were trying to mmap the same number of bytes even after the first
mmap failed. We should start by trying to mmap the maximum bytes,
and if that fails, fall back to the specified initial bytes. However,
the code was just mmapping the maximum twice. I've fixed that and
also added a RELEASE_ASSERT_NOT_REACHED() for when the second mmap
fails along with a FIXME to throw an OOM error.

There was a second bug I fixed where JSModuleRecord was calling
visitWeak on its CallLinkInfos inside ::visitChldren(). It needs
to do this after marking. I changed JSModuleRecord to do what
CodeBlock does and call visitWeak on its CallLinkInfos inside
an UnconditionalFinalizer.

  • API/JSContextRef.cpp:

(BacktraceFunctor::operator()):

  • inspector/ScriptCallStackFactory.cpp:

(Inspector::createScriptCallStackFromException):

  • interpreter/CallFrame.cpp:

(JSC::CallFrame::vmEntryGlobalObject):

  • interpreter/CallFrame.h:

(JSC::ExecState::callee):

  • interpreter/Interpreter.cpp:

(JSC::GetStackTraceFunctor::operator()):
(JSC::UnwindFunctor::operator()):
(JSC::UnwindFunctor::copyCalleeSavesToVMEntryFrameCalleeSavesBuffer):

  • interpreter/Interpreter.h:
  • interpreter/ShadowChicken.cpp:

(JSC::ShadowChicken::update):

  • interpreter/StackVisitor.cpp:

(JSC::StackVisitor::StackVisitor):
(JSC::StackVisitor::readFrame):
(JSC::StackVisitor::readNonInlinedFrame):
(JSC::StackVisitor::readInlinedFrame):
(JSC::StackVisitor::Frame::isWasmFrame):
(JSC::StackVisitor::Frame::codeType):
(JSC::StackVisitor::Frame::calleeSaveRegisters):
(JSC::StackVisitor::Frame::functionName):
(JSC::StackVisitor::Frame::sourceURL):
(JSC::StackVisitor::Frame::toString):
(JSC::StackVisitor::Frame::hasLineAndColumnInfo):
(JSC::StackVisitor::Frame::setToEnd):

  • interpreter/StackVisitor.h:

(JSC::StackVisitor::Frame::callee):
(JSC::StackVisitor::Frame::isNativeFrame):
(JSC::StackVisitor::Frame::isJSFrame): Deleted.

  • jsc.cpp:

(callWasmFunction):
(functionTestWasmModuleFunctions):

  • runtime/Error.cpp:

(JSC::addErrorInfoAndGetBytecodeOffset):

  • runtime/JSCell.cpp:

(JSC::JSCell::isAnyWasmCallee):

  • runtime/JSCell.h:
  • runtime/JSFunction.cpp:

(JSC::RetrieveArgumentsFunctor::operator()):
(JSC::RetrieveCallerFunctionFunctor::operator()):

  • runtime/StackFrame.cpp:

(JSC::StackFrame::sourceID):
(JSC::StackFrame::sourceURL):
(JSC::StackFrame::functionName):
(JSC::StackFrame::computeLineAndColumn):
(JSC::StackFrame::toString):

  • runtime/StackFrame.h:

(JSC::StackFrame::StackFrame):
(JSC::StackFrame::hasLineAndColumnInfo):
(JSC::StackFrame::hasBytecodeOffset):
(JSC::StackFrame::bytecodeOffset):
(JSC::StackFrame::isNative): Deleted.

  • runtime/VM.h:
  • wasm/WasmB3IRGenerator.cpp:

(JSC::Wasm::B3IRGenerator::B3IRGenerator):
(JSC::Wasm::createJSToWasmWrapper):
(JSC::Wasm::parseAndCompile):

  • wasm/WasmCallingConvention.h:

(JSC::Wasm::CallingConvention::setupFrameInPrologue):

  • wasm/WasmFormat.h:
  • wasm/WasmMemory.cpp:

(JSC::Wasm::Memory::Memory):

  • wasm/WasmMemory.h:

(JSC::Wasm::Memory::isValid):

  • wasm/WasmPlan.cpp:

(JSC::Wasm::Plan::run):
(JSC::Wasm::Plan::initializeCallees):

  • wasm/WasmPlan.h:

(JSC::Wasm::Plan::jsToWasmEntryPointForFunction): Deleted.

  • wasm/js/JSWebAssemblyCallee.cpp:

(JSC::JSWebAssemblyCallee::finishCreation):

  • wasm/js/JSWebAssemblyCallee.h:

(JSC::JSWebAssemblyCallee::create):
(JSC::JSWebAssemblyCallee::entrypoint):
(JSC::JSWebAssemblyCallee::calleeSaveRegisters):
(JSC::JSWebAssemblyCallee::jsToWasmEntryPoint): Deleted.

  • wasm/js/JSWebAssemblyModule.cpp:

(JSC::JSWebAssemblyModule::JSWebAssemblyModule):
(JSC::JSWebAssemblyModule::visitChildren):
(JSC::JSWebAssemblyModule::UnconditionalFinalizer::finalizeUnconditionally):

  • wasm/js/JSWebAssemblyModule.h:

(JSC::JSWebAssemblyModule::jsEntrypointCalleeFromFunctionIndexSpace):
(JSC::JSWebAssemblyModule::wasmEntrypointCalleeFromFunctionIndexSpace):
(JSC::JSWebAssemblyModule::setJSEntrypointCallee):
(JSC::JSWebAssemblyModule::setWasmEntrypointCallee):
(JSC::JSWebAssemblyModule::allocationSize):
(JSC::JSWebAssemblyModule::calleeFromFunctionIndexSpace): Deleted.

  • wasm/js/JSWebAssemblyRuntimeError.h:
  • wasm/js/WebAssemblyFunction.cpp:

(JSC::WebAssemblyFunction::call):

  • wasm/js/WebAssemblyInstanceConstructor.cpp:

(JSC::constructJSWebAssemblyInstance):

  • wasm/js/WebAssemblyMemoryConstructor.cpp:

(JSC::constructJSWebAssemblyMemory):

  • wasm/js/WebAssemblyModuleConstructor.cpp:

(JSC::constructJSWebAssemblyModule):

  • wasm/js/WebAssemblyModuleRecord.cpp:

(JSC::WebAssemblyModuleRecord::link):

Source/WebCore:

  • bindings/js/JSDOMBinding.cpp:

(WebCore::GetCallerGlobalObjectFunctor::operator()):

6:50 PM Changeset in webkit [209695] by Darin Adler
  • 37 edits
    9 deletes in trunk

Remove uses of Dictionary in WebRTC IDL files
https://bugs.webkit.org/show_bug.cgi?id=165736

Reviewed by Sam Weinig.

Source/WebCore:

Also removed quite a bit of unused code. There were some mocks that were out of date and
no longer matched the types used in the real code, that also were no longer hooked up,
and other types of dead code. We will have to implement anew when we want to restore tests
like the ones these were intended to enable.

  • CMakeLists.txt: Updated for all the removed files.
  • Modules/mediastream/MediaEndpointPeerConnection.cpp: Moved some types in here

that don't need to be in the header.
(WebCore::MediaEndpointPeerConnection::MediaEndpointPeerConnection): Use make_unique.
(WebCore::MediaEndpointPeerConnection::setConfiguration): Changed argument type,
obviating the need for most of the code that was here.

  • Modules/mediastream/MediaEndpointPeerConnection.h: Updated for the above. Made more

things private and final. Marked the constructor explicit. Removed unneeded includes.

  • Modules/mediastream/PeerConnectionBackend.h: Removed unneeded includes and forward

declarations. Changed the argument type for setConfiguration (see above).

  • Modules/mediastream/RTCConfiguration.cpp: Removed.

None of the code here was needed except for the ICE server validation, and that was
moved into RTCPeerConnection::setConfiguration.

  • Modules/mediastream/RTCConfiguration.h: Changed this from a class to a struct since

this is now a dictionary rather than an interface.

  • Modules/mediastream/RTCConfiguration.idl: Changed this from an interface to a dictionary.
  • Modules/mediastream/RTCDTMFSender.cpp: Removed some of the code from this file. This

class currently isn't implemented, but was depending on RTCPeerConnectionHandler. I removed
some of the dead code. Someone will have to straighten this out so we can turn it back on.

  • Modules/mediastream/RTCDTMFSender.h: Ditto.
  • Modules/mediastream/RTCDataChannel.cpp: Updated includes.
  • Modules/mediastream/RTCIceCandidate.cpp:

(WebCore::RTCIceCandidate::create): Removed most of the code, since this now takes
a structure rather than a WebCore::Dictionary, and so the bindings take care of the work.

  • Modules/mediastream/RTCIceCandidate.h: Updated for the above.
  • Modules/mediastream/RTCIceCandidate.idl: Changed the constructor to take a

RTCIceCandidateInit instead of a Dictionary.

  • Modules/mediastream/RTCIceServer.h: Changed this from a class to a struct since

this is now a dictionary rather than an interface.

  • Modules/mediastream/RTCIceServer.idl: Changed this from an interface to a dictionary.
  • Modules/mediastream/RTCPeerConnection.cpp:

(WebCore::RTCPeerConnection::initializeWith): Take an RTCConfiguration rather than
a Dictionary.
(WebCore::RTCPeerConnection::getConfiguration): Moved to header, now an inline.
(WebCore::RTCPeerConnection::setConfiguration): Use the configuration dictionary now instead
of the configuration class. Also moved validation of server URLs here, formerly in the
RTCConfiguration RTCConfiguration::initialize function. Also moved code to convert from
RTCConfiguration to MediaEndpointConfiguration here, formerly in
MediaEndpointPeerConnection::setConfiguration.

  • Modules/mediastream/RTCPeerConnection.h: Updated for the above.
  • Modules/mediastream/RTCPeerConnection.idl: Changed argument to initializeWith and

setConfiguration from Dictionary to RTCConfiguration.

  • Modules/mediastream/RTCSessionDescription.cpp:

(WebCore::parseTypeString): Deleted.
(WebCore::RTCSessionDescription::create): Changed to take struct instead of Dictionary.

  • Modules/mediastream/RTCSessionDescription.h: Added Init struct and changed create to

take it.

  • Modules/mediastream/RTCSessionDescription.idl: Changed constructor argument to take

RTCSessionDescriptionInit dictionary instead of Dictionary.

  • Modules/webaudio/MediaStreamAudioDestinationNode.cpp: Updated includes.
  • WebCore.xcodeproj/project.pbxproj: Updated for all the removed files.
  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateDictionaryImplementationContent): Fixed convertDictionaryToJS to work with other
nullable types besides RefPtr.

  • bindings/scripts/test/JS/JSTestObj.cpp: Regenerated.
  • platform/mediastream/RTCConfigurationPrivate.h: Removed.
  • platform/mediastream/RTCIceServerPrivate.h: Removed.
  • platform/mediastream/RTCPeerConnectionHandler.cpp: Removed.
  • platform/mediastream/RTCPeerConnectionHandler.h: Removed.
  • platform/mock/RTCDTMFSenderHandlerMock.cpp: Removed.
  • platform/mock/RTCDTMFSenderHandlerMock.h: Removed.
  • platform/mock/RTCDataChannelHandlerMock.h: Updated includes, made more things private and final.
  • platform/mock/RTCPeerConnectionHandlerMock.cpp: Removed.
  • platform/mock/RTCPeerConnectionHandlerMock.h: Removed.
  • testing/Internals.cpp:

(WebCore::Internals::Internals): Removed call to enableMockRTCPeerConnectionHandler.
(WebCore::Internals::enableMockRTCPeerConnectionHandler): Deleted.

LayoutTests:

  • fast/mediastream/RTCIceCandidate-expected.txt: Regenerated; no new failures.
  • fast/mediastream/RTCIceCandidate.html: Updated test to expect the WebIDL rules for parsing

unsigned short for sdpMLineIndex. The old code expected additional range checking which is
not expected behavior.

  • fast/mediastream/RTCPeerConnection-expected.txt: Regenerated; no new failures.
  • fast/mediastream/RTCPeerConnection.html: Updated test to not expect an exception when

iceServers is entirely omitted or when it is an empty array. This is a progression and is
closer to the specification.

  • fast/mediastream/RTCPeerConnection-getConfiguration-expected.txt: Regenerated; no new failures.
  • fast/mediastream/RTCPeerConnection-getConfiguration.html: Updated test to expect the username

and credential fields to round trip as missing rather than turning from missing into empty strings.
Also updated the tests to pass in sequences of strings for "urls" since they expect sequences on
the way back out. We could also test round tripping of single strings, which should go in and come
back out as individual strings, but for now I did not bother adding that to this test.

  • fast/mediastream/RTCSessionDescription-expected.txt: Regenerated; some exception messages are

now more specific than they were before.

  • imported/w3c/web-platform-tests/webrtc/rtcpeerconnection/rtcpeerconnection-constructor-expected.txt:

Updated expected results. The new code correctly allows callers of the RTCPeerConnection constructor
to omit iceServers, pass undefined, or pass an empty array, as specified. Thuis change leads to
a couple tests that now correctly pass instead of failing. And it also leads to some other tests
failing that were passing before. These were passing because they expected an exception for some
other reason, however the exception was actually occurring because of incorrect handling of iceServers.

5:41 PM Changeset in webkit [209694] by fpizlo@apple.com
  • 1 edit in trunk/Source/JavaScriptCore/ChangeLog

Re-enable concurrent GC.

Rubber stampted by Saam Barati.

This change actually landed in r209692 by accident.

  • runtime/Options.h:
5:39 PM Changeset in webkit [209693] by fpizlo@apple.com
  • 2 edits in trunk/Source/WTF

Change to use #pragma once (requested by Darin Adler).

  • wtf/RecursiveLockAdapter.h:
5:34 PM Changeset in webkit [209692] by fpizlo@apple.com
  • 3 edits in trunk/Source

Change to use #pragma once (requested by Darin Adler).

  • wtf/LockedPrintStream.h:
5:19 PM Changeset in webkit [209691] by fpizlo@apple.com
  • 20 edits
    4 adds in trunk/Source

MarkedBlock::marksConveyLivenessDuringMarking should take into account collection scope
https://bugs.webkit.org/show_bug.cgi?id=165741

Reviewed by Saam Barati.

Source/JavaScriptCore:

MarkedBlock::marksConveyLivenessDuringMarking thought that the off-by-one marking
version indicated liveness during any collection when it's just during full collection.
One of its users - MarkedBlock::sweep - knew this and had a special case, but the other
one - MarkedBlock::isLive - didn't. So, I moved the special case into
marksConveyLivenessDuringMarking.

Also, this cleans up some remaining bitvector races.

To find this bug, I significantly strengthened our assertions.

  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • heap/CellContainer.cpp: Added.

(JSC::CellContainer::isNewlyAllocated):

  • heap/CellContainer.h:
  • heap/MarkedAllocator.cpp:

(JSC::MarkedAllocator::addBlock):
(JSC::MarkedAllocator::removeBlock):
(JSC::MarkedAllocator::dumpBits):

  • heap/MarkedAllocator.h:

(JSC::MarkedAllocator::forEachBitVector):
(JSC::MarkedAllocator::forEachBitVectorWithName):

  • heap/MarkedBlock.cpp:

(JSC::MarkedBlock::tryCreate):
(JSC::MarkedBlock::Handle::~Handle):
(JSC::MarkedBlock::MarkedBlock):
(JSC::MarkedBlock::Handle::specializedSweep):
(JSC::MarkedBlock::Handle::sweepHelperSelectMarksMode):
(JSC::MarkedBlock::Handle::stopAllocating):
(JSC::MarkedBlock::Handle::resumeAllocating):
(JSC::MarkedBlock::aboutToMarkSlow):
(JSC::MarkedBlock::Handle::didConsumeFreeList):
(JSC::MarkedBlock::Handle::dumpState):

  • heap/MarkedBlock.h:

(JSC::MarkedBlock::markingVersion):
(JSC::MarkedBlock::isMarkedRaw):
(JSC::MarkedBlock::isMarked):

  • heap/MarkedBlockInlines.h:

(JSC::MarkedBlock::marksConveyLivenessDuringMarking):

  • heap/SlotVisitor.cpp:

(JSC::SlotVisitor::appendJSCellOrAuxiliary):

  • runtime/Options.cpp:

(JSC::recomputeDependentOptions):

  • runtime/StructureIDTable.h:

(JSC::StructureIDTable::size):
(JSC::StructureIDTable::get):

Source/WTF:

To find this bug, I needed to seriously beef up our logging infrastructure.

It's now the case that:

dataLog(...);


will print its output atomically. This happens with some careful magic:

  • dataFile() is now a LockedPrintStream that locks around print().


  • The lock is a recursive lock via RecursiveLockAdapter<>, so if the dump methods end up calling back into dataLog() then it just works. This is important: say the dump() calls a getter that itself does logging, maybe because it's encountering badness and wants to report it before crashing).


  • The lock is a WordLock so that ParkingLot and Lock can keep using dataLog() for debugging. We probably won't need to debug WordLock anytime soon - the algorithm is so simple.


  • LockedPrintStream::print(...) causes the print callbacks of its arguments to run on the underlying PrintStream, so that you don't need to do recursive lock acquisition on each individual argument and whatever printing it does recursively.
  • WTF.xcodeproj/project.pbxproj:
  • wtf/CMakeLists.txt:
  • wtf/DataLog.cpp:

(WTF::initializeLogFileOnce):
(WTF::initializeLogFile):
(WTF::dataFile):

  • wtf/DataLog.h:
  • wtf/LockedPrintStream.cpp: Added.

(WTF::LockedPrintStream::LockedPrintStream):
(WTF::LockedPrintStream::~LockedPrintStream):
(WTF::LockedPrintStream::vprintf):
(WTF::LockedPrintStream::flush):
(WTF::LockedPrintStream::begin):
(WTF::LockedPrintStream::end):

  • wtf/LockedPrintStream.h: Added.
  • wtf/PrintStream.cpp:

(WTF::PrintStream::printfVariableFormat):
(WTF::PrintStream::begin):
(WTF::PrintStream::end):

  • wtf/PrintStream.h:

(WTF::PrintStream::atomically):
(WTF::PrintStream::print):
(WTF::PrintStream::println):
(WTF::PrintStream::printImpl):
(WTF::>::unpack):
(WTF::FormatImpl::FormatImpl):
(WTF::FormatImpl::dump):
(WTF::format):
(WTF::printInternal):

  • wtf/RecursiveLockAdapter.h: Added.

(WTF::RecursiveLockAdapter::RecursiveLockAdapter):
(WTF::RecursiveLockAdapter::lock):
(WTF::RecursiveLockAdapter::unlock):
(WTF::RecursiveLockAdapter::tryLock):
(WTF::RecursiveLockAdapter::isLocked):

  • wtf/WordLock.cpp:
  • wtf/WordLock.h:
5:10 PM Changeset in webkit [209690] by timothy_horton@apple.com
  • 3 edits in trunk/Source/WebKit2

Quarter-second stalls scrolling images that are links because of sync getPositionInformation
https://bugs.webkit.org/show_bug.cgi?id=165707

Reviewed by Simon Fraser.

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView positionInformationForActionSheetAssistant:]):
(-[WKContentView updatePositionInformationForActionSheetAssistant:]):
For now, synchronously block when presenting the action sheet if we
don't have a snapshot ready.

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::getPositionInformation):
Respect includeSnapshot in another place in getPositionInformation,
so that many getPositionInformations don't have to do extra snapshotting work.

4:57 PM Changeset in webkit [209689] by Darin Adler
  • 7 edits in trunk/Source

Use std::vsnprintf instead of vasprintf
https://bugs.webkit.org/show_bug.cgi?id=165740

Reviewed by Sam Weinig.

Source/WebCore:

  • platform/FileHandle.cpp:

(WebCore::FileHandle::printf): Use vsnprintf, including StringExtras.h to
ensure compatibility with older versions of the Visual Studio library,
and Vector for the buffer. Use inline capacity in the vector so we normally
don't need to allocate any memory on the heap.

  • xml/XSLTUnicodeSort.cpp:

(xsltTransformErrorTrampoline): Ditto.

  • xml/parser/XMLDocumentParserLibxml2.cpp:

(WebCore::XMLDocumentParser::error): Ditto.

Source/WTF:

  • wtf/Platform.h: Remove HAVE_VASPRINTF.
  • wtf/StringExtras.h: Change the vsnprintf workaround to be used only

in older versions of Visual Studio, since the problem it works around
was resolved in Visual Studio 2015.

4:56 PM Changeset in webkit [209688] by Darin Adler
  • 4 edits in trunk/Source/WebCore

Make some refinements to HTMLPlugInImageElement
https://bugs.webkit.org/show_bug.cgi?id=165742

Reviewed by Sam Weinig.

  • html/HTMLPlugInImageElement.cpp: Removed many unneeded includes.

(WebCore::titleText): Use HashMap::ensure, correct argument types.
(WebCore::subtitleText): Ditto.
(WebCore::HTMLPlugInImageElement::HTMLPlugInImageElement): Moved
initialization of most scalars to the class definition.
(WebCore::HTMLPlugInImageElement::isImageType): Use auto.
(WebCore::HTMLPlugInImageElement::wouldLoadAsPlugIn): Removed
unneeded local variable and if statement.
(WebCore::HTMLPlugInImageElement::willDetachRenderers): Use auto.
(WebCore::HTMLPlugInImageElement::updateSnapshot): Do not call
renderer twice unnecessarily.
(WebCore::plugInImageElementIsolatedWorld): Use auto.
(WebCore::HTMLPlugInImageElement::didAddUserAgentShadowRoot): Use auto.
(WebCore::HTMLPlugInImageElement::partOfSnapshotOverlay): Use auto.
(WebCore::HTMLPlugInImageElement::restartSimilarPlugIns): Got rid of
unnecessary typedef.
(WebCore::HTMLPlugInImageElement::userDidClickSnapshot): Take a
reference rather than PassRefPtr.
(WebCore::documentHadRecentUserGesture): Removed unneeded if.
(WebCore::HTMLPlugInImageElement::checkSizeChangeForSnapshotting): Use auto.
(WebCore::isSmallerThanTinySizingThreshold): Use auto.
(WebCore::HTMLPlugInImageElement::isTopLevelFullPagePlugin): Use auto.
(WebCore::HTMLPlugInImageElement::checkSnapshotStatus): Use auto.
(WebCore::HTMLPlugInImageElement::subframeLoaderWillCreatePlugIn): Got rid
of unnecessary local variable. Use auto.
(WebCore::HTMLPlugInImageElement::requestObject): Got rid of unnecessary
local variable.

  • html/HTMLPlugInImageElement.h: Updated for the above. Removed incorrect

use of const. Initialized all scalars. Made function private and final.

  • rendering/RenderSnapshottedPlugIn.cpp:

(WebCore::RenderSnapshottedPlugIn::handleEvent): Pass reference instead
of pointer.

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

Web Inspector: Cleanup some InspectorInstrumentation network loading notifications
https://bugs.webkit.org/show_bug.cgi?id=165688

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-12-11
Reviewed by Brian Burg.

Eliminate InspectorInstrumentation::willReceiveResourceResponse by folding
it into InspectorInstrumentation::didReceiveResourceResponse. Simplify other
related InspectorInstrumentation calls by using references and using more
consistent InspectorInstrumentation patterns.

  • inspector/InspectorInstrumentation.cpp:

(WebCore::InspectorInstrumentation::didReceiveResourceResponseImpl):
(WebCore::InspectorInstrumentation::willReceiveResourceResponseImpl): Deleted.
(WebCore::InspectorInstrumentation::didReceiveResourceResponseButCanceledImpl): Deleted.
(WebCore::InspectorInstrumentation::continueAfterXFrameOptionsDeniedImpl): Deleted.
(WebCore::InspectorInstrumentation::continueWithPolicyDownloadImpl): Deleted.
(WebCore::InspectorInstrumentation::continueWithPolicyIgnoreImpl): Deleted.

  • inspector/InspectorInstrumentation.h:

(WebCore::InspectorInstrumentation::didReceiveResourceResponse):
(WebCore::InspectorInstrumentation::continueAfterXFrameOptionsDenied):
(WebCore::InspectorInstrumentation::continueWithPolicyDownload):
(WebCore::InspectorInstrumentation::continueWithPolicyIgnore):
(WebCore::InspectorInstrumentation::willReceiveResourceResponse): Deleted.

  • loader/CrossOriginPreflightChecker.cpp:

(WebCore::CrossOriginPreflightChecker::validatePreflightResponse):

  • loader/DocumentLoader.cpp:

(WebCore::DocumentLoader::stopLoadingAfterXFrameOptionsOrContentSecurityPolicyDenied):
(WebCore::DocumentLoader::continueAfterContentPolicy):

  • loader/ResourceLoadNotifier.cpp:

(WebCore::ResourceLoadNotifier::dispatchDidReceiveResponse):

  • loader/appcache/ApplicationCacheGroup.cpp:

(WebCore::ApplicationCacheGroup::didReceiveResponse):

3:37 PM Changeset in webkit [209686] by commit-queue@webkit.org
  • 5 edits
    2 adds in trunk/Source/WebInspectorUI

Web Inspector: Move MainTarget and WorkerTarget to their own files
https://bugs.webkit.org/show_bug.cgi?id=165701

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-12-11
Reviewed by Brian Burg.

  • UserInterface/Controllers/DebuggerManager.js:

(WebInspector.DebuggerManager.prototype.scriptDidParse):

  • UserInterface/Main.html:
  • UserInterface/Protocol/MainTarget.js: Added.

(WebInspector.MainTarget):
(WebInspector.MainTarget.prototype.get displayName):
(WebInspector.MainTarget.prototype.get mainResource):

  • UserInterface/Protocol/Target.js:

(WebInspector.Target):
(WebInspector.MainTarget): Deleted.
(WebInspector.MainTarget.prototype.get displayName): Deleted.
(WebInspector.MainTarget.prototype.get mainResource): Deleted.
(WebInspector.MainTarget.prototype.initialize): Deleted.
(WebInspector.WorkerTarget): Deleted.
(WebInspector.WorkerTarget.prototype.get displayName): Deleted.
(WebInspector.WorkerTarget.prototype.initialize): Deleted.

  • UserInterface/Protocol/WorkerTarget.js: Added.

(WebInspector.WorkerTarget):
(WebInspector.WorkerTarget.prototype.get displayName):

  • UserInterface/Test.html:
2:08 PM Changeset in webkit [209685] by eric.carlson@apple.com
  • 2 edits in trunk/Source/WebCore

[MediaStream] Protect MediaDevicesRequest during callback
https://bugs.webkit.org/show_bug.cgi?id=165711
<rdar://problem/28400468>

Reviewed by Sam Weinig.

No new tests, I was unable to create a reproducible test but this fix avoids
an occasional crash in existing tests.

  • Modules/mediastream/MediaDevicesEnumerationRequest.cpp:

(WebCore::MediaDevicesEnumerationRequest::start): Take a reference to the object
before calling the controller in case the completion handler is called synchronously.

2:00 PM Changeset in webkit [209684] by jiewen_tan@apple.com
  • 1 edit
    8 adds in trunk/LayoutTests

[WebCrypto] Add tests for wrap/unwrap SPKI/PKCS8 keys
https://bugs.webkit.org/show_bug.cgi?id=165557

Reviewed by Darin Adler.

  • crypto/subtle/aes-cbc-import-key-unwrap-pkcs8-key-expected.txt: Added.
  • crypto/subtle/aes-cbc-import-key-unwrap-pkcs8-key.html: Added.
  • crypto/subtle/aes-cbc-import-key-unwrap-spki-key-expected.txt: Added.
  • crypto/subtle/aes-cbc-import-key-unwrap-spki-key.html: Added.
  • crypto/subtle/aes-cbc-import-key-wrap-pkcs8-key-expected.txt: Added.
  • crypto/subtle/aes-cbc-import-key-wrap-pkcs8-key.html: Added.
  • crypto/subtle/aes-cbc-import-key-wrap-spki-key-expected.txt: Added.
  • crypto/subtle/aes-cbc-import-key-wrap-spki-key.html: Added.
10:19 AM Changeset in webkit [209683] by fpizlo@apple.com
  • 58 edits
    2 adds in trunk/Source

The DOM should have an advancing wavefront opaque root barrier
https://bugs.webkit.org/show_bug.cgi?id=165712

Reviewed by Yusuke Suzuki.
Source/JavaScriptCore:


This exposes the ability to fire an advancing wavefront barrier on opaque roots. It also
gives clients the ability to maintain their own cache of whether that barrier needs to
be enabled.

The DOM uses this to enable a very cheap barrier on the DOM. This is neutral on
Speedometer and fixes another concurrent GC crash.

  • heap/Heap.cpp:

(JSC::Heap::beginMarking):
(JSC::Heap::endMarking):
(JSC::Heap::writeBarrierOpaqueRootSlow):
(JSC::Heap::addMutatorShouldBeFencedCache):
(JSC::Heap::setMutatorShouldBeFenced):

  • heap/Heap.h:
  • heap/HeapInlines.h:

(JSC::writeBarrierOpaqueRoot):

Source/WebCore:

No new tests because this was covered by crashing tests.

Consider these two cases:

Removal:
1) DOM at start: D->X->Y
2) Mark X, X->visitChildren, addOpaqueRoot(D)
3) remove X
4) Y thinks it's not reachable (its opaque root, X, is not in the set).


Insertion:
1) DOM at start: D, X->Y
2) Mark X, X->visitChildren, addOpaqueRoot(X)
3) insert X into D
4) Y thinks it's not reachable (its opaque root, D, is not in the set).


We can fix this with two barriers:

Removal: add X (the removed child) to the opaque root set.
Insertion: add D (the insertion point) to the opaque root set.


Thanks Rysosuke for coming up with this idea!

Both barriers advance the wavefront. We could consider retreating wavefront barriers in
the future (where we cause visitChildren to be called again on wrappers that belonged to
roots that got affected by insertion/removal) but those would probably require more
bookkeeping.

To make this barrier very fast, the WebCore caches the JSC VM's barrier state in
its own global variable for very fast access. This variable will be false most of the
time. It's false when there is no VM, so triggering the barrier won't cause the VM to be
created. It's only true when GC is running, which is rare by design.

To make that caching more sensible, I finally gave WebCore a central header for
the common VM (CommonVM.h).

  • CMakeLists.txt:
  • Modules/mediastream/SDPProcessor.cpp:

(WebCore::SDPProcessor::callScript):

  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/CommonVM.cpp: Added.

(WebCore::commonVMSlow):
(WebCore::writeBarrierOpaqueRootSlow):

  • bindings/js/CommonVM.h: Added.

(WebCore::commonVM):
(WebCore::writeBarrierOpaqueRoot):

  • bindings/js/DOMWrapperWorld.cpp:

(WebCore::mainThreadNormalWorld):

  • bindings/js/GCController.cpp:

(WebCore::collect):
(WebCore::GCController::garbageCollectSoon):
(WebCore::GCController::garbageCollectNow):
(WebCore::GCController::garbageCollectNowIfNotDoneRecently):
(WebCore::GCController::setJavaScriptGarbageCollectorTimerEnabled):
(WebCore::GCController::deleteAllCode):
(WebCore::GCController::deleteAllLinkedCode):

  • bindings/js/JSCustomXPathNSResolver.cpp:

(WebCore::JSCustomXPathNSResolver::lookupNamespaceURI):

  • bindings/js/JSDOMBinding.cpp:

(WebCore::addImpureProperty):

  • bindings/js/JSDOMWindowBase.cpp:

(WebCore::JSDOMWindowBase::fireFrameClearedWatchpointsForWindow):
(WebCore::JSDOMWindowBase::commonVM): Deleted.

  • bindings/js/JSDOMWindowBase.h:
  • bindings/js/JSDOMWindowShell.cpp:

(WebCore::JSDOMWindowShell::setWindow):

  • bindings/js/JSNodeCustom.h:

(WebCore::root):

  • bindings/js/ScriptCachedFrameData.cpp:

(WebCore::ScriptCachedFrameData::ScriptCachedFrameData):
(WebCore::ScriptCachedFrameData::restore):
(WebCore::ScriptCachedFrameData::clear):

  • bindings/js/ScriptController.cpp:

(WebCore::ScriptController::~ScriptController):
(WebCore::ScriptController::createWorld):
(WebCore::ScriptController::getAllWorlds):
(WebCore::ScriptController::clearWindowShell):
(WebCore::ScriptController::cacheableBindingRootObject):
(WebCore::ScriptController::bindingRootObject):
(WebCore::ScriptController::windowScriptNPObject):
(WebCore::ScriptController::jsObjectForPluginElement):
(WebCore::ScriptController::clearScriptObjects):

  • dom/CollectionIndexCache.cpp:

(WebCore::reportExtraMemoryAllocatedForCollectionIndexCache):

  • dom/ContainerNode.cpp:
  • dom/ContainerNodeAlgorithms.cpp:

(WebCore::notifyChildNodeInserted):
(WebCore::notifyChildNodeRemoved):

  • dom/Document.cpp:

(WebCore::Document::shouldBypassMainWorldContentSecurityPolicy):

  • dom/Node.h:

(WebCore::Node::opaqueRoot):

  • dom/ScriptExecutionContext.cpp:

(WebCore::ScriptExecutionContext::vm):

  • html/HTMLImageLoader.cpp:

(WebCore::HTMLImageLoader::notifyFinished):

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::pauseAfterDetachedTask):
(WebCore::HTMLMediaElement::ensureIsolatedWorld):

  • html/HTMLPlugInImageElement.cpp:

(WebCore::plugInImageElementIsolatedWorld):

  • inspector/InspectorController.cpp:

(WebCore::InspectorController::vm):

  • inspector/PageScriptDebugServer.cpp:

(WebCore::PageScriptDebugServer::PageScriptDebugServer):

  • page/PerformanceLogging.cpp:

(WebCore::PerformanceLogging::memoryUsageStatistics):
(WebCore::PerformanceLogging::javaScriptObjectCounts):

  • page/ResourceUsageThread.cpp:

(WebCore::ResourceUsageThread::createThreadIfNeeded):

  • svg/graphics/SVGImage.cpp:

(WebCore::SVGImage::reportApproximateMemoryCost):

  • testing/MemoryInfo.h:

(WebCore::MemoryInfo::MemoryInfo):

Source/WebKit/mac:


Propagate the JSDOMWindowBase::commonVM() -> commonVM() change.

  • Misc/WebCoreStatistics.mm:

(+[WebCoreStatistics javaScriptObjectsCount]):
(+[WebCoreStatistics javaScriptGlobalObjectsCount]):
(+[WebCoreStatistics javaScriptProtectedObjectsCount]):
(+[WebCoreStatistics javaScriptProtectedGlobalObjectsCount]):
(+[WebCoreStatistics javaScriptProtectedObjectTypeCounts]):
(+[WebCoreStatistics javaScriptObjectTypeCounts]):
(+[WebCoreStatistics shouldPrintExceptions]):
(+[WebCoreStatistics setShouldPrintExceptions:]):
(+[WebCoreStatistics memoryStatistics]):
(+[WebCoreStatistics javaScriptReferencedObjectsCount]):

  • Plugins/Hosted/NetscapePluginHostProxy.mm:

(identifierFromIdentifierRep):

  • Plugins/Hosted/ProxyInstance.mm:

(WebKit::ProxyInstance::getPropertyNames):

  • Plugins/WebNetscapePluginStream.mm:

(WebNetscapePluginStream::wantsAllStreams):

  • Plugins/WebNetscapePluginView.mm:

(-[WebNetscapePluginView sendEvent:isDrawRect:]):
(-[WebNetscapePluginView privateBrowsingModeDidChange]):
(-[WebNetscapePluginView setWindowIfNecessary]):
(-[WebNetscapePluginView createPluginScriptableObject]):
(-[WebNetscapePluginView getFormValue:]):
(-[WebNetscapePluginView evaluateJavaScriptPluginRequest:]):
(-[WebNetscapePluginView webFrame:didFinishLoadWithReason:]):
(-[WebNetscapePluginView loadPluginRequest:]):
(-[WebNetscapePluginView _printedPluginBitmap]):

  • Plugins/WebPluginController.mm:

(-[WebPluginController plugInViewWithArguments:fromPluginPackage:]):
(-[WebPluginController stopOnePlugin:]):
(-[WebPluginController stopOnePluginForPageCache:]):
(-[WebPluginController destroyOnePlugin:]):
(-[WebPluginController startAllPlugins]):
(-[WebPluginController addPlugin:]):

Source/WebKit/win:


Propagate the JSDOMWindowBase::commonVM() -> commonVM() change.

  • Plugins/PluginView.cpp:

(WebCore::PluginView::start):
(WebCore::PluginView::stop):
(WebCore::PluginView::performRequest):
(WebCore::PluginView::npObject):
(WebCore::PluginView::privateBrowsingStateChanged):

  • Plugins/PluginViewWin.cpp:

(WebCore::PluginView::dispatchNPEvent):
(WebCore::PluginView::handleKeyboardEvent):
(WebCore::PluginView::handleMouseEvent):
(WebCore::PluginView::setNPWindowRect):

  • WebCoreStatistics.cpp:

(WebCoreStatistics::javaScriptObjectsCount):
(WebCoreStatistics::javaScriptGlobalObjectsCount):
(WebCoreStatistics::javaScriptProtectedObjectsCount):
(WebCoreStatistics::javaScriptProtectedGlobalObjectsCount):
(WebCoreStatistics::javaScriptProtectedObjectTypeCounts):
(WebCoreStatistics::javaScriptObjectTypeCounts):
(WebCoreStatistics::shouldPrintExceptions):
(WebCoreStatistics::setShouldPrintExceptions):
(WebCoreStatistics::memoryStatistics):

  • WebJavaScriptCollector.cpp:

(WebJavaScriptCollector::objectCount):

Source/WebKit2:


Propagate the JSDOMWindowBase::commonVM() -> commonVM() change.

  • Shared/linux/WebMemorySamplerLinux.cpp:

(WebKit::WebMemorySampler::sampleWebKit):

  • Shared/mac/WebMemorySampler.mac.mm:

(WebKit::WebMemorySampler::sampleWebKit):

  • WebProcess/InjectedBundle/InjectedBundle.cpp:

(WebKit::InjectedBundle::javaScriptObjectsCount):

  • WebProcess/Plugins/Netscape/JSNPObject.cpp:

(WebKit::JSNPObject::callMethod):
(WebKit::JSNPObject::callObject):
(WebKit::JSNPObject::callConstructor):
(WebKit::JSNPObject::put):
(WebKit::JSNPObject::deleteProperty):
(WebKit::JSNPObject::getOwnPropertyNames):
(WebKit::JSNPObject::propertyGetter):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::runJavaScriptInMainFrame):
(WebKit::WebPage::getBytecodeProfile):
(WebKit::WebPage::getSamplingProfilerOutput):

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::getWebCoreStatistics):

10:10 AM Changeset in webkit [209682] by mitz@apple.com
  • 4 edits in trunk

[Cocoa] NSAttributedString representation of text copied from -webkit-nbsp-mode:space element contains non-breaking space characters, but shouldn’t
https://bugs.webkit.org/show_bug.cgi?id=165515
<rdar://problem/4108460>

Reviewed by Darin Adler.

Source/WebCore:

Test: platform/mac/fast/text/attributed-substring-from-range.html

  • editing/cocoa/HTMLConverter.mm:

(HTMLConverter::_processText): Emit a space instead of a non-breaking space if the text node

is styled with -webkit-nbsp-mode:space.

(WebCore::editingAttributedStringFromRange): Replace all non-breaking spaces with spaces if

they come from a text node with -webkit-nbsp-mode:space.

LayoutTests:

  • platform/mac/fast/text/attributed-substring-from-range-expected.txt: Updated.
4:48 AM Changeset in webkit [209681] by Konstantin Tokarev
  • 2 edits in trunk/Source/WebKit2

Unreviewed build fix for EFL after r209665

  • UIProcess/efl/TextCheckerClientEfl.h:
3:11 AM Changeset in webkit [209680] by Konstantin Tokarev
  • 2 edits in trunk/Source/WebCore

Unreviewed, add KHR include dir to fix ANGLE build after r209665
https://bugs.webkit.org/show_bug.cgi?id=165686

  • CMakeLists.txt:
Note: See TracTimeline for information about the timeline view.