2017-02-22 Antoine Quint [Modern Media Controls] Scrubber stops moving while scrubbing on macOS https://bugs.webkit.org/show_bug.cgi?id=168518 Reviewed by Dean Jackson. As we start to scrub, controlValueWillStartChanging() is called on ScrubberSupport and pauses the media if it's not already paused. This causes the play/pause button to change icon and for layout() to be called on MacOSInlineMediaControls. This in turns sets the .children property on the .controlsBar and eventually yields a DOM manipulation which re-inserts the scrubber's DOM hierarchy, causing stutters during user interaction. Our solution is to make the .children setter smarter about identifying that the children list hasn't changed and that no DOM invalidation is necessary. * Modules/modern-media-controls/controls/layout-node.js: (LayoutNode.prototype.set children): 2017-02-22 Antoine Quint [Modern Media Controls] Controls bar may disappear while captions menu is visible https://bugs.webkit.org/show_bug.cgi?id=168751 Reviewed by Dean Jackson. We now prevent the controls bar from fading out due to the auto-hide timer firing when the tracks panel is up, and wait until the track panel is hidden before fading the controls bar. Test: media/modern-media-controls/tracks-panel/tracks-panel-prevent-controls-bar-from-fading.html * Modules/modern-media-controls/controls/controls-bar.js: (ControlsBar.prototype.set userInteractionEnabled): (ControlsBar.prototype._autoHideTimerFired): 2017-02-22 Antoine Quint [Modern Media Controls] Can't set the volume slider with macOS inline controls https://bugs.webkit.org/show_bug.cgi?id=168747 Reviewed by Dean Jackson. Only call super for events we haven't registered specifically in the context of this class. Otherwise we'd invalidate the volume container visibility for a "mousedown" event registered by the MacOSMediaControls, the super class. * Modules/modern-media-controls/controls/macos-inline-media-controls.js: (MacOSInlineMediaControls.prototype.handleEvent): 2017-02-22 Antti Koivisto Replace SimpleLineLayout::Range by WTF::IteratorRange https://bugs.webkit.org/show_bug.cgi?id=168742 Reviewed by Zalan Bujtas. Kill a redundant custom type. * rendering/SimpleLineLayoutResolver.cpp: (WebCore::SimpleLineLayout::RunResolver::rangeForRect): (WebCore::SimpleLineLayout::RunResolver::rangeForRenderer): (WebCore::SimpleLineLayout::RunResolver::rangeForRendererWithOffsets): * rendering/SimpleLineLayoutResolver.h: (WebCore::SimpleLineLayout::LineResolver::rangeForRect): (WebCore::SimpleLineLayout::Range::Range): Deleted. (WebCore::SimpleLineLayout::Range::begin): Deleted. (WebCore::SimpleLineLayout::Range::end): Deleted. 2017-02-22 Simon Fraser Add the Web Authentication API as "Under Consideration". * features.json: 2017-02-22 Zalan Bujtas Simple line layout: Set the pagination strut on the flow when the first line does not fit the page. https://bugs.webkit.org/show_bug.cgi?id=168738 Reviewed by Antti Koivisto. The pagination strut for the first line is tracked by the parent RenderBlockFlow and not by the line itself (see RenderBlockFlow::adjustLinePositionForPagination()). Also renamed *PaginationStrut* to *LineStrut* to make sure we don't confuse it with the block level strut. Not enabled yet. * rendering/SimpleLineLayout.cpp: (WebCore::SimpleLineLayout::computeLineTopAndBottomWithOverflow): (WebCore::SimpleLineLayout::computeLineBreakIndex): (WebCore::SimpleLineLayout::setPageBreakForLine): (WebCore::SimpleLineLayout::adjustLinePositionsForPagination): (WebCore::SimpleLineLayout::create): (WebCore::SimpleLineLayout::Layout::create): (WebCore::SimpleLineLayout::Layout::Layout): * rendering/SimpleLineLayout.h: (WebCore::SimpleLineLayout::Layout::hasLineStruts): (WebCore::SimpleLineLayout::Layout::struts): (WebCore::SimpleLineLayout::Layout::hasPaginationStruts): Deleted. * rendering/SimpleLineLayoutFunctions.cpp: (WebCore::SimpleLineLayout::paintFlow): * rendering/SimpleLineLayoutFunctions.h: (WebCore::SimpleLineLayout::computeFlowHeight): * rendering/SimpleLineLayoutResolver.h: (WebCore::SimpleLineLayout::RunResolver::Run::computeBaselinePosition): 2017-02-22 Youenn Fablet [WebRTC] Disable libwebrtc stderr logging in release mode https://bugs.webkit.org/show_bug.cgi?id=168734 Reviewed by Tim Horton. No change of behavior. * platform/mediastream/libwebrtc/LibWebRTCProvider.cpp: (WebCore::initializePeerConnectionFactoryAndThreads): 2017-02-22 Jer Noble MediaStreamSourceNode never receives audio from MockRealtimeAudioSourceMac. https://bugs.webkit.org/show_bug.cgi?id=168731 Reviewed by Eric Carlson. Test: fast/mediastream/mock-media-source-webaudio.html Because the audioSourceProvider can be created before the mock source is configured, explicitly configure the source if necessary after creating the audioSourceProvider. * platform/mediastream/mac/MockRealtimeAudioSourceMac.mm: (WebCore::MockRealtimeAudioSourceMac::audioSourceProvider): 2017-02-22 Chris Dumez Do not aggressively throttle DOM timers until they've reached their max nesting level https://bugs.webkit.org/show_bug.cgi?id=168700 Reviewed by Simon Fraser. Do not aggressively throttle DOM timers until they've actually areached their max nesting level (5). This overly aggressive throttling of non-nested timers is what was causing Google Maps to use 100% CPU in background tabs for several minutes. Test: fast/dom/timer-throttling-hidden-page-non-nested.html * dom/Document.cpp: (WebCore::Document::timerAlignmentInterval): 2017-02-22 Eric Carlson [MediaStream iOS] Respond to capture interruptions and notifications https://bugs.webkit.org/show_bug.cgi?id=168610 Reviewed by Jer Noble. * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm: (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::ensureLayer): Drive-by cleanup: don't create a sample buffer display layer unless there is an active video track. * platform/mediastream/mac/AVMediaCaptureSource.h: * platform/mediastream/mac/AVMediaCaptureSource.mm: (WebCore::AVMediaCaptureSource::AVMediaCaptureSource): Add static_asserts to ensure that WebCore::InterruptionReason values map directly to AVCaptureSessionInterruptionReason values. (WebCore::AVMediaCaptureSource::~AVMediaCaptureSource): Minor cleanup. (WebCore::AVMediaCaptureSource::startProducingData): Start listening for notifications before starting the session. (WebCore::AVMediaCaptureSource::stopProducingData): Remove the notification observers before stopping the session. (WebCore::AVMediaCaptureSource::setupSession): Minor style cleanup. (WebCore::AVMediaCaptureSource::captureSessionRuntimeError): New. When the error is AVErrorMediaServicesWereReset, sometimes caused by a mediaserverd crash, try to restart the session one time. (WebCore::AVMediaCaptureSource::captureSessionBeginInterruption): Store the interruption reason. (WebCore::AVMediaCaptureSource::captureSessionEndInterruption): Try to restart the session if it was interrupted because the app went into multi-app layout mode. (WebCore::sessionKVOProperties): Drive-by cleanup. (-[WebCoreAVMediaCaptureSourceObserver initWithCallback:]): (-[WebCoreAVMediaCaptureSourceObserver disconnect]): (-[WebCoreAVMediaCaptureSourceObserver addNotificationObservers]): (-[WebCoreAVMediaCaptureSourceObserver removeNotificationObservers]): (-[WebCoreAVMediaCaptureSourceObserver sessionRuntimeError:]): (-[WebCoreAVMediaCaptureSourceObserver beginSessionInterrupted:]): (-[WebCoreAVMediaCaptureSourceObserver endSessionInterrupted:]): * platform/mediastream/mac/AVVideoCaptureSource.mm: (WebCore::AVVideoCaptureSource::initializeCapabilities): Not all AVCaptureSession preset strings are available on all platforms so load with SOFT_LINK_POINTER_OPTIONAL and NULL check before use. (WebCore::sizeForPreset): Ditto. (WebCore::AVVideoCaptureSource::bestSessionPresetForVideoDimensions): Ditto. 2017-02-22 Zalan Bujtas Simple line layout: ensureLineBoxes for paginated content. https://bugs.webkit.org/show_bug.cgi?id=168729 Reviewed by Antti Koivisto. This patch sets the layout state bits for paginated subtree layout, when we are switching over from simple line runs to inline tree. Not enabled yet. * rendering/RenderBlockFlow.cpp: (WebCore::RenderBlockFlow::ensureLineBoxes): * rendering/RenderView.cpp: (WebCore::RenderView::pushLayoutStateForPagination): LayoutUnit(1) is not the real height, it's just an indicator that we've got paginated content. * rendering/RenderView.h: * rendering/SimpleLineLayout.cpp: (WebCore::SimpleLineLayout::create): (WebCore::SimpleLineLayout::Layout::create): (WebCore::SimpleLineLayout::Layout::Layout): * rendering/SimpleLineLayout.h: (WebCore::SimpleLineLayout::Layout::isPaginated): (WebCore::SimpleLineLayout::Layout::hasPaginationStruts): * rendering/SimpleLineLayoutFunctions.h: (WebCore::SimpleLineLayout::computeFlowHeight): * rendering/SimpleLineLayoutResolver.h: (WebCore::SimpleLineLayout::RunResolver::Run::computeBaselinePosition): 2017-02-22 Per Arne Vollan [Win] Compile fix. https://bugs.webkit.org/show_bug.cgi?id=168713 Reviewed by Brent Fulgham. The include file is not found. * testing/Internals.cpp: 2017-02-22 Xabier Rodriguez Calvar [GStreamer][EME] Fix issue with allowed systems extraction https://bugs.webkit.org/show_bug.cgi?id=168717 Reviewed by Carlos Garcia Campos. The allowed systems were not being extracted from the need-context message because the loop was not stopping on the right condition. * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp: (WebCore::extractEventsAndSystemsFromMessage): Fix wrong condition. (WebCore::MediaPlayerPrivateGStreamerBase::handleProtectionEvent): Add better debug category. 2017-02-22 Antti Koivisto REGRESSION(r207669): Crash after mutating selector text https://bugs.webkit.org/show_bug.cgi?id=168655 Reviewed by Andreas Kling. Test: fast/css/selector-text-mutation-crash.html * style/StyleScope.cpp: (WebCore::Style::Scope::resolver): (WebCore::Style::Scope::updateStyleResolver): Protect against entering scheduleUpdate and wiping style resolver while updating it. Extension stylesheets can trigger this. (WebCore::Style::Scope::scheduleUpdate): Clear the style resolver immediately if style sheet content changes. The resolver may have data structures that point to the old sheet contents. The resolver would get wiped anyway when the scheduled update actually occurs. * style/StyleScope.h: 2017-02-08 Sergio Villar Senin [css-grid] Move the track sizing algorithm to its own class https://bugs.webkit.org/show_bug.cgi?id=167988 Reviewed by Manuel Rego Casasnovas. This is about moving the track sizing algorithm code out of RenderGrid to a new class GridTrackSizingAlgorithm, making RenderGrid more compact and easy to maintain. A nice side effect of this patch is the removal of the GridSizingData structure as it is no longer needed. All the data structures in that class were transferred to GridTrackSizingAlgorithm as private attribute members. The GridTrack class was also moved to the new file. The algorithm execution starts with the call to run(). It's mandatory to call setup() before any call to run() in order to properly configure the behaviour of the algorithm. You can call setup() & run() multiple times for a single layout operation (normally twice, one for columns and another one for rows). The algorithm uses a state machine to verify that the client issues the calls in the proper order (i.e. first columns and then rows). After finishing the layout, the client should call reset() to allow the algorithm to perform cleanups and to prepare itself for another round of calls. In order to implement the different behaviours of the algorithm depending on whether the available size is definite or not, a strategy pattern was implemented in the GridTrackSizingAlgorithmStrategy class. It has two subclasses, one for definite sizes and another one for indefinite ones. We took advantage of this change to perform some renames of the track sizing algorithm methods that were still using the names from the first versions of the specs. Not only that, the original track sizing algorithm method (computeUsedBreadthOfGridTracks) was split in 4 different parts representing the 4 steps of the algorithm. No new tests as this is about moving code and refactoring. * CMakeLists.txt: * WebCore.xcodeproj/project.pbxproj: * rendering/GridTrackSizingAlgorithm.cpp: Added. (WebCore::GridTrack::baseSize): (WebCore::GridTrack::growthLimit): (WebCore::GridTrack::setBaseSize): (WebCore::GridTrack::setGrowthLimit): (WebCore::GridTrack::growthLimitIfNotInfinite): (WebCore::GridTrack::setTempSize): (WebCore::GridTrack::growTempSize): (WebCore::GridTrack::setGrowthLimitCap): (WebCore::GridTrack::ensureGrowthLimitIsBiggerThanBaseSize): (WebCore::shouldClearOverrideContainingBlockContentSizeForChild): (WebCore::hasOverrideContainingBlockContentSizeForChild): (WebCore::setOverrideContainingBlockContentSizeForChild): (WebCore::flowAwareDirectionForChild): (WebCore::overrideContainingBlockContentSizeForChild): (WebCore::computeMarginLogicalSizeForChild): (WebCore::marginIntrinsicLogicalWidthForChild): (WebCore::GridTrackSizingAlgorithm::setFreeSpace): (WebCore::GridTrackSizingAlgorithm::rawGridTrackSize): (WebCore::GridTrackSizingAlgorithm::computeTrackBasedSize): (WebCore::GridTrackSizingAlgorithm::initialBaseSize): (WebCore::GridTrackSizingAlgorithm::initialGrowthLimit): (WebCore::GridTrackSizingAlgorithm::sizeTrackToFitNonSpanningItem): (WebCore::GridTrackSizingAlgorithm::spanningItemCrossesFlexibleSizedTracks): (WebCore::GridItemWithSpan::GridItemWithSpan): (WebCore::GridItemWithSpan::gridItem): (WebCore::GridItemWithSpan::span): (WebCore::GridItemWithSpan::operator<): (WebCore::GridTrackSizingAlgorithm::itemSizeForTrackSizeComputationPhase): (WebCore::shouldProcessTrackForTrackSizeComputationPhase): (WebCore::trackSizeForTrackSizeComputationPhase): (WebCore::updateTrackSizeForTrackSizeComputationPhase): (WebCore::trackShouldGrowBeyondGrowthLimitsForTrackSizeComputationPhase): (WebCore::markAsInfinitelyGrowableForTrackSizeComputationPhase): (WebCore::GridTrackSizingAlgorithm::increaseSizesToAccommodateSpanningItems): (WebCore::sortByGridTrackGrowthPotential): (WebCore::clampGrowthShareIfNeeded): (WebCore::GridTrackSizingAlgorithm::distributeSpaceToTracks): (WebCore::GridTrackSizingAlgorithm::assumedRowsSizeForOrthogonalChild): (WebCore::GridTrackSizingAlgorithm::gridAreaBreadthForChild): (WebCore::GridTrackSizingAlgorithm::gridTrackSize): (WebCore::GridTrackSizingAlgorithm::computeFlexFactorUnitSize): (WebCore::GridTrackSizingAlgorithm::computeFlexSizedTracksGrowth): (WebCore::GridTrackSizingAlgorithm::findFrUnitSize): (WebCore::GridTrackSizingAlgorithm::computeGridContainerIntrinsicSizes): (WebCore::GridTrackSizingAlgorithmStrategy::logicalHeightForChild): (WebCore::GridTrackSizingAlgorithmStrategy::minContentForChild): (WebCore::GridTrackSizingAlgorithmStrategy::maxContentForChild): (WebCore::GridTrackSizingAlgorithmStrategy::minSizeForChild): (WebCore::GridTrackSizingAlgorithmStrategy::updateOverrideContainingBlockContentSizeForChild): (WebCore::IndefiniteSizeStrategy::minLogicalWidthForChild): (WebCore::IndefiniteSizeStrategy::layoutGridItemForMinSizeComputation): (WebCore::IndefiniteSizeStrategy::maximizeTracks): (WebCore::normalizedFlexFraction): (WebCore::IndefiniteSizeStrategy::findUsedFlexFraction): (WebCore::IndefiniteSizeStrategy::recomputeUsedFlexFractionIfNeeded): (WebCore::DefiniteSizeStrategy::minLogicalWidthForChild): (WebCore::DefiniteSizeStrategy::maximizeTracks): (WebCore::DefiniteSizeStrategy::layoutGridItemForMinSizeComputation): (WebCore::DefiniteSizeStrategy::findUsedFlexFraction): (WebCore::DefiniteSizeStrategy::recomputeUsedFlexFractionIfNeeded): (WebCore::GridTrackSizingAlgorithm::initializeTrackSizes): (WebCore::GridTrackSizingAlgorithm::resolveIntrinsicTrackSizes): (WebCore::GridTrackSizingAlgorithm::stretchFlexibleTracks): (WebCore::GridTrackSizingAlgorithm::advanceNextState): (WebCore::GridTrackSizingAlgorithm::isValidTransition): (WebCore::GridTrackSizingAlgorithm::setup): (WebCore::GridTrackSizingAlgorithm::run): (WebCore::GridTrackSizingAlgorithm::reset): (WebCore::GridTrackSizingAlgorithm::tracksAreWiderThanMinTrackBreadth): (WebCore::GridTrackSizingAlgorithm::StateMachine::StateMachine): (WebCore::GridTrackSizingAlgorithm::StateMachine::~StateMachine): * rendering/GridTrackSizingAlgorithm.h: Added. (WebCore::GridTrack::GridTrack): (WebCore::GridTrack::infiniteGrowthPotential): (WebCore::GridTrack::plannedSize): (WebCore::GridTrack::setPlannedSize): (WebCore::GridTrack::tempSize): (WebCore::GridTrack::infinitelyGrowable): (WebCore::GridTrack::setInfinitelyGrowable): (WebCore::GridTrack::growthLimitCap): (WebCore::GridTrack::growthLimitIsInfinite): (WebCore::GridTrack::isGrowthLimitBiggerThanBaseSize): (WebCore::GridTrackSizingAlgorithmStrategy::GridTrackSizingAlgorithmStrategy): (WebCore::GridTrackSizingAlgorithmStrategy::computeTrackBasedSize): (WebCore::GridTrackSizingAlgorithmStrategy::direction): (WebCore::GridTrackSizingAlgorithmStrategy::findFrUnitSize): (WebCore::GridTrackSizingAlgorithmStrategy::distributeSpaceToTracks): (WebCore::GridTrackSizingAlgorithmStrategy::renderGrid): * rendering/RenderGrid.cpp: (WebCore::RenderGrid::RenderGrid): (WebCore::RenderGrid::computeTrackBasedLogicalHeight): (WebCore::RenderGrid::computeTrackSizesForDefiniteSize): (WebCore::RenderGrid::repeatTracksSizingIfNeeded): (WebCore::RenderGrid::layoutBlock): (WebCore::RenderGrid::computeIntrinsicLogicalWidths): (WebCore::RenderGrid::computeTrackSizesForIndefiniteSize): (WebCore::RenderGrid::placeSpecifiedMajorAxisItemsOnGrid): (WebCore::RenderGrid::applyStretchAlignmentToTracksIfNeeded): (WebCore::RenderGrid::layoutGridItems): (WebCore::RenderGrid::gridAreaBreadthForChildIncludingAlignmentOffsets): (WebCore::RenderGrid::populateGridPositionsForDirection): (WebCore::RenderGrid::columnAxisOffsetForChild): (WebCore::RenderGrid::rowAxisOffsetForChild): (WebCore::RenderGrid::findChildLogicalPosition): (WebCore::GridTrack::GridTrack): Deleted. (WebCore::GridTrack::baseSize): Deleted. (WebCore::GridTrack::growthLimit): Deleted. (WebCore::GridTrack::setBaseSize): Deleted. (WebCore::GridTrack::setGrowthLimit): Deleted. (WebCore::GridTrack::infiniteGrowthPotential): Deleted. (WebCore::GridTrack::growthLimitIfNotInfinite): Deleted. (WebCore::GridTrack::plannedSize): Deleted. (WebCore::GridTrack::setPlannedSize): Deleted. (WebCore::GridTrack::tempSize): Deleted. (WebCore::GridTrack::setTempSize): Deleted. (WebCore::GridTrack::growTempSize): Deleted. (WebCore::GridTrack::infinitelyGrowable): Deleted. (WebCore::GridTrack::setInfinitelyGrowable): Deleted. (WebCore::GridTrack::setGrowthLimitCap): Deleted. (WebCore::GridTrack::growthLimitCap): Deleted. (WebCore::GridTrack::growthLimitIsInfinite): Deleted. (WebCore::GridTrack::isGrowthLimitBiggerThanBaseSize): Deleted. (WebCore::GridTrack::ensureGrowthLimitIsBiggerThanBaseSize): Deleted. (WebCore::RenderGrid::GridSizingData::GridSizingData): Deleted. (WebCore::RenderGrid::GridSizingData::freeSpace): Deleted. (WebCore::RenderGrid::GridSizingData::availableSpace): Deleted. (WebCore::RenderGrid::GridSizingData::setAvailableSpace): Deleted. (WebCore::RenderGrid::GridSizingData::advanceNextState): Deleted. (WebCore::RenderGrid::GridSizingData::isValidTransition): Deleted. (WebCore::RenderGrid::GridSizingData::grid): Deleted. (WebCore::RenderGrid::GridSizingData::setFreeSpace): Deleted. (WebCore::RenderGrid::computeTrackSizesForDirection): Deleted. (WebCore::RenderGrid::computeIntrinsicLogicalHeight): Deleted. (WebCore::normalizedFlexFraction): Deleted. (WebCore::RenderGrid::computeUsedBreadthOfGridTracks): Deleted. (WebCore::RenderGrid::computeFlexSizedTracksGrowth): Deleted. (WebCore::RenderGrid::computeUsedBreadthOfMinLength): Deleted. (WebCore::RenderGrid::computeUsedBreadthOfMaxLength): Deleted. (WebCore::RenderGrid::computeFlexFactorUnitSize): Deleted. (WebCore::RenderGrid::findFlexFactorUnitSize): Deleted. (WebCore::hasOverrideContainingBlockContentSizeForChild): Deleted. (WebCore::setOverrideContainingBlockContentSizeForChild): Deleted. (WebCore::shouldClearOverrideContainingBlockContentSizeForChild): Deleted. (WebCore::RenderGrid::rawGridTrackSize): Deleted. (WebCore::RenderGrid::gridTrackSize): Deleted. (WebCore::RenderGrid::logicalHeightForChild): Deleted. (WebCore::RenderGrid::minSizeForChild): Deleted. (WebCore::RenderGrid::updateOverrideContainingBlockContentSizeForChild): Deleted. (WebCore::RenderGrid::minContentForChild): Deleted. (WebCore::RenderGrid::maxContentForChild): Deleted. (WebCore::GridItemWithSpan::GridItemWithSpan): Deleted. (WebCore::GridItemWithSpan::gridItem): Deleted. (WebCore::GridItemWithSpan::span): Deleted. (WebCore::GridItemWithSpan::operator<): Deleted. (WebCore::RenderGrid::spanningItemCrossesFlexibleSizedTracks): Deleted. (WebCore::RenderGrid::resolveContentBasedTrackSizingFunctions): Deleted. (WebCore::RenderGrid::resolveContentBasedTrackSizingFunctionsForNonSpanningItems): Deleted. (WebCore::trackSizeForTrackSizeComputationPhase): Deleted. (WebCore::RenderGrid::shouldProcessTrackForTrackSizeComputationPhase): Deleted. (WebCore::RenderGrid::trackShouldGrowBeyondGrowthLimitsForTrackSizeComputationPhase): Deleted. (WebCore::RenderGrid::markAsInfinitelyGrowableForTrackSizeComputationPhase): Deleted. (WebCore::RenderGrid::updateTrackSizeForTrackSizeComputationPhase): Deleted. (WebCore::RenderGrid::currentItemSizeForTrackSizeComputationPhase): Deleted. (WebCore::RenderGrid::resolveContentBasedTrackSizingFunctionsForItems): Deleted. (WebCore::sortByGridTrackGrowthPotential): Deleted. (WebCore::clampGrowthShareIfNeeded): Deleted. (WebCore::RenderGrid::distributeSpaceToTracks): Deleted. (WebCore::RenderGrid::tracksAreWiderThanMinTrackBreadth): Deleted. (WebCore::RenderGrid::assumedRowsSizeForOrthogonalChild): Deleted. (WebCore::RenderGrid::gridAreaBreadthForChild): Deleted. * rendering/RenderGrid.h: 2017-02-22 Per Arne Vollan [Win] Crash under CACFLayerTreeHost::acceleratedCompositingAvailable(). https://bugs.webkit.org/show_bug.cgi?id=168711 Reviewed by Alex Christensen. Add null pointer check. * platform/graphics/ca/win/CACFLayerTreeHost.cpp: (WebCore::CACFLayerTreeHost::acceleratedCompositingAvailable): 2017-02-22 Carlos Garcia Campos [GStreamer] Crash in MediaPlayerPrivateGStreamerMSE::buffered() when MEDIA_STREAM is disabled https://bugs.webkit.org/show_bug.cgi?id=168662 Reviewed by Michael Catanzaro. When MEDIA_STREAM is disabled, if MediaPlayer::loadWithNextMediaEngine is called with a current engine and there's no type specified, the next media engine that is used is the MSE one. Since there's no actually a media stream, the engine is created but never loaded. When buffered is called it tries to use its media source that is nullptr. It doesn't happen when MEDIA_STREAM is enabled, because the next media engine returned is Owr that doesn't implement buffered and always returns an empty PlatformTimeRanges. * platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp: (WebCore::MediaPlayerPrivateGStreamerMSE::buffered): Return an empty PlatformTimeRanges if m_mediaSource is nullptr. 2017-02-21 Youenn Fablet [WebRTC][Mac] Activate libwebrtc https://bugs.webkit.org/show_bug.cgi?id=167293 Reviewed by Alex Christensen. * Configurations/WebCore.xcconfig: * Configurations/WebCoreTestSupport.xcconfig: * Configurations/FeatureDefines.xcconfig: 2017-02-21 Carlos Garcia Campos Unreviewed. Fix WinCairo build after r212703. * platform/TextureMapper.cmake: 2017-02-21 Per Arne Vollan Add support for CSS properties paint-order, stroke-linecap, and stroke-linejoin in text rendering. https://bugs.webkit.org/show_bug.cgi?id=168601 rdar://problem/30583872 Reviewed by Simon Fraser. Text rendering should respect the CSS properties paint-order, stroke-linecap, and stroke-linejoin, see https://drafts.fxtf.org/paint/. The text rendering changes are mainly in the TextPainter class, where text is painted in three phases (fill, stroke, markers), where the order follows the paint-order property. The linecap and linejoin properties are set on the graphics context before rendering the text. Tests: fast/css/paint-order.html fast/css/paint-order-shadow.html * css/CSSComputedStyleDeclaration.cpp: (WebCore::paintOrder): * css/StyleBuilderConverter.h: (WebCore::StyleBuilderConverter::convertPaintOrder): * rendering/TextPaintStyle.cpp: (WebCore::computeTextPaintStyle): (WebCore::updateGraphicsContext): * rendering/TextPaintStyle.h: * rendering/TextPainter.cpp: (WebCore::TextPainter::paintTextAndEmphasisMarksIfNeeded): * rendering/style/RenderStyle.cpp: (WebCore::RenderStyle::paintTypesForPaintOrder): * rendering/style/RenderStyle.h: (WebCore::RenderStyle::setPaintOrder): (WebCore::RenderStyle::initialPaintOrder): * rendering/style/RenderStyleConstants.h: * rendering/style/SVGRenderStyleDefs.h: * rendering/style/StyleRareInheritedData.cpp: (WebCore::StyleRareInheritedData::StyleRareInheritedData): * rendering/svg/RenderSVGShape.cpp: (WebCore::RenderSVGShape::fillStrokeMarkers): * rendering/svg/SVGInlineTextBox.cpp: (WebCore::SVGInlineTextBox::paint): 2017-02-21 Joseph Pecoraro [User Timing] Throw a SyntaxError for performance.measure if mark name is not found https://bugs.webkit.org/show_bug.cgi?id=168707 Reviewed by Ryosuke Niwa. Test: performance-api/performance-measure-name.html * page/PerformanceUserTiming.cpp: (WebCore::UserTiming::findExistingMarkStartTime): Instead of returning zero, throw a SyntaxError. This is more in line with User Timing Level 1 and behavior in Window. This is an issue with the Level 2 spec: https://github.com/w3c/user-timing/issues/21 2017-02-21 Ryan Haddad Unreviewed attempt to fix the Windows build. * platform/graphics/ca/win/PlatformCALayerWin.cpp: (PlatformCALayerWin::supportsSubpixelAntialiasedText): 2017-02-21 Ryan Haddad Unreviewed, rolling out r212737. This change caused an existing LayoutTest to crash. Reverted changeset: "REGRESSION(r207669): Crash after mutating selector text" https://bugs.webkit.org/show_bug.cgi?id=168655 http://trac.webkit.org/changeset/212737 2017-02-21 Chris Dumez REGRESSION (r207720): /more/conformance/conformance/quickCheckAPI-S_V.html test fails https://bugs.webkit.org/show_bug.cgi?id=168632 Reviewed by Darin Adler. After r207720, the following WebGL conformance tests started failing: - /more/conformance/conformance/quickCheckAPI-S_V.html - /context/context-lost.html We started throwing security errors in case where we did not before. Chrome and Firefox are both passing these tests so our new behavior was not interoperable. This patch reverts part of r207720 to restore our previous behavior. * html/canvas/WebGLRenderingContextBase.cpp: (WebCore::WebGLRenderingContextBase::texSubImage2D): (WebCore::WebGLRenderingContextBase::texImage2D): (WebCore::WebGLRenderingContextBase::validateHTMLImageElement): (WebCore::WebGLRenderingContextBase::validateHTMLCanvasElement): (WebCore::WebGLRenderingContextBase::validateHTMLVideoElement): * html/canvas/WebGLRenderingContextBase.h: 2017-02-21 Dean Jackson No need for static attributes when creating a pixel format https://bugs.webkit.org/show_bug.cgi?id=168688 Reviewed by Myles Maxfield. Just create the attributes when needed. * platform/graphics/mac/GraphicsContext3DMac.mm: (WebCore::GraphicsContext3DManager::updateHighPerformanceState): 2017-02-20 Filip Pizlo The collector thread should only start when the mutator doesn't have heap access https://bugs.webkit.org/show_bug.cgi?id=167737 Reviewed by Keith Miller. Added new tests in JSTests. The WebCore changes involve: - Refactoring around new header discipline. - Adding crazy GC APIs to window.internals to enable us to test the GC's runloop discipline. * ForwardingHeaders/heap/GCFinalizationCallback.h: Added. * ForwardingHeaders/heap/IncrementalSweeper.h: Added. * ForwardingHeaders/heap/MachineStackMarker.h: Added. * ForwardingHeaders/heap/RunningScope.h: Added. * bindings/js/CommonVM.cpp: * testing/Internals.cpp: (WebCore::Internals::parserMetaData): (WebCore::Internals::isReadableStreamDisturbed): (WebCore::Internals::isGCRunning): (WebCore::Internals::addGCFinalizationCallback): (WebCore::Internals::stopSweeping): (WebCore::Internals::startSweeping): * testing/Internals.h: * testing/Internals.idl: 2017-02-20 Simon Fraser Add support to PlatformCALayer/GraphicsLayerCA for subpixel-antialiased text, with a Setting and a MiniBrowser switch https://bugs.webkit.org/show_bug.cgi?id=168620 Reviewed by Tim Horton. Add a Setting for subpixel-antialiased layer text. Plumb this through GraphicsLayerCA and PlatformCALayer, where it ultimately affects the layer contents format. TileControllers are slightly special because we communicate with them via an Obj-C WebTiledBackingLayer. Test: compositing/contents-format/subpixel-antialiased-text-enabled.html * page/Settings.in: * platform/graphics/GraphicsLayer.cpp: (WebCore::GraphicsLayer::GraphicsLayer): (WebCore::GraphicsLayer::dumpProperties): * platform/graphics/GraphicsLayer.h: (WebCore::GraphicsLayer::supportsSubpixelAntialiasedText): (WebCore::GraphicsLayer::setSupportsSubpixelAntialiasedText): * platform/graphics/ca/GraphicsLayerCA.cpp: (WebCore::GraphicsLayerCA::setSupportsSubpixelAntialiasedText): (WebCore::GraphicsLayerCA::commitLayerChangesBeforeSublayers): (WebCore::GraphicsLayerCA::updateSupportsSubpixelAntialiasedText): * platform/graphics/ca/GraphicsLayerCA.h: * platform/graphics/ca/PlatformCALayer.cpp: (WebCore::PlatformCALayer::drawRepaintIndicator): * platform/graphics/ca/PlatformCALayer.h: * platform/graphics/ca/TileController.cpp: (WebCore::TileController::setWantsDeepColorBackingStore): (WebCore::TileController::setSupportsSubpixelAntialiasedText): (WebCore::TileController::setTilesOpaque): * platform/graphics/ca/TileController.h: * platform/graphics/ca/TileGrid.cpp: (WebCore::TileGrid::updateTileLayerProperties): * platform/graphics/ca/cocoa/PlatformCALayerCocoa.h: * platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm: (PlatformCALayerCocoa::supportsSubpixelAntialiasedText): (PlatformCALayerCocoa::setSupportsSubpixelAntialiasedText): (layerContentsFormat): (PlatformCALayerCocoa::updateContentsFormat): (PlatformCALayer::drawLayerContents): * platform/graphics/ca/cocoa/WebTiledBackingLayer.h: * platform/graphics/ca/cocoa/WebTiledBackingLayer.mm: (-[WebTiledBackingLayer drawsAsynchronously]): (-[WebTiledBackingLayer setSupportsSubpixelAntialiasedText:]): (-[WebTiledBackingLayer supportsSubpixelAntialiasedText]): * platform/spi/cocoa/QuartzCoreSPI.h: * rendering/RenderLayerBacking.cpp: (WebCore::RenderLayerBacking::createGraphicsLayer): 2017-02-21 Chris Dumez REGRESSION (203941): iAd Producer: Clicking buttons in Preview does not work https://bugs.webkit.org/show_bug.cgi?id=168677 Reviewed by Ryosuke Niwa. Add quirk to initMouseEvent to unbreak iAd Producer. * dom/MouseEvent.cpp: (WebCore::MouseEvent::initMouseEventQuirk): * dom/MouseEvent.h: * dom/MouseEvent.idl: * platform/RuntimeApplicationChecks.h: * platform/RuntimeApplicationChecks.mm: (WebCore::MacApplication::isIADProducer): 2017-02-21 Jer Noble AudioSampleDataSource doesn't need to use the m_scratchBuffer on the pulling thread https://bugs.webkit.org/show_bug.cgi?id=168640 Reviewed by Eric Carlson. Rather than copying the pulled data into a scratch buffer, applying a volume transformation and then copying back out, just do the volume transformation in-place in the destination buffer. * platform/audio/mac/AudioSampleDataSource.cpp: (WebCore::AudioSampleDataSource::pullSamplesInternal): 2017-02-21 Youenn Fablet [WebRTC] Implement Incoming libwebrtc audio source support. https://bugs.webkit.org/show_bug.cgi?id=167961 Reviewed by Eric Carlson. Hook libwebrtc incoming audio source into WebCore audio rendering path. Manually testing that muted sources produce data with zeros and unmuted sources provide data with non zeros. * platform/mediastream/mac/RealtimeIncomingAudioSource.cpp: (WebCore::RealtimeIncomingAudioSource::create): (WebCore::streamDescription): (WebCore::RealtimeIncomingAudioSource::OnData): (WebCore::RealtimeIncomingAudioSource::audioSourceProvider): * platform/mediastream/mac/RealtimeIncomingAudioSource.h: 2017-02-21 Simon Fraser Fix ImageBitmap comment to not insert a . * features.json: 2017-02-21 Alex Christensen Fix CMake build. * PlatformMac.cmake: 2017-02-21 Simon Fraser Add Media Streams and Capture to features.json. * features.json: 2017-02-21 Jiewen Tan Clarify the status of 'webkitSubtle' and 'subtle' attributes on the WebCrypto API. * features.json: 2017-02-21 Romain Bellessort [Readable Streams API] Add ReadableStreamBYOBRequest view getter https://bugs.webkit.org/show_bug.cgi?id=168652 Reviewed by Youenn Fablet. Implemented getter for ReadableStreamBYOBRequest view attribute. Added 1 test checking that view length corresponds to autoAllocateChunkSize. Also updated test expectations for W3C imported tests. * Modules/streams/ReadableByteStreamInternals.js: (isReadableStreamBYOBRequest): Added. * Modules/streams/ReadableStreamBYOBRequest.js: (view): Added. 2017-02-21 Simon Fraser Clarify the status of 'webkitSubtle' and 'subtle' attributes on the WebCrypto API. * features.json: 2017-02-21 Youenn Fablet [WebRTC] ICE candidates should be filtered according a policy https://bugs.webkit.org/show_bug.cgi?id=168348 Reviewed by Alex Christensen. Covered by manual tests. Should be covered in the future by layout tests with dedicated internals API. Adding support for ICE candidate filtering at RTCPeerConnection level. If ICE candidate filtering is on (by default), host candidates are stored and not sent immediately. Reflexive candidates are purged from raddr information to not leak the host IP address. Stored candidates may be advertised to the JS layer if RTCController is notified of a change of filtering policy. To implement that, PeerConnectionBackend stores all filtered out candidates and RTCPeerConnection register themselves to RTCController to get notifications of filtering policy changes. Making RTCPeerConnection use setPendingActivity throughout its lifetime. This ensures it does not get collected until the page is off or close() is called on the object. Adding support for enumerating or not all interfaces at libwebrtc level. This choice is done at creation of the peer connection. * Modules/mediastream/PeerConnectionBackend.cpp: (WebCore::PeerConnectionBackend::enableICECandidateFiltering): (WebCore::PeerConnectionBackend::disableICECandidateFiltering): (WebCore::filterICECandidate): (WebCore::PeerConnectionBackend::newICECandidate): * Modules/mediastream/PeerConnectionBackend.h: * Modules/mediastream/RTCController.cpp: Added. (WebCore::RTCController::remove): (WebCore::RTCController::add): (WebCore::RTCController::disableICECandidateFiltering): (WebCore::RTCController::enableICECandidateFiltering): * Modules/mediastream/RTCController.h: Added. * Modules/mediastream/RTCPeerConnection.cpp: (WebCore::RTCPeerConnection::create): (WebCore::RTCPeerConnection::close): (WebCore::RTCPeerConnection::rtcController): (WebCore::RTCPeerConnection::registerToController): (WebCore::RTCPeerConnection::unregisterFromController): * Modules/mediastream/RTCPeerConnection.h: * Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp: (WebCore::LibWebRTCMediaEndpoint::OnIceCandidate): * WebCore.xcodeproj/project.pbxproj: * page/Page.h: (WebCore::Page::rtcController): * platform/mediastream/libwebrtc/LibWebRTCProvider.cpp: (WebCore::LibWebRTCProvider::createPeerConnection): * platform/mediastream/libwebrtc/LibWebRTCProvider.h: 2017-02-21 Jiewen Tan Unreviewed, update WebCrypto API feature status. * features.json: 2017-02-21 Simon Fraser Fix the bad JSON. * features.json: 2017-02-21 Andreas Kling [iOS] WebKit1 should use shared memory pressure handler code. Reviewed by Antti Koivisto. Remove iOS WebKit1 specific members and code from MemoryPressureHandler in favor of using the same code that iOS WebKit2 and macOS WebKit uses. * page/cocoa/MemoryReleaseCocoa.mm: (WebCore::platformReleaseMemory): Add two cleanup calls that were only in the iOS WebView code. * platform/MemoryPressureHandler.h: (WebCore::MemoryPressureHandler::m_releaseMemoryBlock): Deleted. * platform/cocoa/MemoryPressureHandlerCocoa.mm: (WebCore::respondToMemoryPressureCallback): Deleted. (WebCore::MemoryPressureHandler::installMemoryReleaseBlock): Deleted. (WebCore::MemoryPressureHandler::setReceivedMemoryPressure): Deleted. (WebCore::MemoryPressureHandler::clearMemoryPressure): Deleted. (WebCore::MemoryPressureHandler::shouldWaitForMemoryClearMessage): Deleted. (WebCore::MemoryPressureHandler::respondToMemoryPressureIfNeeded): Deleted. 2017-02-21 Anders Carlsson Fix two failing WebKit legacy tests https://bugs.webkit.org/show_bug.cgi?id=168667 Reviewed by Tim Horton. Handle the NSPasteboardTypeString type. * platform/mac/PasteboardMac.mm: (WebCore::Pasteboard::read): (WebCore::addHTMLClipboardTypesForCocoaType): 2017-02-21 Simon Fraser Add Web Audio and Web MIDI to features.json. * features.json: 2017-02-21 Antti Koivisto REGRESSION(r207669): Crash after mutating selector text https://bugs.webkit.org/show_bug.cgi?id=168655 Reviewed by Brent Fulgham. Test: fast/css/selector-text-mutation-crash.html * style/StyleScope.cpp: (WebCore::Style::Scope::scheduleUpdate): Clear the style resolver immediately if style sheet content changes. The resolver may have data structures that point to the old sheet contents. The resolver would get wiped anyway when the scheduled update actually occurs. 2017-02-21 Jiewen Tan [WebCrypto] Add support for AES-CFB https://bugs.webkit.org/show_bug.cgi?id=168344 Reviewed by Brent Fulgham. This patch adds support for AES-CFB. Operations of AES-CFB include: encrypt, decrypt, generateKey, importKey, exportKey, wrapKey, and unwrapKey. This implementation follows a slightly old version of WebCryptoAPI spec: https://www.w3.org/TR/2014/CR-WebCryptoAPI-20141211/#aes-cfb. Tests: crypto/subtle/aes-cbc-cfb-decrypt-malformed-parameters.html crypto/subtle/aes-cbc-cfb-encrypt-malformed-parameters.html crypto/subtle/aes-cbc-import-key-unwrap-jwk-rsa-key-public.html crypto/subtle/aes-cfb-generate-export-key-jwk-length-128.html crypto/subtle/aes-cfb-generate-export-key-jwk-length-192.html crypto/subtle/aes-cfb-generate-export-key-jwk-length-256.html crypto/subtle/aes-cfb-generate-export-raw-key.html crypto/subtle/aes-cfb-generate-key-encrypt-decrypt.html crypto/subtle/aes-cfb-generate-key.html crypto/subtle/aes-cfb-import-jwk-key-length-128.html crypto/subtle/aes-cfb-import-jwk-key-length-192.html crypto/subtle/aes-cfb-import-jwk-key-length-256.html crypto/subtle/aes-cfb-import-key-decrypt.html crypto/subtle/aes-cfb-import-key-encrypt.html crypto/subtle/aes-cfb-import-key-unwrap-jwk-key.html crypto/subtle/aes-cfb-import-key-unwrap-raw-key.html crypto/subtle/aes-cfb-import-key-wrap-jwk-key.html crypto/subtle/aes-cfb-import-key-wrap-raw-key.html crypto/subtle/aes-cfb-import-raw-key.html crypto/workers/subtle/aes-cfb-import-key-decrypt.html crypto/workers/subtle/aes-cfb-import-key-encrypt.html crypto/workers/subtle/aes-cfb-import-key-unwrap-key.html crypto/workers/subtle/aes-cfb-import-key-wrap-key.html * CMakeLists.txt: * DerivedSources.make: * PlatformGTK.cmake: * PlatformMac.cmake: * WebCore.xcodeproj/project.pbxproj: Add CryptoAlgorithmAES_CFB.cpp, change AesCbcParams.idl to AesCbcCfbParams.idl. * bindings/js/JSSubtleCryptoCustom.cpp: (WebCore::normalizeCryptoAlgorithmParameters): Add support for AES-CFB. * crypto/CryptoAlgorithm.h: Include . * crypto/CryptoAlgorithmParameters.h: Add support for AES-CFB. * crypto/algorithms/CryptoAlgorithmAES_CBC.cpp: (WebCore::CryptoAlgorithmAES_CBC::encrypt): (WebCore::CryptoAlgorithmAES_CBC::decrypt): Rename CryptoAlgorithmAesCbcParams to CryptoAlgorithmAesCbcCfbParams. * crypto/algorithms/CryptoAlgorithmAES_CFB.cpp: Added. (WebCore::usagesAreInvalidForCryptoAlgorithmAES_CFB): (WebCore::CryptoAlgorithmAES_CFB::create): (WebCore::CryptoAlgorithmAES_CFB::identifier): (WebCore::CryptoAlgorithmAES_CFB::encrypt): (WebCore::CryptoAlgorithmAES_CFB::decrypt): (WebCore::CryptoAlgorithmAES_CFB::generateKey): (WebCore::CryptoAlgorithmAES_CFB::importKey): (WebCore::CryptoAlgorithmAES_CFB::exportKey): * crypto/algorithms/CryptoAlgorithmAES_CFB.h: Added. * crypto/gnutls/CryptoAlgorithmAES_CFBGnuTLS.cpp: Added. (WebCore::CryptoAlgorithmAES_CFB::platformEncrypt): (WebCore::CryptoAlgorithmAES_CFB::platformDecrypt): Add dummy support of AES_CFB for GTK+. * crypto/mac/CryptoAlgorithmAES_CBCMac.cpp: (WebCore::transformAES_CBC): Drop conditional PLATFORM(COCOA). (WebCore::CryptoAlgorithmAES_CBC::platformEncrypt): (WebCore::CryptoAlgorithmAES_CBC::platformDecrypt): Rename CryptoAlgorithmAesCbcParams to CryptoAlgorithmAesCbcCfbParams. * crypto/mac/CryptoAlgorithmAES_CFBMac.cpp: Added. (WebCore::transformAES_CFB): (WebCore::CryptoAlgorithmAES_CFB::platformEncrypt): (WebCore::CryptoAlgorithmAES_CFB::platformDecrypt): * crypto/mac/CryptoAlgorithmRegistryMac.cpp: (WebCore::CryptoAlgorithmRegistry::platformRegisterAlgorithms): Add support for AES-CFB. * crypto/parameters/AesCbcCfbParams.idl: Renamed from Source/WebCore/crypto/parameters/AesCbcParams.idl. * crypto/parameters/CryptoAlgorithmAesCbcCfbParams.h: Renamed from Source/WebCore/crypto/parameters/CryptoAlgorithmAesCbcParams.h. Since dictionaries AesCbcParams and AesCfbParams are essentially the same, I combine them together in our implementations. 2017-02-21 Wenson Hsieh Unreviewed, fix the ToT iOS build Adopt updated UIKit SPI and remove calls to the deprecated version. * platform/ios/WebItemProviderPasteboard.mm: (-[WebItemProviderPasteboard setItems:]): 2017-02-21 Per Arne Vollan [Win] WebView is not painting in accelerated compositing mode. https://bugs.webkit.org/show_bug.cgi?id=168654 Reviewed by Brent Fulgham. Initializing the uncommitted layer change flags to CoverageRectChanged in GraphicsLayerCA, stops WebView painting in accelerated mode. Covered by existing tests. * platform/graphics/ca/GraphicsLayerCA.h: 2017-02-21 Jer Noble Make logging in high-priority audio threads less expensive https://bugs.webkit.org/show_bug.cgi?id=168639 Reviewed by Jon Lee. Logging from inside a high-priority audio thread will make a number of calls to malloc, block, and therefore cause audio glitches. Make this logging less expensive by dispatching to the main thread before creating and outputting the log string. * WebCore.xcodeproj/project.pbxproj: * platform/audio/mac/AudioSampleDataSource.mm: Renamed from Source/WebCore/platform/audio/mac/AudioSampleDataSource.cpp. (WebCore::AudioSampleDataSource::pushSamplesInternal): (WebCore::AudioSampleDataSource::pullSamplesInternal): 2017-02-21 Jer Noble Give the Mock audio input a "hum" to make drop-outs more detectable https://bugs.webkit.org/show_bug.cgi?id=168641 Reviewed by Eric Carlson. Add two helper functions to generate waveforms: addHum() and writeHum(). Use these methods to create a bip-bop audio buffer which can be used to "blit" a portion the waveform into the destination buffer during rendering. The background hum must be seamless across multiple pull operations, so add the hum sound during rendering. To ensure the waveform buffer is created, initialize the sampleRate to zero, then call applySampleRate() with the desired default rate, 44.1kHz. * platform/mediastream/mac/MockRealtimeAudioSourceMac.h: * platform/mediastream/mac/MockRealtimeAudioSourceMac.mm: (WebCore::writeHum): (WebCore::addHum): (WebCore::MockRealtimeAudioSource::create): (WebCore::MockRealtimeAudioSourceMac::render): (WebCore::MockRealtimeAudioSourceMac::applySampleRate): 2017-02-21 Jer Noble Make TrackPrivateBase ThreadSafeRefCounted, so that it can be retained in non-main threads https://bugs.webkit.org/show_bug.cgi?id=168642 Reviewed by Eric Carlson. AudioTrackPrivateMediaStreamCocoa has two entry points from background threads: audioSamplesAvailable() and render(). Protect against being destroyed mid-execution by retaining this for the duration of those methods. * platform/graphics/TrackPrivateBase.h: * platform/mediastream/mac/AudioTrackPrivateMediaStreamCocoa.cpp: (WebCore::AudioTrackPrivateMediaStreamCocoa::audioSamplesAvailable): (WebCore::AudioTrackPrivateMediaStreamCocoa::render): 2017-02-21 Jer Noble Pulling too quickly from an AudioSampleDataSource should increase the pre-buffer amount https://bugs.webkit.org/show_bug.cgi?id=168645 Reviewed by Eric Carlson. If a pull operation runs past the end of the buffered range of a CARingBuffer, the underrun is zero-filled, causing an audible glitch. In this case, bias m_outputSampleOffset by the amount of the underrun, which should keep the underrun from reoccurring. * platform/audio/mac/AudioSampleDataSource.cpp: (WebCore::AudioSampleDataSource::pullSamplesInternal): 2017-02-21 Jer Noble AudioSampleBufferList::zeroABL() takes a byte-count, not a sample-count. https://bugs.webkit.org/show_bug.cgi?id=168635 Reviewed by Jon Lee. * platform/audio/mac/AudioSampleDataSource.cpp: (WebCore::AudioSampleDataSource::pullSamplesInternal): (WebCore::AudioSampleDataSource::pullAvalaibleSamplesAsChunks): 2017-02-21 Carlos Garcia Campos REGRESSION(r212681): Crash when dragging links without a drag image https://bugs.webkit.org/show_bug.cgi?id=168648 Reviewed by Tim Horton. This happens in GTK+ port, because we don't use a drag image for links. Fixes: editing/pasteboard/drop-link.html editing/pasteboard/drop-text-without-selection.html editing/pasteboard/files-during-page-drags.html fast/events/content-changed-during-drop.html fast/events/drag-and-drop-link-fast-multiple-times-does-not-crash.html fast/events/drag-and-drop-link-into-focused-contenteditable.html fast/events/drag-and-drop-link.html fast/events/drag-in-frames.html fast/events/drag-parent-node.html fast/events/shift-drag-selection-on-link-triggers-drag-n-drop.html * page/DragController.cpp: (WebCore::DragController::startDrag): Do not try to use drag image and its size when createDragImageForLink returns nullptr. 2017-02-21 Alex Christensen Unreviewed, rolling out r212699. Internal build not ready Reverted changeset: "[WebRTC][Mac] Activate libwebrtc" https://bugs.webkit.org/show_bug.cgi?id=167293 http://trac.webkit.org/changeset/212699 2017-02-20 Carlos Garcia Campos Remove ENABLE_THREADED_COMPOSITOR build option https://bugs.webkit.org/show_bug.cgi?id=168606 Reviewed by Michael Catanzaro. * platform/TextureMapper.cmake: 2017-02-20 Alex Christensen Fix some 32-bit builds after r212699 * platform/mediastream/mac/RealtimeIncomingVideoSource.cpp: (WebCore::RealtimeIncomingVideoSource::OnFrame): Explicitly cast OSStatus to int for logging. 2017-02-20 Joseph Pecoraro Remove unnecessary PerformanceEntry virtual methods https://bugs.webkit.org/show_bug.cgi?id=168633 Reviewed by Ryosuke Niwa. * page/PerformanceEntry.h: (WebCore::PerformanceEntry::isResource): (WebCore::PerformanceEntry::isMark): (WebCore::PerformanceEntry::isMeasure): Implement based on the Type. * page/PerformanceMark.h: * page/PerformanceMeasure.h: * page/PerformanceResourceTiming.h: Remove virtual overrides. 2017-02-20 Youenn Fablet [WebRTC][Mac] Activate libwebrtc https://bugs.webkit.org/show_bug.cgi?id=167293 Reviewed by Alex Christensen. * Configurations/WebCore.xcconfig: * Configurations/WebCoreTestSupport.xcconfig: 2017-02-20 Joseph Pecoraro ASSERTION FAILED: m_normalWorld->hasOneRef() under WorkerThread::stop https://bugs.webkit.org/show_bug.cgi?id=168356 Reviewed by Ryosuke Niwa. * page/DOMWindow.cpp: (WebCore::DOMWindow::removeAllEventListeners): Remove Performance object EventListeners. * workers/WorkerGlobalScope.cpp: (WebCore::WorkerGlobalScope::~WorkerGlobalScope): (WebCore::WorkerGlobalScope::removeAllEventListeners): (WebCore::WorkerGlobalScope::performance): * workers/WorkerGlobalScope.h: Remove Performance object EventListeners. Also clear Performance early in destruction since its ContextDestructionObserver destruction makes checks about the WorkerThread. 2017-02-20 Jer Noble Local audio-only stream will not trigger playback to begin https://bugs.webkit.org/show_bug.cgi?id=168412 Reviewed by Youenn Fablet. Test: fast/mediastream/local-audio-playing-event.html With video-bearing streams, the first video sample emitted from the stream causes the readyState to move from HAVE_NOTHING to HAVE_ENOUGH_DATA. Wire up this same behavior for audio-bearing streams. Add a MediaStreamTrackPrivate::Observer callback method audioSamplesAvailable(), which gets passed up to MediaPlayerPrivateMediaStreamAVFObjC. Because this callback may be (and probably will be) called on a background thread, run the updateReadyState() task in a scheduledDeferredTask(). * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.h: * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm: (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::audioSamplesAvailable): (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::updateTracks): * platform/mediastream/MediaStreamTrackPrivate.cpp: (WebCore::MediaStreamTrackPrivate::audioSamplesAvailable): * platform/mediastream/MediaStreamTrackPrivate.h: (WebCore::MediaStreamTrackPrivate::Observer::audioSamplesAvailable): 2017-02-20 Zalan Bujtas Simple line layout: Implement absoluteQuadsForRange. https://bugs.webkit.org/show_bug.cgi?id=168613 Reviewed by Simon Fraser. This patch ensures that the commonly used Range::getClientRects calls do not throw us off of the simple line layout path. Test: fast/dom/Range/simple-line-layout-getclientrects.html * rendering/RenderText.cpp: (WebCore::RenderText::absoluteQuadsForRange): * rendering/SimpleLineLayoutFunctions.cpp: (WebCore::SimpleLineLayout::collectAbsoluteQuadsForRange): Special case empty ranges with multiple empty runs. * rendering/SimpleLineLayoutFunctions.h: * rendering/SimpleLineLayoutResolver.cpp: (WebCore::SimpleLineLayout::RunResolver::rangeForRendererWithOffsets): * rendering/SimpleLineLayoutResolver.h: 2017-02-20 Ryan Haddad Unreviewed, rolling out r212685. This change broke the 32-bit Sierra build. Reverted changeset: "Resource Load Statistics: Add alternate classification method" https://bugs.webkit.org/show_bug.cgi?id=168347 http://trac.webkit.org/changeset/212685 2017-02-20 Sam Weinig [WebIDL] Add support for constructors that have variadic parameters https://bugs.webkit.org/show_bug.cgi?id=168614 Reviewed by Alex Christensen. In preparation of removing some more custom bindings, move the constructor calling code over to using GenerateParametersCheck completely. This required - Removing special case of NamedConstructors automatically getting a Document passed to them. The three named constructors that expected this have been updated to add the required attributes. - Add a version of the GenerateCallWith prologue for constructors. - Remove now unnecessary argumentCount return value from GenerateParametersCheck. * bindings/scripts/CodeGeneratorJS.pm: (GenerateImplementation): (GenerateCallWithUsingReferences): (GenerateCallWithUsingPointers): (GenerateConstructorCallWithUsingPointers): (GenerateCallWith): (GenerateParametersCheck): (GenerateConstructorDefinition): * bindings/scripts/test/JS/JSTestInterface.cpp: * bindings/scripts/test/JS/JSTestNamedConstructor.cpp: * bindings/scripts/test/JS/JSTestObj.cpp: * bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp: Update results for more consistent placement of ScriptExecutionContext and Document accessors, add UNLIKELY to context checks, and remove automatic Document passing for NamedConstructors. * html/HTMLAudioElement.idl: * html/HTMLImageElement.idl: * html/HTMLOptionElement.idl: Add ConstructorCallWith=Document. 2017-02-20 John Wilander Resource Load Statistics: Add alternate classification method https://bugs.webkit.org/show_bug.cgi?id=168347 Reviewed by Alex Christensen. This patch only adds test infrastructure in WebCore. Tests: http/tests/loading/resourceLoadStatistics/classify-as-non-prevalent-based-on-mixed-statistics.html http/tests/loading/resourceLoadStatistics/classify-as-non-prevalent-based-on-sub-frame-under-top-frame-origins.html http/tests/loading/resourceLoadStatistics/classify-as-non-prevalent-based-on-subresource-under-top-frame-origins.html http/tests/loading/resourceLoadStatistics/classify-as-non-prevalent-based-on-subresource-unique-redirects-to.html http/tests/loading/resourceLoadStatistics/classify-as-prevalent-based-on-mixed-statistics.html http/tests/loading/resourceLoadStatistics/classify-as-prevalent-based-on-sub-frame-under-top-frame-origins.html http/tests/loading/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-under-top-frame-origins.html http/tests/loading/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-unique-redirects-to.html * loader/ResourceLoadObserver.cpp: (WebCore::ResourceLoadObserver::setSubframeUnderTopFrameOrigin): (WebCore::ResourceLoadObserver::setSubresourceUnderTopFrameOrigin): (WebCore::ResourceLoadObserver::setSubresourceUniqueRedirectTo): * loader/ResourceLoadObserver.h: 2017-02-20 Anders Carlsson Use the new drag code path when dragging links https://bugs.webkit.org/show_bug.cgi?id=168612 Reviewed by Tim Horton. * editing/Editor.cpp: (WebCore::Editor::copyURL): Use userVisibleString instead of fillInUserVisibleForm. (WebCore::Editor::pasteboardWriterURL): New function that returns a PasteboardWriterData::URL for a given URL + title. * editing/Editor.h: Add new members. * editing/mac/EditorMac.mm: (WebCore::Editor::userVisibleString): (WebCore::Editor::fillInUserVisibleForm): Deleted. Add a getter instead of a function that fills in a struct member. * page/DragController.cpp: (WebCore::DragController::startDrag): Add the new DragItem code path when dragging links. * platform/PasteboardWriterData.cpp: (WebCore::PasteboardWriterData::isEmpty): Check for m_url as well. (WebCore::PasteboardWriterData::setURL): Set m_url. * platform/PasteboardWriterData.h: Add new members. * platform/mac/PasteboardWriter.mm: (WebCore::toUTI): New helper function that returns an UTI from a pasteboard type. (WebCore::createPasteboardWriter): Handle converting URLs to the various pasteboard types. 2017-02-20 Wenson Hsieh Add plumbing to the UI process for TextIndicatorData when computing the drag image https://bugs.webkit.org/show_bug.cgi?id=168583 Work towards Reviewed by Tim Horton. Adds some additional arguments to drag image creation functions to allow platforms to specify TextIndicatorData for a link or selection-based DragImage. This TextIndicatorData is an optional member of the DragImage, and is propagated to the UI process via SetDragImage in the WebDragClient. Additionally renames hasDataInteractionAtPosition to hasSelectionAtPosition to better reflect its purpose. No new tests, since there is no behavior change. * page/DragController.cpp: (WebCore::DragController::startDrag): * page/Page.cpp: (WebCore::Page::hasSelectionAtPosition): (WebCore::Page::hasDataInteractionAtPosition): Deleted. * page/Page.h: * platform/DragImage.cpp: (WebCore::createDragImageForSelection): (WebCore::createDragImageForLink): (WebCore::DragImage::operator=): * platform/DragImage.h: * platform/gtk/DragImageGtk.cpp: (WebCore::createDragImageForLink): * platform/mac/DragImageMac.mm: (WebCore::createDragImageForLink): * platform/win/DragImageWin.cpp: (WebCore::createDragImageForLink): 2017-02-20 Brent Fulgham Nullptr dereferences when stopping a load https://bugs.webkit.org/show_bug.cgi?id=168608 Reviewed by Ryosuke Niwa. Don't attempt to notify a detached frame's load client that the load is stopped. * loader/DocumentLoader.cpp: (WebCore::DocumentLoader::stopLoading): Check for null frame loader and bypass dereferencing it. 2017-02-17 Anders Carlsson Add a new drag code path and use it for dragging plain text https://bugs.webkit.org/show_bug.cgi?id=168534 Reviewed by Geoffrey Garen. The new code path is currently only used for plain text selection dragging. * WebCore.xcodeproj/project.pbxproj: * page/DragClient.h: (WebCore::DragClient::useLegacyDragClient): Add a new member function. This currently returns true everywhere except legacy WebKit on Mac. (WebCore::DragClient::beginDrag): Add new empty member function. * page/DragController.cpp: (WebCore::dragImageAnchorPointForSelectionDrag): Helper function that returns the anchor point for a selection drag image. (WebCore::DragController::startDrag): If we can use the new code path, set up a drag item with an image and pasteboard data. (WebCore::DragController::beginDrag): New function that calls out to the client. * page/DragController.h: Add new members. * platform/DragItem.h: Add a new class - it's essentially a tuple of a drag image, an anchor point and the pasteboard data the item represents. * platform/mac/PasteboardWriter.h: Rename createPasteboardWriting to createPasteboardWriter. * platform/mac/PasteboardWriter.mm: (WebCore::createPasteboardWriter): Use the UTI pasteboard type. 2017-02-20 Alex Christensen Fix libwebrtc build after r212644. https://bugs.webkit.org/show_bug.cgi?id=168596 * Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp: (WebCore::LibWebRTCMediaEndpoint::StatsCollector::OnStatsDelivered): m_endpoint changed from a c++ reference to a WTF::Ref, so we need to use operator -> instead of . 2017-02-20 Romain Bellessort [Readable Streams API] Add ReadableByteStreamController byobRequest attribute https://bugs.webkit.org/show_bug.cgi?id=168319 Reviewed by Youenn Fablet. Added ReadableByteStreamController byobRequest attribute. Added tests related to ReadableStreamBYOBRequest as a dedicated object and also as an attribute of ReadableByteStreamController. * CMakeLists.txt: Added new files. * DerivedSources.cpp: Added new files. * DerivedSources.make: Added new files. * Modules/streams/ReadableByteStreamController.idl: Added byobRequest support. * Modules/streams/ReadableByteStreamController.js: Added byobRequest support. * Modules/streams/ReadableByteStreamInternals.js: (privateInitializeReadableStreamBYOBRequest): Added constructor. * Modules/streams/ReadableStreamBYOBRequest.idl: Added. * Modules/streams/ReadableStreamBYOBRequest.js: Added. (respond): Not implemented yet. (respondWithNewView): Not implemented yet. (view): Not implemented yet. * WebCore.xcodeproj/project.pbxproj: Added new files. * bindings/js/JSDOMGlobalObject.cpp: Added ReadableStreamBYOBRequest support. (WebCore::JSDOMGlobalObject::addBuiltinGlobals): (WebCore::JSDOMGlobalObject::finishCreation): (WebCore::JSDOMGlobalObject::visitChildren): * bindings/js/JSReadableStreamPrivateConstructors.cpp: Added ReadableStreamBYOBRequest support. (WebCore::constructJSReadableByteStreamController): (WebCore::constructJSReadableStreamBYOBRequest): (WebCore::JSBuiltinReadableStreamBYOBRequestPrivateConstructor::initializeExecutable): (WebCore::createReadableStreamBYOBRequestPrivateConstructor): * bindings/js/JSReadableStreamPrivateConstructors.h: Added ReadableStreamBYOBRequest support. * bindings/js/WebCoreBuiltinNames.h: Added ReadableStreamBYOBRequest support. 2017-02-20 Per Arne Vollan [Win] Custom scale factor is not applied in all cases. https://bugs.webkit.org/show_bug.cgi?id=168117 Reviewed by Brent Fulgham. We should not call the function deviceScaleFactorForWindow directly, since this will return the system scale factor, and ignore the custom scale factor. * platform/graphics/ca/win/CACFLayerTreeHost.h: * platform/graphics/ca/win/WKCACFViewLayerTreeHost.cpp: (WebCore::WKCACFViewLayerTreeHost::initializeContext): (WebCore::WKCACFViewLayerTreeHost::resize): (WebCore::WKCACFViewLayerTreeHost::setScaleFactor): * platform/graphics/ca/win/WKCACFViewLayerTreeHost.h: * platform/win/GDIUtilities.h: (WebCore::makeScaledPoint): * platform/win/PlatformMouseEventWin.cpp: (WebCore::positionForEvent): * platform/win/PopupMenuWin.cpp: (WebCore::PopupMenuWin::show): (WebCore::PopupMenuWin::wndProc): * platform/win/PopupMenuWin.h: 2017-02-20 Jon Lee Fix build error for iOS. Unreviewed. * platform/graphics/GraphicsContext3D.cpp: Move stub function into !PLATFORM(COCOA) instead of !PLATFORM(MAC). 2017-02-20 Jon Lee Unreviewed, rolling out r212639. Have a fix for the linker error on iOS. Reverted changeset: "Unreviewed, rolling out r212637." https://bugs.webkit.org/show_bug.cgi?id=168595 http://trac.webkit.org/changeset/212639 2017-02-20 Youenn Fablet [WebRTC] Fix some memory leaks in libwebrtc binding code https://bugs.webkit.org/show_bug.cgi?id=168596 Reviewed by Eric Carlson. Covered by manual testing. * Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp: (WebCore::LibWebRTCMediaEndpoint::StatsCollector::StatsCollector): Using the libwebrtc way of creating such objects. * Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h: (WebCore::LibWebRTCMediaEndpoint::StatsCollector::create): * platform/mediastream/libwebrtc/LibWebRTCProvider.cpp: (WebCore::PeerConnectionFactoryAndThreads::OnMessage): 2017-02-20 Alexey Proskuryakov Clean up how WebKit exports _WebCreateFragment https://bugs.webkit.org/show_bug.cgi?id=168579 Reviewed by Dan Bernstein. * editing/Editor.h: Removed the declaration of _WebCreateFragment, SOFT_LINK doesn't need it. * editing/cocoa/EditorCocoa.mm: Moved a FIXME comment here. 2017-02-20 Ryan Haddad Unreviewed, rolling out r212637. This change broke iOS builds. Reverted changeset: "Add 'webglcontextchanged' WebGLContextEvent" https://bugs.webkit.org/show_bug.cgi?id=168595 http://trac.webkit.org/changeset/212637 2017-02-20 Carlos Garcia Campos Remove code under USE(GRAPHICS_SURFACE) https://bugs.webkit.org/show_bug.cgi?id=168592 Reviewed by Michael Catanzaro. This was only used by EFL port. * platform/TextureMapper.cmake: * platform/graphics/opengl/GLPlatformSurface.cpp: Removed. * platform/graphics/surfaces/GLTransportSurface.cpp: Removed. * platform/graphics/surfaces/GLTransportSurface.h: Removed. * platform/graphics/surfaces/GraphicsSurface.cpp: Removed. * platform/graphics/surfaces/GraphicsSurface.h: Removed. * platform/graphics/surfaces/GraphicsSurfaceToken.h: Removed. * platform/graphics/surfaces/egl/EGLConfigSelector.cpp: Removed. * platform/graphics/surfaces/egl/EGLConfigSelector.h: Removed. * platform/graphics/surfaces/egl/EGLContext.cpp: Removed. * platform/graphics/surfaces/egl/EGLContext.h: Removed. * platform/graphics/surfaces/egl/EGLHelper.cpp: Removed. * platform/graphics/surfaces/egl/EGLHelper.h: Removed. * platform/graphics/surfaces/egl/EGLSurface.cpp: Removed. * platform/graphics/surfaces/egl/EGLSurface.h: Removed. * platform/graphics/surfaces/egl/EGLXSurface.cpp: Removed. * platform/graphics/surfaces/egl/EGLXSurface.h: Removed. * platform/graphics/surfaces/glx/GLXConfigSelector.h: Removed. * platform/graphics/surfaces/glx/GLXContext.cpp: Removed. * platform/graphics/surfaces/glx/GLXContext.h: Removed. * platform/graphics/surfaces/glx/GLXSurface.cpp: Removed. * platform/graphics/surfaces/glx/GLXSurface.h: Removed. * platform/graphics/surfaces/glx/X11Helper.cpp: Removed. * platform/graphics/surfaces/glx/X11Helper.h: Removed. * platform/graphics/texmap/TextureMapperBackingStore.cpp: * platform/graphics/texmap/TextureMapperBackingStore.h: * platform/graphics/texmap/TextureMapperPlatformLayer.h: (WebCore::TextureMapperPlatformLayer::setClient): * platform/graphics/texmap/TextureMapperSurfaceBackingStore.cpp: Removed. * platform/graphics/texmap/TextureMapperSurfaceBackingStore.h: Removed. * platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp: (WebCore::CoordinatedGraphicsLayer::CoordinatedGraphicsLayer): (WebCore::CoordinatedGraphicsLayer::setContentsNeedsDisplay): (WebCore::CoordinatedGraphicsLayer::setContentsToPlatformLayer): (WebCore::CoordinatedGraphicsLayer::syncPlatformLayer): * platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.h: * platform/graphics/texmap/coordinated/CoordinatedGraphicsState.h: (WebCore::CoordinatedGraphicsLayerState::CoordinatedGraphicsLayerState): 2017-02-20 Dean Jackson Add 'webglcontextchanged' WebGLContextEvent https://bugs.webkit.org/show_bug.cgi?id=168595 Reviewed by Antoine Quint. Add a new event that is dispatched when the GraphicsContext3D notices that the active GPU has changed. Test: fast/canvas/webgl/webglcontextchangedevent.html * dom/EventNames.h: Add 'webglcontextchanged'. * html/canvas/WebGLRenderingContextBase.cpp: (WebCore::WebGLRenderingContextBase::dispatchContextChangedEvent): Dispatch the new event. (WebCore::WebGLRenderingContextBase::simulateContextChanged): Tell the GraphicsContext3D to pretend there was a GPU switch. This is called from Internals for testing. * html/canvas/WebGLRenderingContextBase.h: * html/canvas/WebGLRenderingContextBase.idl: Export the interface so Internals can see it. * platform/graphics/GraphicsContext3D.cpp: (WebCore::GraphicsContext3D::simulateContextChanged): Tell the GraphicsContext3DManager that it should pretend a GPU change has happened, which causes it to notify all the active contexts. * platform/graphics/GraphicsContext3D.h: * platform/graphics/mac/GraphicsContext3DMac.mm: (WebCore::GraphicsContext3DManager::updateAllContexts): Tell the GraphicsContext3Ds to tell their WebGLRenderingContexts to dispatch an event. (WebCore::GraphicsContext3D::simulateContextChanged): Fake the display change. * platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp: (WebCore::GraphicsContext3D::dispatchContextChangedNotification): Tell the WebGLRenderingContext that a change has occurred, and that it should dispatch an event. This is a layering violation which will need to be fixed (although with other communication from GC3D back to WebGL). * testing/Internals.cpp: (WebCore::Internals::simulateWebGLContextChanged): * testing/Internals.h: * testing/Internals.idl: 2017-02-19 Dean Jackson Activate/deactivate high performance GPU when requested https://bugs.webkit.org/show_bug.cgi?id=168559 Reviewed by Jon Lee. Respect the high-performance powerPreference for WebGL, by managing an object that enables the high-performance GPU. If a WebGL context wants high-performance, and it is visible, then a manager class in GraphicsContext3D creates and retains the object, causing all the WebGL contexts to move GPUs. If all the high-performance contexts are not visible, such as in a background tab, then the manager will release the object, allowing the GPU to power down. The swapping back from the high-performance GPU happens on a timer, to make sure we don't churn between GPUs if the user is swapping between a lot of tabs, or windows. Unfortunately testing this change properly requires hardware with multiple GPUs. I plan to write an API test that fakes most of the system interaction, such as occluding the page. An API test might also be able to verify if the system has more than one GPU. Otherwise I'll have to plumb everything through Internals. * html/canvas/WebGLRenderingContextBase.cpp: (WebCore::isHighPerformanceContext): Helper to detect if the GraphicsContext3D actually used high-performance mode. (WebCore::WebGLRenderingContextBase::create): Add logging if we are actually overriding a high-performance request. (WebCore::WebGLRenderingContextBase::WebGLRenderingContextBase): If we are high-performance, then register for activity state changes. (WebCore::WebGLRenderingContextBase::addActivityStateChangeObserverIfNecessary): (WebCore::WebGLRenderingContextBase::removeActivityStateChangeObserver): (WebCore::WebGLRenderingContextBase::destroyGraphicsContext3D): Call removeActivityStateChangeObserver as the GC3D is destroyed. (WebCore::WebGLRenderingContextBase::maybeRestoreContext): If the context was restored successfully, and came back in high-performance, then we need to listen for activity state changes as usual. (WebCore::WebGLRenderingContextBase::activityStateDidChange): If we changed visibility, tell the GC3D. * html/canvas/WebGLRenderingContextBase.h: Class inherits ActivityStateChangeObserver. * page/Settings.in: No longer force low-power everywhere. * platform/graphics/GraphicsContext3D.cpp: (WebCore::GraphicsContext3D::setContextVisibility): Empty implementation for non-Mac. * platform/graphics/GraphicsContext3D.h: (WebCore::GraphicsContext3D::powerPreferenceUsedForCreation): Tells clients what power preference was actually used during creation (e.g. a single GPU system will use default, even if they requested high-performance). * platform/graphics/mac/GraphicsContext3DMac.mm: (WebCore::GraphicsContext3DManager::GraphicsContext3DManager): Helper class to look after all GraphicsContext3Ds. (WebCore::GraphicsContext3DManager::hasTooManyContexts): We have a limit on the number of contexts we can keep alive at any one time. (WebCore::manager): Helper to return the static instance. (WebCore::displayWasReconfigured): Send a message to all the contexts. (WebCore::GraphicsContext3DManager::addContext): (WebCore::GraphicsContext3DManager::removeContext): (WebCore::GraphicsContext3DManager::addContextRequiringHighPerformance): (WebCore::GraphicsContext3DManager::removeContextRequiringHighPerformance): (WebCore::GraphicsContext3DManager::updateHighPerformanceState): Check if the number of contexts requiring high-performance means we need to enable/disable that GPU. (WebCore::GraphicsContext3DManager::disableHighPerformanceGPUTimerFired): Releases our object that keeps the high-performance GPU on. (WebCore::GraphicsContext3DManager::recycleContextIfNecessary): Get rid of the first (oldest) context. This code was in GC3D proper, but it made more sense here in the helper. (WebCore::setPixelFormat): All contexts are created muxable now. (WebCore::GraphicsContext3D::create): Use the manager. (WebCore::GraphicsContext3D::GraphicsContext3D): Ditto. (WebCore::GraphicsContext3D::~GraphicsContext3D): Add logging. (WebCore::GraphicsContext3D::checkGPUStatusIfNecessary): Better logging. (WebCore::GraphicsContext3D::updateCGLContext): (WebCore::GraphicsContext3D::setContextVisibility): This is the responder to the ActivityStateChanges in the WebGLRenderingContext. (WebCore::activeContexts): Deleted. (WebCore::addActiveContext): Deleted. (WebCore::removeActiveContext): Deleted. 2017-02-20 Manuel Rego Casasnovas [css-grid] Remove compilation flag ENABLE_CSS_GRID_LAYOUT https://bugs.webkit.org/show_bug.cgi?id=167693 Reviewed by Sergio Villar Senin. * Configurations/FeatureDefines.xcconfig: * css/CSSComputedStyleDeclaration.cpp: (WebCore::valueForGridPosition): (WebCore::isLayoutDependent): (WebCore::resolveJustifySelfAuto): (WebCore::isImplicitlyInheritedGridOrFlexProperty): (WebCore::valueForContentPositionAndDistributionWithOverflowAlignment): (WebCore::ComputedStyleExtractor::propertyValue): * css/CSSGridAutoRepeatValue.cpp: * css/CSSGridAutoRepeatValue.h: * css/CSSGridLineNamesValue.cpp: * css/CSSGridLineNamesValue.h: * css/CSSGridTemplateAreasValue.cpp: * css/CSSGridTemplateAreasValue.h: * css/CSSPrimitiveValueMappings.h: (WebCore::CSSPrimitiveValue::CSSPrimitiveValue): * css/CSSProperties.json: * css/CSSValue.cpp: (WebCore::CSSValue::equals): (WebCore::CSSValue::cssText): (WebCore::CSSValue::destroy): * css/CSSValue.h: (WebCore::CSSValue::isContentDistributionValue): (WebCore::CSSValue::isGridLineNamesValue): * css/CSSValueKeywords.in: * css/StyleBuilderConverter.h: (WebCore::StyleBuilderConverter::convertGridAutoFlow): (WebCore::StyleBuilderConverter::convertContentAlignmentData): * css/StyleBuilderCustom.h: (WebCore::StyleBuilderCustom::applyValueGridTemplateRows): * css/StyleProperties.cpp: (WebCore::StyleProperties::getPropertyValue): * css/StyleResolver.cpp: (WebCore::equivalentBlockDisplay): * css/StyleResolver.h: * css/parser/CSSParser.cpp: (WebCore::CSSParserContext::CSSParserContext): (WebCore::operator==): * css/parser/CSSParserFastPaths.cpp: (WebCore::isSimpleLengthPropertyID): (WebCore::CSSParserFastPaths::isValidKeywordPropertyAndValue): (WebCore::CSSParserFastPaths::isKeywordPropertyID): * css/parser/CSSParserMode.h: (WebCore::CSSParserContextHash::hash): * css/parser/CSSPropertyParser.cpp: (WebCore::consumeGridAutoFlow): (WebCore::consumeGridTemplateAreas): (WebCore::CSSPropertyParser::parseSingleValue): (WebCore::CSSPropertyParser::consumeGridShorthand): (WebCore::CSSPropertyParser::parseShorthand): * dom/Document.cpp: * dom/Document.h: * dom/Position.cpp: (WebCore::Position::isCandidate): * page/RuntimeEnabledFeatures.h: (WebCore::RuntimeEnabledFeatures::isCSSGridLayoutEnabled): * rendering/Grid.cpp: * rendering/Grid.h: * rendering/RenderBlock.cpp: (WebCore::RenderBlock::getFirstLetter): * rendering/RenderBox.cpp: (WebCore::RenderBox::~RenderBox): (WebCore::RenderBox::styleDidChange): (WebCore::RenderBox::clearExtraInlineAndBlockOffests): (WebCore::RenderBox::containingBlockLogicalWidthForContent): (WebCore::RenderBox::containingBlockLogicalHeightForContent): (WebCore::RenderBox::perpendicularContainingBlockLogicalHeight): (WebCore::RenderBox::computeLogicalWidthInRegion): (WebCore::RenderBox::sizesLogicalWidthToFitContent): (WebCore::RenderBox::computeLogicalHeight): (WebCore::RenderBox::computePercentageLogicalHeight): (WebCore::RenderBox::containingBlockLogicalWidthForPositioned): (WebCore::RenderBox::containingBlockLogicalHeightForPositioned): (WebCore::RenderBox::computePositionedLogicalWidth): (WebCore::RenderBox::computePositionedLogicalHeight): (WebCore::RenderBox::createsNewFormattingContext): (WebCore::logicalWidthIsResolvable): (WebCore::RenderBox::percentageLogicalHeightIsResolvableFromBlock): (WebCore::RenderBox::hasDefiniteLogicalHeight): * rendering/RenderBox.h: (WebCore::RenderBox::isGridItem): * rendering/RenderElement.cpp: (WebCore::RenderElement::createFor): * rendering/RenderFlexibleBox.cpp: (WebCore::RenderFlexibleBox::alignChildren): * rendering/RenderGrid.cpp: * rendering/RenderGrid.h: * rendering/RenderObject.h: (WebCore::RenderObject::isRenderGrid): * rendering/style/GridArea.h: * rendering/style/GridLength.h: * rendering/style/GridPosition.h: * rendering/style/GridPositionsResolver.cpp: * rendering/style/GridPositionsResolver.h: * rendering/style/GridTrackSize.h: * rendering/style/RenderStyle.cpp: (WebCore::RenderStyle::isCSSGridLayoutEnabled): (WebCore::RenderStyle::changeRequiresLayout): * rendering/style/RenderStyle.h: (WebCore::RenderStyle::gridItemRowEnd): (WebCore::RenderStyle::setGridRowGap): (WebCore::RenderStyle::initialGridItemRowEnd): (WebCore::RenderStyle::isDisplayReplacedType): (WebCore::RenderStyle::isDisplayGridBox): * rendering/style/RenderStyleConstants.h: * rendering/style/StyleGridData.cpp: * rendering/style/StyleGridData.h: * rendering/style/StyleGridItemData.cpp: * rendering/style/StyleGridItemData.h: * rendering/style/StyleRareNonInheritedData.cpp: (WebCore::StyleRareNonInheritedData::StyleRareNonInheritedData): (WebCore::StyleRareNonInheritedData::operator==): * rendering/style/StyleRareNonInheritedData.h: * testing/InternalSettings.cpp: (WebCore::InternalSettings::Backup::Backup): (WebCore::InternalSettings::Backup::restoreTo): (WebCore::InternalSettings::setCSSGridLayoutEnabled): 2017-02-20 Carlos Garcia Campos REGRESSION(r212345): [GTK] ASSERT(cookieChangeCallbackMap().contains(jar)) failed in WebCore::stopObservingCookieChanges:54 https://bugs.webkit.org/show_bug.cgi?id=168375 Reviewed by Alex Christensen. Simplify the way cookie storage is handled in NetworkStorageSessionSoup. Now we always keep a reference to the cookie jar, no matter if we have a session or not, that is always kept in sync with the one actually used by the session. We always connect to the changed signal of the current cookie jar and notify the observer if it has been set. * platform/network/NetworkStorageSession.h: * platform/network/soup/CookieStorageSoup.cpp: (WebCore::startObservingCookieChanges): Remove this implementation and add an ASSERT to ensure we don't use this anymore. (WebCore::stopObservingCookieChanges): Ditto. (WebCore::cookieChangeCallbackMap): Deleted. (WebCore::soupCookiesChanged): Deleted. * platform/network/soup/NetworkStorageSessionSoup.cpp: (WebCore::NetworkStorageSession::NetworkStorageSession): Initialize the cookie storage. (WebCore::NetworkStorageSession::~NetworkStorageSession): Disconnect the changed signal. (WebCore::NetworkStorageSession::getOrCreateSoupNetworkSession): Always pass the current cookie storage. (WebCore::NetworkStorageSession::cookiesDidChange): Notify the observer. (WebCore::NetworkStorageSession::cookieStorage): Return the current cookie storage. (WebCore::NetworkStorageSession::setCookieStorage): Update the current cookie storage and update the session if needed too. We always have a valid cookie storage so if nullptr is given we create a new one. (WebCore::NetworkStorageSession::setCookieObserverHandler): Set a cookie observer handler. 2017-02-19 Chris Dumez onbeforeunload event return value coercion is not per-spec https://bugs.webkit.org/show_bug.cgi?id=168382 Reviewed by Darin Adler. Update handling of value returned by onbeforeunload event listeners to match Firefox and the specification: - https://html.spec.whatwg.org/#the-event-handler-processing-algorithm (step 4) Namely, the following changes were made: - Only set the event's returnValue attribute to the returned value if the attribute value is the empty string (so as to not override the attribute value if it has explicitly been set by JS). - Cancel the event when the return value is not null by calling preventDefault(). Additionally, the following changes were made: - Ask the user to confirm the navigation if the event was canceled, not just if the returnValue attribute was set to a non-empty string. as per: - https://html.spec.whatwg.org/#prompt-to-unload-a-document (step 8) Tests: fast/events/before-unload-return-string-conversion.html imported/w3c/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/beforeunload-canceling.html * bindings/js/JSEventListener.cpp: (WebCore::handleBeforeUnloadEventReturnValue): (WebCore::JSEventListener::handleEvent): * loader/FrameLoader.cpp: (WebCore::shouldAskForNavigationConfirmation): (WebCore::FrameLoader::dispatchBeforeUnloadEvent): 2017-02-19 Carlos Garcia Campos [SOUP] Call SoupNetworkSession::setShouldIgnoreTLSErrors when testRunner.setAllowsAnySSLCertificate() is called https://bugs.webkit.org/show_bug.cgi?id=168571 Reviewed by Michael Catanzaro. Fixes: http/tests/ssl/upgrade-origin-usage.html * testing/InternalSettings.cpp: (WebCore::InternalSettings::setAllowsAnySSLCertificate): 2017-02-18 Ryosuke Niwa REGRESSION(r212218): Assertion failures in and after parserRemoveChild https://bugs.webkit.org/show_bug.cgi?id=168458 Reviewed by Antti Koivisto. The bug was caused by parserRemoveChild not preceeding to remove oldChild even when oldChild had been inserted elsewhere during unload evnets of the disconnected frames. Fixed the bug by checking this condition and exiting early. Also fixed various callers of parserRemoveChild to not call parserAppendChild when the removed node had already been inserted elsewhere by scripts. Tests: fast/parser/adoption-agency-unload-iframe-3.html fast/parser/adoption-agency-unload-iframe-4.html fast/parser/xml-error-unload-iframe.html * dom/ContainerNode.cpp: (WebCore::ContainerNode::parserRemoveChild): Exit early when the node had been inserted elsewhere while firing unload events. Also moved the call to notifyRemovePendingSheetIfNeeded outside NoEventDispatchAssertion since it can synchrnously fire a focus event. (WebCore::ContainerNode::parserAppendChild): Moved adoptNode call to inside NoEventDispatchAssertion since adoptNode call here should never mutate DOM. * html/parser/HTMLConstructionSite.cpp: (WebCore::executeReparentTask): Added an early exit when the node had already been inserted elsewhere. (WebCore::executeInsertAlreadyParsedChildTask): Ditto. * xml/XMLErrors.cpp: (WebCore::XMLErrors::insertErrorMessageBlock): Ditto. * xml/parser/XMLDocumentParser.cpp: (WebCore::XMLDocumentParser::end): Fixed a crash unveiled by one of the test cases. Exit early when insertErrorMessageBlock detached the parser (by author scripts). (WebCore::XMLDocumentParser::finish): Keep the parser alive until we exit. 2017-02-19 Chris Dumez doesn't act per spec https://bugs.webkit.org/show_bug.cgi?id=168421 Reviewed by Ryosuke Niwa. The 'readonly' attribute should not apply to as per the HTML specification: - https://html.spec.whatwg.org/#the-input-element:attr-input-readonly-3 Chrome / Firefox and Edge already behave as per the specification. Tests: fast/forms/color/input-color-disabled.html fast/forms/color/input-color-readonly.html * html/ColorInputType.cpp: (WebCore::ColorInputType::handleDOMActivateEvent): (WebCore::ColorInputType::didChooseColor): 2017-02-19 Commit Queue Unreviewed, rolling out r212466. https://bugs.webkit.org/show_bug.cgi?id=168577 causes crashes on AArch64 on linux, maybe it's causing crashes on iOS too (Requested by pizlo on #webkit). Reverted changeset: "The collector thread should only start when the mutator doesn't have heap access" https://bugs.webkit.org/show_bug.cgi?id=167737 http://trac.webkit.org/changeset/212466 2017-02-19 Zalan Bujtas Simple line layout: Implement positionForPoint. https://bugs.webkit.org/show_bug.cgi?id=168565 Reviewed by Antti Koivisto. With this patch, now we don't need to switch over to line box tree anymore when positionForPoint() is called on a single RenderText content (which is the majority of the simple line content). This patch also adds a new positionForPoint method which returns a Position object instead of VisiblePosition. Some of the positionForPoint() callsites are only interested in the Position object so constructing a VisiblePosition (which could potentially kick off a layout) is a waste. At this point the non-simple line layout codepath still constructs a VisiblePosition and that should be addresses as part of webkit.org/b/168566. Covered by existing tests. * dom/Document.cpp: (WebCore::Document::caretRangeFromPoint): * rendering/RenderBlockFlow.cpp: (WebCore::RenderBlockFlow::positionForPoint): * rendering/RenderBlockFlow.h: * rendering/RenderObject.cpp: (WebCore::RenderObject::positionForPoint): * rendering/RenderObject.h: * rendering/RenderText.cpp: (WebCore::RenderText::positionForPoint): * rendering/RenderText.h: * rendering/SimpleLineLayoutFunctions.cpp: (WebCore::SimpleLineLayout::positionForPoint): * rendering/SimpleLineLayoutFunctions.h: * rendering/SimpleLineLayoutResolver.cpp: (WebCore::SimpleLineLayout::RunResolver::runForPoint): * rendering/SimpleLineLayoutResolver.h: (WebCore::SimpleLineLayout::RunResolver::Run::logicalLeft): (WebCore::SimpleLineLayout::RunResolver::Run::logicalRight): 2017-02-19 Antti Koivisto Execute pending scripts asynchronously after stylesheet loads complete https://bugs.webkit.org/show_bug.cgi?id=168367 rdar://problem/30561379 Reviewed by Andreas Kling. The current synchronous execution is fragile and creates various problems. * css/StyleSheetContents.cpp: (WebCore::StyleSheetContents::checkLoaded): * dom/ContainerNode.cpp: (WebCore::ContainerNode::takeAllChildrenFrom): (WebCore::ContainerNode::notifyChildInserted): (WebCore::ContainerNode::removeChild): (WebCore::ContainerNode::parserRemoveChild): (WebCore::ContainerNode::removeChildren): Remove various places where we would trigger delayed synchronous execution. * dom/Document.cpp: (WebCore::Document::Document): (WebCore::Document::recalcStyle): Trigger scroll to anchor at the end of style resolution instead of when style sheet load completes. (WebCore::Document::didRemoveAllPendingStylesheet): Call asynchronous script execution function. * dom/Document.h: (WebCore::Document::setNeedsNotifyRemoveAllPendingStylesheet): Deleted. (WebCore::Document::notifyRemovePendingSheetIfNeeded): Deleted. * dom/ScriptableDocumentParser.cpp: (WebCore::ScriptableDocumentParser::ScriptableDocumentParser): (WebCore::ScriptableDocumentParser::executeScriptsWaitingForStylesheetsSoon): (WebCore::ScriptableDocumentParser::scriptsWaitingForStylesheetsExecutionTimerFired): Add a timer for executing pending scripts. (WebCore::ScriptableDocumentParser::detach): * dom/ScriptableDocumentParser.h: (WebCore::ScriptableDocumentParser::executeScriptsWaitingForStylesheets): * html/HTMLLinkElement.cpp: (WebCore::HTMLLinkElement::removedFrom): (WebCore::HTMLLinkElement::removePendingSheet): * html/HTMLLinkElement.h: * html/parser/HTMLDocumentParser.cpp: (WebCore::HTMLDocumentParser::detach): * loader/DocumentLoader.cpp: (WebCore::DocumentLoader::isLoadingInAPISense): Stay in loading state if we have a pending script. This matches existing behavior. * style/StyleScope.cpp: (WebCore::Style::Scope::removePendingSheet): * style/StyleScope.h: 2017-02-18 Chris Dumez doesn't act per spec https://bugs.webkit.org/show_bug.cgi?id=168422 Reviewed by Ryosuke Niwa. 'readonly' attribute should not apply to as per the HTML specification: - https://html.spec.whatwg.org/#the-input-element:attr-input-readonly-3 Firefox and Edge already behave as per the specification. No new tests, updated existing tests. * html/RangeInputType.cpp: (WebCore::RangeInputType::handleMouseDownEvent): (WebCore::RangeInputType::handleTouchEvent): (WebCore::RangeInputType::handleKeydownEvent): * html/shadow/SliderThumbElement.cpp: (WebCore::SliderThumbElement::defaultEventHandler): (WebCore::SliderThumbElement::willRespondToMouseMoveEvents): (WebCore::SliderThumbElement::willRespondToMouseClickEvents): 2017-02-18 Chris Dumez Recursive MessagePort.postMessage() calls causes tab to become unresponsive https://bugs.webkit.org/show_bug.cgi?id=168548 Reviewed by Darin Adler. MessagePort::dispatchMessages() was getting messages one by one of the channel's MessageQueue and firing the MessageEvent for each of them. The issue is that we can get stuck in an infinite loop if the MessageEvent handler posts a message on the same post. To address the issue, we now takes all messages from the queue before iterating over them to fire the event. This way, if new messages are added to the queue in one of the MessageEvent handlers, they will not be processed until the next event loop iteration, as is expected. Test: fast/events/message-port-postMessage-recursive.html * dom/MessagePort.cpp: (WebCore::MessagePort::dispatchMessages): * dom/MessagePortChannel.h: (WebCore::MessagePortChannel::EventData::EventData): * dom/default/PlatformMessagePortChannel.cpp: (WebCore::MessagePortChannel::postMessageToRemote): * dom/default/PlatformMessagePortChannel.h: (WebCore::PlatformMessagePortChannel::MessagePortQueue::takeMessage): (WebCore::PlatformMessagePortChannel::MessagePortQueue::takeAllMessages): (WebCore::PlatformMessagePortChannel::MessagePortQueue::appendAndCheckEmpty): 2017-02-18 Michael Catanzaro Remove COORDINATED_GRAPHICS_MULTIPROCESS https://bugs.webkit.org/show_bug.cgi?id=168514 Reviewed by Darin Adler. * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp: * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h: 2017-02-17 Simon Fraser Allow properties in CSSProperties.json that don't trigger code generation https://bugs.webkit.org/show_bug.cgi?id=168535 Reviewed by Sam Weinig. In order to track the development of CSS properties that we have not yet implemented, support '"skip-codegen" : true' in "codegen-properties". Test by adding a few fill-related properties with this attribute. * css/CSSProperties.json: * css/makeprop.pl: (isPropertyEnabled): (addProperty): 2017-02-17 Brian Burg Web Inspector: RTL: Inspector window should dock to the left when using RTL layout direction https://bugs.webkit.org/show_bug.cgi?id=168273 Reviewed by Matt Baker. Add the ability to dock Web Inspector to the left of the inspected view. The frontend decides whether the Dock to Side button docks left or right based on the current layout direction. * inspector/InspectorFrontendClient.h: * inspector/InspectorFrontendClientLocal.cpp: (WebCore::InspectorFrontendClientLocal::setAttachedWindow): * inspector/InspectorFrontendHost.cpp: (WebCore::InspectorFrontendHost::requestSetDockSide): 2017-02-16 Simon Fraser Allow PlatformCALayers to specify that they want deep color backing store https://bugs.webkit.org/show_bug.cgi?id=168495 Reviewed by Tim Horton. Currently capable iOS devices get deep color backing store by virtue of a supports check in PlatformCALayerCocoa::PlatformCALayerCocoa(), and LegacyTileGridTile. Future work will make layer contents format selection more complex, so express the need for deep color on PlatformCALayer, and have the creators of PlatformCALayer (mainly the flavors of GraphicsLayerCA) choose for them to support deep color. A bit of special-casing is needed to propagte the state to TileControllers. The deep-colorness now propagates from PlatformCALayerRemote to RemoteLayerBackingStore, instead of RemoteLayerBackingStore looking at the properties of the screen directly. Remove PlatformCALayer::LayerTypeWebTiledLayer which was only used for the old CATiledLayers that we no longer use. An iphone7 test verifies that page tiles, normal layers and tiled layers get the deep color state set on them. Test: tiled-drawing/ios/iphone7/compositing-layers-deep-color.html * platform/graphics/ca/GraphicsLayerCA.cpp: (WebCore::GraphicsLayerCA::createPlatformCALayer): (WebCore::GraphicsLayerCA::dumpAdditionalProperties): * platform/graphics/ca/GraphicsLayerCA.h: * platform/graphics/ca/PlatformCALayer.cpp: (WebCore::PlatformCALayer::canHaveBackingStore): (WebCore::operator<<): * platform/graphics/ca/PlatformCALayer.h: * platform/graphics/ca/TileController.cpp: (WebCore::TileController::setZoomedOutContentsScale): (WebCore::TileController::setAcceleratesDrawing): (WebCore::TileController::setWantsDeepColorBackingStore): (WebCore::TileController::createTileLayer): * platform/graphics/ca/TileController.h: * platform/graphics/ca/TileGrid.cpp: (WebCore::TileGrid::updateTileLayerProperties): * platform/graphics/ca/cocoa/PlatformCALayerCocoa.h: * platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm: (PlatformCALayerCocoa::PlatformCALayerCocoa): (PlatformCALayerCocoa::commonInit): (PlatformCALayerCocoa::wantsDeepColorBackingStore): (PlatformCALayerCocoa::setWantsDeepColorBackingStore): (layerContentsFormat): (PlatformCALayerCocoa::updateContentsFormat): * platform/graphics/ca/cocoa/WebTiledBackingLayer.h: * platform/graphics/ca/cocoa/WebTiledBackingLayer.mm: (-[WebTiledBackingLayer setWantsDeepColorBackingStore:]): (-[WebTiledBackingLayer wantsDeepColorBackingStore]): * platform/graphics/ca/win/PlatformCALayerWin.cpp: (PlatformCALayerWin::wantsDeepColorBackingStore): (PlatformCALayerWin::setWantsDeepColorBackingStore): (printLayer): * platform/graphics/ca/win/PlatformCALayerWin.h: * platform/spi/cocoa/QuartzCoreSPI.h: 2017-02-17 Jer Noble Refactoring: Make sure to unprepare WebAudioSourceProviderAVFObjC when its owner is destroyed. https://bugs.webkit.org/show_bug.cgi?id=168532 Reviewed by Youenn Fablet. Because WebAudioSourceProviderAVFObjC has a back-pointer to the object which creted it, make sure that back-pointer is invalidated once the creating object is destroyed by calling WebAudioSOurceProviderAVFObjC::unprepare(). Drive-by Fix: In WebAudioSourceProviderAVFObjC::audioSamplesAvailable(), PlatformAudioData will always be of the WebAudioBufferList type. If this ever becomes untrue, an invalid downcast will be caught by downcast<>, so just remove the is<> check. * platform/mediastream/mac/AVAudioCaptureSource.mm: (WebCore::AVAudioCaptureSource::~AVAudioCaptureSource): * platform/mediastream/mac/MockRealtimeAudioSourceMac.h: * platform/mediastream/mac/MockRealtimeAudioSourceMac.mm: (WebCore::MockRealtimeAudioSourceMac::~MockRealtimeAudioSourceMac): * platform/mediastream/mac/RealtimeIncomingAudioSource.cpp: (WebCore::RealtimeIncomingAudioSource::~RealtimeIncomingAudioSource): * platform/mediastream/mac/RealtimeIncomingAudioSource.h: * platform/mediastream/mac/WebAudioSourceProviderAVFObjC.mm: (WebCore::WebAudioSourceProviderAVFObjC::~WebAudioSourceProviderAVFObjC): (WebCore::WebAudioSourceProviderAVFObjC::setClient): (WebCore::WebAudioSourceProviderAVFObjC::unprepare): (WebCore::WebAudioSourceProviderAVFObjC::audioSamplesAvailable): 2017-02-17 Antoine Quint [Modern Media Controls] Improve handling of