WebKit-https.git
2 years ago[DFG] DFG should handle String#toString
yusukesuzuki@slowstart.org [Fri, 7 Sep 2018 19:44:48 +0000 (19:44 +0000)]
[DFG] DFG should handle String#toString
https://bugs.webkit.org/show_bug.cgi?id=189151

Reviewed by Saam Barati.

JSTests:

The error message in String#toString and String#valueOf is poor, which will be
handled in a separate bug[1].

[1]: https://bugs.webkit.org/show_bug.cgi?id=189357

* microbenchmarks/string-object-to-string.js: Added.
(test):
* microbenchmarks/string-object-value-of.js: Added.
(test):
* stress/string-to-string-error.js: Added.
(shouldThrow):
(test):
* stress/string-to-string.js: Added.
(shouldBe):
(test1):
(test2):
(test3):
* stress/string-value-of-error.js: Added.
(shouldThrow):
(test):
* stress/string-value-of.js: Added.
(shouldBe):
(test1):
(test2):
(test3):

Source/JavaScriptCore:

We handle String#toString and String#valueOf in DFG by introducing StringValueOf node.
In the fixup phase, we attempt to lower StringValueOf to the existing ToString or Identity
nodes. If we fail to lower it, we have StringValueOf(UntypedUse), which may raise an error
if an argument is neither String nor StringObject. The error message in String#toString and
String#valueOf is poor, which will be handled in a separate bug[1].

It improves simple microbenchmarks by 53.4 - 67.6%.

                                      baseline                  patched

    string-object-to-string       21.7308+-3.3147     ^     12.9655+-0.0527        ^ definitely 1.6760x faster
    string-object-value-of        20.1122+-0.0691     ^     13.1134+-0.2482        ^ definitely 1.5337x faster

[1]: https://bugs.webkit.org/show_bug.cgi?id=189357

* dfg/DFGAbstractInterpreterInlines.h:
(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):
* dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::handleIntrinsicCall):
* dfg/DFGClobberize.h:
(JSC::DFG::clobberize):
* dfg/DFGDoesGC.cpp:
(JSC::DFG::doesGC):
* dfg/DFGFixupPhase.cpp:
(JSC::DFG::FixupPhase::fixupNode):
(JSC::DFG::FixupPhase::fixupStringValueOf):
* dfg/DFGNode.h:
(JSC::DFG::Node::convertToToString):
* dfg/DFGNodeType.h:
* dfg/DFGOperations.cpp:
* dfg/DFGOperations.h:
* dfg/DFGPredictionPropagationPhase.cpp:
* dfg/DFGSafeToExecute.h:
(JSC::DFG::safeToExecute):
* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compileToStringOrCallStringConstructorOrStringValueOf):
(JSC::DFG::SpeculativeJIT::compileToStringOrCallStringConstructor): Deleted.
* dfg/DFGSpeculativeJIT.h:
* dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
* dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
* ftl/FTLCapabilities.cpp:
(JSC::FTL::canCompile):
* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compileNode):
(JSC::FTL::DFG::LowerDFGToB3::compileToStringOrCallStringConstructorOrStringValueOf):
(JSC::FTL::DFG::LowerDFGToB3::compileToStringOrCallStringConstructor): Deleted.

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

2 years ago[ews-build] API tests should output result summary in json
aakash_jain@apple.com [Fri, 7 Sep 2018 18:49:23 +0000 (18:49 +0000)]
[ews-build] API tests should output result summary in json
https://bugs.webkit.org/show_bug.cgi?id=189417

Reviewed by Lucas Forschler.

* BuildSlaveSupport/ews-build/steps.py:
(RunAPITests): Passed --json-output parameter to run-api-tests.
* BuildSlaveSupport/ews-build/steps_unittest.py: Updated unit-tests.

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

2 years agoUnreviewed, rolling out r235784.
commit-queue@webkit.org [Fri, 7 Sep 2018 18:15:48 +0000 (18:15 +0000)]
Unreviewed, rolling out r235784.
https://bugs.webkit.org/show_bug.cgi?id=189421

RunLoopCF does not agree to the fix (Requested by yusukesuzuki
on #webkit).

Reverted changeset:

"[RunLoopGeneric] OneShotTimer should be inactive when fired."
https://bugs.webkit.org/show_bug.cgi?id=189335
https://trac.webkit.org/changeset/235784

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

2 years ago[LFC] Replace "computed" value with "used" value to match spec language
zalan@apple.com [Fri, 7 Sep 2018 17:50:35 +0000 (17:50 +0000)]
[LFC] Replace "computed" value with "used" value to match spec language
https://bugs.webkit.org/show_bug.cgi?id=189414

Reviewed by Antti Koivisto.

* layout/FormattingContext.cpp:
(WebCore::Layout::FormattingContext::computeOutOfFlowHorizontalGeometry const):
(WebCore::Layout::FormattingContext::computeOutOfFlowVerticalGeometry const):
* layout/FormattingContext.h:
(WebCore::Layout::FormattingContext::Geometry::outOfFlowVerticalGeometry):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowHorizontalGeometry):
(WebCore::Layout::FormattingContext::Geometry::floatingHeightAndMargin):
(WebCore::Layout::FormattingContext::Geometry::floatingWidthAndMargin):
(WebCore::Layout::FormattingContext::Geometry::inlineReplacedHeightAndMargin):
(WebCore::Layout::FormattingContext::Geometry::inlineReplacedWidthAndMargin):
(WebCore::Layout::FormattingContext::Geometry::complicatedCases):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedVerticalGeometry):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedHorizontalGeometry):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedVerticalGeometry):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedHorizontalGeometry):
(WebCore::Layout::FormattingContext::Geometry::floatingReplacedHeightAndMargin):
(WebCore::Layout::FormattingContext::Geometry::floatingReplacedWidthAndMargin):
(WebCore::Layout::FormattingContext::Geometry::floatingNonReplacedWidthAndMargin):
* layout/FormattingContextGeometry.cpp:
(WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedVerticalGeometry):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedHorizontalGeometry):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedVerticalGeometry):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedHorizontalGeometry):
(WebCore::Layout::FormattingContext::Geometry::complicatedCases):
(WebCore::Layout::FormattingContext::Geometry::floatingNonReplacedWidthAndMargin):
(WebCore::Layout::FormattingContext::Geometry::floatingReplacedHeightAndMargin):
(WebCore::Layout::FormattingContext::Geometry::floatingReplacedWidthAndMargin):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowVerticalGeometry):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowHorizontalGeometry):
(WebCore::Layout::FormattingContext::Geometry::floatingHeightAndMargin):
(WebCore::Layout::FormattingContext::Geometry::floatingWidthAndMargin):
(WebCore::Layout::FormattingContext::Geometry::inlineReplacedHeightAndMargin):
(WebCore::Layout::FormattingContext::Geometry::inlineReplacedWidthAndMargin):
* layout/blockformatting/BlockFormattingContext.cpp:
(WebCore::Layout::BlockFormattingContext::computeWidthAndMargin const):
(WebCore::Layout::BlockFormattingContext::computeHeightAndMargin const):
* layout/blockformatting/BlockFormattingContext.h:
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowHeightAndMargin):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowWidthAndMargin):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedHeightAndMargin):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedWidthAndMargin):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowReplacedWidthAndMargin):
* layout/blockformatting/BlockFormattingContextGeometry.cpp:
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedHeightAndMargin):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedWidthAndMargin):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowReplacedWidthAndMargin):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowHeightAndMargin):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowWidthAndMargin):

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

2 years ago[WebAssembly] Optimize JS to Wasm call by using pointer of Signature as SignatureIndex
yusukesuzuki@slowstart.org [Fri, 7 Sep 2018 17:29:04 +0000 (17:29 +0000)]
[WebAssembly] Optimize JS to Wasm call by using pointer of Signature as SignatureIndex
https://bugs.webkit.org/show_bug.cgi?id=189401

Reviewed by Mark Lam.

SignatureInformation is a global repository for Signature to make Signature atomic.
It takes Ref<Signature>&& and generates SignatureIndex. And we get const Signature&
by using this SignatureIndex. However, converting SignatureIndex to const Signature&
always looks up a hash table. This is costly since JS to Wasm calls always use
Signature& to check types of arguments.

Instead of using this hash table, this patch uses a pointer of Signature as SignatureIndex.
This allows us to convert SignatureIndex to Signature by just casting it.

We also optimize SignatureInformation::singleton by making an accessor function inlined.
And we move ProtoCallFrame::init to the header since it's just setting values.

This change significantly optimizes JS to wasm calls (1e7 times) from 600ms to 320ms.

In the future, we can remove SignatureIndex by directly handling Ref<Signature>: adding
deref() of Signature which unregisters itself from SignatureInformation carefully. Or we can
make SignatureIndex uint32_t by introducing a mechanism similar to StructureID.

* JavaScriptCore.xcodeproj/project.pbxproj:
* Sources.txt:
* interpreter/ProtoCallFrame.h:
(JSC::ProtoCallFrame::init):
* wasm/WasmB3IRGenerator.cpp:
(JSC::Wasm::B3IRGenerator::addCallIndirect):
* wasm/WasmBBQPlan.cpp:
* wasm/WasmFormat.h:
(JSC::Wasm::WasmToWasmImportableFunction::offsetOfSignatureIndex):
* wasm/WasmFunctionParser.h:
* wasm/WasmModule.h:
* wasm/WasmOMGPlan.cpp:
* wasm/WasmSectionParser.cpp:
(JSC::Wasm::SectionParser::parseType):
* wasm/WasmSignature.cpp:
(JSC::Wasm::SignatureInformation::adopt):
(JSC::Wasm::SignatureInformation::tryCleanup):
(JSC::Wasm::SignatureInformation::singleton): Deleted.
(JSC::Wasm::SignatureInformation::get): Deleted.
* wasm/WasmSignature.h:
(JSC::Wasm::Signature::index const):
(JSC::Wasm::SignatureHash::SignatureHash):
(JSC::Wasm::SignatureHash::hash):
(JSC::Wasm::SignatureHash::isHashTableDeletedValue const):
(JSC::Wasm::SignatureHash::empty): Deleted.
(JSC::Wasm::SignatureHash::deleted): Deleted.
* wasm/WasmSignatureInlines.h: Renamed from Source/JavaScriptCore/interpreter/ProtoCallFrame.cpp.
(JSC::Wasm::SignatureInformation::singleton):
(JSC::Wasm::SignatureInformation::get):
* wasm/js/JSToWasm.cpp:
* wasm/js/JSWebAssemblyModule.h:
* wasm/js/WasmToJS.cpp:
(JSC::Wasm::wasmToJS):
* wasm/js/WebAssemblyFunction.cpp:
* wasm/js/WebAssemblyModuleRecord.cpp:
* wasm/js/WebAssemblyWrapperFunction.cpp:

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

2 years ago[JSC] Put .throwStackOverflow code after the fast path in LLInt doVMEntry
yusukesuzuki@slowstart.org [Fri, 7 Sep 2018 16:57:03 +0000 (16:57 +0000)]
[JSC] Put .throwStackOverflow code after the fast path in LLInt doVMEntry
https://bugs.webkit.org/show_bug.cgi?id=189410

Reviewed by Mark Lam.

Put .throwStackOverflow code after the fast path in LLInt doVMEntry to
make doVMEntry code tight.

* llint/LLIntThunks.cpp:
(JSC::vmEntryToWasm): Deleted.
* llint/LLIntThunks.h:
(JSC::vmEntryToWasm):
* llint/LowLevelInterpreter32_64.asm:
* llint/LowLevelInterpreter64.asm:

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

2 years ago[RunLoopGeneric] OneShotTimer should be inactive when fired.
yoshiaki.jitsukawa@sony.com [Fri, 7 Sep 2018 16:27:25 +0000 (16:27 +0000)]
[RunLoopGeneric] OneShotTimer should be inactive when fired.
https://bugs.webkit.org/show_bug.cgi?id=189335

Reviewed by Yusuke Suzuki.

Source/WTF:

* wtf/generic/RunLoopGeneric.cpp:
(WTF::RunLoop::TimerBase::ScheduledTask::fired):
(WTF::RunLoop::TimerBase::isActive const):

Deactivate one-shot timer before invoking its callback.

Tools:

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

Add test expectations about timer's active state.

Add a new test to restart a one-shot timer within
its fired callback.

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

2 years ago[iOS] Unreviewed test gardening.
zalan@apple.com [Fri, 7 Sep 2018 15:51:37 +0000 (15:51 +0000)]
[iOS] Unreviewed test gardening.

* platform/ios/TestExpectations:

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

2 years agoUnreviewed syntax fix after r235781
bfulgham@apple.com [Fri, 7 Sep 2018 15:38:12 +0000 (15:38 +0000)]
Unreviewed syntax fix after r235781

Don't use hash-quote syntax for these non-regex inputs.

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

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

2 years ago[iOS] Move default mach-lookup deny to after common.sb is imported
bfulgham@apple.com [Fri, 7 Sep 2018 12:28:25 +0000 (12:28 +0000)]
[iOS] Move default mach-lookup deny to after common.sb is imported
https://bugs.webkit.org/show_bug.cgi?id=189385
<rdar://problem/43624193>

Reviewed by Eric Carlson.

* Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb: Move the 'deny mach-lookup' call later in the file.
* Resources/SandboxProfiles/ios/com.apple.WebKit.Storage.sb: Ditto.
* Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb: Ditto.

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

2 years agoShadowRoot should have its own node flag
rniwa@webkit.org [Fri, 7 Sep 2018 05:55:15 +0000 (05:55 +0000)]
ShadowRoot should have its own node flag
https://bugs.webkit.org/show_bug.cgi?id=189392

Reviewed by Antti Koivisto.

Added IsShadowRootFlag and IsDocumentNodeFlag, and removed IsDocumentFragmentFlag and IsStyledElementFlag.
Also re-ordered flags to group flags used by subclasses below ones directly used by Node in
accordinate with the comment.

No new tests since there should be no behavioral change.

* dom/ContainerNode.h:
(WebCore::Node::isTreeScope const): Deleted.
* dom/Node.h:
(WebCore::Node::isStyledElement const): Check if this is a HTML, SVG, or MathML element instead.
(WebCore::Node::isDocumentNode const): Simply check IsDocumentNodeFlag.
(WebCore::Node::isTreeScope const): Check if this is a document or a shadow root Instead of comparing
the tree scope to this.
(WebCore::Node::isDocumentFragment const): Check if this is a container node which is neither document,
element, nor shadow root.
(WebCore::Node::isShadowRoot const): Simply check IsShadowRootFlag. This is the change needed to fix
the blockign bug 166748.
(WebCore::Node::flagIsShadowRoot): Added. Will be used in the bug 166748.

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

2 years ago[WebAssembly] Optimize JS to Wasm call by removing Vector allocation
yusukesuzuki@slowstart.org [Fri, 7 Sep 2018 04:40:12 +0000 (04:40 +0000)]
[WebAssembly] Optimize JS to Wasm call by removing Vector allocation
https://bugs.webkit.org/show_bug.cgi?id=189353

Reviewed by Mark Lam.

JS to Wasm call always allocates Vector for the arguments. This is really costly if the wasm function is small.
This patch adds an initial size parameter to the Vector to avoid allocations for small sized arguments.

* runtime/ArgList.h:
* wasm/js/WebAssemblyFunction.cpp:
(JSC::callWebAssemblyFunction):

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

2 years ago[LFC] Inline replaced height calculation should use "used value"
zalan@apple.com [Fri, 7 Sep 2018 04:24:38 +0000 (04:24 +0000)]
[LFC] Inline replaced height calculation should use "used value"
https://bugs.webkit.org/show_bug.cgi?id=189395

Reviewed by Antti Koivisto.

Use the already assigned width value (aka used value) instead of the computed value when computing the inline's height.
see https://www.w3.org/TR/CSS22/cascade.html#value-stages for "used" and "computed" value.

* layout/FormattingContextGeometry.cpp:
(WebCore::Layout::FormattingContext::Geometry::inlineReplacedHeightAndMargin):

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

2 years ago[JSC] Clean up StructureStubClearingWatchpoint
yusukesuzuki@slowstart.org [Fri, 7 Sep 2018 04:24:19 +0000 (04:24 +0000)]
[JSC] Clean up StructureStubClearingWatchpoint
https://bugs.webkit.org/show_bug.cgi?id=189156

Reviewed by Saam Barati.

Cleaning up StructureStubClearingWatchpoint by holding StructureStubClearingWatchpoint in Bag
in WatchpointsOnStructureStubInfo. This removes hacky linked list code for StructureStubClearingWatchpoint.

* bytecode/StructureStubClearingWatchpoint.cpp:
(JSC::WatchpointsOnStructureStubInfo::addWatchpoint):
(JSC::StructureStubClearingWatchpoint::~StructureStubClearingWatchpoint): Deleted.
(JSC::StructureStubClearingWatchpoint::push): Deleted.
(JSC::WatchpointsOnStructureStubInfo::~WatchpointsOnStructureStubInfo): Deleted.
* bytecode/StructureStubClearingWatchpoint.h:
(JSC::StructureStubClearingWatchpoint::StructureStubClearingWatchpoint):

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

2 years agoRefactor WebCore::EditAction to be an 8-bit enum class
wenson_hsieh@apple.com [Fri, 7 Sep 2018 03:04:53 +0000 (03:04 +0000)]
Refactor WebCore::EditAction to be an 8-bit enum class
https://bugs.webkit.org/show_bug.cgi?id=189383

Reviewed by Dan Bernstein.

Source/WebCore:

Currently, EditAction.h defines an EditAction as an enum. This patch changes EditAction to instead be an 8-bit-
wide enum class, and renames all EditAction values from EditAction(*) to EditAction::(*).

No change in behavior.

* editing/ApplyStyleCommand.h:
(WebCore::ApplyStyleCommand::create):
* editing/CompositeEditCommand.cpp:
(WebCore::CompositeEditCommand::apply):
(WebCore::deleteSelectionEditingActionForEditingAction):
* editing/CompositeEditCommand.h:
(WebCore::EditCommandComposition::wasCreateLinkCommand const):
* editing/CreateLinkCommand.h:
* editing/DeleteFromTextNodeCommand.h:
(WebCore::DeleteFromTextNodeCommand::create):
* editing/DeleteSelectionCommand.h:
(WebCore::DeleteSelectionCommand::create):
* editing/DictationCommand.cpp:
(WebCore::DictationCommand::insertTextRunWithoutNewlines):
(WebCore::DictationCommand::insertParagraphSeparator):
* editing/EditAction.h:
(): Deleted.
* editing/EditCommand.cpp:
(WebCore::inputTypeNameForEditingAction):
* editing/EditCommand.h:
* editing/Editor.cpp:
(WebCore::inputEventDataForEditingStyleAndAction):
(WebCore::ClearTextCommand::editingAction const):
(WebCore::Editor::handleTextEvent):
(WebCore::Editor::replaceSelectionWithFragment):
(WebCore::Editor::performCutOrCopy):
(WebCore::Editor::setBaseWritingDirection):
(WebCore::Editor::markMisspellingsAfterTypingToWord):
(WebCore::Editor::changeBackToReplacedString):
(WebCore::Editor::transpose):
* editing/Editor.h:
* editing/EditorCommand.cpp:
(WebCore::applyCommandToFrame):
(WebCore::executeInsertFragment):
(WebCore::executeBackColor):
(WebCore::executeFontName):
(WebCore::executeFontSize):
(WebCore::executeFontSizeDelta):
(WebCore::executeForeColor):
(WebCore::executeJustifyCenter):
(WebCore::executeJustifyFull):
(WebCore::executeJustifyLeft):
(WebCore::executeJustifyRight):
(WebCore::executeMakeTextWritingDirectionLeftToRight):
(WebCore::executeMakeTextWritingDirectionNatural):
(WebCore::executeMakeTextWritingDirectionRightToLeft):
(WebCore::executeStrikethrough):
(WebCore::executeSubscript):
(WebCore::executeSuperscript):
(WebCore::executeToggleBold):
(WebCore::executeToggleItalic):
(WebCore::executeUnderline):
(WebCore::executeUnscript):
* editing/FormatBlockCommand.h:
* editing/IndentOutdentCommand.h:
* editing/InsertIntoTextNodeCommand.h:
(WebCore::InsertIntoTextNodeCommand::create):
* editing/InsertListCommand.cpp:
(WebCore::InsertListCommand::editingAction const):
* editing/InsertNodeBeforeCommand.h:
(WebCore::InsertNodeBeforeCommand::create):
* editing/InsertParagraphSeparatorCommand.h:
(WebCore::InsertParagraphSeparatorCommand::create):
* editing/InsertTextCommand.h:
(WebCore::InsertTextCommand::create):
(WebCore::InsertTextCommand::createWithMarkerSupplier):
* editing/MoveSelectionCommand.cpp:
(WebCore::MoveSelectionCommand::doApply):
(WebCore::MoveSelectionCommand::editingAction const):
* editing/RemoveFormatCommand.h:
* editing/RemoveNodeCommand.h:
(WebCore::RemoveNodeCommand::create):
* editing/ReplaceRangeWithTextCommand.cpp:
(WebCore::ReplaceRangeWithTextCommand::ReplaceRangeWithTextCommand):
(WebCore::ReplaceRangeWithTextCommand::doApply):
* editing/ReplaceSelectionCommand.cpp:
(WebCore::ReplaceSelectionCommand::completeHTMLReplacement):
(WebCore::ReplaceSelectionCommand::performTrivialReplace):
* editing/ReplaceSelectionCommand.h:
(WebCore::ReplaceSelectionCommand::create):
* editing/SpellingCorrectionCommand.cpp:
(WebCore::SpellingCorrectionCommand::SpellingCorrectionCommand):
(WebCore::SpellingCorrectionCommand::doApply):
* editing/TextInsertionBaseCommand.h:
* editing/TypingCommand.cpp:
(WebCore::editActionForTypingCommand):
(WebCore::editActionIsDeleteByTyping):
(WebCore::TypingCommand::isBeforeInputEventCancelable const):
(WebCore::TypingCommand::inputEventData const):
(WebCore::TypingCommand::inputEventDataTransfer const):
(WebCore::TypingCommand::insertTextRunWithoutNewlines):
(WebCore::TypingCommand::insertParagraphSeparator):
* editing/UnlinkCommand.h:
* editing/ios/DictationCommandIOS.cpp:
(WebCore::DictationCommandIOS::DictationCommandIOS):
* editing/ios/EditorIOS.mm:
(WebCore::Editor::removeUnchangeableStyles):
* page/DragController.cpp:
(WebCore::DragController::concludeEditDrag):

Source/WebKit:

* UIProcess/WebEditCommandProxy.cpp:
(WebKit::WebEditCommandProxy::nameForEditAction):
* WebProcess/WebPage/mac/WebPageMac.mm:
(WebKit::WebPage::changeFontAttributes):
(WebKit::WebPage::changeFont):

Source/WebKitLegacy/mac:

* WebCoreSupport/WebEditorClient.mm:
(undoNameForEditAction):
* WebView/WebHTMLView.mm:
(-[WebHTMLView pasteFont:]):
(-[WebHTMLView changeFont:]):
(-[WebHTMLView changeAttributes:]):
(-[WebHTMLView _undoActionFromColorPanelWithSelector:]):
(-[WebHTMLView changeColor:]):
* WebView/WebView.mm:
(-[WebView setTypingStyle:]):

Source/WebKitLegacy/win:

* WebCoreSupport/WebEditorClient.cpp:
(undoNameForEditAction):

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

2 years agoFix the build for non-Cocoa platforms after r235772.
simon.fraser@apple.com [Fri, 7 Sep 2018 02:36:03 +0000 (02:36 +0000)]
Fix the build for non-Cocoa platforms after r235772.

* platform/graphics/cairo/GradientCairo.cpp:
(WebCore::Gradient::createPlatformGradient):
* platform/graphics/win/GradientDirect2D.cpp:
(WebCore::Gradient::generateGradient):
(WebCore::Gradient::fill):

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

2 years ago[LFC] Add support for min/max-height percentage values.
zalan@apple.com [Fri, 7 Sep 2018 02:27:37 +0000 (02:27 +0000)]
[LFC] Add support for min/max-height percentage values.
https://bugs.webkit.org/show_bug.cgi?id=189391

Reviewed by Antti Koivisto.

Source/WebCore:

The percentage is calculated with respect to the height of the generated box's containing block.
If the height of the containing block is not specified explicitly (i.e., it depends on content height), and this element
is not absolutely positioned, the percentage value is treated as '0' (for 'min-height') or 'none' (for 'max-height').

Test: fast/block/block-only/min-max-height-percentage.html

* layout/FormattingContext.cpp:
(WebCore::Layout::FormattingContext::computeOutOfFlowVerticalGeometry const):
* layout/FormattingContext.h:
* layout/FormattingContextGeometry.cpp:
(WebCore::Layout::FormattingContext::Geometry::computedValueIfNotAuto):
(WebCore::Layout::FormattingContext::Geometry::computedMaxHeight):
(WebCore::Layout::FormattingContext::Geometry::computedMinHeight):
* layout/blockformatting/BlockFormattingContext.cpp:
(WebCore::Layout::BlockFormattingContext::computeHeightAndMargin const):

Tools:

* LayoutReloaded/misc/LFC-passing-tests.txt:

LayoutTests:

* fast/block/block-only/min-max-height-percentage-expected.txt: Added.
* fast/block/block-only/min-max-height-percentage.html: Added.

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

2 years agoAdd Support for Conic Gradients
megan_gardner@apple.com [Fri, 7 Sep 2018 01:36:36 +0000 (01:36 +0000)]
Add Support for Conic Gradients
https://bugs.webkit.org/show_bug.cgi?id=189329
<rdar://problem/21444701>

Reviewed by Simon Fraser.

Source/WebCore:

Add support for rendering CSS conic gradients.
The parsing work was already done, this just hooks up the data we have
with the CG functionality for conic gradients. Add the needed plumbing
to allow for this additional type and fill in the creation of
a conic gradient.

Tests: fast/gradients/conic-repeating.html
       fast/gradients/conic.html

* css/CSSGradientValue.cpp:
(WebCore::createGradient):
(WebCore::LinearGradientAdapter::gradientLength const):
(WebCore::RadialGradientAdapter::gradientLength const):
(WebCore::ConicGradientAdapter::ConicGradientAdapter):
(WebCore::ConicGradientAdapter::gradientLength const):
(WebCore::ConicGradientAdapter::maxExtent const):
(WebCore::ConicGradientAdapter::normalizeStopsAndEndpointsOutsideRange):

Compute what the color stops should be if they extend past 0-1

(WebCore::CSSGradientValue::computeStops):
(WebCore::CSSConicGradientValue::createGradient):
(WebCore::LinearGradientAdapter::startPoint const): Deleted.
(WebCore::LinearGradientAdapter::endPoint const): Deleted.
(WebCore::RadialGradientAdapter::startPoint const): Deleted.
(WebCore::RadialGradientAdapter::endPoint const): Deleted.

Start and End points weren't very universal. All we really need from these
gradientAdapters is their length, so just ask for that instead.

* inspector/InspectorCanvas.cpp:
(WebCore::InspectorCanvas::buildArrayForCanvasGradient):
* platform/graphics/Gradient.cpp:
(WebCore::Gradient::create):
(WebCore::Gradient::Gradient):
(WebCore::Gradient::type const):
(WebCore::Gradient::adjustParametersForTiledDrawing):
(WebCore::Gradient::isZeroSize const):
(WebCore::Gradient::hash const):
* platform/graphics/Gradient.h:
* platform/graphics/cg/GradientCG.cpp:
(WebCore::Gradient::paint):

Source/WebCore/PAL:

Define the CG functionality for conic gradients.

* pal/spi/cg/CoreGraphicsSPI.h:

Source/WebKit:

Connect up web preferences to allow conic gradients to be turned on in the
experimental features menu.

* Shared/WebPreferences.yaml:

LayoutTests:

Simple tests to see if conic gradients are rendered properly.

* fast/gradients/conic-expected.html: Added.
* fast/gradients/conic-repeating-expected.html: Added.
* fast/gradients/conic-repeating.html: Added.
* fast/gradients/conic.html: Added.

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

2 years agoLog when leak detection changes the test result
simon.fraser@apple.com [Fri, 7 Sep 2018 00:24:51 +0000 (00:24 +0000)]
Log when leak detection changes the test result
https://bugs.webkit.org/show_bug.cgi?id=189293

Reviewed by Jon Lee.

When you have an "Leak" expectation in TestExpectations, it's confusing to see a test unexpectedly pass,
but then show up as an expected fail at the end (because leak detection happens at the end of a shard).
So log when leak detection changes a test result.

* Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py:
(LayoutTestRunner._annotate_results_with_additional_failures):
* Scripts/webkitpy/layout_tests/models/test_expectations.py:
(TestExpectations):

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

2 years ago[macOS] [WK2] Support changing attributes for selected text (text shadow, underline...
wenson_hsieh@apple.com [Fri, 7 Sep 2018 00:05:31 +0000 (00:05 +0000)]
[macOS] [WK2] Support changing attributes for selected text (text shadow, underline, strike-through)
https://bugs.webkit.org/show_bug.cgi?id=189356
<rdar://problem/44185674>

Reviewed by Tim Horton.

Source/WebCore:

Add support for encoding and decoding FontAttributeChanges, so that we can send FontAttributeChanges over IPC in
WebKit2. Also change m_verticalAlign to a new VerticalAlignChange enum type, so that it's no longer tied to the
CSS property values of "vertical-align", and can be encoded/decoded separately from VerticalAlign in
RenderStyleConstants.

Test: FontManagerTests.ChangeAttributesWithFontEffectsBox

* editing/FontAttributeChanges.cpp:
(WebCore::FontAttributeChanges::createEditingStyle const):
* editing/FontAttributeChanges.h:
(WebCore::FontAttributeChanges::setVerticalAlign):
(WebCore::FontShadow::encode const):
(WebCore::FontShadow::decode):
(WebCore::FontAttributeChanges::encode const):
(WebCore::FontAttributeChanges::decode):
* platform/mac/WebCoreNSFontManagerExtras.mm:
(WebCore::computedFontAttributeChanges):

Source/WebKit:

Implement -[WKWebView changeAttributes:], so that WKWebView can carry out more types of font style changes via
NSFontPanel. This patch makes it possible to (1) change text shadow, (2) add or remove strike-through, and (3)
add or remove underlines from selected text using the font panel.

This builds on the mechanisms introduced in r235748 to compute font attribute changes in the UI process and
propagate this information to the web process, where we're able to create and apply an EditingStyle to the
current selection.

* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView changeAttributes:]):
* UIProcess/Cocoa/WebViewImpl.h:
* UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::changeFontAttributesFromSender):
* UIProcess/WebPageProxy.h:
* UIProcess/mac/WebPageProxyMac.mm:
(WebKit::WebPageProxy::changeFontAttributes):
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:

Add boilerplate IPC support.

* WebProcess/WebPage/mac/WebPageMac.mm:
(WebKit::WebPage::changeFontAttributes):

Tools:

Adds a new API test to verify that some font attributes (text shadow, underline, and strike-through) can be
added and removed using NSFontPanel.

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/mac/FontManagerTests.mm:

Add the new API test.

(TestWebKitAPI::TEST):
* TestWebKitAPI/cocoa/TestWKWebView.h:
* TestWebKitAPI/mac/NSFontPanelTesting.h: Added.
* TestWebKitAPI/mac/NSFontPanelTesting.mm: Added.

Introduce a new file that extends NSFontPanel with some additional testing functionality. This includes the
ability to interact with the text shadow toggle button, choose the text shadow blur radius and opacity, and
change underline and strike-through styles.

(findSubviewOfClass):
(findMenuItemWithTitle):
(-[NSFontPanel fontEffectsBox]):

NSFontEffectsBox (an internal AppKit class) is the sender in the case where -changeAttributes: is invoked
through interaction with the font panel. To simulate this for testing, grab this font effects box and pass it
directory to -changeAttributes:.

(-[NSFontPanel chooseUnderlineMenuItemWithTitle:]):
(-[NSFontPanel chooseStrikeThroughMenuItemWithTitle:]):

The supported values for these menu items are "none" and "single", which adds a single underline or
strike-through to selected text. We grab these menu items by asking for the font panel's NSToolbar, and finding
the relevant menu items via toolbar item identifiers.

(-[NSFontPanel _didChangeAttributes]):
(-[NSFontPanel shadowBlurSlider]):
(-[NSFontPanel shadowOpacitySlider]):
(-[NSFontPanel shadowToggleButton]):
(-[NSFontPanel toggleShadow]):
(-[NSFontPanel shadowOpacity]):
(-[NSFontPanel setShadowOpacity:]):
(-[NSFontPanel shadowBlur]):
(-[NSFontPanel setShadowBlur:]):
(-[NSFontPanel _toolbarItemWithIdentifier:]):

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

2 years agoImproper speculation type for Math.pow(NaN, 0) in Abstract Interpreter
msaboff@apple.com [Thu, 6 Sep 2018 23:44:49 +0000 (23:44 +0000)]
Improper speculation type for Math.pow(NaN, 0) in Abstract Interpreter
https://bugs.webkit.org/show_bug.cgi?id=189380

Reviewed by Saam Barati.

JSTests:

New test.

* stress/math-pow-nan-to-zero-spec-type.js: Added.
(func):
(test):

Source/JavaScriptCore:

Account for the case where in Math.pow(NaN, y) where y could be 0.

* bytecode/SpeculatedType.cpp:
(JSC::typeOfDoublePow):

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

2 years agorun-webkit-tests prints confusing messages when test expectations list results that...
simon.fraser@apple.com [Thu, 6 Sep 2018 23:25:39 +0000 (23:25 +0000)]
run-webkit-tests prints confusing messages when test expectations list results that are not compatible with the run options
https://bugs.webkit.org/show_bug.cgi?id=189219

Reviewed by Jon Lee.

If you call run-webkit-tests without --pixel-tests, and a non-ref test is marked as ImageOnlyFailure,
it will be reported as unexpectedly passing. This is more confusing if you run without --world-leaks, yet
tests are marked as [ Leak ] in TestExpectations.

Fix by filtering out expectations that don't apply given the run options. So without --pixel-tests,
a non-ref ImageOnlyFailure becomes a Pass, and without --world-leaks, a Leak becomes a Pass.

Add various unit tests to test the various combinations.

* Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py:
(LayoutTestRunner._update_summary_with_result):
(LayoutTestRunner._annotate_results_with_additional_failures):
* Scripts/webkitpy/layout_tests/controllers/layout_test_runner_unittest.py:
(LayoutTestRunnerTests.test_update_summary_with_result):
* Scripts/webkitpy/layout_tests/models/test_expectations.py:
(TestExpectationsModel.get_expectations_or_pass):
(TestExpectationsModel):
(TestExpectationsModel.expectations_to_string):
(TestExpectationsModel.get_expectations_string):
(TestExpectations.filtered_expectations_for_test):
(TestExpectations):
(TestExpectations.matches_an_expected_result):
* Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py:
* Scripts/webkitpy/layout_tests/models/test_run_results.py:
(summarize_results):
* Scripts/webkitpy/layout_tests/models/test_run_results_unittest.py:
(summarized_results):
(SummarizedResultsTest.setUp):
(SummarizedResultsTest.test_summarized_results_include_passes):
(SummarizedResultsTest):
(SummarizedResultsTest.test_summarized_results_world_leaks_disabled):
* Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
* Scripts/webkitpy/layout_tests/views/buildbot_results_unittest.py:
(BuildBotPrinterTests.test_print_unexpected_results):
(BuildBotPrinterTests.test_print_unexpected_results_with_options):
(BuildBotPrinterTests.test_print_results):
* Scripts/webkitpy/port/test.py:
(unit_test_list):

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

2 years ago[LFC][BFC] Add support for min(max)-height
zalan@apple.com [Thu, 6 Sep 2018 22:39:54 +0000 (22:39 +0000)]
[LFC][BFC] Add support for min(max)-height
https://bugs.webkit.org/show_bug.cgi?id=189377

Reviewed by Antti Koivisto.

Source/WebCore:

See https://www.w3.org/TR/CSS22/visudet.html#min-max-heights for details.

Tests: fast/block/block-only/absolute-position-min-max-height.html
       fast/block/block-only/float-min-max-height.html
       fast/block/block-only/inflow-min-max-height.html

* layout/FormattingContext.cpp:
(WebCore::Layout::FormattingContext::computeOutOfFlowVerticalGeometry const):
* layout/FormattingContext.h:
(WebCore::Layout::FormattingContext::Geometry::outOfFlowVerticalGeometry):
(WebCore::Layout::FormattingContext::Geometry::floatingHeightAndMargin):
(WebCore::Layout::FormattingContext::Geometry::inlineReplacedHeightAndMargin):
(WebCore::Layout::FormattingContext::Geometry::complicatedCases):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedVerticalGeometry):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedVerticalGeometry):
(WebCore::Layout::FormattingContext::Geometry::floatingReplacedHeightAndMargin):
* layout/FormattingContextGeometry.cpp:
(WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedVerticalGeometry):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedVerticalGeometry):
(WebCore::Layout::FormattingContext::Geometry::complicatedCases):
(WebCore::Layout::FormattingContext::Geometry::floatingReplacedHeightAndMargin):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowVerticalGeometry):
(WebCore::Layout::FormattingContext::Geometry::floatingHeightAndMargin):
(WebCore::Layout::FormattingContext::Geometry::inlineReplacedHeightAndMargin):
* layout/blockformatting/BlockFormattingContext.cpp:
(WebCore::Layout::BlockFormattingContext::computeHeightAndMargin const):
* layout/blockformatting/BlockFormattingContext.h:
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowHeightAndMargin):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedHeightAndMargin):
* layout/blockformatting/BlockFormattingContextGeometry.cpp:
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedHeightAndMargin):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowHeightAndMargin):

Tools:

* LayoutReloaded/misc/LFC-passing-tests.txt:

LayoutTests:

* fast/block/block-only/absolute-position-min-max-height-expected.txt: Added.
* fast/block/block-only/absolute-position-min-max-height.html: Added.
* fast/block/block-only/float-min-max-height-expected.txt: Added.
* fast/block/block-only/float-min-max-height.html: Added.
* fast/block/block-only/inflow-min-max-height-expected.txt: Added.
* fast/block/block-only/inflow-min-max-height.html: Added.

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

2 years agoBenchmarkResults.format should support specifying depth of tests to show.
dewei_zhu@apple.com [Thu, 6 Sep 2018 22:32:15 +0000 (22:32 +0000)]
BenchmarkResults.format should support specifying depth of tests to show.
https://bugs.webkit.org/show_bug.cgi?id=189135

Reviewed by Ryosuke Niwa.

Added the option to specify the depth of tests to show.

* Scripts/webkitpy/benchmark_runner/benchmark_results.py:
(BenchmarkResults):
(BenchmarkResults.format): Added 'max_depth' option.
(BenchmarkResults._format_tests): Added unit tests for 'max_depth'.

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

2 years agoAn EWS run that has leak test failures does not correctly add bugzilla comments showi...
simon.fraser@apple.com [Thu, 6 Sep 2018 22:25:59 +0000 (22:25 +0000)]
An EWS run that has leak test failures does not correctly add bugzilla comments showing the failures
https://bugs.webkit.org/show_bug.cgi?id=189368

Reviewed by Alexey Proskuryakov.

Include FailureDocumentLeak in ALL_FAILURE_CLASSES (with a fairly redundant test),
which should fix EWS showing leaks in Bugzilla.

* Scripts/webkitpy/layout_tests/models/test_failures.py:
(FailureDocumentLeak.__init__):
* Scripts/webkitpy/layout_tests/models/test_failures_unittest.py:
(TestFailuresTest.test_all_failure_classes):

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

2 years ago[MediaStream] Include supported frame rates in video capture presets
eric.carlson@apple.com [Thu, 6 Sep 2018 22:10:16 +0000 (22:10 +0000)]
[MediaStream] Include supported frame rates in video capture presets
https://bugs.webkit.org/show_bug.cgi?id=189351
<rdar://problem/44188917>

Reviewed by Youenn Fablet.

No new tests, no functionality changed.

Include frame rates as well as width/height in video capture presets, so the mock video
capture devices model real camera devices more closely.

* platform/mediastream/RealtimeMediaSource.cpp:
(WebCore::RealtimeMediaSource::setSizeAndFrameRate): Renamed from applySizeAndFrameRate. Use
setSize instead of setWidth and setHeight.
(WebCore::RealtimeMediaSource::applyConstraints): applySizeAndFrameRate -> setSizeAndFrameRate.
(WebCore::RealtimeMediaSource::applySizeAndFrameRate): Deleted.
(WebCore::RealtimeMediaSource::setWidth): Deleted.
(WebCore::RealtimeMediaSource::setHeight): Deleted.
* platform/mediastream/RealtimeMediaSource.h:

* platform/mediastream/RealtimeVideoSource.cpp:
(WebCore::RealtimeVideoSource::setSupportedPresets): New.
(WebCore::updateMinMax):
(WebCore::RealtimeVideoSource::addSupportedCapabilities const): Calculate capabilities from
presets.
(WebCore::RealtimeVideoSource::supportsSizeAndFrameRate): Use bestSupportedSizeAndFrameRate.
(WebCore::RealtimeVideoSource::bestSupportedSizeAndFrameRate):
(WebCore::RealtimeVideoSource::setSizeAndFrameRate):
(WebCore::RealtimeVideoSource::setSupportedFrameRates): Deleted.
(WebCore::RealtimeVideoSource::bestSupportedCaptureSizeForWidthAndHeight): Deleted.
(WebCore::RealtimeVideoSource::applySizeAndFrameRate): Deleted.
(WebCore::RealtimeVideoSource::supportsFrameRate): Deleted.
* platform/mediastream/RealtimeVideoSource.h:
(WebCore::RealtimeVideoSource::setSupportedCaptureSizes): Deleted.
* platform/mediastream/gstreamer/GStreamerVideoCaptureSource.cpp:
(WebCore::GStreamerVideoCaptureSource::stopProducingData):
* platform/mediastream/mac/AVVideoCaptureSource.h:
* platform/mediastream/mac/AVVideoCaptureSource.mm:
(WebCore::AVVideoCaptureSource::setSizeAndFrameRate):
(WebCore::AVVideoCaptureSource::applySizeAndFrameRate): Deleted.
* platform/mediastream/mac/ScreenDisplayCaptureSourceMac.mm:
(WebCore::ScreenDisplayCaptureSourceMac::createDisplayStream):
* platform/mock/MockMediaDevice.h:
(WebCore::MockCameraProperties::encode const):
(WebCore::MockCameraProperties::decode):
(WebCore::MockDisplayProperties::encode const):
(WebCore::MockDisplayProperties::decode):
* platform/mock/MockRealtimeMediaSourceCenter.cpp:
(WebCore::defaultDevices):
* platform/mock/MockRealtimeVideoSource.cpp:
(WebCore::MockRealtimeVideoSource::MockRealtimeVideoSource):
(WebCore::MockRealtimeVideoSource::capabilities const):
(WebCore::MockRealtimeVideoSource::settings const):

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

2 years ago[iOS] Add a test to ensure that DOM keyup events have the correct details
dbates@webkit.org [Thu, 6 Sep 2018 21:48:34 +0000 (21:48 +0000)]
[iOS] Add a test to ensure that DOM keyup events have the correct details
https://bugs.webkit.org/show_bug.cgi?id=189327

Reviewed by Wenson Hsieh.

Until we fix <rdar://problem/35282761> DOM keyup events will have incorrect details on iOS
when dispatched in response to a hardware keyboard press. For now, land expected failure results.

* fast/events/ios/keyup-expected.txt: Added.
* fast/events/ios/keyup.html: Added.
* resources/ui-helper.js:
(window.UIHelper.typeCharacter): Escape backslash characters in order to build up
a well-formed UI script to evaluate.

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

2 years agoActively prewarm processes created for prewarm pool
antti@apple.com [Thu, 6 Sep 2018 21:37:15 +0000 (21:37 +0000)]
Actively prewarm processes created for prewarm pool
https://bugs.webkit.org/show_bug.cgi?id=189364

Reviewed by Chris Dumez.

Source/WebCore:

Do some basic prewarming for newly created processes.

* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* css/CSSDefaultStyleSheets.cpp:
(WebCore::CSSDefaultStyleSheets::loadFullDefaultStyle):
* css/CSSDefaultStyleSheets.h:
* page/Frame.cpp:
(WebCore::Frame::Frame):
* page/ProcessWarming.cpp: Added.
(WebCore::ProcessWarming::initializeNames):

Factor name initialization into a function.

(WebCore::ProcessWarming::prewarm):

Prewarm
- names
- settings (system fonts)
- user agent stylesheet
- JavaScript VM
- telephone number detection

* page/ProcessWarming.h: Added.

Source/WebKit:

* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::createNewWebProcess):
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::prewarm):
* WebProcess/WebProcess.h:
* WebProcess/WebProcess.messages.in:

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

2 years agoMove replaceTrack logic to RTCRtpSender backend
youenn@apple.com [Thu, 6 Sep 2018 21:14:07 +0000 (21:14 +0000)]
Move replaceTrack logic to RTCRtpSender backend
https://bugs.webkit.org/show_bug.cgi?id=189359

Reviewed by Eric Carlson.

Move replaceTrack handling from LibWebRTCPeerConnectionBackend to LibWebRTCRtpSenderBackend.
This will allow using SetTrack when fully implementing unified plan.
No change of behavior.

* Modules/mediastream/RTCRtpSender.cpp:
(WebCore::RTCRtpSender::replaceTrack):
* Modules/mediastream/RTCRtpSender.h:
* Modules/mediastream/RTCRtpSender.idl:
* Modules/mediastream/RTCRtpSenderBackend.h:
* Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:
(WebCore::LibWebRTCPeerConnectionBackend::replaceTrack): Deleted.
(WebCore::LibWebRTCPeerConnectionBackend::enqueueReplaceTrackTask): Deleted.
* Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.h:
* Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.cpp:
(WebCore::updateTrackSource):
(WebCore::LibWebRTCRtpSenderBackend::replaceTrack):
* Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.h:

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

2 years agoUnreviewed, rolling out r235755.
commit-queue@webkit.org [Thu, 6 Sep 2018 21:09:14 +0000 (21:09 +0000)]
Unreviewed, rolling out r235755.
https://bugs.webkit.org/show_bug.cgi?id=189367

Didn't address the review comment (Requested by rniwa on
#webkit).

Reverted changeset:

"BenchmarkResults.format should support specifying depth of
tests to show."
https://bugs.webkit.org/show_bug.cgi?id=189135
https://trac.webkit.org/changeset/235755

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

2 years agoBenchmarkResults.format should support specifying depth of tests to show.
dewei_zhu@apple.com [Thu, 6 Sep 2018 20:47:55 +0000 (20:47 +0000)]
BenchmarkResults.format should support specifying depth of tests to show.
https://bugs.webkit.org/show_bug.cgi?id=189135

Reviewed by Ryosuke Niwa.

Added the option to specify the depth of tests to show.

* Scripts/webkitpy/benchmark_runner/benchmark_results.py:
(BenchmarkResults):
(BenchmarkResults.format): Added 'max_depth' option.
(BenchmarkResults._format_tests): Added unit tests for 'max_depth'.

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

2 years ago[Apple Pay] Rename the -apple-pay-button-type value "checkout" to "check-out"
aestes@apple.com [Thu, 6 Sep 2018 20:42:48 +0000 (20:42 +0000)]
[Apple Pay] Rename the -apple-pay-button-type value "checkout" to "check-out"
https://bugs.webkit.org/show_bug.cgi?id=189366
<rdar://problem/44193218>

Reviewed by Sam Weinig.

Source/WebCore:

The button title is "Check out with Apple Pay", so we should use the verb phrase "check out"
rather than the noun "checkout" for naming this value.

Updated http/tests/ssl/applepay/ApplePayButtonV4.html.

* css/CSSPrimitiveValueMappings.h:
(WebCore::CSSPrimitiveValue::CSSPrimitiveValue):
(WebCore::CSSPrimitiveValue::operator ApplePayButtonType const):
* css/CSSValueKeywords.in:
* css/parser/CSSParserFastPaths.cpp:
(WebCore::CSSParserFastPaths::isValidKeywordPropertyAndValue):
* rendering/RenderThemeCocoa.mm:
(WebCore::toPKPaymentButtonType):
* rendering/style/RenderStyleConstants.h:

Source/WebInspectorUI:

* UserInterface/Models/CSSKeywordCompletions.js:

LayoutTests:

* http/tests/ssl/applepay/ApplePayButtonV4.html:

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

2 years ago[WHLSL] Call arguments should be copied as soon as they are evaluated
commit-queue@webkit.org [Thu, 6 Sep 2018 20:36:41 +0000 (20:36 +0000)]
[WHLSL] Call arguments should be copied as soon as they are evaluated
https://bugs.webkit.org/show_bug.cgi?id=189360

Patch by Thomas Denney <tdenney@apple.com> on 2018-09-06
Reviewed by Myles C. Maxfield.

Previously all call arguments were evaluated and then their results were
copied into new buffers for the call. However, the results are not
necessarily independent, so the result should be copied immediately
after evaluation.

* WebGPUShadingLanguageRI/Evaluator.js:
(Evaluator.prototype.visitCallExpression): Move location of copy.
(Evaluator):
* WebGPUShadingLanguageRI/Test.js: Add new test to verify correct
behavior.

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

2 years agoDon't pause playback when locking screen if video is being displayed on second screen.
jer.noble@apple.com [Thu, 6 Sep 2018 19:59:33 +0000 (19:59 +0000)]
Don't pause playback when locking screen if video is being displayed on second screen.
https://bugs.webkit.org/show_bug.cgi?id=189321

Reviewed by Eric Carlson.

Source/WebCore:

Expand the existing behavior when AirPlaying to an external device to playing to a local
external screen. Don't pause when the screen locks, and don't stop buffering in that mode either.

Add a KVO-observer to the WebAVPlayerController's playingOnSecondScreen property, and pass
that observed value on to the media element.

* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::setShouldPlayToPlaybackTarget):
(WebCore::HTMLMediaElement::setPlayingOnSecondScreen):
(WebCore::HTMLMediaElement::shouldOverrideBackgroundPlaybackRestriction const):
(WebCore::HTMLMediaElement::processingUserGestureForMedia const):
(WebCore::HTMLMediaElement::mediaState const):
(WebCore::HTMLMediaElement::purgeBufferedDataIfPossible):
(WebCore::HTMLMediaElement::shouldOverrideBackgroundLoadingRestriction const):
(WebCore::HTMLMediaElement::webkitCurrentPlaybackTargetIsWireless const): Deleted.
(WebCore::HTMLMediaElement::canPlayToWirelessPlaybackTarget const): Deleted.
(WebCore::HTMLMediaElement::isPlayingToWirelessPlaybackTarget const): Deleted.
* html/HTMLMediaElement.h:
(WebCore::HTMLMediaElement::webkitCurrentPlaybackTargetIsWireless const):
(WebCore::HTMLMediaElement::isPlayingToExternalTarget const):
* html/MediaElementSession.cpp:
(WebCore::MediaElementSession::canPlayToWirelessPlaybackTarget const): Deleted.
* html/MediaElementSession.h:
* platform/audio/PlatformMediaSession.h:
(WebCore::PlatformMediaSessionClient::setWirelessPlaybackTarget):
(WebCore::PlatformMediaSessionClient::isPlayingOnSecondScreen const):
(WebCore::PlatformMediaSession::canPlayToWirelessPlaybackTarget const): Deleted.
(WebCore::PlatformMediaSessionClient::canPlayToWirelessPlaybackTarget const): Deleted.
* platform/cocoa/PlaybackSessionModel.h:
* platform/cocoa/PlaybackSessionModelMediaElement.h:
* platform/cocoa/PlaybackSessionModelMediaElement.mm:
(WebCore::PlaybackSessionModelMediaElement::setPlayingOnSecondScreen):
* platform/ios/WebAVPlayerController.mm:
(-[WebAVPlayerController init]):
(-[WebAVPlayerController dealloc]):
(-[WebAVPlayerController observeValueForKeyPath:ofObject:change:context:]):
* platform/ios/WebVideoFullscreenControllerAVKit.mm:
(VideoFullscreenControllerContext::setPlayingOnSecondScreen):

Source/WebKit:

Pass the "isPlayingOnSecondScreen" value across the process boundary.

* UIProcess/Cocoa/PlaybackSessionManagerProxy.h:
* UIProcess/Cocoa/PlaybackSessionManagerProxy.mm:
(WebKit::PlaybackSessionModelContext::setPlayingOnSecondScreen):
(WebKit::PlaybackSessionManagerProxy::setPlayingOnSecondScreen):
* WebProcess/cocoa/PlaybackSessionManager.h:
* WebProcess/cocoa/PlaybackSessionManager.messages.in:
* WebProcess/cocoa/PlaybackSessionManager.mm:
(WebKit::PlaybackSessionManager::setPlayingOnSecondScreen):

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

2 years agoGardening: Move regress-189185.js under JSTests/wasm.
mark.lam@apple.com [Thu, 6 Sep 2018 19:58:57 +0000 (19:58 +0000)]
Gardening: Move regress-189185.js under JSTests/wasm.
https://bugs.webkit.org/show_bug.cgi?id=189347

Unreviewed.

* stress/regress-189185.js: Removed.
* wasm/regress/regress-189185.js: Copied from JSTests/stress/regress-189185.js.

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

2 years ago[WHLSL] The test suite should log the compile time for the standard library
commit-queue@webkit.org [Thu, 6 Sep 2018 19:58:12 +0000 (19:58 +0000)]
[WHLSL] The test suite should log the compile time for the standard library
https://bugs.webkit.org/show_bug.cgi?id=189354

Patch by Thomas Denney <tdenney@apple.com> on 2018-09-06
Reviewed by Myles C. Maxfield.

The test suite previously only logged the time for test execution, and
not the compile time for the standard library.

* WebGPUShadingLanguageRI/Test.js:

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

2 years agoGroup options of scrollRectToVisible into a struct
commit-queue@webkit.org [Thu, 6 Sep 2018 19:48:08 +0000 (19:48 +0000)]
Group options of scrollRectToVisible into a struct
https://bugs.webkit.org/show_bug.cgi?id=189352

Patch by Frederic Wang <fwang@igalia.com> on 2018-09-06
Reviewed by Simon Fraser.

Source/WebCore:

RenderLayer::scrollRectToVisible and RenderObject::scrollRectToVisible have several
parameters to configure the type of scrolling. This patch groups the const options into a
single struct to make easier to handle them in the future. For example, an #ifdefed scroll
behavior option will be added in bug 188043. This refactoring can maybe help too for other
scroll extensions (e.g. bug 176454 and bug 161611).

No new tests, behavior unchanged.

* accessibility/AccessibilityObject.cpp:
(WebCore::AccessibilityObject::scrollToMakeVisible const): Pass options via a struct.
* dom/Element.cpp:
(WebCore::Element::scrollIntoView): Ditto.
(WebCore::Element::scrollIntoViewIfNeeded): Ditto.
(WebCore::Element::scrollIntoViewIfNotVisible): Ditto.
* editing/FrameSelection.cpp: Include RenderLayer.h in all WebKit ports in order to define
ScrollRectToVisibleOptions.
(WebCore::FrameSelection::revealSelection): Pass options via a struct.
* page/FrameView.cpp:
(WebCore::FrameView::scrollToFocusedElementInternal): Ditto.
(WebCore::FrameView::scrollToAnchor): Ditto.
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::scrollRectToVisible): Pass options via a struct. Note that
absoluteRect and insideFixed are modified in this function.
(WebCore::RenderLayer::autoscroll): Pass options via a struct.
* rendering/RenderLayer.h: Add ScrollRectToVisibleOptions and use it in order to pass
scrollRectToVisible options.
* rendering/RenderObject.cpp:
(WebCore::RenderObject::scrollRectToVisible): Pass options via a struct
* rendering/RenderObject.h: Forward-declare ScrollRectToVisibleOptions and use in order to
pass scrollRectToVisible options.

Source/WebKitLegacy/mac:

* WebView/WebFrame.mm: Add header to use ScrollRectToVisibleOptions.
(-[WebFrame _scrollDOMRangeToVisible:]): Pass options via a struct.
(-[WebFrame _scrollDOMRangeToVisible:withInset:]): Ditto.

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

2 years ago[macOS] Cannot change font size at selection until font panel is shown
wenson_hsieh@apple.com [Thu, 6 Sep 2018 19:46:38 +0000 (19:46 +0000)]
[macOS] Cannot change font size at selection until font panel is shown
https://bugs.webkit.org/show_bug.cgi?id=189295
<rdar://problem/35593389>

Reviewed by Ryosuke Niwa.

Source/WebCore:

Currently, attempting to alter the font size of currently selected editable text in WKWebView via menu items
will fail if the font panel has never been shown. This is because WebViewImpl::changeFontFromFontPanel, which is
responsible for converting the current font at the selection to the new font using -[NSFontManager convertFont:]
bails as a result of NSFontManager's currently selected font always being nil.

WKWebView is responsible for keeping NSFontManager up-to-date with the currently selected font; in fact, this
was initially the case in r180465, which introduced NSFontManager support in WebKit2 by propagating EditorState
updates that contained font information for the current selection. However, this regressed performance due to
selected font computation triggering extra layout passes; r180768 addressed this by introducing a mechanism for
requesting the font at the current selection, and only updating NSFontManager with the new selected font when
the shared font panel is visible (determined by KVO on NSFontPanel). However, this again regressed WKWebView
launch performance, due to KVO registration always forcing the shared NSFontPanel to be created. r182037
addressed this by only registering for KVO on the font panel if the WKWebView has been made editable (SPI on
WKWebView).

This leads to two issues when attempting to alter font attributes using macOS UI: (1) in web views that have not
been made editable using SPI, showing the font panel and attempting to change the font fails due to the selected
font staying nil, because we've never begun registering for KVO notifications on the font panel so we don't try
to keep the font manager up to date. (2) Even if the web view is made editable, if the font panel is never
shown, then the font manager still won't be kept up to date with the current selection, so changing fonts using
menu items still does not work.

We fix both of these problems by refactoring font manager support on WebKit2 such that an up-to-date selected
font in the UI process is no longer necessary in order to alter the font at the current selection. To do this,
we figure out what changes the NSFontManager would've made to the currently selected font in the UI process, and
then propagate this information to the web process, where we convert this information into an EditingStyle which
we apply to the current selection.

The code to both determine the attributes changed by NSFontManager and to convert these attributes into editing
styles to be applied via Editor already exists in WebKitLegacy, in WebHTMLView.mm. This patch moves this
existing logic into WebCore and teases it apart into two portions: the first portion probes NSFontManager to
determine which aspects of the font changed and constructs FontChanges, which captures these differences. The
second portion maps FontChanges to an EditingStyle, which can then be applied to the current selection. In
WebKitLegacy, we construct FontChanges using the font manager, and then immediately use it to create and apply
an EditingStyle. In WebKit, we construct FontChanges in the UI process using the font manager, and then send
this over to the web process via WebPage::changeFont, which then creates and applies the EditingStyle.

Note that this patch also introduces FontAttributeChanges, which is similar in concept to FontChanges, but
captures a broader range of changes possible via NSFontPanel. This was done so that we can eliminate all of the
font manager probing code (along with the two specimen fonts) from WebHTMLView, but is also necessary in order
to allow changing font shadow, strikethrough, and underlines via the font panel to work in WebKit2. This will be
fixed in a followup, by making FontAttributeChanges IPC encodable and by making WKWebView/WKView respond to the
-changeAttributes: selector.

Changes in behavior to WebKit2 are covered by new API tests; legacy WebKit behavior should remain unchanged.

Tests:  FontManagerTests.ChangeFontSizeWithMenuItems
        FontManagerTests.ChangeFontWithPanel

* SourcesCocoa.txt:
* WebCore.xcodeproj/project.pbxproj:
* editing/Editor.h:

Remove applyFontStyles.

* editing/FontAttributeChanges.cpp: Added.
(WebCore::FontChanges::platformFontFamilyNameForCSS const):

Given a font family name and a font name, returns the string to use as the "font-family" style property value.
Originally from WebHTMLView.mm.

(WebCore::FontChanges::createEditingStyle const):

Converts font changes to an EditingStyle that can be used to apply these changes.

(WebCore::FontChanges::createStyleProperties const):

Introduce FontChanges, which encapsulates changes which are to be applied to the font in the current selection.

(WebCore::cssValueListForShadow):
(WebCore::FontAttributeChanges::createEditingStyle const):

Converts font attribute changes to an EditingStyle that can be used to apply these changes.

* editing/FontAttributeChanges.h: Added.

Introduce FontAttributeChanges, which encapsulates changes which are to be applied to the font attributes in the
current selection. This includes a set of FontChanges, as well as additional attributes such as strike-through
and underlines.

(WebCore::FontChanges::setFontName):
(WebCore::FontChanges::setFontFamily):
(WebCore::FontChanges::setFontSize):
(WebCore::FontChanges::setFontSizeDelta):
(WebCore::FontChanges::setBold):
(WebCore::FontChanges::setItalic):
(WebCore::FontAttributeChanges::setVerticalAlign):
(WebCore::FontAttributeChanges::setBackgroundColor):
(WebCore::FontAttributeChanges::setForegroundColor):
(WebCore::FontAttributeChanges::setShadow):
(WebCore::FontAttributeChanges::setStrikeThrough):
(WebCore::FontAttributeChanges::setUnderline):
(WebCore::FontAttributeChanges::setFontChanges):

Setters for FontChanges and FontAttributeChanges. Initially, most of these values are optional, indicating that
there should be no change.

(WebCore::FontChanges::encode const):
(WebCore::FontChanges::decode):

Add encoding/decoding support to FontChanges, so that it can be sent over IPC for WebKit2.

* editing/cocoa/FontAttributeChangesCocoa.mm: Added.
(WebCore::FontChanges::platformFontFamilyNameForCSS const):

Helper method to determine whether the font family or the font name should be used, by looking up the PostScript
font name using a FontDescriptor and comparing it against the result of -[NSFont fontName]. This logic was
originally in WebHTMLView.mm.

* editing/mac/EditorMac.mm:
(WebCore::Editor::applyFontStyles): Deleted.
* platform/mac/WebCoreNSFontManagerExtras.h: Added.
* platform/mac/WebCoreNSFontManagerExtras.mm: Added.

Add helper functions to compute FontChanges and FontAttributeChanges from NSFontManager.

(WebCore::firstFontConversionSpecimen):
(WebCore::secondFontConversionSpecimen):

Two "specimen fonts" used to determine what changes NSFontManager or NSFontPanel makes when performing font or
font attribute conversion. Moved from WebHTMLView.mm.

(WebCore::computedFontChanges):
(WebCore::computedFontAttributeChanges):

Moved here from WebHTMLView.mm. Instead of converting font attributes to NSStrings and setting properties on
DOMCSSStyleDeclaration, we instead specify properties on MutableStyleProperties using CSSValues.

Source/WebKit:

Refactors NSFontManager support in WebKit2. See WebCore ChangeLog for more details.

* Scripts/webkit/messages.py:
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView changeFont:]):
* UIProcess/API/mac/WKView.mm:
(-[WKView changeFont:]):
* UIProcess/Cocoa/WebViewImpl.h:
* UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::changeFontFromFontManager):
(WebKit::WebViewImpl::changeFontFromFontPanel): Deleted.

Renamed this from changeFontFromFontPanel to changeFontFromFontManager. This new name is more accurate in the
case where a menu item is used to alter the font, which doesn't involve NSFontPanel at all.

* UIProcess/WebPageProxy.h:
* UIProcess/mac/WebPageProxyMac.mm:
(WebKit::WebPageProxy::changeFont):
(WebKit::WebPageProxy::setFont): Deleted.
* WebKit.xcodeproj/project.pbxproj:
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:
* WebProcess/WebPage/mac/WebPageMac.mm:
(WebKit::WebPage::changeFont):
(WebKit::WebPage::setFont): Deleted.

Source/WebKitLegacy/mac:

Remove code in WebKitLegacy for diffing NSFonts to figure out which style properties need to be changed. See
WebCore ChangeLog for more details.

* WebView/WebHTMLView.mm:
(-[WebHTMLView changeFont:]):
(-[WebHTMLView changeAttributes:]):
(-[WebHTMLView _originalFontA]): Deleted.
(-[WebHTMLView _originalFontB]): Deleted.
(fontNameForDescription): Deleted.
(-[WebHTMLView _addToStyle:fontA:fontB:]): Deleted.
(-[WebHTMLView _styleFromFontManagerOperation]): Deleted.
(-[WebHTMLView _styleForAttributeChange:]): Deleted.

Tools:

Add API tests to simulate using menu items to increase or decrease font size, and also simulate using
NSFontPanel to specify the font family, font size, and other traits.

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/mac/FontManagerTests.mm: Added.
(-[TestWKWebView selectedText]):
(-[TestWKWebView selectNextWord]):
(-[TestWKWebView stylePropertyAtSelectionStart:]):
(-[TestWKWebView stylePropertyAtSelectionEnd:]):
(webViewForFontManagerTesting):
(menuItemCellForFontAction):
(TestWebKitAPI::TEST):

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

2 years ago[LFC][BFC] Add support for min(max)-width
zalan@apple.com [Thu, 6 Sep 2018 18:03:31 +0000 (18:03 +0000)]
[LFC][BFC] Add support for min(max)-width
https://bugs.webkit.org/show_bug.cgi?id=189358

Reviewed by Antti Koivisto.

Source/WebCore:

See https://www.w3.org/TR/CSS22/visudet.html#min-max-widths for details.

Tests: fast/block/block-only/absolute-position-min-max-width.html
       fast/block/block-only/float-min-max-width.html
       fast/block/block-only/inflow-min-max-width.html

* layout/FormattingContext.cpp:
(WebCore::Layout::FormattingContext::computeOutOfFlowHorizontalGeometry const):
* layout/FormattingContext.h:
(WebCore::Layout::FormattingContext::Geometry::outOfFlowHorizontalGeometry):
(WebCore::Layout::FormattingContext::Geometry::floatingWidthAndMargin):
(WebCore::Layout::FormattingContext::Geometry::inlineReplacedWidthAndMargin):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedHorizontalGeometry):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedHorizontalGeometry):
(WebCore::Layout::FormattingContext::Geometry::floatingReplacedWidthAndMargin):
(WebCore::Layout::FormattingContext::Geometry::floatingNonReplacedWidthAndMargin):
* layout/FormattingContextGeometry.cpp:
(WebCore::Layout::FormattingContext::Geometry::computedValueIfNotAuto):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedHorizontalGeometry):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedHorizontalGeometry):
(WebCore::Layout::FormattingContext::Geometry::floatingNonReplacedWidthAndMargin):
(WebCore::Layout::FormattingContext::Geometry::floatingReplacedWidthAndMargin):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowHorizontalGeometry):
(WebCore::Layout::FormattingContext::Geometry::floatingWidthAndMargin):
(WebCore::Layout::FormattingContext::Geometry::inlineReplacedWidthAndMargin):
* layout/blockformatting/BlockFormattingContext.cpp:
(WebCore::Layout::BlockFormattingContext::computeWidthAndMargin const):
* layout/blockformatting/BlockFormattingContext.h:
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowWidthAndMargin):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedWidthAndMargin):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowReplacedWidthAndMargin):
* layout/blockformatting/BlockFormattingContextGeometry.cpp:
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedWidthAndMargin):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowReplacedWidthAndMargin):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowWidthAndMargin):

Tools:

* LayoutReloaded/misc/LFC-passing-tests.txt:

LayoutTests:

* fast/block/block-only/absolute-position-min-max-width-expected.txt: Added.
* fast/block/block-only/absolute-position-min-max-width.html: Added.
* fast/block/block-only/float-min-max-width-expected.txt: Added.
* fast/block/block-only/float-min-max-width.html: Added.
* fast/block/block-only/inflow-min-max-width-expected.txt: Added.
* fast/block/block-only/inflow-min-max-width.html: Added.

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

2 years ago[MediaStream] Initialize AVVideoCapture video presets
eric.carlson@apple.com [Thu, 6 Sep 2018 17:59:25 +0000 (17:59 +0000)]
[MediaStream] Initialize AVVideoCapture video presets
https://bugs.webkit.org/show_bug.cgi?id=189355

Reviewed by Youenn Fablet.

No new tests, no functionality changed.

* platform/mediastream/mac/AVVideoCaptureSource.mm:
(WebCore::AVVideoCaptureSource::AVVideoCaptureSource): Don't try to load symbols if they
aren't available.

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

2 years agoGardening: only visit m_cachedStructureID if it's not null.
mark.lam@apple.com [Thu, 6 Sep 2018 17:46:48 +0000 (17:46 +0000)]
Gardening: only visit m_cachedStructureID if it's not null.
https://bugs.webkit.org/show_bug.cgi?id=189124
<rdar://problem/43863605>

Not reviewed.

* runtime/JSPropertyNameEnumerator.cpp:
(JSC::JSPropertyNameEnumerator::visitChildren):

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

2 years agoUse more generic names than "overflow" for functions that can be used for subframes
commit-queue@webkit.org [Thu, 6 Sep 2018 16:56:13 +0000 (16:56 +0000)]
Use more generic names than "overflow" for functions that can be used for subframes
https://bugs.webkit.org/show_bug.cgi?id=179125

Patch by Frederic Wang <fwang@igalia.com> on 2018-09-06
Reviewed by Simon Fraser..

Some functions will be used by subframes when iframe scrolling is implemented on iOS (see
bug 149264). Currently they are only used for "overflow" nodes. This patch renames them to
use a more generic "scrolling node" name.

* UIProcess/PageClient.h:
* UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.cpp:
(WebKit::RemoteScrollingCoordinatorProxy::scrollingTreeNodeDidScroll):
* UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.mm:
(WebKit::RemoteScrollingCoordinatorProxy::scrollingTreeNodeWillStartPanGesture):
(WebKit::RemoteScrollingCoordinatorProxy::scrollingTreeNodeWillStartScroll):
(WebKit::RemoteScrollingCoordinatorProxy::scrollingTreeNodeDidEndScroll):
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* UIProcess/ios/PageClientImplIOS.h:
* UIProcess/ios/PageClientImplIOS.mm:
(WebKit::PageClientImpl::scrollingNodeScrollViewWillStartPanGesture):
(WebKit::PageClientImpl::scrollingNodeScrollViewDidScroll):
(WebKit::PageClientImpl::scrollingNodeScrollWillStartScroll):
(WebKit::PageClientImpl::scrollingNodeScrollDidEndScroll):
(WebKit::PageClientImpl::overflowScrollViewWillStartPanGesture): Deleted.
(WebKit::PageClientImpl::overflowScrollViewDidScroll): Deleted.
(WebKit::PageClientImpl::overflowScrollWillStartScroll): Deleted.
(WebKit::PageClientImpl::overflowScrollDidEndScroll): Deleted.
* UIProcess/ios/WKContentViewInteraction.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _scrollingNodeScrollingWillBegin]):
(-[WKContentView _scrollingNodeScrollingDidEnd]):
(-[WKContentView _overflowScrollingWillBegin]): Deleted.
(-[WKContentView _overflowScrollingDidEnd]): Deleted.
* UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::scrollingNodeScrollViewWillStartPanGesture):
(WebKit::WebPageProxy::scrollingNodeScrollViewDidScroll):
(WebKit::WebPageProxy::scrollingNodeScrollWillStartScroll):
(WebKit::WebPageProxy::scrollingNodeScrollDidEndScroll):
(WebKit::WebPageProxy::overflowScrollViewWillStartPanGesture): Deleted.
(WebKit::WebPageProxy::overflowScrollViewDidScroll): Deleted.
(WebKit::WebPageProxy::overflowScrollWillStartScroll): Deleted.
(WebKit::WebPageProxy::overflowScrollDidEndScroll): Deleted.
* WebProcess/WebCoreSupport/ios/WebChromeClientIOS.mm:
(WebKit::WebChromeClient::didStartOverflowScroll):
(WebKit::WebChromeClient::didEndOverflowScroll):

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

2 years ago[JSC] Build broken after r234975 on s390x, ppc64le, armv7hl
tpopela@redhat.com [Thu, 6 Sep 2018 16:41:32 +0000 (16:41 +0000)]
[JSC] Build broken after r234975 on s390x, ppc64le, armv7hl
https://bugs.webkit.org/show_bug.cgi?id=189078

Reviewed by Mark Lam.

Caused by the GCC bug - https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70124.
Using the ternary operator instead of std::max() fixes it.

* heap/RegisterState.h:

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

2 years agoWebKit/Platform/IPC/mac/ConnectionMac.mm:222: _dispatch_bug_kevent_vanished
cdumez@apple.com [Thu, 6 Sep 2018 16:12:00 +0000 (16:12 +0000)]
WebKit/Platform/IPC/mac/ConnectionMac.mm:222: _dispatch_bug_kevent_vanished
https://bugs.webkit.org/show_bug.cgi?id=189314
<rdar://problem/41248286>

Reviewed by Anders Carlsson.

There is a short period in time when m_isServer is true, after open() has been
called, but before we've receive the InitializeConnection IPC, where m_receiveSource
has been initialized but m_isConnected is still false. If platformInvalidate() gets
called during this period of time, we would fail to cancel / release m_receiveSource
and we would forcefully deallocate m_receivePort, leading to the libdispatch simulated
crashes.

To address the issue, platformInvalidate() now properly cancels / releases
m_receiveSource if present, and only deallocates m_receivePort manually if m_receiveSource
has not been initialized (i.e. open() has not been called yet).

* Platform/IPC/Connection.h:
* Platform/IPC/mac/ConnectionMac.mm:
(IPC::Connection::platformInvalidate):
(IPC::Connection::clearReceiveSource):

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

2 years ago[WHLSL] The parser is too slow
mmaxfield@apple.com [Thu, 6 Sep 2018 16:01:05 +0000 (16:01 +0000)]
[WHLSL] The parser is too slow
https://bugs.webkit.org/show_bug.cgi?id=189014

Reviewed by Filip Pizlo.

This patch includes three changes:
1. Migrate from using try/catch to simply returning the WSyntaxError. This means that
   each parser call has to check for this sentinel value. The lexer still can throw if
   it encounters an unknown token or an unmatched "/*" token (which is rare).
2. After removing try/catch, making the sentinel values not inherit from Error (the
   Error constructor was taking lots of time)
3. Previously, every time the parser failed (which is many times per expression) it was
   running a regex over the entire source text to figure out where the error occurred.
   Instead, we can preprocess the text string to find these line numbers ahead of time.

Together, these make the parser 75x faster. Parsing the standard library goes from 2.5
hours down to 2 minutes. Because it's now a reasonable length, this patch uncomments
the bulk of the standard library.

* WebGPUShadingLanguageRI/All.js:
* WebGPUShadingLanguageRI/Lexer.js:
(Lexer):
(Lexer.prototype.lineNumberForIndex):
* WebGPUShadingLanguageRI/Parse.js:
(fail):
(backtrackingScope):
(testScope):
(genericConsume):
(consumeEndOfTypeArgs):
(parseTerm):
(parseConstexpr):
(parseTypeArguments):
(parseType.getAddressSpace):
(parseType):
(parseTypeDef):
(genericParseLeft):
(parseCallExpression.let.parseArguments):
(isCallExpression):
(parseSuffixOperator):
(parsePossibleSuffix):
(parsePreIncrement):
(parsePossiblePrefix):
(parsePossibleTernaryConditional):
(parsePossibleAssignment):
(parsePostIncrement):
(parseEffectfulExpression):
(genericParseCommaExpression):
(parseEffectfulStatement):
(parseReturn):
(parseBreak):
(parseContinue):
(parseIfStatement):
(parseWhile):
(parseFor):
(parseDo):
(parseVariableDecls):
(parseSwitchCase):
(parseSwitchStatement):
(parseStatement):
(parseBlockBody):
(parseBlock):
(parseParameter):
(parseFuncName):
(parseFuncDecl):
(parseFuncDef):
(parseField):
(parseStructType):
(parseNativeFunc):
(parseNative):
(parseRestrictedFuncDef):
(parseEnumMember):
(parseEnumType):
(parse):
* WebGPUShadingLanguageRI/SPIRV.html:
* WebGPUShadingLanguageRI/StandardLibrary.js:
(let.standardLibrary):
* WebGPUShadingLanguageRI/Test.html:
* WebGPUShadingLanguageRI/Test.js:
(checkFail.doPrep): Deleted.
* WebGPUShadingLanguageRI/WLexicalError.js: Added.
(WLexicalError):
* WebGPUShadingLanguageRI/index.html:

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

2 years agoUnreviewed GTK+ gardening after r235732.
magomez@igalia.com [Thu, 6 Sep 2018 15:00:31 +0000 (15:00 +0000)]
Unreviewed GTK+ gardening after r235732.

* platform/gtk/TestExpectations:

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

2 years agoIntersectionObserver leaks documents
ajuma@chromium.org [Thu, 6 Sep 2018 13:51:24 +0000 (13:51 +0000)]
IntersectionObserver leaks documents
https://bugs.webkit.org/show_bug.cgi?id=189128

Reviewed by Simon Fraser.

Source/WebCore:

Currently, Documents own IntersectionObservers while IntersectionObservers own callbacks
that have strong references to Documents. To break this cycle, make Documents only have
weak pointers to IntersectionObservers. Instead, manage the lifetime of an
IntersectionObserver as an ActiveDOMObject, overriding hasPendingActivity to keep
the observer alive while there are ongoing observations.

However, there is a still a potential reference cycle. The callback keeps global
references alive, so if there's a global reference to the observer in JavaScript,
we have an observer->callback->observer cycle, keeping the callback (and hence the Document)
alive. To break this cycle, make IntersectionObserver release the callback when its
Document is stopped.

With these changes, there are no longer any leaks reported with run-webkit-tests --world-leaks
on LayoutTests/intersection-observer and LayoutTests/imported/w3c/web-platform-tests/intersection-observer.

Tests: intersection-observer/no-document-leak.html
       intersection-observer/observer-and-callback-without-js-references.html

* dom/Document.cpp:
(WebCore::Document::addIntersectionObserver):
(WebCore::Document::removeIntersectionObserver):
* dom/Document.h:
* dom/Element.cpp:
(WebCore::Element::didMoveToNewDocument):
* page/IntersectionObserver.cpp:
(WebCore::IntersectionObserver::IntersectionObserver):
(WebCore::IntersectionObserver::~IntersectionObserver):
(WebCore::IntersectionObserver::observe):
(WebCore::IntersectionObserver::rootDestroyed):
(WebCore::IntersectionObserver::createTimestamp const):
(WebCore::IntersectionObserver::notify):
(WebCore::IntersectionObserver::hasPendingActivity const):
(WebCore::IntersectionObserver::activeDOMObjectName const):
(WebCore::IntersectionObserver::canSuspendForDocumentSuspension const):
(WebCore::IntersectionObserver::stop):
* page/IntersectionObserver.h:
(WebCore::IntersectionObserver::trackingDocument const):
(WebCore::IntersectionObserver::trackingDocument): Deleted.
* page/IntersectionObserver.idl:

LayoutTests:

* intersection-observer/no-document-leak-expected.txt: Added.
* intersection-observer/no-document-leak.html: Added.
* intersection-observer/observer-and-callback-without-js-references-expected.txt: Added.
* intersection-observer/observer-and-callback-without-js-references.html: Added.
* intersection-observer/resources/no-document-leak-frame.html: Added.

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

2 years ago[LFC] Adapt to the new const WeakPtr<>
zalan@apple.com [Thu, 6 Sep 2018 13:40:56 +0000 (13:40 +0000)]
[LFC] Adapt to the new const WeakPtr<>
https://bugs.webkit.org/show_bug.cgi?id=189334

Reviewed by Antti Koivisto.

* layout/FormattingContext.cpp:
(WebCore::Layout::FormattingContext::FormattingContext):
* layout/FormattingContext.h:
* layout/LayoutContext.cpp:
(WebCore::Layout::LayoutContext::initializeRoot):
* layout/LayoutContext.h:
* layout/floats/FloatAvoider.cpp:
(WebCore::Layout::FloatAvoider::FloatAvoider):
* layout/floats/FloatAvoider.h:
* layout/floats/FloatingState.cpp:
(WebCore::Layout::FloatingState::FloatItem::FloatItem):
(WebCore::Layout::FloatingState::FloatingState):
* layout/floats/FloatingState.h:
* layout/layouttree/LayoutContainer.cpp:
(WebCore::Layout::Container::addOutOfFlowDescendant):
* layout/layouttree/LayoutContainer.h:
(WebCore::Layout::Container::outOfFlowDescendants const):

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

2 years ago[test262] Do not call keys on a reference
commit-queue@webkit.org [Thu, 6 Sep 2018 13:27:41 +0000 (13:27 +0000)]
[test262] Do not call keys on a reference
https://bugs.webkit.org/show_bug.cgi?id=189301

Patch by Xan Lopez <xan@igalia.com> on 2018-09-06
Reviewed by Keith Miller.

* Scripts/test262/Runner.pm:
(UpdateResults):

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

2 years agosvn-create-patch fails when svn mv is used on directory trees
ddkilzer@apple.com [Thu, 6 Sep 2018 12:38:47 +0000 (12:38 +0000)]
svn-create-patch fails when svn mv is used on directory trees
<https://webkit.org/b/14590>

Reviewed by Daniel Bates.

* Scripts/VCSUtils.pm: Export parseSvnDiffStartLine() for
svn-create-patch.
(parseDiffStartLine): Use parseSvnDiffStartLine().
(parseGitDiffStartLine): Document a prerequisite.  Fix a bug
when parsing git patches using `git diff --no-prefix` non-native
line endings.  Found by new tests written for
Scripts/webkitperl/VCSUtils_unittest/parseDiffStartLine.pl.
(parseSvnDiffStartLine): Add.  Extract logic from
parseDiffStartLine() for use with svn-create-patch.

* Scripts/svn-create-patch: Update copyright and license.
(generateDiff): Return early for moved directories since
individual files within the directory are handled separately.
(generateFileList): Keep track of moved directories in the
@additionWithHistoryDirectories array, then process this array
in reverse order to create delete/add patches for each file in
a moved directory.  This also prevents duplicate patches.
(manufacturePatchForAdditionWithHistory): Fix a long-standing
bug where the path used to describe property changes contained
the original (moved-from) path instead of the new (moved-to)
path. This could cause svn-apply to fail mysteriously when
trying to apply an empty patch created by the property change
containing the moved-from path.

* Scripts/webkitperl/VCSUtils_unittest/parseDiffStartLine.pl: Add.
Tests for parseDiffStartLine(), parseGitDiffStartLine() and
parseSvnDiffStartLine().

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

2 years ago[GStreamer] Extra ASSERTs at MainThreadNotifier
calvaris@igalia.com [Thu, 6 Sep 2018 10:50:41 +0000 (10:50 +0000)]
[GStreamer] Extra ASSERTs at MainThreadNotifier
https://bugs.webkit.org/show_bug.cgi?id=188786

Reviewed by Carlos Garcia Campos.

We add a couple of checks in debug mode: there is only one bit on
per notification and ensure a notifier was invalidated before
being destroyed.

* platform/graphics/gstreamer/MainThreadNotifier.h:

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

2 years agoMove ownership of outgoing source to RTCRtpSender backend
youenn@apple.com [Thu, 6 Sep 2018 05:08:43 +0000 (05:08 +0000)]
Move ownership of outgoing source to RTCRtpSender backend
https://bugs.webkit.org/show_bug.cgi?id=189310

Reviewed by Alex Christensen.

RTCRtpSender should own the source so that it can replace/stop it.
Since this is libwebrtc specific, the source is actually owned by the backend.
Simplified replaceTrack a bit based on that.

No change of behavior.

* Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
(WebCore::LibWebRTCMediaEndpoint::addTrack):
* Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:
(WebCore::LibWebRTCPeerConnectionBackend::doStop):
(WebCore::updateTrackSource):
(WebCore::LibWebRTCPeerConnectionBackend::replaceTrack):
(WebCore::LibWebRTCPeerConnectionBackend::applyRotationForOutgoingVideoSources):
* Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.h:
* Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.h:

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

2 years agoSource/WebCore:
bfulgham@apple.com [Thu, 6 Sep 2018 04:07:53 +0000 (04:07 +0000)]
Source/WebCore:
The width of an empty or nullptr TextRun should be zero
https://bugs.webkit.org/show_bug.cgi?id=189154
<rdar://problem/43685926>

Reviewed by Zalan Bujtas.

If a page has an empty TextRun and attempts to paint it we can crash with a nullptr.

This patch recognizes that an empty TextRun should always produce a zero width, rather than
attempt to compute this value from font data. It also prevents ListBox from attempting to
paint a null string.

Test: fast/text/null-string-textrun.html

* platform/graphics/FontCascade.cpp:
(WebCore::FontCascade::widthOfTextRange const): An empty TextRun has zero width.
(WebCore::FontCascade::width const): Ditto.
* platform/graphics/TextRun.h:
(WebCore::TextRun::TextRun): ASSERT that the supplied String is non-null.
(WebCore::TextRun::setText): Ditto.
* rendering/RenderListBox.cpp:
(WebCore::RenderListBox::paintItemForeground): Don't attempt to paint a null string.

Source/WTF:
The width of an empty or nullptr TextRun should be zero
https://bugs.webkit.org/show_bug.cgi?id=189154
<rdar://problem/43685926>

Reviewed by Zalan Bujtas.

Most accessors in WTFString.cpp, such as isAllASCII(), hash(), etc., perform a nullptr check
before using m_impl, but is8Bit() does not.

This patch adds a check in the is8Bit() implementation to be consistent with other methods,
and to address a small number of crashes observed in testing.

* wtf/text/WTFString.h:
(WTF::String::is8Bit const):

LayoutTests:
The width of a nullptr TextRun should be zero
https://bugs.webkit.org/show_bug.cgi?id=189154
<rdar://problem/43685926>

Reviewed by Zalan Bujtas.

* fast/text/null-string-textrun-expected.txt: Added.
* fast/text/null-string-textrun.html: Added.

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

2 years ago[LFC][BFC] ComputeFloat* methods should take a const FloatingContext&
zalan@apple.com [Thu, 6 Sep 2018 04:06:14 +0000 (04:06 +0000)]
[LFC][BFC] ComputeFloat* methods should take a const FloatingContext&
https://bugs.webkit.org/show_bug.cgi?id=189333

Reviewed by Antti Koivisto.

Only layoutFormattingContextRoot() needs a non-const FloatingContext& object (to add the floating box to the floating state).

* layout/blockformatting/BlockFormattingContext.cpp:
(WebCore::Layout::BlockFormattingContext::layoutFormattingContextRoot const):
(WebCore::Layout::BlockFormattingContext::computeFloatingPosition const):
(WebCore::Layout::BlockFormattingContext::computePositionToAvoidFloats const):
* layout/blockformatting/BlockFormattingContext.h:

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

2 years agoIntroduce a backend for RTCRtpTransceiver
youenn@apple.com [Thu, 6 Sep 2018 04:01:18 +0000 (04:01 +0000)]
Introduce a backend for RTCRtpTransceiver
https://bugs.webkit.org/show_bug.cgi?id=189322

Reviewed by Eric Carlson.

Introduce RTCRtpTransceiverBackend to implement the transceiver functionality using libwebrtc.
Remove provisional mids as it will be done by the webrtc backend.

No observable change of behavior yet since there is no transceiver backend yet.

* Modules/mediastream/PeerConnectionBackend.h:
* Modules/mediastream/RTCRtpTransceiver.cpp:
(WebCore::RTCRtpTransceiver::RTCRtpTransceiver):
(WebCore::RTCRtpTransceiver::mid const):
(WebCore::RTCRtpTransceiver::direction const):
(WebCore::RTCRtpTransceiver::setDirection):
(WebCore::RTCRtpTransceiver::stop):
(WebCore::RTCRtpTransceiver::getNextMid): Deleted.
(WebCore::RTCRtpTransceiver::directionString const): Deleted.
* Modules/mediastream/RTCRtpTransceiver.h:
(WebCore::RTCRtpTransceiver::create):
(WebCore::RTCRtpTransceiver::provisionalMid const): Deleted.
(WebCore::RTCRtpTransceiver::setMid): Deleted.
* Modules/mediastream/RTCRtpTransceiverBackend.h: Added.
* Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:
(WebCore::LibWebRTCPeerConnectionBackend::createReceiver):
(WebCore::LibWebRTCPeerConnectionBackend::videoReceiver):
(WebCore::LibWebRTCPeerConnectionBackend::audioReceiver):
(WebCore::LibWebRTCPeerConnectionBackend::addTrack):
(WebCore::LibWebRTCPeerConnectionBackend::completeAddTransceiver):
* Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.h:
* WebCore.xcodeproj/project.pbxproj:

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

2 years ago[CMake] Allow port specific options on gtest
don.olmstead@sony.com [Thu, 6 Sep 2018 03:46:17 +0000 (03:46 +0000)]
[CMake] Allow port specific options on gtest
https://bugs.webkit.org/show_bug.cgi?id=189313

Reviewed by Alex Christensen.

Source/ThirdParty:

Allows a port to configure options within gtest for its platform.
The library type can be set otherwise it defaults to shared. Also the
compile definitions are propogated to TestWebKitAPI through a global
property.

* gtest/CMakeLists.txt:
* gtest/PlatformWin.cmake: Added.

Tools:

Use the global property set by the gtest CMake file to add to the
compilation definitions for TestWebKitAPI rather than repeating the
logic.

* TestWebKitAPI/CMakeLists.txt:

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

2 years agoUpdate code style guidelines for using namespace inside a namespace definition
Hironori.Fujii@sony.com [Thu, 6 Sep 2018 02:54:58 +0000 (02:54 +0000)]
Update code style guidelines for using namespace inside a namespace definition
https://bugs.webkit.org/show_bug.cgi?id=189298

Reviewed by Ryosuke Niwa.

"using namespace" statements should be inside namespace definitions for
unified source builds.

* code-style.md(#using-position):

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

2 years ago[LFC] Pass in const LayoutContext& to geometry methods when possible
zalan@apple.com [Thu, 6 Sep 2018 01:42:10 +0000 (01:42 +0000)]
[LFC] Pass in const LayoutContext& to geometry methods when possible
https://bugs.webkit.org/show_bug.cgi?id=189331

Reviewed by Antti Koivisto.

Only layout and layout-like methods (intrinsic width computation -> shrink to fit -> out-of-flow/floating boxes) should take a
non-const LayoutContext&. Other geometry functions should not mutate the the context.

* layout/FormattingContext.cpp:
(WebCore::Layout::FormattingContext::computeOutOfFlowVerticalGeometry const):
(WebCore::Layout::FormattingContext::computeBorderAndPadding const):
(WebCore::Layout::FormattingContext::placeInFlowPositionedChildren const):
(WebCore::Layout::FormattingContext::layoutOutOfFlowDescendants const):
* layout/FormattingContext.h:
(WebCore::Layout::FormattingContext::Geometry::inlineReplacedWidthAndMargin):
* layout/FormattingContextGeometry.cpp:
(WebCore::Layout::contentHeightForFormattingContextRoot):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedVerticalGeometry):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedVerticalGeometry):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedHorizontalGeometry):
(WebCore::Layout::FormattingContext::Geometry::complicatedCases):
(WebCore::Layout::FormattingContext::Geometry::floatingReplacedHeightAndMargin):
(WebCore::Layout::FormattingContext::Geometry::floatingReplacedWidthAndMargin):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowVerticalGeometry):
(WebCore::Layout::FormattingContext::Geometry::floatingHeightAndMargin):
(WebCore::Layout::FormattingContext::Geometry::inlineReplacedHeightAndMargin):
(WebCore::Layout::FormattingContext::Geometry::inlineReplacedWidthAndMargin):
(WebCore::Layout::FormattingContext::Geometry::computedBorder):
(WebCore::Layout::FormattingContext::Geometry::computedPadding):
* layout/LayoutContext.cpp:
(WebCore::Layout::LayoutContext::layoutFormattingContextSubtree):
(WebCore::Layout::LayoutContext::establishedFormattingState const):
(WebCore::Layout::LayoutContext::createFormattingStateForFormattingRootIfNeeded):
(WebCore::Layout::LayoutContext::formattingContext const):
(WebCore::Layout::LayoutContext::establishedFormattingState): Deleted.
(WebCore::Layout::LayoutContext::formattingContext): Deleted.
* layout/LayoutContext.h:
* layout/blockformatting/BlockFormattingContext.cpp:
(WebCore::Layout::BlockFormattingContext::layoutFormattingContextRoot const):
(WebCore::Layout::BlockFormattingContext::computeStaticPosition const):
(WebCore::Layout::BlockFormattingContext::computeEstimatedMarginTop const):
(WebCore::Layout::BlockFormattingContext::computeEstimatedMarginTopForAncestors const):
(WebCore::Layout::BlockFormattingContext::computeFloatingPosition const):
(WebCore::Layout::BlockFormattingContext::computePositionToAvoidFloats const):
(WebCore::Layout::BlockFormattingContext::computeVerticalPositionForFloatClear const):
(WebCore::Layout::BlockFormattingContext::computeInFlowPositionedPosition const):
(WebCore::Layout::BlockFormattingContext::computeHeightAndMargin const):
(WebCore::Layout::BlockFormattingContext::instrinsicWidthConstraints const):
* layout/blockformatting/BlockFormattingContext.h:
* layout/blockformatting/BlockFormattingContextGeometry.cpp:
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedHeightAndMargin):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedWidthAndMargin):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowReplacedWidthAndMargin):
(WebCore::Layout::BlockFormattingContext::Geometry::staticPosition):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowPositionedPosition):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowHeightAndMargin):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowWidthAndMargin):
(WebCore::Layout::BlockFormattingContext::Geometry::instrinsicWidthConstraints):
* layout/inlineformatting/InlineFormattingContext.cpp:
(WebCore::Layout::InlineFormattingContext::computeStaticPosition const):
(WebCore::Layout::InlineFormattingContext::computeInFlowPositionedPosition const):
* layout/inlineformatting/InlineFormattingContext.h:

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

2 years agoJSPropertyNameEnumerator::visitChildren() needs to visit its m_cachedStructureID.
mark.lam@apple.com [Wed, 5 Sep 2018 23:51:05 +0000 (23:51 +0000)]
JSPropertyNameEnumerator::visitChildren() needs to visit its m_cachedStructureID.
https://bugs.webkit.org/show_bug.cgi?id=189124
<rdar://problem/43863605>

Reviewed by Filip Pizlo.

JSTests:

* stress/regress-189124.js: Added.

Source/JavaScriptCore:

It is assumed that the Structure for the m_cachedStructureID will remain alive
while the m_cachedStructureID is in use.  This prevents the structureID from being
re-used for a different Structure.

* runtime/JSPropertyNameEnumerator.cpp:
(JSC::JSPropertyNameEnumerator::visitChildren):

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

2 years agoExpose RTCRtpSender.setParameters
youenn@apple.com [Wed, 5 Sep 2018 22:30:04 +0000 (22:30 +0000)]
Expose RTCRtpSender.setParameters
https://bugs.webkit.org/show_bug.cgi?id=189307

Reviewed by Eric Carlson.

LayoutTests/imported/w3c:

* web-platform-tests/webrtc/RTCRtpSender-replaceTrack-expected.txt:
* web-platform-tests/webrtc/RTCRtpSender-setParameters-expected.txt:

Source/ThirdParty/libwebrtc:

* Configurations/libwebrtc.iOS.exp:
* Configurations/libwebrtc.iOSsim.exp:
* Configurations/libwebrtc.mac.exp:

Source/WebCore:

Implement RTCRtpSender.setParameters.
This is an incomplete implementation as we need to refresh parameters as per the spec and testing is much easier with full transceiver support.
Implementation uses sender backend to set the parameters at libwebrtc level.
Fix the case of a stopped sender/transceiver in which case promise should be rejected.
Covered by rebased and modified tests.

* Modules/mediastream/RTCRtpParameters.h:
* Modules/mediastream/RTCRtpSender.cpp:
(WebCore::RTCRtpSender::setParameters):
* Modules/mediastream/RTCRtpSender.h:
* Modules/mediastream/RTCRtpSender.idl:
* Modules/mediastream/RTCRtpSenderBackend.h:
* Modules/mediastream/RTCRtpTransceiver.cpp:
(WebCore::RTCRtpTransceiver::stop):
* Modules/mediastream/RTCRtpTransceiver.h:
* Modules/mediastream/libwebrtc/LibWebRTCRtpReceiverBackend.cpp:
(WebCore::LibWebRTCRtpReceiverBackend::getParameters):
* Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.cpp:
(WebCore::LibWebRTCRtpSenderBackend::getParameters const):
(WebCore::LibWebRTCRtpSenderBackend::setParameters):
* Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.h:
* Modules/mediastream/libwebrtc/LibWebRTCUtils.cpp:
(WebCore::toRTCEncodingParameters):
(WebCore::fromRTCEncodingParameters):
(WebCore::toRTCHeaderExtensionParameters):
(WebCore::fromRTCHeaderExtensionParameters):
(WebCore::toRTCCodecParameters):
(WebCore::toRTCRtpParameters):
(WebCore::fromRTCRtpParameters):
* Modules/mediastream/libwebrtc/LibWebRTCUtils.h:

LayoutTests:

* webrtc/video-getParameters.html:

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

2 years agoRemove some logging that I committed by mistake.
simon.fraser@apple.com [Wed, 5 Sep 2018 22:25:46 +0000 (22:25 +0000)]
Remove some logging that I committed by mistake.

* rendering/RenderLayerFilters.cpp:
(WebCore::RenderLayerFilters::RenderLayerFilters):
(WebCore::RenderLayerFilters::~RenderLayerFilters):

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

2 years ago[ESNext] Symbol.prototype.description
ross.kirsling@sony.com [Wed, 5 Sep 2018 22:18:09 +0000 (22:18 +0000)]
[ESNext] Symbol.prototype.description
https://bugs.webkit.org/show_bug.cgi?id=186686

Reviewed by Keith Miller.

JSTests:

* stress/symbol-description.js:
Add tests for empty and null symbol cases.

* test262/config.yaml:
Enable Symbol.prototype.description tests.

Source/JavaScriptCore:

Symbol.prototype.description was implemented in r232404, but has one small bug:
It should return undefined for a null symbol.

* runtime/Symbol.cpp:
(JSC::Symbol::description const):
* runtime/SymbolPrototype.cpp:
(JSC::symbolProtoGetterDescription):
Address the null symbol case.

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

2 years ago[LFC] Construct the Display::Box objects on demand.
zalan@apple.com [Wed, 5 Sep 2018 22:08:23 +0000 (22:08 +0000)]
[LFC] Construct the Display::Box objects on demand.
https://bugs.webkit.org/show_bug.cgi?id=189320

Reviewed by Antti Koivisto.

* layout/FormattingContext.cpp:
(WebCore::Layout::FormattingContext::layoutOutOfFlowDescendants const):
* layout/LayoutContext.cpp:
(WebCore::Layout::LayoutContext::initializeRoot):
(WebCore::Layout::LayoutContext::displayBoxForLayoutBox const):
(WebCore::Layout::LayoutContext::createDisplayBox): Deleted.
* layout/LayoutContext.h:
(WebCore::Layout::LayoutContext::displayBoxForLayoutBox const): Deleted.
* layout/Verification.cpp:
(WebCore::Layout::LayoutContext::verifyAndOutputMismatchingLayoutTree const):
* layout/blockformatting/BlockFormattingContext.cpp:
(WebCore::Layout::BlockFormattingContext::layout const):
* layout/displaytree/DisplayBox.h:

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

2 years agoREGRESSION (r235489): WKSharingServicePickerDelegate.mm accidentally added back to...
ddkilzer@apple.com [Wed, 5 Sep 2018 21:57:32 +0000 (21:57 +0000)]
REGRESSION (r235489): WKSharingServicePickerDelegate.mm accidentally added back to Sources in WebKit project

* WebKit.xcodeproj/project.pbxproj:
(WKSharingServicePickerDelegate.mm): Let Xcode have its way with
the WebKit project file by removing this file from Sources.
It's already included in a UnifedSource file, so it should not
have been added back to Sources during merge conflict resolution
for r235489.

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

2 years agoREGRESSION (r204222): UIProces/Gamepad/mac is missing in WebKit Xcode project
ddkilzer@apple.com [Wed, 5 Sep 2018 21:57:28 +0000 (21:57 +0000)]
REGRESSION (r204222): UIProces/Gamepad/mac is missing in WebKit Xcode project

Found using `tidy-Xcode-project-file --missing` (see Bug
188754). Fixes applied manually.

* WebKit.xcodeproj/project.pbxproj:
(UIProces/Gamepad/mac): Fix path to "mac" directory, then remove
its now-redundant name.
(UIGamepadProviderMac.mm): Change path to be relative to its
group after the above change.

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

2 years agoREGRESSION (r143543): PluginProcess/EntryPoint/XPCService/PluginService is missing...
ddkilzer@apple.com [Wed, 5 Sep 2018 21:57:25 +0000 (21:57 +0000)]
REGRESSION (r143543): PluginProcess/EntryPoint/XPCService/PluginService is missing in WebKit Xcode project

Found using `tidy-Xcode-project-file --missing` (see Bug
188754). Fixes applied manually.

* WebKit.xcodeproj/project.pbxproj:
(PluginProcess/EntryPoint/XPCService/PluginService): Remove path
to PluginService.64 directory, which was removed in r143543, so
that this becomes a virtual folder that inherits its path from
its parent.
(PluginService.32-64.Info.plist): Change path to be relative to
its group after the above change.  Delete redundant name value.

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

2 years agoAdd infrastructure to dump resource load statistics
commit-queue@webkit.org [Wed, 5 Sep 2018 21:25:06 +0000 (21:25 +0000)]
Add infrastructure to dump resource load statistics
https://bugs.webkit.org/show_bug.cgi?id=189213

Patch by Woodrow Wang <woodrow_wang@apple.com> on 2018-09-05
Source/WebCore:

Reviewed by Daniel Bates.

The dumping functionality is not currently used, but will be included in tests for
<https://bugs.webkit.org/show_bug.cgi?id=187773>.

* loader/ResourceLoadStatistics.h:

Source/WebKit:

Reviewed by Daniel Bates.

The dumping functionality is not currently used, but will be included in tests for
<https://bugs.webkit.org/show_bug.cgi?id=187773>.

* UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
(WKWebsiteDataStoreDumpResourceLoadStatistics):
* UIProcess/API/C/WKWebsiteDataStoreRef.h:
* UIProcess/ResourceLoadStatisticsMemoryStore.cpp:
(WebKit::ResourceLoadStatisticsMemoryStore::dumpResourceLoadStatistics const):
* UIProcess/ResourceLoadStatisticsMemoryStore.h:
* UIProcess/WebResourceLoadStatisticsStore.cpp:
(WebKit::WebResourceLoadStatisticsStore::dumpResourceLoadStatistics):
* UIProcess/WebResourceLoadStatisticsStore.h:

Tools:

Reviewed by Daniel Bates.

The dumping functionality is not currently used, but will be included in tests for
<https://bugs.webkit.org/show_bug.cgi?id=187773>.

* WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
* WebKitTestRunner/InjectedBundle/TestRunner.cpp:
(WTR::TestRunner::setDumpResourceLoadStatistics):
* WebKitTestRunner/InjectedBundle/TestRunner.h:
* WebKitTestRunner/TestController.cpp:
(WTR::resourceStatisticsStringResultCallback):
(WTR::TestController::dumpResourceLoadStatistics):
* WebKitTestRunner/TestController.h:
* WebKitTestRunner/TestInvocation.cpp:
(WTR::TestInvocation::dumpResults):
(WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle):
(WTR::TestInvocation::setDumpResourceLoadStatistics):
* WebKitTestRunner/TestInvocation.h:

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

2 years ago[macOS] DragAndDropTests.ExposeMultipleURLsInDataTransfer fails on macOS versions...
wenson_hsieh@apple.com [Wed, 5 Sep 2018 21:15:53 +0000 (21:15 +0000)]
[macOS] DragAndDropTests.ExposeMultipleURLsInDataTransfer fails on macOS versions prior to Mojave
https://bugs.webkit.org/show_bug.cgi?id=189315

Reviewed by Tim Horton.

Fix the test failure by explicitly enabling custom pasteboard data.

* TestWebKitAPI/Tests/WebKitCocoa/DragAndDropTests.mm:
(TEST):

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

2 years agoREGRESSION (r235006): Let Xcode have its way with the WebKit project
ddkilzer@apple.com [Wed, 5 Sep 2018 21:15:24 +0000 (21:15 +0000)]
REGRESSION (r235006): Let Xcode have its way with the WebKit project

* WebKit.xcodeproj/project.pbxproj: Let Xcode remove empty
settings.

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

2 years agoREGRESSION (r110214): Remove deleted WebProcess/Fullscreen/mac folder from WebKit...
ddkilzer@apple.com [Wed, 5 Sep 2018 21:15:21 +0000 (21:15 +0000)]
REGRESSION (r110214): Remove deleted WebProcess/Fullscreen/mac folder from WebKit Xcode project

Found using `tidy-Xcode-project-file --missing` (see Bug
188754). Folder removed via Xcode.

* WebKit.xcodeproj/project.pbxproj:
(WebProcess/Fullscreen/mac): Remove empty folder.  Directory no
longer exists.  WebFullScreenManagerMac.{h,mm} files were
removed in r110214.

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

2 years agoUnreviewed, fix the build with recent SDKs.
ryanhaddad@apple.com [Wed, 5 Sep 2018 20:51:30 +0000 (20:51 +0000)]
Unreviewed, fix the build with recent SDKs.

* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
(WebCore::exernalDeviceDisplayNameForPlayer):

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

2 years agoRELEASE_ASSERT at ../../Source/JavaScriptCore/heap/MarkedSpace.h:83
keith_miller@apple.com [Wed, 5 Sep 2018 20:38:35 +0000 (20:38 +0000)]
RELEASE_ASSERT at ../../Source/JavaScriptCore/heap/MarkedSpace.h:83
https://bugs.webkit.org/show_bug.cgi?id=188917

Reviewed by Mark Lam.

Our allocators should be able to handle allocating a zero-sized object.
Zero-sized objects will be allocated into the smallest size class.

* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compileNewTypedArrayWithSize):
* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compileNewTypedArray):
(JSC::FTL::DFG::LowerDFGToB3::allocatorForSize):
* heap/MarkedSpace.h:
(JSC::MarkedSpace::sizeClassToIndex):
(JSC::MarkedSpace::indexToSizeClass):
* jit/AssemblyHelpers.cpp:
(JSC::AssemblyHelpers::emitAllocateVariableSized):
* runtime/JSArrayBufferView.cpp:
(JSC::JSArrayBufferView::ConstructionContext::ConstructionContext):

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

2 years agoFix DeferredSourceDump to capture the caller bytecodeIndex instead of CodeOrigin.
mark.lam@apple.com [Wed, 5 Sep 2018 20:21:15 +0000 (20:21 +0000)]
Fix DeferredSourceDump to capture the caller bytecodeIndex instead of CodeOrigin.
https://bugs.webkit.org/show_bug.cgi?id=189300
<rdar://problem/39681779>

Reviewed by Saam Barati.

At the time a DeferredSourceDump is instantiated, it captures a CodeOrigin value
which points to a InlineCallFrame in the DFG::Plan's m_inlineCallFrames set.  The
DeferredSourceDump is later used to dump source even if the compilation fails.
This is intentional so that we can use this tool to see what source fails to
compile as well.

The DFG::Plan may have been destructed by then, and since the compilation failed,
the InlineCallFrame is also destructed.  This means DeferredSourceDump::dump()
may be end up accessing freed memory.

DeferredSourceDump doesn't really need a CodeOrigin.  All it wants is the caller
bytecodeIndex for the call to an inlined function.  Hence, we can fix this issue
by changing DeferredSourceDump to capture the caller bytecodeIndex instead.

In this patch, we also change DeferredSourceDump's m_codeBlock and m_rootCodeBlock
to be Strong references to ensure that the CodeBlocks are kept alive until they
can be dumped.

* bytecode/DeferredCompilationCallback.cpp:
(JSC::DeferredCompilationCallback::dumpCompiledSourcesIfNeeded):
* bytecode/DeferredSourceDump.cpp:
(JSC::DeferredSourceDump::DeferredSourceDump):
(JSC::DeferredSourceDump::dump):
* bytecode/DeferredSourceDump.h:
* dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::parseCodeBlock):

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

2 years agoAdded runtime feature flag for web API statistics
commit-queue@webkit.org [Wed, 5 Sep 2018 19:03:09 +0000 (19:03 +0000)]
Added runtime feature flag for web API statistics
https://bugs.webkit.org/show_bug.cgi?id=189211

Patch by Woodrow Wang <woodrow_wang@apple.com> on 2018-09-05
Reviewed by Daniel Bates.

Source/WebCore:

Added functionality to get and set the runtime flag.

* page/RuntimeEnabledFeatures.h:
(WebCore::RuntimeEnabledFeatures::setWebAPIStatisticsEnabled):
(WebCore::RuntimeEnabledFeatures::webAPIStatisticsEnabled const):

Source/WebKit:

Added functionality to set the runtime flag with a JavaScript exposed function
for testing.

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

Tools:

Added functionality to set the runtime flag with a JavaScript exposed function
for testing.

* WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
* WebKitTestRunner/InjectedBundle/TestRunner.cpp:
(WTR::TestRunner::setWebAPIStatisticsEnabled):
* WebKitTestRunner/InjectedBundle/TestRunner.h:

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

2 years agoMove replaceTrack logic to LibWebRTCPeerConnectionBackend
youenn@apple.com [Wed, 5 Sep 2018 18:54:54 +0000 (18:54 +0000)]
Move replaceTrack logic to LibWebRTCPeerConnectionBackend
https://bugs.webkit.org/show_bug.cgi?id=189281

Reviewed by Eric Carlson.

Move replaceTrack handling code from RTCPeerConnection to LibWebRTCPeerConnectionBackend.
This makes the logic easier to understand.
Future refactoring will further try to put more handling in RTCRtpSenderBackend.
No change of behavior.

* Modules/mediastream/RTCPeerConnection.cpp:
* Modules/mediastream/RTCPeerConnection.h:
* Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:
(WebCore::tryUpdatingTrackSource):
(WebCore::LibWebRTCPeerConnectionBackend::replaceTrack):
(WebCore::LibWebRTCPeerConnectionBackend::enqueueReplaceTrackTask):
* Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.h:
* Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.cpp:
(WebCore::LibWebRTCRtpSenderBackend::replaceTrack):

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

2 years ago[LFC] LayoutContext::displayBoxForLayoutBox() should return a Display::Box&
zalan@apple.com [Wed, 5 Sep 2018 18:52:34 +0000 (18:52 +0000)]
[LFC] LayoutContext::displayBoxForLayoutBox() should return a Display::Box&
https://bugs.webkit.org/show_bug.cgi?id=189311

Reviewed by Antti Koivisto.

When the layout logic needs a Display::Box, we must have already created one for the associated Layout::Box.
(It does not necessarily mean that evey Layout::Box has a Display::Box. For example in case of inline formatting context,
we don't create a Display::Box for every inline box, but the formatting logic does not require such pairs.)

* layout/FormattingContext.cpp:
(WebCore::Layout::FormattingContext::computeOutOfFlowHorizontalGeometry const):
(WebCore::Layout::FormattingContext::computeOutOfFlowVerticalGeometry const):
(WebCore::Layout::FormattingContext::computeBorderAndPadding const):
(WebCore::Layout::FormattingContext::mapBoxToAncestor):
(WebCore::Layout::FormattingContext::mapTopLeftToAncestor):
(WebCore::Layout::FormattingContext::mapCoordinateToAncestor):
(WebCore::Layout::FormattingContext::validateGeometryConstraintsAfterLayout const):
* layout/FormattingContextGeometry.cpp:
(WebCore::Layout::contentHeightForFormattingContextRoot):
(WebCore::Layout::staticVerticalPositionForOutOfFlowPositioned):
(WebCore::Layout::staticHorizontalPositionForOutOfFlowPositioned):
(WebCore::Layout::FormattingContext::Geometry::shrinkToFitWidth):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedVerticalGeometry):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedHorizontalGeometry):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedVerticalGeometry):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedHorizontalGeometry):
(WebCore::Layout::FormattingContext::Geometry::complicatedCases):
(WebCore::Layout::FormattingContext::Geometry::floatingNonReplacedWidthAndMargin):
(WebCore::Layout::FormattingContext::Geometry::inlineReplacedHeightAndMargin):
(WebCore::Layout::FormattingContext::Geometry::inlineReplacedWidthAndMargin):
(WebCore::Layout::FormattingContext::Geometry::computedPadding):
(WebCore::Layout::FormattingContext::Geometry::computedNonCollapsedHorizontalMarginValue):
(WebCore::Layout::FormattingContext::Geometry::computedNonCollapsedVerticalMarginValue):
* layout/LayoutContext.h:
(WebCore::Layout::LayoutContext::displayBoxForLayoutBox const):
* layout/Verification.cpp:
(WebCore::Layout::outputMismatchingBlockBoxInformationIfNeeded):
* layout/blockformatting/BlockFormattingContext.cpp:
(WebCore::Layout::BlockFormattingContext::computeStaticPosition const):
(WebCore::Layout::BlockFormattingContext::computeEstimatedMarginTop const):
(WebCore::Layout::BlockFormattingContext::computeEstimatedMarginTopForAncestors const):
(WebCore::Layout::BlockFormattingContext::computeFloatingPosition const):
(WebCore::Layout::BlockFormattingContext::computePositionToAvoidFloats const):
(WebCore::Layout::BlockFormattingContext::computeVerticalPositionForFloatClear const):
(WebCore::Layout::BlockFormattingContext::computeInFlowPositionedPosition const):
(WebCore::Layout::BlockFormattingContext::computeWidthAndMargin const):
(WebCore::Layout::BlockFormattingContext::computeHeightAndMargin const):
* layout/blockformatting/BlockFormattingContextGeometry.cpp:
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedHeightAndMargin):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedWidthAndMargin):
(WebCore::Layout::BlockFormattingContext::Geometry::staticPosition):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowPositionedPosition):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowHeightAndMargin):
* layout/blockformatting/BlockMarginCollapse.cpp:
(WebCore::Layout::isMarginTopCollapsedWithParent):
(WebCore::Layout::isMarginBottomCollapsedThrough):
(WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::isMarginBottomCollapsedWithParent):
* layout/floats/FloatingContext.cpp:
(WebCore::Layout::FloatingContext::positionForFloat const):
(WebCore::Layout::FloatingContext::verticalPositionWithClearance const):
* layout/floats/FloatingState.cpp:
(WebCore::Layout::FloatingState::append):
* layout/inlineformatting/InlineFormattingContext.cpp:
(WebCore::Layout::InlineFormattingContext::layout const):
* layout/layouttree/LayoutTreeBuilder.cpp:
(WebCore::Layout::outputLayoutTree):
(WebCore::Layout::showLayoutTree):

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

2 years ago[32-bit JSC tests] Exception: ReferenceError: Can't find variable: WebAssembly.
david_fenton@apple.com [Wed, 5 Sep 2018 18:33:03 +0000 (18:33 +0000)]
[32-bit JSC tests] Exception: ReferenceError: Can't find variable: WebAssembly.
https://bugs.webkit.org/show_bug.cgi?id=189312.

Unreviewed test gardening.

* stress/regress-189185.js:

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

2 years agoRebaseline test after changes in https://trac.webkit.org/changeset/235669/webkit...
tsavell@apple.com [Wed, 5 Sep 2018 18:13:20 +0000 (18:13 +0000)]
Rebaseline test after changes in https://trac.webkit.org/changeset/235669/webkit deleted the expectation.
https://bugs.webkit.org/show_bug.cgi?id=188816

Unreviewed Test Gardening.

* platform/mac-wk1/imported/w3c/web-platform-tests/xhr/send-network-error-async-events.sub-expected.txt:

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

2 years agoAdd WinCairo to bot watcher's dashboard.
ross.kirsling@sony.com [Wed, 5 Sep 2018 17:58:45 +0000 (17:58 +0000)]
Add WinCairo to bot watcher's dashboard.
https://bugs.webkit.org/show_bug.cgi?id=189273

Reviewed by Aakash Jain.

* BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Images/Windows10.png: Added.
* BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Images/Windows10@2x.png: Added.

* BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/Dashboard.js:
* BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Styles/Main.css:
(table.queue-grid tr.platform.windows-10 img.logo): Added.
(table.queue-grid tr.platform.windows-8 img.logo): Deleted.
(table.queue-grid tr.platform.windows-xp img.logo): Deleted.
Add Win10 section to dashboard. Remove unused WinXP and Win8 sections.

* BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BubbleQueueServer.js:
(BubbleQueueServer):
* BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/WebKitBuildbot.js:
(WebKitBuildbot):
Add WinCairo build, test, and EWS bots to Win10 section of dashboard.

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

2 years ago[LFC] Drop Display:Box from FormattingContext::compute* functions
zalan@apple.com [Wed, 5 Sep 2018 17:54:05 +0000 (17:54 +0000)]
[LFC] Drop Display:Box from FormattingContext::compute* functions
https://bugs.webkit.org/show_bug.cgi?id=189309

Reviewed by Antti Koivisto.

They are redundant and could get out of sync.

* layout/FormattingContext.cpp:
(WebCore::Layout::FormattingContext::computeOutOfFlowHorizontalGeometry const):
(WebCore::Layout::FormattingContext::computeOutOfFlowVerticalGeometry const):
(WebCore::Layout::FormattingContext::computeBorderAndPadding const):
(WebCore::Layout::FormattingContext::placeInFlowPositionedChildren const):
(WebCore::Layout::FormattingContext::layoutOutOfFlowDescendants const):
* layout/FormattingContext.h:
* layout/blockformatting/BlockFormattingContext.cpp:
(WebCore::Layout::BlockFormattingContext::layout const):
(WebCore::Layout::BlockFormattingContext::layoutFormattingContextRoot const):
(WebCore::Layout::BlockFormattingContext::computeStaticPosition const):
(WebCore::Layout::BlockFormattingContext::computeEstimatedMarginTop const):
(WebCore::Layout::BlockFormattingContext::computeEstimatedMarginTopForAncestors const):
(WebCore::Layout::BlockFormattingContext::computeFloatingPosition const):
(WebCore::Layout::BlockFormattingContext::computePositionToAvoidFloats const):
(WebCore::Layout::BlockFormattingContext::computeVerticalPositionForFloatClear const):
(WebCore::Layout::BlockFormattingContext::computeInFlowPositionedPosition const):
(WebCore::Layout::BlockFormattingContext::computeWidthAndMargin const):
(WebCore::Layout::BlockFormattingContext::computeHeightAndMargin const):
* layout/blockformatting/BlockFormattingContext.h:
* layout/inlineformatting/InlineFormattingContext.cpp:
(WebCore::Layout::InlineFormattingContext::computeStaticPosition const):
(WebCore::Layout::InlineFormattingContext::computeInFlowPositionedPosition const):
* layout/inlineformatting/InlineFormattingContext.h:

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

2 years agoVersioning.
bshafiei@apple.com [Wed, 5 Sep 2018 17:40:50 +0000 (17:40 +0000)]
Versioning.

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

2 years agoAdd MediaCapabilities as an Experimental Feature
jer.noble@apple.com [Wed, 5 Sep 2018 17:26:54 +0000 (17:26 +0000)]
Add MediaCapabilities as an Experimental Feature
https://bugs.webkit.org/show_bug.cgi?id=189209

Reviewed by Eric Carlson.

Source/WebCore:

Move mediaCapabilitiesEnabled out of RuntimeEnabledFeatures. It already (also) exists in Settings.

* Modules/mediacapabilities/MediaCapabilities.idl:
* Modules/mediacapabilities/MediaCapabilitiesInfo.idl:
* Modules/mediacapabilities/NavigatorMediaCapabilities.idl:
* Modules/mediacapabilities/ScreenLuminance.idl:
* page/RuntimeEnabledFeatures.h:
(WebCore::RuntimeEnabledFeatures::setMediaCapabilitiesEnabled): Deleted.
(WebCore::RuntimeEnabledFeatures::mediaCapabilitiesEnabled const): Deleted.

Source/WebKit:

* Shared/WebPreferences.yaml:

Source/WebKitLegacy/mac:

RuntimeEnabledFeature -> Setting.

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

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

2 years agoCancelled fullscreen exit gesture leaves bad state for next exit request.
commit-queue@webkit.org [Wed, 5 Sep 2018 17:11:25 +0000 (17:11 +0000)]
Cancelled fullscreen exit gesture leaves bad state for next exit request.
https://bugs.webkit.org/show_bug.cgi?id=189278

Patch by Jeremy Jones <jeremyj@apple.com> on 2018-09-05
Reviewed by Jer Noble.

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

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

2 years agoAdd functionality to encode and decode a uint64_t in KeyedCoding
commit-queue@webkit.org [Wed, 5 Sep 2018 17:03:02 +0000 (17:03 +0000)]
Add functionality to encode and decode a uint64_t in KeyedCoding
https://bugs.webkit.org/show_bug.cgi?id=189216

Patch by Woodrow Wang <woodrow_wang@apple.com> on 2018-09-05
Reviewed by Daniel Bates.

I've added this functionality in order to be able to encode and decode the raw uint64_t
representation of an OptionSet for my patch here <https://bugs.webkit.org/show_bug.cgi?id=187773>.

The changes in the KeyedEncoder/KeyedDecoder for Glib were made because they are derived classes
of KeyedCoding which contains pure virtual functions that need to be implemented.

* platform/KeyedCoding.h:
* platform/cf/KeyedDecoderCF.cpp:
(WebCore::KeyedDecoderCF::decodeUInt64):
* platform/cf/KeyedDecoderCF.h:
* platform/cf/KeyedEncoderCF.cpp:
(WebCore::KeyedEncoderCF::encodeUInt64):
* platform/cf/KeyedEncoderCF.h:
* platform/glib/KeyedDecoderGlib.cpp:
(WebCore::KeyedDecoderGlib::decodeUInt64):
* platform/glib/KeyedDecoderGlib.h:
* platform/glib/KeyedEncoderGlib.cpp:
(WebCore::KeyedEncoderGlib::encodeUInt64):
* platform/glib/KeyedEncoderGlib.h:

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

2 years agoREGRESSION (r209470): EditingHistory folder is missing in EditingHistory Xcode project
ddkilzer@apple.com [Wed, 5 Sep 2018 16:49:38 +0000 (16:49 +0000)]
REGRESSION (r209470): EditingHistory folder is missing in EditingHistory Xcode project

Found using `tidy-Xcode-project-file --missing` (see Bug
188754).  Fixes were made manually.

* EditingHistory/EditingHistory.xcodeproj/project.pbxproj:
(EditingHistory): Change the path of the folder to
"EditingHistory", then remove the now-redundant name.
(EditingHistory/Resources/DumpEditingHistory.js): Remove
redundant file reference since another file reference exists at
the top of the project file list, and that file reference is the
one used in the "Copy Bundle Resources" build phase.
(EditingHistory/Resources/EditingHistoryUtil.js): Ditto.

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

2 years ago[GTK] ASSERT(!m_nicosia.imageBacking) when starting any YouTube video
zandobersek@gmail.com [Wed, 5 Sep 2018 16:20:01 +0000 (16:20 +0000)]
[GTK] ASSERT(!m_nicosia.imageBacking) when starting any YouTube video
https://bugs.webkit.org/show_bug.cgi?id=189215

Reviewed by Carlos Garcia Campos.

* platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:
(WebCore::CoordinatedGraphicsLayer::purgeBackingStores):
Manually clear out any layer-side state of any image backing that is
associated with this layer, much like we do for backing stores.

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

2 years ago[MediaStream] Simplify logic when changing RealtimeMediaSource settings
eric.carlson@apple.com [Wed, 5 Sep 2018 15:56:44 +0000 (15:56 +0000)]
[MediaStream] Simplify logic when changing RealtimeMediaSource settings
https://bugs.webkit.org/show_bug.cgi?id=189284
<rdar://problem/44117948>

Reviewed by Youenn Fablet.

Source/WebCore:

Remove all "apply<setting>" methods from RealtimeMediaSource and derived classes, and
add a bitfield to settingsDidChange so classes can do setting-specific setup and
configuration by overriding settingsDidChange.

No new tests, no functionality changed.

* Modules/mediastream/CanvasCaptureMediaStreamTrack.cpp:
(WebCore::CanvasCaptureMediaStreamTrack::Source::canvasResized):
* Modules/mediastream/CanvasCaptureMediaStreamTrack.h:
* platform/mediastream/MediaConstraints.h:
(WebCore::NumericConstraint::fitnessDistance const):
(WebCore::NumericConstraint::valueForDiscreteCapabilityValues const):
* platform/mediastream/RealtimeIncomingVideoSource.h:
(): Deleted.
* platform/mediastream/RealtimeMediaSource.cpp:
(WebCore::RealtimeMediaSource::RealtimeMediaSource):
(WebCore::RealtimeMediaSource::settingsDidChange):
(WebCore::RealtimeMediaSource::fitnessDistance):
(WebCore::applyNumericConstraint):
(WebCore::RealtimeMediaSource::applyConstraint):
(WebCore::RealtimeMediaSource::applyConstraints):
(WebCore::RealtimeMediaSource::setSize):
(WebCore::RealtimeMediaSource::setWidth):
(WebCore::RealtimeMediaSource::setHeight):
(WebCore::RealtimeMediaSource::setFrameRate):
(WebCore::RealtimeMediaSource::setAspectRatio):
(WebCore::RealtimeMediaSource::setFacingMode):
(WebCore::RealtimeMediaSource::setVolume):
(WebCore::RealtimeMediaSource::setSampleRate):
(WebCore::RealtimeMediaSource::setSampleSize):
(WebCore::RealtimeMediaSource::setEchoCancellation):
* platform/mediastream/RealtimeMediaSource.h:
* platform/mediastream/RealtimeMediaSourceSettings.cpp:
(WebCore::RealtimeMediaSourceSettings::diff const):
* platform/mediastream/RealtimeMediaSourceSettings.h:
(WebCore::RealtimeMediaSourceSettings::allFlags):
* platform/mediastream/RealtimeVideoSource.cpp:
(WebCore::RealtimeVideoSource::applySize): Deleted.
(WebCore::RealtimeVideoSource::applyFrameRate): Deleted.
* platform/mediastream/RealtimeVideoSource.h:
* platform/mediastream/gstreamer/GStreamerAudioCaptureSource.cpp:
(WebCore::GStreamerAudioCaptureSource::settingsDidChange):
(WebCore::GStreamerAudioCaptureSource::applySampleRate): Deleted.
* platform/mediastream/gstreamer/GStreamerAudioCaptureSource.h:
* platform/mediastream/gstreamer/GStreamerVideoCaptureSource.cpp:
(WebCore::GStreamerVideoCaptureSource::settingsDidChange):
(WebCore::GStreamerVideoCaptureSource::applySize): Deleted.
(WebCore::GStreamerVideoCaptureSource::applyFrameRate): Deleted.
* platform/mediastream/gstreamer/GStreamerVideoCaptureSource.h:
* platform/mediastream/mac/AVVideoCaptureSource.h:
* platform/mediastream/mac/AVVideoCaptureSource.mm:
(WebCore::AVVideoCaptureSource::settingsDidChange):
(WebCore::AVVideoCaptureSource::setPreset):
(WebCore::AVVideoCaptureSource::setFrameRate):
(WebCore::AVVideoCaptureSource::applySizeAndFrameRate):
(WebCore::AVVideoCaptureSource::processNewFrame):
(WebCore::AVVideoCaptureSource::applySize): Deleted.
(WebCore::AVVideoCaptureSource::applyFrameRate): Deleted.
* platform/mediastream/mac/CoreAudioCaptureSource.cpp:
(WebCore::CoreAudioCaptureSource::settingsDidChange):
(WebCore::CoreAudioCaptureSource::applySampleRate): Deleted.
(WebCore::CoreAudioCaptureSource::applyEchoCancellation): Deleted.
* platform/mediastream/mac/CoreAudioCaptureSource.h:
* platform/mediastream/mac/DisplayCaptureSourceCocoa.cpp:
(WebCore::DisplayCaptureSourceCocoa::settingsDidChange):
(WebCore::DisplayCaptureSourceCocoa::startProducingData):
(WebCore::DisplayCaptureSourceCocoa::applySize): Deleted.
(WebCore::DisplayCaptureSourceCocoa::applyFrameRate): Deleted.
* platform/mediastream/mac/DisplayCaptureSourceCocoa.h:
* platform/mediastream/mac/MockRealtimeAudioSourceMac.h:
* platform/mediastream/mac/MockRealtimeAudioSourceMac.mm:
(WebCore::MockRealtimeAudioSourceMac::settingsDidChange):
(WebCore::MockRealtimeAudioSourceMac::applySampleRate): Deleted.
* platform/mediastream/mac/MockRealtimeVideoSourceMac.h:
* platform/mediastream/mac/MockRealtimeVideoSourceMac.mm:
(WebCore::MockRealtimeVideoSourceMac::settingsDidChange):
(WebCore::MockRealtimeVideoSourceMac::applySize): Deleted.
* platform/mediastream/mac/RealtimeIncomingVideoSourceCocoa.mm:
(WebCore::RealtimeIncomingVideoSourceCocoa::processNewSample):
* platform/mediastream/mac/ScreenDisplayCaptureSourceMac.h:
* platform/mediastream/mac/ScreenDisplayCaptureSourceMac.mm:
(WebCore::ScreenDisplayCaptureSourceMac::settingsDidChange):
(WebCore::ScreenDisplayCaptureSourceMac::applySize): Deleted.
(WebCore::ScreenDisplayCaptureSourceMac::applyFrameRate): Deleted.
* platform/mock/MockRealtimeAudioSource.cpp:
(WebCore::MockRealtimeAudioSource::settingsDidChange):
* platform/mock/MockRealtimeAudioSource.h:
* platform/mock/MockRealtimeVideoSource.cpp:
(WebCore::MockRealtimeVideoSource::settingsDidChange):
(WebCore::MockRealtimeVideoSource::applySize): Deleted.
* platform/mock/MockRealtimeVideoSource.h:

Source/WebKit:

* WebProcess/cocoa/UserMediaCaptureManager.cpp:
(WebKit::UserMediaCaptureManager::Source::setSettings):

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

2 years agoGTK-focused gardening
Ms2ger@igalia.com [Wed, 5 Sep 2018 15:22:15 +0000 (15:22 +0000)]
GTK-focused gardening
https://bugs.webkit.org/show_bug.cgi?id=189305

Unreviewed test gardening.

* TestExpectations: Remove passing test.
* fast/mediastream/RTCPeerConnection-media-setup-callbacks-single-dialog.html: Speculative fix for r235484.
* platform/gtk/http/tests/inspector/network/resource-request-headers-expected.txt: Added.
* platform/gtk/http/tests/loading/oauth-expected.txt: Added.
* platform/gtk/http/tests/websocket/connection-refusal-in-frame-resource-load-statistics-expected.txt: Added.
* platform/gtk/imported/w3c/web-platform-tests/xhr/send-network-error-sync-events.sub-expected.txt: Updated for r235354.
* platform/gtk/js/dom/dom-static-property-for-in-iteration-expected.txt: Updated for r235245.

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

2 years ago[LFC][BFC] Move MarginCollapse class under BlockFormattingContext::Geometry
zalan@apple.com [Wed, 5 Sep 2018 14:42:45 +0000 (14:42 +0000)]
[LFC][BFC] Move MarginCollapse class under BlockFormattingContext::Geometry
https://bugs.webkit.org/show_bug.cgi?id=189296

Reviewed by Antti Koivisto.

Margin collapsing is part of geometry after all.

* layout/blockformatting/BlockFormattingContext.cpp:
(WebCore::Layout::BlockFormattingContext::computeEstimatedMarginTop const):
* layout/blockformatting/BlockFormattingContext.h:
* layout/blockformatting/BlockFormattingContextGeometry.cpp:
(WebCore::Layout::BlockFormattingContext::Geometry::estimatedMarginTop):
* layout/blockformatting/BlockMarginCollapse.cpp:
(WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::collapsedMarginTopFromFirstChild):
(WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::nonCollapsedMarginTop):
(WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::computedNonCollapsedMarginTop):
(WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::computedNonCollapsedMarginBottom):
(WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::marginTop):
(WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::marginBottom):
(WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::isMarginBottomCollapsedWithParent):
(WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::isMarginTopCollapsedWithParentMarginBottom):
(WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::collapsedMarginBottomFromLastChild):
(WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::nonCollapsedMarginBottom):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::collapsedMarginTopFromFirstChild): Deleted.
(WebCore::Layout::BlockFormattingContext::MarginCollapse::nonCollapsedMarginTop): Deleted.
(WebCore::Layout::BlockFormattingContext::MarginCollapse::computedNonCollapsedMarginTop): Deleted.
(WebCore::Layout::BlockFormattingContext::MarginCollapse::computedNonCollapsedMarginBottom): Deleted.
(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginTop): Deleted.
(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginBottom): Deleted.
(WebCore::Layout::BlockFormattingContext::MarginCollapse::isMarginBottomCollapsedWithParent): Deleted.
(WebCore::Layout::BlockFormattingContext::MarginCollapse::isMarginTopCollapsedWithParentMarginBottom): Deleted.
(WebCore::Layout::BlockFormattingContext::MarginCollapse::collapsedMarginBottomFromLastChild): Deleted.
(WebCore::Layout::BlockFormattingContext::MarginCollapse::nonCollapsedMarginBottom): Deleted.
(WebCore::Layout::BlockFormattingContext::MarginCollapse::estimatedMarginTop): Deleted.

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

2 years ago[LFC] Make BlockFormattingContext::Geometry a subclass of FormattingContext::Geometry
zalan@apple.com [Wed, 5 Sep 2018 14:36:43 +0000 (14:36 +0000)]
[LFC] Make BlockFormattingContext::Geometry a subclass of FormattingContext::Geometry
https://bugs.webkit.org/show_bug.cgi?id=189294

Reviewed by Antti Koivisto.

This simplifies some of the call sites.

* layout/blockformatting/BlockFormattingContext.cpp:
(WebCore::Layout::BlockFormattingContext::computeWidthAndMargin const):
(WebCore::Layout::BlockFormattingContext::computeHeightAndMargin const):
* layout/blockformatting/BlockFormattingContext.h:
* layout/blockformatting/BlockFormattingContextGeometry.cpp:
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedHeightAndMargin):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedWidthAndMargin):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowReplacedWidthAndMargin):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowPositionedPosition):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowHeightAndMargin):
(WebCore::Layout::BlockFormattingContext::Geometry::instrinsicWidthConstraints):

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

2 years agoREGRESSION (r235419): DFGCFG.h is missing from JavaScriptCore Xcode project
ddkilzer@apple.com [Wed, 5 Sep 2018 14:19:18 +0000 (14:19 +0000)]
REGRESSION (r235419): DFGCFG.h is missing from JavaScriptCore Xcode project

Found using `tidy-Xcode-project-file --missing` (see Bug
188754).  Fix was made manually.

* JavaScriptCore.xcodeproj/project.pbxproj:
(dfg/DFGCFG.h): Revert accidental change in r235419 by restoring
`name` and `path` values to file reference.

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

2 years agoREGRESSION (r160736): Bundle folder is missing in MiniBrowser Xcode project
ddkilzer@apple.com [Wed, 5 Sep 2018 12:31:31 +0000 (12:31 +0000)]
REGRESSION (r160736): Bundle folder is missing in MiniBrowser Xcode project

Found using `tidy-Xcode-project-file --missing` (see Bug
188754).  Folder fix was made manually.

* MiniBrowser/MiniBrowser.xcodeproj/project.pbxproj:
(Bundle): Change the path of the folder to "mac/Bundle", and set
the name back to "Bundle".
(Bundle/Info.plist): Change file reference to be relative to its
group.  Accomplished using Xcode after fixing the folder path.
(Bundle/MiniBrowserBundle_Prefix.pch): Ditto.

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

2 years agoREGRESSION (r184033): ContentExtensionTester folder is missing in ContentExtensionTes...
ddkilzer@apple.com [Wed, 5 Sep 2018 12:09:21 +0000 (12:09 +0000)]
REGRESSION (r184033): ContentExtensionTester folder is missing in ContentExtensionTester Xcode project

Found using `tidy-Xcode-project-file --missing` (see Bug
188754).  Fixes were made manually.

* ContentExtensionTester/ContentExtensionTester.xcodeproj/project.pbxproj:
(ContentExtensionTester): Change the path of the folder to map
to "." (which exists and is where main.m is located), and then
set the folder's name back to "ContentExtensionTester".
(main.m): Change file reference to be relative to its group now
that the group's path is fixed.

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

2 years agoREGRESSION (r235585): WebDownloadInternal.h is missing from WebKitLegacy Xcode project
ddkilzer@apple.com [Wed, 5 Sep 2018 11:46:43 +0000 (11:46 +0000)]
REGRESSION (r235585): WebDownloadInternal.h is missing from WebKitLegacy Xcode project
<https://bugs.webkit.org/show_bug.cgi?id=189072>

Found using tidy-Xcode-project-file (see Bug 188754).

* WebKitLegacy.xcodeproj/project.pbxproj: Remove references to
WebDownloadInternal.h since the header was removed in r235585.

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

2 years agoisAsyncGeneratorMethodParseMode() should check for SourceParseMode::AsyncGeneratorWra...
mark.lam@apple.com [Wed, 5 Sep 2018 08:14:42 +0000 (08:14 +0000)]
isAsyncGeneratorMethodParseMode() should check for SourceParseMode::AsyncGeneratorWrapperMethodMode.
https://bugs.webkit.org/show_bug.cgi?id=189292
<rdar://problem/38907433>

Reviewed by Saam Barati.

JSTests:

* stress/regress-189292.js: Added.

Source/JavaScriptCore:

Previously, isAsyncGeneratorMethodParseMode() was checking for AsyncGeneratorWrapperFunctionMode
instead of AsyncGeneratorWrapperMethodMode.  This patch fixes it
to check for AsyncGeneratorWrapperMethodMode (to match what is expected as indicated
in the name isAsyncGeneratorMethodParseMode).

* parser/ParserModes.h:
(JSC::isAsyncGeneratorMethodParseMode):

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

2 years agoRemove unused bad_optional_access implementation.
mark.lam@apple.com [Wed, 5 Sep 2018 07:52:17 +0000 (07:52 +0000)]
Remove unused bad_optional_access implementation.
https://bugs.webkit.org/show_bug.cgi?id=189297

Reviewed by David Kilzer.

This is a speculative fix for resolving build errors arising from conflicting
definitions of bad_optional_access when building WebKit with the latest clang.

* wtf/Optional.h:
(std::bad_optional_access::bad_optional_access): Deleted.

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

2 years ago[EME] Add a layoutTest for ClearKey WebM video playback
commit-queue@webkit.org [Wed, 5 Sep 2018 06:50:13 +0000 (06:50 +0000)]
[EME] Add a layoutTest for ClearKey WebM video playback
https://bugs.webkit.org/show_bug.cgi?id=189200

Patch by Yacine Bandou <yacine.bandou_ext@softathome.com> on 2018-09-04
Reviewed by Xabier Rodriguez-Calvar.

Add a new layoutTest in order to test the playback of ClearKey encrypted WebM.

* media/encrypted-media/clearKey/clearKey-webm-video-playback-mse-expected.txt: Added.
* media/encrypted-media/clearKey/clearKey-webm-video-playback-mse.html: Added.
* platform/gtk/TestExpectations:
* platform/mac/TestExpectations:
* platform/wpe/TestExpectations:

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

2 years agoAdd basic support for ScrollIntoViewOptions
commit-queue@webkit.org [Wed, 5 Sep 2018 05:19:58 +0000 (05:19 +0000)]
Add basic support for ScrollIntoViewOptions
https://bugs.webkit.org/show_bug.cgi?id=189258

Patch by Frederic Wang <fwang@igalia.com> on 2018-09-04
Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

Update test expectations for WPT scrollIntoView tests.

* web-platform-tests/css/cssom-view/scrollIntoView-scrollMargin-expected.txt: This is not
supported yet but update the error message.
* web-platform-tests/css/cssom-view/scrollIntoView-scrollPadding-expected.txt: Ditto.
* web-platform-tests/css/cssom-view/scrollIntoView-shadow-expected.txt: Update expectation
now that this test passes.
* web-platform-tests/css/cssom-view/scrollIntoView-smooth-expected.txt: Ditto.
* web-platform-tests/css/cssom-view/scrollintoview-expected.txt: Ditto.

Source/WebCore:

This patch introduces a new ScrollIntoViewOptions parameter that can be passed into
Element.scrollIntoView instead of a boolean. A basic support for scroll alignments is
implemented, so that it is closer to the behavior of the CSSOMView spec while still remaining
compatible with the current boolean-parameter implementation. Full implementation that
takes into account orientation/direction will be handled in bug 161611. This patch is also a
preliminary step to support the ScrollBehavior (bug 188043) for ScrollIntoView.

Tests: web-platform-tests/css/cssom-view/scrollintoview-html
       web-platform-tests/css/cssom-view/scrollIntoView-smooth.html

* CMakeLists.txt: Add new IDL files.
* DerivedSources.make: Ditto.
* Sources.txt: Add new generated cpp JS bindings.
* WebCore.xcodeproj/project.pbxproj: Add files to build to XCode.
* dom/Element.cpp:
(WebCore::toScrollAlignment): Convert ScrollLogicalPosition to scroll alignment. Orientation
and direction are not implemented yet.
(WebCore::Element::scrollIntoView): Implement new scrollIntoView version accepting
ScrollIntoViewOptions parameter.
* dom/Element.h: Declare new scrollIntoView.
* dom/Element.idl: Make scrollIntoView accept a ScrollIntoViewOptions parameter.
* page/ScrollIntoViewOptions.h: Added.
* page/ScrollIntoViewOptions.idl: Added.
* page/ScrollLogicalPosition.h: Added.
* page/ScrollLogicalPosition.idl: Added.

Source/WebKit:

* DOM/DOMElement.mm: Add ScrollIntoViewOptions
header so that this file can build despite the new scrollIntoView function.

Source/WebKitLegacy/mac:

* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMElementGtk.cpp: Add ScrollIntoViewOptions
header so that this file can build despite the new scrollIntoView function.

Source/WebKitLegacy/win:

* DOMCoreClasses.cpp: Add ScrollIntoViewOptions header so that this file
can build despite the new scrollIntoView function.

LayoutTests:

Update test expectations for WPT scrollIntoView tests.

* platform/ios-wk2/imported/w3c/web-platform-tests/css/cssom-view/scrollIntoView-smooth-expected.txt: Removed.

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

2 years agoCheck important flags when serializing shorthand with "initial" values
commit-queue@webkit.org [Wed, 5 Sep 2018 05:02:53 +0000 (05:02 +0000)]
Check important flags when serializing shorthand with "initial" values
https://bugs.webkit.org/show_bug.cgi?id=188984

Patch by Oriol Brufau <obrufau@igalia.com> on 2018-09-04
Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

The test still has some failures due to https://bugs.webkit.org/show_bug.cgi?id=185953
but without this patch it would fail earlier.

* web-platform-tests/css/cssom/shorthand-serialization-expected.txt:
* web-platform-tests/css/cssom/shorthand-serialization.html:

Source/WebCore:

Test: imported/w3c/web-platform-tests/css/cssom/shorthand-serialization.html

The test still has some failures due to https://bugs.webkit.org/show_bug.cgi?id=185953
but without this patch it would fail earlier.

* css/StyleProperties.cpp:
(WebCore::StyleProperties::get4Values const):

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

2 years agoRemove pointless RenderSVGResourceMode::ApplyToDefault enum value
antti@apple.com [Wed, 5 Sep 2018 04:32:59 +0000 (04:32 +0000)]
Remove pointless RenderSVGResourceMode::ApplyToDefault enum value
https://bugs.webkit.org/show_bug.cgi?id=189260

Reviewed by Sam Weinig.

Default does not need a bit, it is better represented with an empty OptionSet.

* rendering/svg/RenderSVGResource.cpp:
(WebCore::requestPaintingResource):
* rendering/svg/RenderSVGResource.h:
* rendering/svg/RenderSVGResourceClipper.cpp:
(WebCore::RenderSVGResourceClipper::applyResource):
* rendering/svg/RenderSVGResourceFilter.cpp:
(WebCore::RenderSVGResourceFilter::applyResource):
(WebCore::RenderSVGResourceFilter::postApplyResource):
* rendering/svg/RenderSVGResourceGradient.cpp:
(WebCore::RenderSVGResourceGradient::applyResource):
* rendering/svg/RenderSVGResourceMasker.cpp:
(WebCore::RenderSVGResourceMasker::applyResource):
* rendering/svg/RenderSVGResourcePattern.cpp:
(WebCore::RenderSVGResourcePattern::applyResource):
(WebCore::RenderSVGResourcePattern::postApplyResource):
* rendering/svg/RenderSVGResourceSolidColor.cpp:
(WebCore::RenderSVGResourceSolidColor::applyResource):
(WebCore::RenderSVGResourceSolidColor::postApplyResource):
* rendering/svg/SVGInlineTextBox.cpp:
(WebCore::SVGInlineTextBox::SVGInlineTextBox):
(WebCore::SVGInlineTextBox::paintSelectionBackground):
(WebCore::SVGInlineTextBox::paint):
(WebCore::SVGInlineTextBox::acquirePaintingResource):
(WebCore::SVGInlineTextBox::paintDecorationWithStyle):
* rendering/svg/SVGRenderingContext.cpp:
(WebCore::SVGRenderingContext::~SVGRenderingContext):
(WebCore::SVGRenderingContext::prepareToRenderSVGContent):

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