Timeline



Feb 27, 2017:

11:39 PM Changeset in webkit [213124] by achristensen@apple.com
  • 2 edits in trunk/Source/WebCore

Fix WinCairo build.

  • PlatformWinCairo.cmake:
11:11 PM Changeset in webkit [213123] by achristensen@apple.com
  • 13 edits in trunk

Begin enabling WebRTC on 64-bit
https://bugs.webkit.org/show_bug.cgi?id=168915

Reviewed by Eric Carlson.

Source/JavaScriptCore:

  • Configurations/FeatureDefines.xcconfig:

Source/WebCore:

  • Configurations/FeatureDefines.xcconfig:

Source/WebCore/PAL:

  • Configurations/FeatureDefines.xcconfig:

Source/WebKit/mac:

  • Configurations/FeatureDefines.xcconfig:

Source/WebKit2:

  • Configurations/FeatureDefines.xcconfig:

Tools:

  • Scripts/build-webkit:
  • TestWebKitAPI/Configurations/FeatureDefines.xcconfig:
9:01 PM Changeset in webkit [213122] by rniwa@webkit.org
  • 2 edits in trunk/Websites/perf.webkit.org

Fix tests after r213119 and r213120.

  • browser-tests/time-series-chart-tests.js:

(return.ChartTest.importChartScripts.context.then):
(string_appeared_here.then): Deleted.

9:00 PM Changeset in webkit [213121] by Simon Fraser
  • 1 edit
    1 add in trunk/Websites/webkit.org

Add css-status page on webkit.org
https://bugs.webkit.org/show_bug.cgi?id=168921

Reviewed by Sam Weinig.

Add a page that shows the status of CSS properties and values, scraped from Source/WebCore/css/CSSProperties.json.

This is modeled after the feature status page. Properties can be filtered by status
and the spec they belong to.

  • wp-content/themes/webkit/css-status.php: Added.
8:52 PM Changeset in webkit [213120] by rniwa@webkit.org
  • 2 edits in trunk/Websites/perf.webkit.org

Removed the unused code that was supposed to be removed in the previous commit.

  • browser-tests/time-series-chart-tests.js:
8:48 PM Changeset in webkit [213119] by rniwa@webkit.org
  • 4 edits
    1 add in trunk/Websites/perf.webkit.org

Split tests for InteractiveTimeSeriesChart into a separate test file.
https://bugs.webkit.org/show_bug.cgi?id=168960

Reviewed by Joseph Pecoraro.

Extracted the test cases for InteractiveTimeSeriesChart charts from time-series-chart-tests.js
into interactive-time-series-chart-tests.js now that the former file has gotten really big over time.

Also extracted a bunch of helper functions time-series-chart-tests.js as ChartTest in index.html.
Any test which instantiates a time series chart can use this helper class.

  • browser-tests/index.html:

(ChartTest.importChartScripts): Ditto.
(ChartTest.posixTime): Moved from time-series-chart-tests.js.
(ChartTest.sampleCluster): Ditto.
(ChartTest.createChartWithSampleCluster): Ditto.
(ChartTest.createInteractiveChartWithSampleCluster): Ditto.
(ChartTest.respondWithSampleCluster):

  • browser-tests/interactive-time-series-chart-tests.js: Extracted from time-series-chart-tests.js.
  • browser-tests/time-series-chart-tests.js:

(posixTime): Moved.
(dayInMilliseconds): Moved.
(sampleCluster): Moved.
(createChartWithSampleCluster): Moved.
(createInteractiveChartWithSampleCluster): Moved.
(respondWithSampleCluster): Moved.

  • unit-tests/analysis-task-tests.js: Fixed a typo. s/adopter/adapter/.
8:47 PM Changeset in webkit [213118] by ap@apple.com
  • 2 edits
    1 delete in trunk/Source/WebKit2

Remove _WKWebsiteDataRecord.h
https://bugs.webkit.org/show_bug.cgi?id=168954

Reviewed by Dan Bernstein.

This doesn't seem to have ever been used, so better to remove it than to add an
implementation.

  • UIProcess/API/Cocoa/_WKWebsiteDataRecord.h: Removed.
  • WebKit2.xcodeproj/project.pbxproj:
8:07 PM Changeset in webkit [213117] by rniwa@webkit.org
  • 3 edits in trunk/Websites/perf.webkit.org

Calling build() on a baseline point results in an exception
https://bugs.webkit.org/show_bug.cgi?id=168959

Reviewed by Joseph Pecoraro.

Some baseline points may lack the build information. e.g. A custom data point made by an user.
Only instantiate Build object in a point object returned by MeasurementAdaptor when the builder id
is available so that we don't hit an assertion inside Build's constructor.

  • public/v3/models/measurement-adaptor.js:

(MeasurementAdaptor.prototype.applyTo..build): Only instantiate Build when builderId is set.

  • unit-tests/measurement-adaptor-tests.js: Added a test case.
7:30 PM Changeset in webkit [213116] by rniwa@webkit.org
  • 3 edits in trunk/Websites/perf.webkit.org

Arrow key shouldn't move the indicator beyond the visible points
https://bugs.webkit.org/show_bug.cgi?id=168956

Reviewed by Joseph Pecoraro.

The bug was caused by moveLockedIndicatorWithNotification using the full sampled time series view
instead of the one constrained by the domain. Since the time series chart expands the visible domain
to include at least one point before the start time and one point after the end tiem to draw lines
extending beyond the visible region (otherwise it looks as though the graph ends there), we need to
use a view constrained by the start time and the end time before looking for a next/previous point.

  • browser-tests/time-series-chart-tests.js: Added test cases for moveLockedIndicatorWithNotification.
  • public/v3/components/interactive-time-series-chart.js:

(InteractiveTimeSeriesChart.prototype.moveLockedIndicatorWithNotification): Fixed the bug. Also
enqueue itself to render instead of relying on a parent component to do it.

7:24 PM Changeset in webkit [213115] by graouts@webkit.org
  • 15 edits
    8 deletes in trunk

[Modern Media Controls] Use compact mode by default on macOS
https://bugs.webkit.org/show_bug.cgi?id=168958
<rdar://problem/30748638>

Reviewed by Jon Lee.

Source/WebCore:

We now use the compact layout mode by default on macOS.

  • Modules/modern-media-controls/controls/layout-item.js: Remove the ReducedPadding trait.
  • Modules/modern-media-controls/controls/macos-compact-inline-media-controls.css:

(.media-controls.mac.inline.compact .time-label,): Vertically align the time label with
the scrubber in compact mode.
(.media-controls.mac.inline.compact .scrubber.slider): Correctly position the scrubber in
compact mode so that it's vertically aligned.

  • Modules/modern-media-controls/controls/macos-inline-media-controls.js:

(MacOSInlineMediaControls.prototype.layoutTraitsDidChange): Remove handling of tight and
reduced padding traits since these do not apply to macOS anymore. We also notify the
scrubber of a layout trait change so that it may adjust its height.

  • Modules/modern-media-controls/controls/scrubber.js:

(Scrubber):
(Scrubber.prototype.layoutTraitsDidChange): Adjust the height of the scrubber to match
compact layout traits.

  • Modules/modern-media-controls/controls/time-control.js:

(TimeControl.prototype.get isSufficientlyWide): Adjust the minimum scrubber width for
TimeControl visibility to match compact layout traits.

  • Modules/modern-media-controls/media/media-controller.js:

(MediaController.prototype.get layoutTraits): Use the compact layout trait by default
on macOS and make the tight padding specific to iOS.

LayoutTests:

Rebaseline tests to account for compact mode being the default mode for macOS
and remove tests that would check dynamically applying compact mode at some
threshold and the reduced padding mode.

  • media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-compact-expected.txt:
  • media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-compact.html:
  • media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-reduced-padding-expected.txt: Removed.
  • media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-reduced-padding.html: Removed.
  • media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-tight-padding-expected.txt: Removed.
  • media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-tight-padding.html: Removed.
  • media/modern-media-controls/media-controller/media-controller-compact.html:
  • media/modern-media-controls/media-controller/media-controller-fullscreen-change-expected.txt:
  • media/modern-media-controls/media-controller/media-controller-fullscreen-change.html:
  • media/modern-media-controls/media-controller/media-controller-reduced-padding-expected.txt: Removed.
  • media/modern-media-controls/media-controller/media-controller-reduced-padding.html: Removed.
  • media/modern-media-controls/media-controller/media-controller-toggle-compact-mode-expected.txt: Removed.
  • media/modern-media-controls/media-controller/media-controller-toggle-compact-mode.html: Removed.
  • platform/mac/TestExpectations:
6:24 PM Changeset in webkit [213114] by commit-queue@webkit.org
  • 3 edits in trunk/Tools

Windows regression: webkitpy.tool.steps.steps_unittest.StepsTest.test_runtests_jsc[_debug]
https://bugs.webkit.org/show_bug.cgi?id=168628

Patch by Srinivasan Vijayaraghavan <svijayaraghavan@apple.com> on 2017-02-27
Reviewed by Alexey Proskuryakov.

  • Scripts/webkitpy/tool/steps/runtests.py:

(RunTests._run_javascriptcore_tests): Pass options to the Base instance.

  • Scripts/webkitpy/tool/steps/steps_unittest.py:

(StepsTest._step_options): Add a new 'root' option that's passed through to the Base instance.
(test_runtests_jsc): Not running webkit-build-directory anymore, and changed json output directory.
(test_runtests_jsc_debug): Ditto

6:18 PM Changeset in webkit [213113] by graouts@webkit.org
  • 5 edits
    2 adds in trunk

[Modern Media Controls] Adhere to tight padding on iOS
https://bugs.webkit.org/show_bug.cgi?id=168949
<rdar://problem/30746164>

Reviewed by Jon Lee.

Source/WebCore:

We used to only support custom margins on macOS, to support this on iOS as
well, we promote the notification when the layoutTraits property is set to
MediaControls and expose a new protected method layoutTraitsDidChange() for
subclasses to implement. IOSInlineMediaControls now implements that method
and will use tighter margins for the TightPadding layout trait.

Test: media/modern-media-controls/ios-inline-media-controls/ios-inline-media-controls-tight-padding.html

  • Modules/modern-media-controls/controls/ios-inline-media-controls.js:

(IOSInlineMediaControls.prototype.layoutTraitsDidChange):
(IOSInlineMediaControls):

  • Modules/modern-media-controls/controls/macos-inline-media-controls.js:

(MacOSInlineMediaControls.prototype.get layoutTraits): Deleted.
(MacOSInlineMediaControls.prototype.set layoutTraits): Deleted.
(MacOSInlineMediaControls.prototype._matchLayoutTraits): Deleted.

  • Modules/modern-media-controls/controls/media-controls.js:

(MediaControls.prototype.get layoutTraits):
(MediaControls.prototype.set layoutTraits):
(MediaControls.prototype.layoutTraitsDidChange):

LayoutTests:

Adding a new test for the TightPadding layout trait on iOS.

  • media/modern-media-controls/ios-inline-media-controls/ios-inline-media-controls-tight-padding-expected.txt: Added.
  • media/modern-media-controls/ios-inline-media-controls/ios-inline-media-controls-tight-padding.html: Added.
6:08 PM Changeset in webkit [213112] by ap@apple.com
  • 2 edits in trunk/Source/WebKit2

WKPageIsPlayingVideoInEnhancedFullscreen availability mismatch
https://bugs.webkit.org/show_bug.cgi?id=168952

Reviewed by Dan Bernstein.

  • UIProcess/API/C/mac/WKPagePrivateMac.h: TARGET_OS_MAC is not the right thing to

check, as it's true on both macOS and iOS.

6:06 PM Changeset in webkit [213111] by ap@apple.com
  • 2 edits in trunk/Source/WebKit2

Export WKPluginInformationBundleShortVersionKey
https://bugs.webkit.org/show_bug.cgi?id=168951

Reviewed by Dan Bernstein.

  • Shared/API/c/WKPluginInformation.h: It was accidentally not exported when added.
5:42 PM Changeset in webkit [213110] by matthew_hanson@apple.com
  • 1 copy in tags/Safari-603.1.30.0.31

Tag Safari-603.1.30.0.31.

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

Mark compositing/video/video-poster.html as flaky on macOS release.
https://bugs.webkit.org/show_bug.cgi?id=168953

Unreviewed test gardening.

  • platform/mac/TestExpectations:
5:34 PM Changeset in webkit [213108] by commit-queue@webkit.org
  • 17 edits
    11 adds
    1 delete in trunk/Source

[WebRTC] Support modern RTCStatsReport
https://bugs.webkit.org/show_bug.cgi?id=166916
<rdar://problem/30293780>

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

Updating binding generator and IDL parser to handle maplike.
Covered by binding tests.

Added support for maplike binding from JS wrapper to DOM class.
The principle is to have the JSXX wrapper having a @backingMap slot containing a Map.
All maplike methods are forwarded to the corresponding Map methods.
The XX object is responsible to add key/value pairs using a helper routine.
The creation of the Map is done at creation of the JSXX wrapper.

DOM class is interacting with the map through DOMMapLike.
Extracted DOMGuarded from DOM promise implementation.
This allows reusing this code for DOMMapLike.

Covered by binding tests and manual tests.

  • CMakeLists.txt:
  • DerivedSources.make:
  • Modules/mediastream/RTCStatsReport.h:

(WebCore::RTCStatsReport::InboundRTPStreamStats::InboundRTPStreamStats):
(WebCore::RTCStatsReport::OutboundRTPStreamStats::OutboundRTPStreamStats):
(WebCore::RTCStatsReport::create):
(WebCore::RTCStatsReport::synchronizeBackingMap):
(WebCore::RTCStatsReport::backingMap):
(WebCore::RTCStatsReport::addStats):

  • Modules/mediastream/RTCStatsReport.idl:
  • Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:

(WebCore::fromStdString):
(WebCore::fillRTCStats):
(WebCore::fillRTCRTPStreamStats):
(WebCore::fillInboundRTPStreamStats):
(WebCore::fillOutboundRTPStreamStats):
(WebCore::LibWebRTCMediaEndpoint::StatsCollector::OnStatsDelivered):

  • Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.h:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/JSDOMBindingInternals.js: Added.

(mapLikeForEach):

  • bindings/js/JSDOMGlobalObject.cpp:

(WebCore::JSDOMGlobalObject::visitChildren):

  • bindings/js/JSDOMGlobalObject.h:
  • bindings/js/JSDOMGuardedObject.cpp: Added.

(WebCore::DOMGuardedObject::DOMGuardedObject):
(WebCore::DOMGuardedObject::~DOMGuardedObject):
(WebCore::DOMGuardedObject::clear):
(WebCore::DOMGuardedObject::contextDestroyed):

  • bindings/js/JSDOMGuardedObject.h: Added.

(WebCore::DOMGuardedObject::isSuspended):
(WebCore::DOMGuardedObject::visitAggregate):
(WebCore::DOMGuardedObject::guardedObject):
(WebCore::DOMGuardedObject::globalObject):
(WebCore::DOMGuardedObject::isEmpty):
(WebCore::DOMGuarded::DOMGuarded):
(WebCore::DOMGuarded::guarded):

  • bindings/js/JSDOMMapLike.cpp: Added.

(WebCore::getBackingMap):
(WebCore::initializeBackingMap):
(WebCore::createBackingMap):
(WebCore::forwardAttributeGetterToBackingMap):
(WebCore::forwardFunctionCallToBackingMap):
(WebCore::forwardForEachCallToBackingMap):

  • bindings/js/JSDOMMapLike.h: Added.

(WebCore::DOMMapLike::set):
(WebCore::synchronizeBackingMap):
(WebCore::forwardSizeToMapLike):
(WebCore::forwardEntriesToMapLike):
(WebCore::forwardKeysToMapLike):
(WebCore::forwardValuesToMapLike):
(WebCore::forwardClearToMapLike):
(WebCore::forwardForEachToMapLike):
(WebCore::forwardHasToMapLike):
(WebCore::forwardAddToMapLike):
(WebCore::forwardDeleteToMapLike):

  • bindings/js/JSDOMPromise.cpp:

(WebCore::DeferredPromise::promise):
(WebCore::DeferredPromise::reject):

  • bindings/js/JSDOMPromise.h:

(WebCore::DeferredPromise::resolve):
(WebCore::DeferredPromise::resolveWithNewlyCreated):
(WebCore::DeferredPromise::reject):
(WebCore::DeferredPromise::resolveWithCallback):
(WebCore::DeferredPromise::rejectWithCallback):
(WebCore::DeferredPromise::DeferredPromise):
(WebCore::DeferredPromise::deferred):

  • bindings/js/WebCoreBuiltinNames.h:
  • bindings/scripts/CodeGeneratorJS.pm:

(PrototypeFunctionCount):
(GeneratePropertiesHashTable):
(InterfaceNeedsIterator):
(GenerateImplementation):
(GenerateParametersCheck):

  • bindings/scripts/IDLParser.pm:

(assert):
(parseAttributeOrOperationOrIterator):
(parseSerializer):
(parseAttributeOrOperationRest):
(parseAttribute):
(parseAttributeRest):
(parseOperationOrIterator):
(parseOptionalIterableInterface):
(parseMapLikeRest):
(parseMapLikeProperties):
(parseOperationRest):
(applyMemberList):

  • bindings/scripts/test/JS/JSMapLike.cpp: Added.
  • bindings/scripts/test/JS/JSMapLike.h: Added.
  • bindings/scripts/test/JS/JSReadOnlyMapLike.cpp: Added.
  • bindings/scripts/test/JS/JSReadOnlyMapLike.h: Added.
  • bindings/scripts/test/TestMapLike.idl: Added.
  • bindings/scripts/test/TestReadOnlyMapLike.idl: Added.
5:20 PM Changeset in webkit [213107] by mark.lam@apple.com
  • 41 edits
    2 copies in trunk/Source

Introduce a VM Traps mechanism and refactor Watchdog to use it.
https://bugs.webkit.org/show_bug.cgi?id=168842

Reviewed by Filip Pizlo.

Source/JavaScriptCore:

Currently, the traps mechanism is only used for the JSC watchdog, and for
asynchronous termination requests (which is currently only used for worker
threads termination).

This first cut of the traps mechanism still relies on polling from DFG and FTL
code. This is done to keep the patch as small as possible. The work to do
a non-polling version of the traps mechanism for DFG and FTL code is deferred to
another patch.

In this patch, worker threads still need to set the VM::m_needAsynchronousTerminationSupport
flag to enable the traps polling in the DFG and FTL code. When we have the
non-polling version of the DFG and FTL traps mechanism, we can remove the use of
the VM::m_needAsynchronousTerminationSupport flag.

Note: this patch also separates asynchronous termination support from the JSC
watchdog. This separation allows us to significantly simplify the locking
requirements in the watchdog code, and make it easier to reason about its
correctness.

  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • bytecode/BytecodeList.json:
  • bytecode/BytecodeUseDef.h:

(JSC::computeUsesForBytecodeOffset):
(JSC::computeDefsForBytecodeOffset):

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::dumpBytecode):

  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::BytecodeGenerator):
(JSC::BytecodeGenerator::emitLoopHint):
(JSC::BytecodeGenerator::emitCheckTraps):
(JSC::BytecodeGenerator::emitWatchdog): Deleted.

  • bytecompiler/BytecodeGenerator.h:
  • dfg/DFGAbstractInterpreterInlines.h:

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

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::parseBlock):

  • dfg/DFGCapabilities.cpp:

(JSC::DFG::capabilityLevel):

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

  • dfg/DFGDoesGC.cpp:

(JSC::DFG::doesGC):

  • dfg/DFGFixupPhase.cpp:

(JSC::DFG::FixupPhase::fixupNode):

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

(JSC::DFG::safeToExecute):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileCheckTraps):

  • 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::compileCheckTraps):
(JSC::FTL::DFG::LowerDFGToB3::compileCheckWatchdogTimer): Deleted.

  • interpreter/Interpreter.cpp:

(JSC::Interpreter::executeProgram):
(JSC::Interpreter::executeCall):
(JSC::Interpreter::executeConstruct):
(JSC::Interpreter::execute):

  • jit/JIT.cpp:

(JSC::JIT::privateCompileMainPass):
(JSC::JIT::privateCompileSlowCases):

  • jit/JIT.h:
  • jit/JITOpcodes.cpp:

(JSC::JIT::emit_op_check_traps):
(JSC::JIT::emitSlow_op_check_traps):
(JSC::JIT::emit_op_watchdog): Deleted.
(JSC::JIT::emitSlow_op_watchdog): Deleted.

  • jit/JITOperations.cpp:
  • jit/JITOperations.h:
  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::LLINT_SLOW_PATH_DECL):

  • llint/LLIntSlowPaths.h:
  • llint/LowLevelInterpreter.asm:
  • llint/LowLevelInterpreter32_64.asm:
  • llint/LowLevelInterpreter64.asm:
  • runtime/VM.cpp:

(JSC::VM::~VM):
(JSC::VM::ensureWatchdog):
(JSC::VM::handleTraps):

  • runtime/VM.h:

(JSC::VM::ownerThread):
(JSC::VM::needTrapHandling):
(JSC::VM::needTrapHandlingAddress):
(JSC::VM::notifyNeedTermination):
(JSC::VM::notifyNeedWatchdogCheck):
(JSC::VM::needAsynchronousTerminationSupport):
(JSC::VM::setNeedAsynchronousTerminationSupport):

  • runtime/VMInlines.h:

(JSC::VM::shouldTriggerTermination): Deleted.

  • runtime/VMTraps.cpp: Added.

(JSC::VMTraps::fireTrap):
(JSC::VMTraps::takeTrap):

  • runtime/VMTraps.h: Added.

(JSC::VMTraps::needTrapHandling):
(JSC::VMTraps::needTrapHandlingAddress):
(JSC::VMTraps::hasTrapForEvent):
(JSC::VMTraps::setTrapForEvent):
(JSC::VMTraps::clearTrapForEvent):

  • runtime/Watchdog.cpp:

(JSC::Watchdog::Watchdog):
(JSC::Watchdog::setTimeLimit):
(JSC::Watchdog::shouldTerminate):
(JSC::Watchdog::enteredVM):
(JSC::Watchdog::exitedVM):
(JSC::Watchdog::startTimer):
(JSC::Watchdog::stopTimer):
(JSC::Watchdog::willDestroyVM):
(JSC::Watchdog::terminateSoon): Deleted.
(JSC::Watchdog::shouldTerminateSlow): Deleted.

  • runtime/Watchdog.h:

(JSC::Watchdog::shouldTerminate): Deleted.
(JSC::Watchdog::timerDidFireAddress): Deleted.

Source/WebCore:

No new tests needed because this is a re-implementation of existing functionality.

  • bindings/js/WorkerScriptController.cpp:

(WebCore::WorkerScriptController::WorkerScriptController):
(WebCore::WorkerScriptController::scheduleExecutionTermination):

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

[Modern Media Controls] Use a solid background for <audio> controls on macOS
https://bugs.webkit.org/show_bug.cgi?id=168941
<rdar://problem/30744316>

Unreviewed test gardening.

Skipping a macOS-specific test on iOS.

Patch by Antoine Quint <Antoine Quint> on 2017-02-27

  • platform/ios-simulator/TestExpectations:
5:13 PM Changeset in webkit [213105] by aestes@apple.com
  • 3 edits
    1 move in trunk/Source/WebCore

[Cocoa] Rename FileMac.mm to FileCocoa.mm
https://bugs.webkit.org/show_bug.cgi?id=168947

Reviewed by Zalan Bujtas.

  • PlatformMac.cmake:
  • WebCore.xcodeproj/project.pbxproj:
  • fileapi/FileCocoa.mm: Renamed from Source/WebCore/fileapi/FileMac.mm.
5:10 PM Changeset in webkit [213104] by commit-queue@webkit.org
  • 16 edits
    1 add in trunk

[WebRTC] Add support for libwebrtc TCP incoming connections
https://bugs.webkit.org/show_bug.cgi?id=168748

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

Source/WebKit2:

Covered by added layout tests.

When a libwebrtc server socket is signalling a new connnection through SignalNewConnection, we do:

  • Wrap the incoming socket into a LibWebRTCSocketClient
  • Store it into a pending socket map with an identifier
  • Send a message to the web process of a new connection with the server socket identifier and new connection socket identifier.

The Web process then creates a WebRTCSocket wrapper around it by sendinig a WrapNewTCPConnection message.
It then propagates the SignalNewConnection to libwebrtc code path.

  • NetworkProcess/webrtc/LibWebRTCSocketClient.cpp:

(WebKit::LibWebRTCSocketClient::LibWebRTCSocketClient):
(WebKit::LibWebRTCSocketClient::signalReadPacket):
(WebKit::LibWebRTCSocketClient::signalSentPacket):
(WebKit::LibWebRTCSocketClient::signalNewConnection):
(WebKit::LibWebRTCSocketClient::signalAddressReady):
(WebKit::LibWebRTCSocketClient::signalConnect):
(WebKit::LibWebRTCSocketClient::signalClose):

  • NetworkProcess/webrtc/LibWebRTCSocketClient.h:
  • NetworkProcess/webrtc/NetworkRTCProvider.cpp:

(WebKit::NetworkRTCProvider::wrapNewTCPConnection):
(WebKit::NetworkRTCProvider::newConnection):

  • NetworkProcess/webrtc/NetworkRTCProvider.h:
  • NetworkProcess/webrtc/NetworkRTCProvider.messages.in:
  • WebProcess/Network/webrtc/LibWebRTCSocket.cpp:

(WebKit::LibWebRTCSocket::signalNewConnection):

  • WebProcess/Network/webrtc/LibWebRTCSocket.h:
  • WebProcess/Network/webrtc/LibWebRTCSocketFactory.cpp:

(WebKit::LibWebRTCSocketFactory::createNewConnectionSocket):

  • WebProcess/Network/webrtc/LibWebRTCSocketFactory.h:
  • WebProcess/Network/webrtc/WebRTCSocket.cpp:

(WebKit::WebRTCSocket::signalNewConnection):

  • WebProcess/Network/webrtc/WebRTCSocket.h:
  • WebProcess/Network/webrtc/WebRTCSocket.messages.in:

LayoutTests:

  • webrtc/datachannel/basic-expected.txt: Added.
  • webrtc/datachannel/basic.html:
  • webrtc/routines.js:

(createConnections):
(iceCallback1):
(iceCallback2):

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

Mark fast/dom/timer-throttling-hidden-page.html as flaky.
https://bugs.webkit.org/show_bug.cgi?id=168927

Unreviewed test gardening.

  • platform/mac/TestExpectations:
4:59 PM Changeset in webkit [213102] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Mark media/modern-media-controls/rewind-button/rewind-button.html as flaky.
https://bugs.webkit.org/show_bug.cgi?id=167352

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
4:37 PM Changeset in webkit [213101] by Brent Fulgham
  • 2 edits in trunk/Source/WebKit2

[Mac] Don't use undefined sandbox rule on macOS 10.11 or earlier
https://bugs.webkit.org/show_bug.cgi?id=168942
<rdar://problem/30743376>

Reviewed by Ryosuke Niwa.

  • WebProcess/com.apple.WebProcess.sb.in:
4:13 PM Changeset in webkit [213100] by aestes@apple.com
  • 6 edits in trunk

[iOS] Enable file replacement
https://bugs.webkit.org/show_bug.cgi?id=168907
<rdar://problem/22258242>

Reviewed by David Kilzer.

Source/WebCore:

Covered by existing tests.

  • fileapi/FileMac.mm:

(WebCore::File::shouldReplaceFile): Stop using Carbon and AppKit API for determining if a
file path is a file package. Use NSURL and CoreServices instead, which exist on Mac and iOS.

Source/WTF:

  • wtf/FeatureDefines.h: Set ENABLE_FILE_REPLACEMENT to 1 on all Cocoa platforms.

LayoutTests:

  • platform/ios-simulator/TestExpectations: Un-skipped file replacement tests on iOS.
4:01 PM Changeset in webkit [213099] by commit-queue@webkit.org
  • 3 edits
    2 adds in trunk

[Modern Media Controls] Use a solid background for <audio> controls on macOS
https://bugs.webkit.org/show_bug.cgi?id=168941
<rdar://problem/30744316>

Patch by Antoine Quint <Antoine Quint> on 2017-02-27
Reviewed by Dean Jackson.

Source/WebCore:

Use a solid background for <audio> elements on macOS, the same way we do on iOS.

Test: media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-audio-background.html

  • Modules/modern-media-controls/controls/macos-media-controls.css:

(:host(audio) .media-controls.mac.inline > .controls-bar):
(:host(audio) .media-controls.mac.inline > .controls-bar > .background-tint):

LayoutTests:

Add a new test that checks that we use a solid background fill for <audio> on macOS.

  • media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-audio-background-expected.txt: Added.
  • media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-audio-background.html: Added.
3:33 PM Changeset in webkit [213098] by commit-queue@webkit.org
  • 7 edits
    4 adds in trunk

[Modern Media Controls] StatusLabel should use similar properties to TimeLabel
https://bugs.webkit.org/show_bug.cgi?id=168938
<rdar://problem/30743185>

Patch by Antoine Quint <Antoine Quint> on 2017-02-27
Reviewed by Dean Jackson.

Source/WebCore:

Ensure we use the same styling properties for StatusLabel and TimeLabel.

Tests: media/modern-media-controls/status-label/status-label-ios.html

media/modern-media-controls/status-label/status-label-macos.html

  • Modules/modern-media-controls/controls/ios-inline-media-controls.css:

(.media-controls.ios.inline .time-label,):
(.media-controls.ios.inline .time-label): Deleted.

  • Modules/modern-media-controls/controls/macos-media-controls.css:

(.media-controls.mac > .controls-bar .time-label,):
(.media-controls.mac > .controls-bar .time-label): Deleted.

  • Modules/modern-media-controls/controls/status-label.css:

(.status-label):

LayoutTests:

We add new tests to ensure we test all the various styles that can be applied
to a StatusLabel.

  • media/modern-media-controls/status-label/status-label-expected.txt:
  • media/modern-media-controls/status-label/status-label-ios-expected.txt: Added.
  • media/modern-media-controls/status-label/status-label-ios.html: Added.
  • media/modern-media-controls/status-label/status-label-macos-expected.txt: Added.
  • media/modern-media-controls/status-label/status-label-macos.html: Added.
  • media/modern-media-controls/status-label/status-label.html:
3:07 PM Changeset in webkit [213097] by commit-queue@webkit.org
  • 3 edits in trunk/Tools

Add machine-readable results for bindings tests
https://bugs.webkit.org/show_bug.cgi?id=168626

Patch by Srinivasan Vijayaraghavan <svijayaraghavan@apple.com> on 2017-02-27
Reviewed by Alexey Proskuryakov.

  • Scripts/run-bindings-tests:

(main): Add optional --json-output command-line parameter.

  • Scripts/webkitpy/bindings/main.py:

(BindingsTests.init): Add variables to store machine-readable results.
(BindingsTests.detect_changes): Store results in machine-readable form if applicable.
(BindingsTests.main): Write data to JSON file if applicable.

2:54 PM Changeset in webkit [213096] by aakash_jain@apple.com
  • 5 edits in trunk/Source/WebKit

Enable SUPPORTS_TEXT_BASED_API in WebKitLegacy for iOS
https://bugs.webkit.org/show_bug.cgi?id=168919

Reviewed by Tim Horton.

Source/WebKit:

  • WebKit.xcodeproj/project.pbxproj: Run scripts which are run for installhdrs phase for installapi phase as well.

Source/WebKit/mac:

  • Configurations/WebKitLegacy.xcconfig: Enable SUPPORTS_TEXT_BASED_API.
  • migrate-headers.sh: Run the migrate-headers script for installapi phase.
2:44 PM Changeset in webkit [213095] by mmaxfield@apple.com
  • 9 edits in trunk/Source

Rename ICU cursor iterator to caret iterator
https://bugs.webkit.org/show_bug.cgi?id=168206

Reviewed by Simon Fraser.

Source/WebCore:

Mechanical find/replace.

No new tests because there is no behavior change.

  • platform/graphics/ComplexTextController.cpp:

(WebCore::ComplexTextController::offsetForPosition):

  • rendering/RenderText.cpp:

(WebCore::RenderText::previousOffset):
(WebCore::RenderText::nextOffset):

Source/WTF:

  • wtf/text/TextBreakIterator.cpp:

(WTF::mapModeToBackingIterator):

  • wtf/text/TextBreakIterator.h:
  • wtf/text/cf/TextBreakIteratorCF.h:

(WTF::TextBreakIteratorCF::TextBreakIteratorCF):

  • wtf/text/icu/TextBreakIteratorICU.h:

(WTF::caretRules):
(WTF::TextBreakIteratorICU::TextBreakIteratorICU):
(WTF::cursorRules): Deleted.

  • wtf/text/mac/TextBreakIteratorInternalICUMac.mm:

(WTF::mapModeToBackingIterator):

2:41 PM Changeset in webkit [213094] by mmaxfield@apple.com
  • 10 edits
    2 adds in trunk

Unprefix -webkit-line-break
https://bugs.webkit.org/show_bug.cgi?id=168213

Reviewed by Darin Adler.

Source/WebCore:

We support the property as specced.

Test: fast/text/line-break-unprefixed.html

  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::ComputedStyleExtractor::propertyValue):

  • css/CSSProperties.json:
  • css/parser/CSSParserFastPaths.cpp:

(WebCore::CSSParserFastPaths::isValidKeywordPropertyAndValue):
(WebCore::CSSParserFastPaths::isKeywordPropertyID):

  • editing/Editor.cpp:

(WebCore::Editor::applyEditingStyleToElement):

  • html/HTMLElement.cpp:

(WebCore::HTMLElement::collectStyleForPresentationAttribute):

LayoutTests:

Updating expected results.

  • fast/css/getComputedStyle/computed-style-expected.txt:
  • fast/css/getComputedStyle/computed-style-without-renderer-expected.txt:
  • fast/text/line-break-unprefixed.html: Added.
  • fast/text/line-break-unprefixed-expected.html: Added.
  • svg/css/getComputedStyle-basic-expected.txt:
2:39 PM Changeset in webkit [213093] by mmaxfield@apple.com
  • 5 edits in trunk/Source

Use RAII for ICU breaking iterators
https://bugs.webkit.org/show_bug.cgi?id=168203

Reviewed by Simon Fraser.

Source/WebCore:

No new tests because there is no behavior change.

  • platform/graphics/ComplexTextController.cpp:

(WebCore::ComplexTextController::offsetForPosition):

  • rendering/RenderText.cpp:

(WebCore::RenderText::previousOffset):
(WebCore::RenderText::nextOffset):

Source/WTF:

  • wtf/text/TextBreakIterator.h:

(WTF::CachedTextBreakIterator::CachedTextBreakIterator):
(WTF::CachedTextBreakIterator::~CachedTextBreakIterator):
(WTF::CachedTextBreakIterator::preceding):
(WTF::CachedTextBreakIterator::following):
(WTF::CachedTextBreakIterator::isBoundary):

2:36 PM Changeset in webkit [213092] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Mark imported/w3c/web-platform-tests/IndexedDB/idbdatabase-deleteObjectStore-exception-order.htm as flaky.
https://bugs.webkit.org/show_bug.cgi?id=168936

Unreviewed test gardening.

  • platform/mac/TestExpectations:
1:32 PM Changeset in webkit [213091] by Wenson Hsieh
  • 6 edits in trunk

Unreviewed, roll out r213065.

Source/WebKit2:

  • UIProcess/ios/WKContentViewInteraction.h:

Tools:

We need these temporary fixes to keep the perf bots running.

  • TestWebKitAPI/Tests/ios/DataInteractionTests.mm:
  • TestWebKitAPI/ios/DataInteractionSimulator.h:
  • TestWebKitAPI/ios/DataInteractionSimulator.mm:

(-[DataInteractionSimulator _advanceProgress]):

1:26 PM Changeset in webkit [213090] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Mark inspector/controller/runtime-controller-import.html as flaky.
https://bugs.webkit.org/show_bug.cgi?id=168926

Unreviewed test gardening.

  • platform/mac/TestExpectations:
1:22 PM Changeset in webkit [213089] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Mark imported/w3c/web-platform-tests/media-source/SourceBuffer-abort.html as flaky.
https://bugs.webkit.org/show_bug.cgi?id=168094

Unreviewed test gardening.

  • platform/mac/TestExpectations:
1:08 PM Changeset in webkit [213088] by commit-queue@webkit.org
  • 29 edits
    4 deletes in trunk

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

"It broke 32-bit jsc tests in debug builds" (Requested by
saamyjoon on #webkit).

Reverted changeset:

"op_get_by_id_with_this should use inline caching"
https://bugs.webkit.org/show_bug.cgi?id=162124
http://trac.webkit.org/changeset/213019

12:51 PM Changeset in webkit [213087] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

[WinCairo][MiniBrowser] Add ca-bundle to display secure pages
https://bugs.webkit.org/show_bug.cgi?id=168486

Patch by Basuke Suzuki <Basuke.Suzuki@am.sony.com> on 2017-02-27
Reviewed by Alex Christensen.

change the order of path location search to make it possible to
configure with environment variable because bundled ca-bundle is
always available now.

  • platform/network/curl/ResourceHandleManager.cpp:

(WebCore::certificatePath):

12:46 PM Changeset in webkit [213086] by ap@apple.com
  • 3 edits in trunk/Source/WebKit2

Remove some deprecated WKPage plug-in information functions
https://bugs.webkit.org/show_bug.cgi?id=168897

Reviewed by Tim Horton.

  • UIProcess/API/C/WKPage.cpp:

(WKPageGetProcessIdentifier):
(WKPageGetPluginInformationBundleIdentifierKey): Deleted.
(WKPageGetPluginInformationBundleVersionKey): Deleted.
(WKPageGetPluginInformationDisplayNameKey): Deleted.
(WKPageGetPluginInformationFrameURLKey): Deleted.
(WKPageGetPluginInformationMIMETypeKey): Deleted.
(WKPageGetPluginInformationPageURLKey): Deleted.
(WKPageGetPluginInformationPluginspageAttributeURLKey): Deleted.
(WKPageGetPluginInformationPluginURLKey): Deleted.

  • UIProcess/API/C/WKPage.h:
12:01 PM Changeset in webkit [213085] by Chris Dumez
  • 2 edits in trunk/LayoutTests

LayoutTest fast/events/currentTarget-gc-crash.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=168917

Reviewed by Alex Christensen.

Make sure we never call finishJSTest() more than once.

  • fast/events/currentTarget-gc-crash.html:
11:55 AM Changeset in webkit [213084] by commit-queue@webkit.org
  • 5 edits
    3 adds in trunk

[Modern Media Controls] Status text does not appear on iOS
https://bugs.webkit.org/show_bug.cgi?id=168918
<rdar://problem/30737644>

Patch by Antoine Quint <Antoine Quint> on 2017-02-27
Reviewed by Dean Jackson.

Source/WebCore:

We refactor the layout code out of MacOSInlineMediaControls and into a new
InlineLayoutSupport class which IOSInlineMediaControls uses as well. Now
both the macOS and iOS inline media controls run the same layout logic to
control whether the status label or scrubber should be displayed, and which
controls should be dropped due to space constraints.

Test: media/modern-media-controls/ios-inline-media-controls/ios-inline-media-controls-status-label.html

  • Modules/modern-media-controls/controls/inline-layout-support.js: Added.

(InlineLayoutSupport):
(InlineLayoutSupport.prototype.childrenAfterPerformingLayout):

  • Modules/modern-media-controls/controls/ios-inline-media-controls.js:

(IOSInlineMediaControls.prototype.layout):
(IOSInlineMediaControls):

  • Modules/modern-media-controls/controls/macos-inline-media-controls.js:

(MacOSInlineMediaControls.prototype.layout):

  • Modules/modern-media-controls/js-files:

LayoutTests:

Add a new test checking that we correctly display the status label on iOS.

  • media/modern-media-controls/ios-inline-media-controls/ios-inline-media-controls-status-label-expected.txt: Added.
  • media/modern-media-controls/ios-inline-media-controls/ios-inline-media-controls-status-label.html: Added.
11:16 AM Changeset in webkit [213083] by ap@apple.com
  • 2 edits in trunk/Source/WebKit2

Stop exporting C++ member variables from class extensions in WKDOMInternals.h
https://bugs.webkit.org/show_bug.cgi?id=168886

Reviewed by Tim Horton.

  • WebProcess/InjectedBundle/API/mac/WKDOMInternals.h: These are @package variables.
11:02 AM Changeset in webkit [213082] by Simon Fraser
  • 4 edits in trunk

Add specification and status metadata to CSSProperties.json, and validate it
https://bugs.webkit.org/show_bug.cgi?id=168901

Reviewed by Darin Adler.

Source/WebCore:

Annotate CSS properties with data about the WebKit development status, and
where they are specified. A property has a canonical specification reference,
but individual values may have a reference to a more recent spec.

Add a list of specifications to the JSON that properties reference by key.

Enhance check-webkit-style to validate the status and spec data.

  • css/CSSProperties.json:

Tools:

Enhance check-webkit-style to validate the status and spec data in CSSProperties.json.

Current validation is basic type validation and some cross-referencing, but could be
enhanced.

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

(JSONCSSPropertiesChecker.check):
(JSONCSSPropertiesChecker.check_category):
(JSONCSSPropertiesChecker):
(JSONCSSPropertiesChecker.check_categories):
(JSONCSSPropertiesChecker.validate_url):
(JSONCSSPropertiesChecker.validate_status_type):
(JSONCSSPropertiesChecker.validate_comment):
(JSONCSSPropertiesChecker.validate_status):
(JSONCSSPropertiesChecker.validate_property_category):
(JSONCSSPropertiesChecker.validate_property_specification):
(JSONCSSPropertiesChecker.check_property):

11:01 AM Changeset in webkit [213081] by jiewen_tan@apple.com
  • 9 edits
    1 move
    18 adds in trunk

[CredentialManagement] Add IDL definitions for Credential, SiteBoundCredential, and PasswordCredential
https://bugs.webkit.org/show_bug.cgi?id=168616
<rdar://problem/30167149>

Reviewed by Daniel Bates.

Source/WebCore:

This patch adds IDL definitions for:

  1. Credential(https://w3c.github.io/webappsec-credential-management/#interfaces-credential-types-credential),
  2. SiteBoundCredential(https://w3c.github.io/webappsec-credential-management/#interfaces-credential-types-siteboundcredential), and
  3. PasswordCredential(https://w3c.github.io/webappsec-credential-management/#interfaces-credential-types-passwordcredential).

Test: credentials/idlharness.html

  • CMakeLists.txt:
  • DerivedSources.make:
  • Modules/credentials/BasicCredential.cpp: Added.

(WebCore::BasicCredential::BasicCredential):
(WebCore::BasicCredential::~BasicCredential):
(WebCore::BasicCredential::type):

  • Modules/credentials/BasicCredential.h: Added.

(WebCore::BasicCredential::id):

  • Modules/credentials/BasicCredential.idl: Added.
  • Modules/credentials/CredentialData.h: Added.
  • Modules/credentials/CredentialData.idl: Added.
  • Modules/credentials/PasswordCredential.cpp: Added.

(WebCore::PasswordCredential::PasswordCredential):
(WebCore::PasswordCredential::PasswordCredential):
Dummy constructors for now.

  • Modules/credentials/PasswordCredential.h: Added.

(WebCore::PasswordCredential::create):
(WebCore::PasswordCredential::create):
(WebCore::PasswordCredential::setIdName):
(WebCore::PasswordCredential::idName):
(WebCore::PasswordCredential::setPasswordName):
(WebCore::PasswordCredential::passwordName):
(WebCore::PasswordCredential::setAdditionalData):
(WebCore::PasswordCredential::additionalData):

  • Modules/credentials/PasswordCredential.idl: Added.
  • Modules/credentials/SiteBoundCredential.cpp: Added.

(WebCore::SiteBoundCredential::SiteBoundCredential):
(WebCore::SiteBoundCredential::~SiteBoundCredential):

  • Modules/credentials/SiteBoundCredential.h: Added.

(WebCore::SiteBoundCredential::name):
(WebCore::SiteBoundCredential::iconURL):
(WebCore::SiteBoundCredential::setOrigin):
(WebCore::SiteBoundCredential::origin):

  • Modules/credentials/SiteBoundCredential.idl: Added.
  • Modules/credentials/SiteBoundCredentialData.h: Added.
  • Modules/credentials/SiteBoundCredentialData.idl: Added.
  • WebCore.xcodeproj/project.pbxproj:

LayoutTests:

  • credentials/idlharness-expected.txt: Added.
  • credentials/idlharness.html: Added.
  • platform/mac-elcapitan/js/dom/global-constructors-attributes-expected.txt:
  • platform/mac-wk1/js/dom/global-constructors-attributes-expected.txt:
  • platform/mac-yosemite/js/dom/global-constructors-attributes-expected.txt:
  • platform/mac/js/dom/global-constructors-attributes-expected.txt:
  • resources/WebIDLParser.js: Added.
  • resources/idlharness.js: Renamed from LayoutTests/imported/w3c/resources/idlharness.js.

Removed LayoutTests/imported/w3c/resources/idlharness.js since it is not needed any more.
Added resources/idlharness.js for idl harness.

10:22 AM Changeset in webkit [213080] by jer.noble@apple.com
  • 18 edits
    2 adds in trunk

[WebRTC] Fix remote audio rendering
https://bugs.webkit.org/show_bug.cgi?id=168898

Reviewed by Eric Carlson.

Source/WebCore:

Test: webrtc/audio-peer-connection-webaudio.html

Fix MediaStreamAudioSourceNode by not bailing out early if the input sample rate doesn't match
the AudioContext's sample rate; there's code in setFormat() to do the sample rate conversion
correctly.

  • Modules/webaudio/MediaStreamAudioSourceNode.cpp:

(WebCore::MediaStreamAudioSourceNode::setFormat):

Fix AudioSampleBufferList by making the AudioConverter input proc a free function, and passing
its refCon a struct containing only the information it needs to perform its task. Because the
conversion may result in a different number of output samples than input ones, just ask to
generate the entire capacity of the scratch buffer, and signal that the input buffer was fully
converted with a special return value.

  • platform/audio/mac/AudioSampleBufferList.cpp:

(WebCore::audioConverterFromABLCallback):
(WebCore::AudioSampleBufferList::copyFrom):
(WebCore::AudioSampleBufferList::convertInput): Deleted.
(WebCore::AudioSampleBufferList::audioConverterCallback): Deleted.

  • platform/audio/mac/AudioSampleBufferList.h:

Fix AudioSampleDataSource by updating both the sampleCount and the sampleTime after doing
a sample rate conversion to take into account that both the number of samples may have changed,
as well as the timeScale of the sampleTime. This may result in small off-by-one rounding errors
due to the sample rate conversion of sampleTime, so remember what the next expected sampleTime
should be, and correct sampleTime if it is indeed off-by-one. If the pull operation has gotten
ahead of the push operation, delay the next pull by the empty amount by rolling back the
m_outputSampleOffset. Introduce the same offset behavior during pull operations.

  • platform/audio/mac/AudioSampleDataSource.h:
  • platform/audio/mac/AudioSampleDataSource.mm:

(WebCore::AudioSampleDataSource::pushSamplesInternal):
(WebCore::AudioSampleDataSource::pullSamplesInternal):
(WebCore::AudioSampleDataSource::pullAvalaibleSamplesAsChunks):

Fix MediaPlayerPrivateMediaStreamAVFObjC by obeying the m_muted property.

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

(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::setVolume):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::setMuted):

Fix LibWebRTCAudioModule by sleeping for the correct amount after emitting frames. Previously,
LibWebRTCAudioModule would sleep for a fixed amount of time, which meant it would get slowly out
of sync when emitting frames took a non-zero amount of time. Now, the amount of time before the
next cycle starts is correctly calculated, and then LibWebRTCAudioModule sleeps for a dynamic amount
of time in order to wake up correctly at the beginning of the next cycle.

  • platform/mediastream/libwebrtc/LibWebRTCAudioModule.cpp:

(WebCore::LibWebRTCAudioModule::StartPlayoutOnAudioThread):

Fix AudioTrackPrivateMediaStreamCocoa by just using the output unit's preferred format
description (with the current system sample rate), rather than whatever is the current
input description.

  • platform/mediastream/mac/AudioTrackPrivateMediaStreamCocoa.cpp:

(WebCore::AudioTrackPrivateMediaStreamCocoa::createAudioUnit):
(WebCore::AudioTrackPrivateMediaStreamCocoa::audioSamplesAvailable):

  • platform/mediastream/mac/AudioTrackPrivateMediaStreamCocoa.h:

Fix RealtimeIncomingAudioSource by actually creating an AudioSourceProvider when asked.

  • platform/mediastream/mac/RealtimeIncomingAudioSource.cpp:

(WebCore::RealtimeIncomingAudioSource::OnData):
(WebCore::RealtimeIncomingAudioSource::audioSourceProvider):

  • platform/mediastream/mac/RealtimeIncomingAudioSource.h:

Fix RealtimeOutgoingAudioSource by using the outgoing format description rather than the
incoming one to determine the sample rate, channel count, sample byte size, etc., to use
when delivering data upstream to libWebRTC.

  • platform/mediastream/mac/RealtimeOutgoingAudioSource.cpp:

(WebCore::RealtimeOutgoingAudioSource::audioSamplesAvailable):
(WebCore::RealtimeOutgoingAudioSource::pullAudioData):

  • platform/mediastream/mac/RealtimeOutgoingAudioSource.h:

Fix WebAudioSourceProviderAVFObjC by using a AudioSampleDataSource to do format and sample
rate conversion rather than trying to duplicate all that code and use a CARingBuffer and
AudioConverter directly.

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

(WebCore::WebAudioSourceProviderAVFObjC::~WebAudioSourceProviderAVFObjC):
(WebCore::WebAudioSourceProviderAVFObjC::provideInput):
(WebCore::WebAudioSourceProviderAVFObjC::prepare):
(WebCore::WebAudioSourceProviderAVFObjC::unprepare):
(WebCore::WebAudioSourceProviderAVFObjC::audioSamplesAvailable):

Fix the MockLibWebRTCAudioTrack by passing along the AddSink() sink to its AudioSourceInterface,
allowing the RealtimeOutgoingAudioSource to push data into the libWebRTC network stack. Also,
make sure m_enabled is initialized to a good value.

  • testing/MockLibWebRTCPeerConnection.h:

LayoutTests:

  • webrtc/audio-peer-connection-webaudio-expected.txt: Added.
  • webrtc/audio-peer-connection-webaudio.html: Added.
9:51 AM Changeset in webkit [213079] by matthew_hanson@apple.com
  • 5 edits in branches/safari-603.1.30.0-branch/Source

Versioning.

9:39 AM Changeset in webkit [213078] by matthew_hanson@apple.com
  • 9 edits
    1 add in branches/safari-603.1.30.0-branch

Merge r213010. rdar://problem/30704432

9:39 AM Changeset in webkit [213077] by matthew_hanson@apple.com
  • 2 edits in branches/safari-603.1.30.0-branch/Source/WebCore

Merge r212987. rdar://problem/30704432

9:39 AM Changeset in webkit [213076] by matthew_hanson@apple.com
  • 9 edits
    6 adds in branches/safari-603.1.30.0-branch

Merge r212972. rdar://problem/30704432

9:36 AM Changeset in webkit [213075] by Carlos Garcia Campos
  • 3 edits in trunk/Tools

Unreviewed. Fix two GTK+ unit tests failing after r213062.

We were building wrong Content-Disposition headers that libsoup doesn't parse correctly.

  • TestWebKitAPI/Tests/WebKit2Gtk/TestDownloads.cpp:

(addContentDispositionHTTPHeaderToResponse):

  • TestWebKitAPI/Tests/WebKit2Gtk/TestResources.cpp:

(serverCallback):

9:21 AM Changeset in webkit [213074] by achristensen@apple.com
  • 2 edits in trunk/Source/WebKit2

Optimize checkWebRTCAvailability
https://bugs.webkit.org/show_bug.cgi?id=168913

Reviewed by Darin Adler.

We can optimize startup time by using RTLD_LAZY instead of RTLD_NOW because we don't need to load all the symbols.
We just need to check whether libwebrtc.dylib can be found and is a valid dylib for the current architecture.
Also, initialize a static bool so it only needs to be checked once. Right now it's only used when initializing settings,
but if we use it for other things in the future there will be no need to reopen the dylib.

  • UIProcess/WebPreferences.cpp:

(WebKit::checkWebRTCAvailability):

9:20 AM Changeset in webkit [213073] by commit-queue@webkit.org
  • 3 edits in trunk/LayoutTests

compositing/transitions/transform-on-large-layer.html : ImageDiff produced stderr output
https://bugs.webkit.org/show_bug.cgi?id=168217

Patch by Fujii Hironori <Fujii Hironori> on 2017-02-27
Reviewed by Simon Fraser.

ImageDiff reports an error for image size mismatch of expected and
actual images. But, Nwtr ignores the errors for ref tests at the moment
(Bug 168033). They should have same window size before fixing the
bug.

  • compositing/transitions/transform-on-large-layer-expected.html:

Do not resize the window to match the actual.

  • fast/css/sticky/sticky-left-percentage-expected.html: Resize the

window to match the actual.

9:04 AM Changeset in webkit [213072] by jer.noble@apple.com
  • 3 edits in trunk/Source/WebCore

AudioSampleDataSource should not exclusively lock its read and write threads.
https://bugs.webkit.org/show_bug.cgi?id=168646

Reviewed by Eric Carlson.

Locking the write thread causes the read thread to drop audio samples and generates audible
glitches, and the realtime audio thread backing the read thread should never block. There's
no real reason to lock these threads against one another here; they both rely on the
CARingBuffer to safely and simultaneously read and write data.

  • platform/audio/mac/AudioSampleDataSource.cpp:

(WebCore::AudioSampleDataSource::setPaused):
(WebCore::AudioSampleDataSource::pushSamplesInternal):
(WebCore::AudioSampleDataSource::pushSamples):
(WebCore::AudioSampleDataSource::pullSamplesInternal):
(WebCore::AudioSampleDataSource::pullAvalaibleSamplesAsChunks):
(WebCore::AudioSampleDataSource::pullSamples):

  • platform/audio/mac/AudioSampleDataSource.h:
9:03 AM Changeset in webkit [213071] by Carlos Garcia Campos
  • 3 edits in releases/WebKitGTK/webkit-2.16/Source/WebKit2

Merge r213060 - [GTK] Flickering when leaving accelerated compositing mode
https://bugs.webkit.org/show_bug.cgi?id=168911

Reviewed by Žan Doberšek.

It doesn't always happen, and it's too fast, more noticeable in websites with a dark background, because we are
drawing a single white frame. This happens when we leave AC mode during the layer flush that schedules an update
on the compositor, which at that point only clears the area and renders nothing. However,
CoordinatedGraphicsScene::paintToCurrentGLContext() always renders a white background when no web view color has
been set. And that's the white frame we get. We could prevent that last update from happening by checking if we
still have a graphics root layer after syncDisplayState() in the layer flush, the same way we check the layer
tree host is still valid.

  • WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.h:
  • WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp:

(WebKit::CoordinatedLayerTreeHost::layerFlushTimerFired):

9:03 AM Changeset in webkit [213070] by Carlos Garcia Campos
  • 3 edits in releases/WebKitGTK/webkit-2.16/Source/WebKit2

Merge r213061 - [GTK] Rendering artifacts when resizing the window in X11 with AC mode enabled
https://bugs.webkit.org/show_bug.cgi?id=168728

Reviewed by Žan Doberšek.

This happens because the pixmap we create from the redirected window is uninitialized until the threaded
compositor renders into it. We should always initialize the pixmap right after it's created.

  • WebProcess/WebPage/gtk/AcceleratedSurfaceX11.cpp:

(WebKit::defaultVisual): Helper static method to get the default GdkVisual.
(WebKit::AcceleratedSurfaceX11::AcceleratedSurfaceX11): Use createPixmap().
(WebKit::AcceleratedSurfaceX11::createPixmap): Create and initialize the pixmap.
(WebKit::AcceleratedSurfaceX11::resize): Use createPixmap().

  • WebProcess/WebPage/gtk/AcceleratedSurfaceX11.h:
8:59 AM Changeset in webkit [213069] by jer.noble@apple.com
  • 4 edits in trunk/Source/WebCore

AudioTrackPrivateMediaStreamCocoa should not exclusively lock its read and write threads.
https://bugs.webkit.org/show_bug.cgi?id=168643

Reviewed by Eric Carlson.

Locking the write thread causes the read thread to drop audio samples and generates audible
glitches, and the realtime audio thread backing the read thread should never block. There's
no real reason to lock these threads against one another here; they both rely on the
AudioSampleDataSource and it's CARingBuffer to safely and simultaneously read and write
data.

The one piece which locks previously protected against unsafe access was during creation of
the audio unit. Without a lock, the audio unit could begin playback after the unit was
created and assigned to m_remoteIOUnit but before the ring buffer was created. To protect
against this possibility, create the unit, set the input and output descriptions, but only
assign the new audio unit to m_remoteIOUnit after the ring buffer has been created and
initialized.

  • platform/audio/mac/CAAudioStreamDescription.h:
  • platform/mediastream/mac/AudioTrackPrivateMediaStreamCocoa.cpp:

(WebCore::AudioTrackPrivateMediaStreamCocoa::~AudioTrackPrivateMediaStreamCocoa):
(WebCore::AudioTrackPrivateMediaStreamCocoa::playInternal):
(WebCore::AudioTrackPrivateMediaStreamCocoa::play):
(WebCore::AudioTrackPrivateMediaStreamCocoa::pause):
(WebCore::AudioTrackPrivateMediaStreamCocoa::setVolume):
(WebCore::AudioTrackPrivateMediaStreamCocoa::createAudioUnit):
(WebCore::AudioTrackPrivateMediaStreamCocoa::setupAudioUnit): Renamed to createAudioUnit()
(WebCore::AudioTrackPrivateMediaStreamCocoa::audioSamplesAvailable):

  • platform/mediastream/mac/AudioTrackPrivateMediaStreamCocoa.h:
8:53 AM Changeset in webkit [213068] by jer.noble@apple.com
  • 5 edits in trunk

Add public method to MediaTime for doing timeScale conversion.
https://bugs.webkit.org/show_bug.cgi?id=168860

Reviewed by Eric Carlson.

Source/WTF:

The newly public method, modeled on CMTimeConvertScale, allows callers to specify what rounding technique
will be used when converting to a new time scale.

  • wtf/MediaTime.cpp:

(WTF::MediaTime::toTimeScale):
(WTF::MediaTime::setTimeScale):

  • wtf/MediaTime.h:

Tools:

  • TestWebKitAPI/Tests/WTF/MediaTime.cpp:

(TestWebKitAPI::TEST):

8:52 AM Changeset in webkit [213067] by jfbastien@apple.com
  • 8 edits in trunk

WebAssembly: miscellaneous spec fixes part deux
https://bugs.webkit.org/show_bug.cgi?id=168861

Reviewed by Keith Miller.

JSTests:

  • wasm.yaml: more passing tests
  • wasm/Builder.js: use a Map instead of an Object for the function

index space, because Number entries such as 0 were colliding with
string entries such as "0". This in turn requires some hashing of
objects which are inserted, because Map uses Object's insertion
order when comparing.
(export.default.Builder):
(export.default.Builder.prototype._functionIndexSpaceKeyHash):
(export.default.Builder.prototype._registerFunctionToIndexSpace):
(export.default.Builder.prototype._getFunctionFromIndexSpace):

  • wasm/js-api/test_Instance.js: add a FIXME test
  • wasm/spec-tests/memory.wast.js:

(assert_unlinkable):

  • wasm/spec-tests/names.wast.js:

Source/JavaScriptCore:

  • wasm/WasmFunctionParser.h: add some FIXME
8:29 AM Changeset in webkit [213066] by commit-queue@webkit.org
  • 10 edits in trunk/Source

[WebRTC] RealtimOutgoingVideoSource should not need to do image conversion
https://bugs.webkit.org/show_bug.cgi?id=168802

Patch by Youenn Fablet <youenn@apple.com> on 2017-02-27
Reviewed by Jon Lee.

Source/ThirdParty/libwebrtc:

Exporting new symbols.
Including headers in the project file.

  • Source/webrtc/common_video/include/corevideo_frame_buffer.h:
  • Source/webrtc/common_video/include/i420_buffer_pool.h:
  • Source/webrtc/common_video/include/video_frame_buffer.h:
  • libwebrtc.xcodeproj/project.pbxproj:

Source/WebCore:

Covered by manual testing as mock sources do not hit the same code path.

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

(WebCore::AVVideoCaptureSource::currentFrameCGImage):

  • platform/mediastream/mac/RealtimeOutgoingVideoSource.cpp:

(WebCore::RealtimeOutgoingVideoSource::sendFrame):
(WebCore::RealtimeOutgoingVideoSource::videoSampleAvailable):

  • platform/mediastream/mac/RealtimeOutgoingVideoSource.h:
8:02 AM Changeset in webkit [213065] by Wenson Hsieh
  • 6 edits in trunk

Unreviewed, revert all temporary build fixes for data interaction

Rolls out r212990, r212988 and r212984.

Source/WebKit2:

  • UIProcess/ios/WKContentViewInteraction.h:

Tools:

  • TestWebKitAPI/Tests/ios/DataInteractionTests.mm:
  • TestWebKitAPI/ios/DataInteractionSimulator.h:
  • TestWebKitAPI/ios/DataInteractionSimulator.mm:

(-[DataInteractionSimulator _advanceProgress]):

7:27 AM Changeset in webkit [213064] by Antti Koivisto
  • 1 edit
    5 adds in trunk/LayoutTests

Add a test verifying cache deduplication is not sensitive to SHA1 collision attack
https://bugs.webkit.org/show_bug.cgi?id=168774

Reviewed by Alex Christensen.

We use SHA1 for deduplicating disk cache resources. Since a real world SHA1 collision was demonstrated
recently (http://shattered.io/) we can add a test that shows it can't be used for cache poisoning.

There are two protections in the cache code that both individually stop this type of attack:

  • When deduplicating the data is verified to be equal by a bytewise comparison.
  • SHA1 computations include random salt unique to cache instance.

Commenting out both protections is needed to make this test fail.

  • http/tests/cache/disk-cache/resources/make-sha1-collision.php: Added.

This script turns the nocolliding pdfs into colliding ones on the fly, in memory. This way we don't need
to land the colliding versions and risk blowing up the infrastructure.

  • http/tests/cache/disk-cache/resources/shattered-nocollision-1.pdf: Added.
  • http/tests/cache/disk-cache/resources/shattered-nocollision-2.pdf: Added.

shasum shattered-nocollision-*

5439274cf677fe3b7c51264f88a5ecee97319ee9 shattered-nocollision-1.pdf
7fdd163dc21064b7f26e1199fc560ee6e0307498 shattered-nocollision-2.pdf

  • http/tests/cache/disk-cache/shattered-deduplication-expected.html: Added.
  • http/tests/cache/disk-cache/shattered-deduplication.html: Added.
7:20 AM Changeset in webkit [213063] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit/win

[Win] Http preload tests are failing.
https://bugs.webkit.org/show_bug.cgi?id=168910

Reviewed by Alex Christensen.

The feature is not enabled.

  • WebView.cpp:

(WebView::notifyPreferencesChanged):

6:48 AM Changeset in webkit [213062] by Carlos Garcia Campos
  • 4 edits
    2 adds in trunk

[GTK] Downloads attributes tests are failing
https://bugs.webkit.org/show_bug.cgi?id=168871

Reviewed by Michael Catanzaro.

Source/WebCore:

Use libsoup to get the suggested filename from the Content-Disposition header instead of buggy
filenameFromHTTPContentDisposition().

Fixes: fast/dom/HTMLAnchorElement/anchor-file-blob-download-includes-doublequote.html

fast/dom/HTMLAnchorElement/anchor-file-blob-download-includes-unicode.html

  • platform/network/soup/ResourceResponseSoup.cpp:

(WebCore::ResourceResponse::platformSuggestedFilename):

LayoutTests:

Remove passing tests and add new baseline for
fast/dom/HTMLAnchorElement/anchor-file-blob-download-includes-slashes.html because libsoup handles slashes
differently but download succeeds.

  • platform/gtk/TestExpectations:
  • platform/gtk/fast/dom/HTMLAnchorElement/anchor-file-blob-download-includes-slashes-expected.txt: Added.
6:42 AM Changeset in webkit [213061] by Carlos Garcia Campos
  • 3 edits in trunk/Source/WebKit2

[GTK] Rendering artifacts when resizing the window in X11 with AC mode enabled
https://bugs.webkit.org/show_bug.cgi?id=168728

Reviewed by Žan Doberšek.

This happens because the pixmap we create from the redirected window is uninitialized until the threaded
compositor renders into it. We should always initialize the pixmap right after it's created.

  • WebProcess/WebPage/gtk/AcceleratedSurfaceX11.cpp:

(WebKit::defaultVisual): Helper static method to get the default GdkVisual.
(WebKit::AcceleratedSurfaceX11::AcceleratedSurfaceX11): Use createPixmap().
(WebKit::AcceleratedSurfaceX11::createPixmap): Create and initialize the pixmap.
(WebKit::AcceleratedSurfaceX11::resize): Use createPixmap().

  • WebProcess/WebPage/gtk/AcceleratedSurfaceX11.h:
6:38 AM Changeset in webkit [213060] by Carlos Garcia Campos
  • 3 edits in trunk/Source/WebKit2

[GTK] Flickering when leaving accelerated compositing mode
https://bugs.webkit.org/show_bug.cgi?id=168911

Reviewed by Žan Doberšek.

It doesn't always happen, and it's too fast, more noticeable in websites with a dark background, because we are
drawing a single white frame. This happens when we leave AC mode during the layer flush that schedules an update
on the compositor, which at that point only clears the area and renders nothing. However,
CoordinatedGraphicsScene::paintToCurrentGLContext() always renders a white background when no web view color has
been set. And that's the white frame we get. We could prevent that last update from happening by checking if we
still have a graphics root layer after syncDisplayState() in the layer flush, the same way we check the layer
tree host is still valid.

  • WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.h:
  • WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp:

(WebKit::CoordinatedLayerTreeHost::layerFlushTimerFired):

6:34 AM Changeset in webkit [213059] by Carlos Garcia Campos
  • 3 edits in releases/WebKitGTK/webkit-2.16/Source/WebCore

Merge r212860 - 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.

6:34 AM Changeset in webkit [213058] by Carlos Garcia Campos
  • 5 edits in releases/WebKitGTK/webkit-2.16/Source/WebCore

Merge r212854 - 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
<rdar://problem/30659469>

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):

6:29 AM Changeset in webkit [213057] by Carlos Garcia Campos
  • 8 edits in releases/WebKitGTK/webkit-2.16/Source/WebCore

Merge r212843 - Simple line layout: ensureLineBoxes for paginated content.
https://bugs.webkit.org/show_bug.cgi?id=168729
<rdar://problem/30654400>

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):

6:24 AM Changeset in webkit [213056] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.16/Tools

Merge r212839 - [GTK] Do not use g_return_if_fail in EventSenderProxy::continuousMouseScrollBy
https://bugs.webkit.org/show_bug.cgi?id=168721

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2017-02-22
Reviewed by Michael Catanzaro.

Use WTFLogAlways instead. It's still shown in stderr, but it won't crash if we ever run tests with fatal
criticals.

  • WebKitTestRunner/gtk/EventSenderProxyGtk.cpp:

(WTR::EventSenderProxy::continuousMouseScrollBy):

6:21 AM Changeset in webkit [213055] by graouts@webkit.org
  • 5 edits
    1 copy
    1 add in trunk

[Modern Media Controls] Dragging controls in fullscreen on macOS prevents scrubbing or interacting with controls
https://bugs.webkit.org/show_bug.cgi?id=168820
<rdar://problem/30690281>

Reviewed by Jon Lee.

Source/WebCore:

We broke this in https://bugs.webkit.org/show_bug.cgi?id=168755. We restore the check that the
event target when initiating a drag is the controls bar itself and not some of its content.

Since this wasn't caught by our existing tests, we add a test that attemps to initiate a drag
starting over one of the controls and notice that no dragging occurs.

We also fix an issue where we wouldn't update the layout of the left container as its icon
buttons would load, which would cause the layout width of the left container to be incorrect
and the related tests to time out.

Test: media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-drag-is-prevented-over-button.html

  • Modules/modern-media-controls/controls/macos-fullscreen-media-controls.js:

(MacOSFullscreenMediaControls.prototype.layout):
(MacOSFullscreenMediaControls.prototype._handleMousedown):

LayoutTests:

Making the existing test more robust and adding a new test that checks what happens
when we initiate a drag over some controls.

  • media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-drag-expected.txt:
  • media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-drag-is-prevented-over-button-expected.txt: Added.
  • media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-drag-is-prevented-over-button.html: Added.
  • media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-drag.html:
6:09 AM Changeset in webkit [213054] by achristensen@apple.com
  • 12 edits in trunk

[libwebrtc] Enable WebRTC in some Production Builds
https://bugs.webkit.org/show_bug.cgi?id=168858

Source/JavaScriptCore:

  • Configurations/FeatureDefines.xcconfig:

Source/WebCore:

  • Configurations/FeatureDefines.xcconfig:

Source/WebCore/PAL:

  • Configurations/FeatureDefines.xcconfig:

Source/WebKit/mac:

  • Configurations/FeatureDefines.xcconfig:

Source/WebKit2:

  • Configurations/FeatureDefines.xcconfig:

Tools:

  • TestWebKitAPI/Configurations/FeatureDefines.xcconfig:
5:59 AM Changeset in webkit [213053] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.16/Source/WebCore

Merge r212830 - [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.

5:58 AM Changeset in webkit [213052] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.16

Merge r212829 - [GTK] [2.15.90] Disable RESOURCE_USAGE on non-Linux systems
https://bugs.webkit.org/show_bug.cgi?id=168714

Reviewed by Carlos Garcia Campos.

  • Source/cmake/OptionsGTK.cmake:
5:57 AM Changeset in webkit [213051] by Carlos Garcia Campos
  • 4 edits
    2 adds in releases/WebKitGTK/webkit-2.16

Merge r212828 - REGRESSION(r207669): Crash after mutating selector text
https://bugs.webkit.org/show_bug.cgi?id=168655
<rdar://problem/30632111>

Reviewed by Andreas Kling.

Source/WebCore:

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:

LayoutTests:

  • fast/css/selector-text-mutation-crash-expected.txt: Added.
  • fast/css/selector-text-mutation-crash.html: Added.
5:45 AM Changeset in webkit [213050] by Carlos Garcia Campos
  • 5 edits
    2 adds in releases/WebKitGTK/webkit-2.16/Source/WebCore

Merge r212823 - [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:
5:44 AM Changeset in webkit [213049] by Carlos Garcia Campos
  • 17 edits
    13 adds in releases/WebKitGTK/webkit-2.16

Merge r212818 - JSModuleNamespace object should have IC
https://bugs.webkit.org/show_bug.cgi?id=160590

Reviewed by Saam Barati.

JSTests:

  • modules/module-assert-access-binding.js: Added.
  • modules/module-assert-access-namespace.js: Added.
  • modules/namespace-empty.js: Added.

(from.string_appeared_here.access):
(i.shouldThrow):

  • stress/module-namespace-access-change.js: Added.

(shouldBe):
(access):
(import.string_appeared_here.then):

  • stress/module-namespace-access-non-constant.js: Added.

(shouldBe):
(import.string_appeared_here.then):

  • stress/module-namespace-access-poly.js: Added.

(shouldBe):
(access):
(import.string_appeared_here.then):

  • stress/module-namespace-access-transitive-exports.js: Added.

(shouldBe):
(import.string_appeared_here.then):

  • stress/module-namespace-access.js: Added.

(shouldBe):
(import.string_appeared_here.then):

  • stress/resources/module-namespace-access-transitive-exports-2.js: Added.

(export.cocoa):
(export.change):

  • stress/resources/module-namespace-access-transitive-exports.js: Added.
  • stress/resources/module-namespace-access.js: Added.

(export.cocoa):
(export.change):

Source/JavaScriptCore:

This patch optimizes accesses to module namespace objects.

  1. Cache the resolutions for module namespace objects.

When constructing the module namespace object, we already resolves all the exports.
The module namespace object caches this result and leverage it in the later access in
getOwnPropertySlot. This avoids resolving bindings through resolveExport.

  1. Introduce ModuleNamespaceLoad IC.

This patch adds new IC for module namespace objects. The mechanism is simple, getOwnPropertySlot
tells us about module namespace object resolution. The IC first checks whether the given object
is an expected module namespace object. If this check succeeds, we load the value from the module
environment.

  1. Introduce DFG/FTL optimization.

After exploiting module namespace object accesses in (2), DFG can recognize this in ByteCodeParser.
DFG will convert it to CheckCell with the namespace object and GetClosureVar from the cached environment.
At that time, we have a chance to fold it to the constant.

This optimization improves the performance of accessing to module namespace objects.

Before

$ time ../../WebKitBuild/module-ic-tot/Release/bin/jsc -m module-assert-access-namespace.js
../../WebKitBuild/module-ic-tot/Release/bin/jsc -m 0.43s user 0.03s system 101% cpu 0.451 total
$ time ../../WebKitBuild/module-ic-tot/Release/bin/jsc -m module-assert-access-binding.js
../../WebKitBuild/module-ic-tot/Release/bin/jsc -m 0.08s user 0.02s system 103% cpu 0.104 total

After

$ time ../../WebKitBuild/module-ic/Release/bin/jsc -m module-assert-access-namespace.js
../../WebKitBuild/module-ic/Release/bin/jsc -m 0.11s user 0.01s system 106% cpu 0.109 total
$ time ../../WebKitBuild/module-ic/Release/bin/jsc -m module-assert-access-binding.js
../../WebKitBuild/module-ic/Release/bin/jsc -m module-assert-access-binding.j 0.08s user 0.02s system 102% cpu 0.105 total

  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • bytecode/AccessCase.cpp:

(JSC::AccessCase::create):
(JSC::AccessCase::guardedByStructureCheck):
(JSC::AccessCase::canReplace):
(JSC::AccessCase::visitWeak):
(JSC::AccessCase::generateWithGuard):
(JSC::AccessCase::generateImpl):

  • bytecode/AccessCase.h:
  • bytecode/GetByIdStatus.cpp:

(JSC::GetByIdStatus::GetByIdStatus):
(JSC::GetByIdStatus::computeForStubInfoWithoutExitSiteFeedback):
(JSC::GetByIdStatus::makesCalls):
(JSC::GetByIdStatus::dump):

  • bytecode/GetByIdStatus.h:

(JSC::GetByIdStatus::isModuleNamespace):
(JSC::GetByIdStatus::takesSlowPath):
(JSC::GetByIdStatus::moduleNamespaceObject):
(JSC::GetByIdStatus::moduleEnvironment):
(JSC::GetByIdStatus::scopeOffset):

  • bytecode/ModuleNamespaceAccessCase.cpp: Added.

(JSC::ModuleNamespaceAccessCase::ModuleNamespaceAccessCase):
(JSC::ModuleNamespaceAccessCase::create):
(JSC::ModuleNamespaceAccessCase::~ModuleNamespaceAccessCase):
(JSC::ModuleNamespaceAccessCase::clone):
(JSC::ModuleNamespaceAccessCase::emit):

  • bytecode/ModuleNamespaceAccessCase.h: Added.

(JSC::ModuleNamespaceAccessCase::moduleNamespaceObject):
(JSC::ModuleNamespaceAccessCase::moduleEnvironment):
(JSC::ModuleNamespaceAccessCase::scopeOffset):

  • bytecode/PolymorphicAccess.cpp:

(WTF::printInternal):

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::handleModuleNamespaceLoad):
(JSC::DFG::ByteCodeParser::handleGetById):

  • jit/AssemblyHelpers.h:

(JSC::AssemblyHelpers::loadValue):

  • jit/Repatch.cpp:

(JSC::tryCacheGetByID):

  • runtime/AbstractModuleRecord.cpp:

(JSC::AbstractModuleRecord::getModuleNamespace):

  • runtime/JSModuleNamespaceObject.cpp:

(JSC::JSModuleNamespaceObject::finishCreation):
(JSC::JSModuleNamespaceObject::visitChildren):
(JSC::getValue):
(JSC::JSModuleNamespaceObject::getOwnPropertySlot):
(JSC::JSModuleNamespaceObject::getOwnPropertyNames):

  • runtime/JSModuleNamespaceObject.h:

(JSC::isJSModuleNamespaceObject):
(JSC::JSModuleNamespaceObject::create): Deleted.
(JSC::JSModuleNamespaceObject::createStructure): Deleted.
(JSC::JSModuleNamespaceObject::moduleRecord): Deleted.

  • runtime/JSModuleRecord.h:

(JSC::JSModuleRecord::moduleEnvironment): Deleted.

  • runtime/PropertySlot.h:

(JSC::PropertySlot::PropertySlot):
(JSC::PropertySlot::domJIT):
(JSC::PropertySlot::moduleNamespaceSlot):
(JSC::PropertySlot::setValueModuleNamespace):
(JSC::PropertySlot::setCacheableCustom):

5:25 AM Changeset in webkit [213048] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.16/Source/WebKit2

Merge r212816 - NetworkProcess: Stop disabling buffering when NETWORK_CACHE is disabled in build
https://bugs.webkit.org/show_bug.cgi?id=168637

Reviewed by Alex Christensen.

It was added in r193752 as part of bug #137692 to fix an infinite loop in network process that happened in EFL
because they didn't enable the network cache at that time. I think that was actually a workaround, and it was
added without any comment so it has stayed there even when EFL enabled disk cache, and now that is gone. Looking
at current code I see no reason why buffering can't work with the disk cache disabled, so I think it's time to
remove that workaround.

  • WebProcess/Network/WebLoaderStrategy.cpp:

(WebKit::maximumBufferingTime):

5:24 AM Changeset in webkit [213047] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.16/Source/WebCore

Merge r212815 - [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.

5:23 AM Changeset in webkit [213046] by Carlos Garcia Campos
  • 4 edits in releases/WebKitGTK/webkit-2.16

Merge r212814 - [GTK] Test fast/events/message-port-postMessage-recursive.html times out
https://bugs.webkit.org/show_bug.cgi?id=168570

Reviewed by Michael Catanzaro.

Source/WTF:

This has recently been added and the patch is good. It's just revealing a problem with our timers. The test is
posting a message recursively, and also starts a timeout timer to finish the test. The timeout timer is never
fired for us, because WebCore timers have lower priority than the one used by postMessage. ScriptExecutionContext
uses Document::postTask, that uses scheduleOnMainThread, that uses RunLoop::dispatch(). We are not setting any
priority for the timer used by RunLoop::dispatch, so it's using the default.
Use a RunLoop::Timer to schedule tasks to the main thread instead of using RunLoop::dispatch(). This allows us
to use a different priority, that is now set to G_PRIORITY_HIGH_IDLE + 20 to match WebCore timers. But it also
avoids the double queue we had with RunLoop::dispatch(), because scheduleOnMainThread() also queues the tasks.

  • wtf/glib/MainThreadGLib.cpp:

(WTF::MainThreadDispatcher::MainThreadDispatcher):
(WTF::MainThreadDispatcher::schedule):
(WTF::MainThreadDispatcher::fired):
(WTF::scheduleDispatchFunctionsOnMainThread):

LayoutTests:

  • platform/gtk/TestExpectations:
5:21 AM Changeset in webkit [213045] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.16/Source/JavaScriptCore

Merge r212791 - Add more missing exception checks detected by running marathon.js.
https://bugs.webkit.org/show_bug.cgi?id=168697

Reviewed by Saam Barati.

  • runtime/StringPrototype.cpp:

(JSC::replaceUsingRegExpSearch):
(JSC::replaceUsingStringSearch):

3:29 AM Changeset in webkit [213044] by zandobersek@gmail.com
  • 6 edits in trunk/Source/WebCore

[TextureMapper] Clean up BitmapTextureGL construction
https://bugs.webkit.org/show_bug.cgi?id=168909

Reviewed by Carlos Garcia Campos.

Have the BitmapTextureGL constructor accept an rvalue reference pointer
to the GraphicsContext3D object. A static create() method is also added
to help with constructing these objects. Construction sites are updated
appropriately.

The BitmapTextureGL constructor is further cleaned up by moving default
member initializations together with the member declarations.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:

(WebCore::MediaPlayerPrivateGStreamerBase::pushTextureToCompositor):

  • platform/graphics/texmap/BitmapTextureGL.cpp:

(WebCore::BitmapTextureGL::BitmapTextureGL):

  • platform/graphics/texmap/BitmapTextureGL.h:
  • platform/graphics/texmap/BitmapTexturePool.cpp:

(WebCore::BitmapTexturePool::createTexture):

  • platform/graphics/texmap/TextureMapperGL.cpp:

(WebCore::TextureMapperGL::createTexture):

2:06 AM Changeset in webkit [213043] by zandobersek@gmail.com
  • 4 edits in trunk/Source/WebCore

[TextureMapper] Remove InterpolationQuality, TextDrawingModeFlags member variables
https://bugs.webkit.org/show_bug.cgi?id=168906

Reviewed by Carlos Garcia Campos.

Remove the InterpolationQuality and TextDrawingModeFlags member variables from the
TextureMapper class. These weren't modified anywhere in the code.

BitmapTexture::updateContents() still sets the image interpolation quality and
drawing mode on the ImageBuffer's GraphicsContext, but now uses the default
InterpolationDefault and TextModeFill values.

  • platform/graphics/texmap/BitmapTexture.cpp:

(WebCore::BitmapTexture::updateContents):

  • platform/graphics/texmap/TextureMapper.cpp:

(WebCore::TextureMapper::TextureMapper): Deleted.
(WebCore::TextureMapper::~TextureMapper): Deleted.

  • platform/graphics/texmap/TextureMapper.h:

(WebCore::TextureMapper::setImageInterpolationQuality): Deleted.
(WebCore::TextureMapper::setTextDrawingMode): Deleted.
(WebCore::TextureMapper::imageInterpolationQuality): Deleted.
(WebCore::TextureMapper::textDrawingMode): Deleted.

1:49 AM Changeset in webkit [213042] by aestes@apple.com
  • 18 edits
    1 copy
    42 adds
    2 deletes in trunk

Add a way to test file input without relying on drag and drop
https://bugs.webkit.org/show_bug.cgi?id=168848
<rdar://problem/22258242>

Reviewed by Tim Horton.

Tools:

Existing layout tests relied on drag and drop support in EventSender to configure a file
input element for testing. This had several problems:

  1. WebKitTestRunner has no support for beginDragWithFiles(), and DumpRenderTree doesn't support it on iOS.
  2. We have no test coverage for selecting files via the runOpenPanel UI delegate, leading to bugs like webkit.org/b/159686.

Even if we fixed (1), we'd still have a test coverage gap due to (2), so this patch
introduces a way for a test to specify the list of files that should be selected by the
runOpenPanel UI delegate: TestRunner.setOpenPanelFiles(). It also creates versions of a
number of existing file input tests using TestRunner.setOpenPanelFiles() instead of
EventSender.beginDragWithFiles().

  • DumpRenderTree/ios/DumpRenderTreeBrowserView.mm:

(-[DumpRenderTreeBrowserView webView:runOpenPanelForFileButtonWithResultListener:configuration:]):
Overrode to call the corresponding method on UIDelegate.

  • DumpRenderTree/TestRunner.cpp:

(setOpenPanelFilesCallback): Added to call TestRunner::setOpenPanelFiles().
(TestRunner::staticFunctions): Registered setOpenPanelFiles.
(TestRunner::setOpenPanelFiles): Added. Converts the JavaScript array of file paths to a
std::vector of std::strings.

  • DumpRenderTree/TestRunner.h:

(TestRunner::openPanelFiles):

  • DumpRenderTree/mac/UIDelegate.mm:

(-[UIDelegate webView:runOpenPanelForFileButtonWithResultListener:allowMultipleFiles:]):
Added. Converts the array of file paths to an NSArray of NSURLs, resolving the file paths
relative to the current test URL. Returns either the first item or all items depending on
the value of allowMultipleFiles.

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

(WTR::TestRunner::setOpenPanelFiles): Added. Converts the JavaScript array of file paths to
a WKArray of WKURLs, resolving the file paths relative to the current test URL, and sends
the WKArray to the UI process with the "SetOpenPanelFileURLs" message.

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

(WTR::runOpenPanel): Calls the WKOpenPanelResultListener with either the first item or all
items, depending on the value of WKOpenPanelParametersGetAllowsMultipleFiles().
(WTR::TestController::resetStateToConsistentValues): Clear m_openPanelFileURLs.

  • WebKitTestRunner/TestController.h:

(WTR::TestController::openPanelFileURLs):
(WTR::TestController::setOpenPanelFileURLs):

  • WebKitTestRunner/TestInvocation.cpp:

(WTR::TestInvocation::didReceiveMessageFromInjectedBundle): Added code to handle the
"SetOpenPanelFileURLs" message.

LayoutTests:

Added versions of existing file input tests that use TestRunner.setOpenPanelFiles() instead
of EventSender.beginDragWithFiles().

  • fast/dom/FileList-iterator-using-open-panel-expected.txt: Added.
  • fast/dom/FileList-iterator-using-open-panel.html: Added.
  • fast/files/apply-blob-url-to-img-using-open-panel-expected.txt: Added.
  • fast/files/apply-blob-url-to-img-using-open-panel.html: Added.
  • fast/files/apply-blob-url-to-xhr-using-open-panel-expected.txt: Added.
  • fast/files/apply-blob-url-to-xhr-using-open-panel.html: Added.
  • fast/files/file-list-test-using-open-panel-expected.txt: Added.
  • fast/files/file-list-test-using-open-panel.html: Added.
  • fast/files/file-reader-abort-using-open-panel-expected.txt: Added.
  • fast/files/file-reader-abort-using-open-panel.html: Added.
  • fast/files/file-reader-directory-crash-using-open-panel-expected.txt: Added.
  • fast/files/file-reader-directory-crash-using-open-panel.html: Added.
  • fast/files/filereader-zip-bundle-using-open-panel-expected.txt: Added.
  • fast/files/filereader-zip-bundle-using-open-panel.html: Added.
  • fast/forms/file/file-input-reset-using-open-panel-expected.html: Added.
  • fast/forms/file/file-input-reset-using-open-panel.html: Added.
  • fast/forms/file/file-reset-in-change-using-open-panel-expected.html: Added.
  • fast/forms/file/file-reset-in-change-using-open-panel.html: Added.
  • fast/forms/file/get-file-upload-using-open-panel-expected.txt: Added.
  • fast/forms/file/get-file-upload-using-open-panel.html: Added.
  • fast/forms/file/input-file-value-using-open-panel-expected.txt: Added.
  • fast/forms/file/input-file-value-using-open-panel.html: Added.
  • fast/forms/file/input-file-write-files-using-open-panel-expected.txt: Added.
  • fast/forms/file/input-file-write-files-using-open-panel.html: Added.
  • fast/history/page-cache-createObjectURL-using-open-panel-expected.txt: Added.
  • fast/history/page-cache-createObjectURL-using-open-panel.html: Added.
  • http/tests/local/blob/resources/hybrid-blob-util.js:

(this.setupForTests):
(this.runTestsWithDrag):
(this.runTestsWithOpenPanel):
(this.runTests):

  • http/tests/local/blob/script-tests/send-hybrid-blob-using-open-panel.js: Added.

(runHybridBlobTest):
(runTests.F):
(runTests.D):
(runTests):

  • http/tests/local/blob/send-hybrid-blob-using-open-panel-expected.txt: Added.
  • http/tests/local/blob/send-hybrid-blob-using-open-panel.html: Added.
  • http/tests/local/fileapi/file-last-modified-after-delete-using-open-panel-expected.txt: Added.
  • http/tests/local/fileapi/file-last-modified-after-delete-using-open-panel.html: Added.
  • http/tests/local/fileapi/file-last-modified-using-open-panel-expected.txt: Added.
  • http/tests/local/fileapi/file-last-modified-using-open-panel.html: Added.
  • http/tests/local/fileapi/resources/setup-file-input-element-for-drag.js:

(setFileInputChangeCallback):

  • http/tests/local/fileapi/script-tests/file-last-modified-after-delete-using-open-panel.js: Added.

(onFileChange):
(runTest):

  • http/tests/local/fileapi/script-tests/file-last-modified-using-open-panel.js: Added.

(onFileChange):
(runTest):

  • http/tests/local/fileapi/upload-zip-bundle-as-blob-using-open-panel-expected.txt: Added.
  • http/tests/local/fileapi/upload-zip-bundle-as-blob-using-open-panel.html: Added.
  • http/tests/local/formdata/send-form-data-constructed-from-form-using-open-panel-expected.txt: Added.
  • http/tests/local/formdata/send-form-data-constructed-from-form-using-open-panel.html: Added.
  • http/tests/local/formdata/send-form-data-with-empty-file-filename-using-open-panel-expected.txt: Added.
  • http/tests/local/formdata/send-form-data-with-empty-file-filename-using-open-panel.html: Added.
  • media/video-src-blob-using-open-panel-expected.txt: Added.
  • media/video-src-blob-using-open-panel.html: Added.
  • platform/ios-simulator/TestExpectations:
1:45 AM Changeset in webkit [213041] by rniwa@webkit.org
  • 4 edits in trunk/Websites/perf.webkit.org

A Locked indicator should be visually distinct from an unlocked indicator
https://bugs.webkit.org/show_bug.cgi?id=168868
<rdar://problem/29666054>

Reviewed by Antti Koivisto.

Added the support for specifying options.lockedIndicator in addition to options.indicator to style
an locked indicator differently from an unlocked one.

  • browser-tests/time-series-chart-tests.js: Added new test cases for indicators.

(createChartWithSampleCluster): Renamed and swapped the order of arguments to better match
TimeSeriesChart's constructor. Now the second argument is an array of source as is in the constructor.
(createInteractiveChartWithSampleCluster): Added.

  • public/v3/components/chart-styles.js:

(ChartStyles.overviewChartOptions): Changed the color of a selection to blue.
(ChartStyles.mainChartOptions): Ditto. Also use a different style for a locked indicator.

  • public/v3/components/interactive-time-series-chart.js:

(InteractiveTimeSeriesChart.prototype._layout): Removed the unused variable.
(InteractiveTimeSeriesChart.prototype._renderChartContent): Use options.lockedIndicator when rendering
a locked indicator. Also stroke the circle in addition to filling it so that we can use a blue circle
with a white hole for a locked indicator to make it even more visually distinctive from an unlocked one.

1:06 AM Changeset in webkit [213040] by Carlos Garcia Campos
  • 4 edits
    8 adds in releases/WebKitGTK/webkit-2.16

Merge r212784 - REGRESSION (r207720): /more/conformance/conformance/quickCheckAPI-S_V.html test fails
https://bugs.webkit.org/show_bug.cgi?id=168632
<rdar://problem/30620129>

Reviewed by Darin Adler.

Source/WebCore:

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:

LayoutTests:

Import layout test coverage.

  • http/tests/webgl/1.0.2/resources/webgl_test_files/conformance/context/context-lost-expected.txt: Added.
  • http/tests/webgl/1.0.2/resources/webgl_test_files/conformance/context/context-lost.html: Added.
  • http/tests/webgl/1.0.2/resources/webgl_test_files/conformance/more/conformance/argGenerators-S_V.js: Added.
  • http/tests/webgl/1.0.2/resources/webgl_test_files/conformance/more/conformance/quickCheckAPI-S_V-expected.txt: Added.
  • http/tests/webgl/1.0.2/resources/webgl_test_files/conformance/more/conformance/quickCheckAPI-S_V.html: Added.
  • http/tests/webgl/1.0.2/resources/webgl_test_files/conformance/more/conformance/quickCheckAPI.js: Added.
1:03 AM Changeset in webkit [213039] by Carlos Garcia Campos
  • 3 edits in releases/WebKitGTK/webkit-2.16/Source/JavaScriptCore

Merge r212780 - Unreviewed, fix cloop. I managed to have my local patch for relanding be the one without the cloop
fix. I keep forgetting about cloop!

  • heap/Heap.cpp:

(JSC::Heap::stopThePeriphery):

  • runtime/JSLock.cpp:
1:03 AM Changeset in webkit [213038] by Carlos Garcia Campos
  • 3 edits in releases/WebKitGTK/webkit-2.16/Source/JavaScriptCore

Merge r212779 - Add missing exception checks detected by running marathon.js.
https://bugs.webkit.org/show_bug.cgi?id=168687

Reviewed by Saam Barati.

When running the marathon.js test from https://bugs.webkit.org/show_bug.cgi?id=168580,
we get some crashes due to missing exception checks. This patch adds those
missing exception checks.

  • runtime/JSCJSValueInlines.h:

(JSC::JSValue::toPropertyKey):

  • runtime/JSObject.cpp:

(JSC::JSObject::getPrimitiveNumber):

12:24 AM Changeset in webkit [213037] by Carlos Garcia Campos
  • 41 edits
    4 copies
    2 moves
    8 adds
    1 delete in releases/WebKitGTK/webkit-2.16

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.
JSTests:


Add versions of splay that flash heap access, to simulate what might happen if a third-party app
was running concurrent GC. In this case, we might actually start the collector thread.

  • stress/splay-flash-access-1ms.js: Added.

(performance.now):
(this.Setup.setup.setup):
(this.TearDown.tearDown.tearDown):
(Benchmark):
(BenchmarkResult):
(BenchmarkResult.prototype.valueOf):
(BenchmarkSuite):
(alert):
(Math.random):
(BenchmarkSuite.ResetRNG):
(RunStep):
(BenchmarkSuite.RunSuites):
(BenchmarkSuite.CountBenchmarks):
(BenchmarkSuite.GeometricMean):
(BenchmarkSuite.GeometricMeanTime):
(BenchmarkSuite.AverageAbovePercentile):
(BenchmarkSuite.GeometricMeanLatency):
(BenchmarkSuite.FormatScore):
(BenchmarkSuite.prototype.NotifyStep):
(BenchmarkSuite.prototype.NotifyResult):
(BenchmarkSuite.prototype.NotifyError):
(BenchmarkSuite.prototype.RunSingleBenchmark):
(RunNextSetup):
(RunNextBenchmark):
(RunNextTearDown):
(BenchmarkSuite.prototype.RunStep):
(GeneratePayloadTree):
(GenerateKey):
(SplayUpdateStats):
(InsertNewNode):
(SplaySetup):
(SplayTearDown):
(SplayRun):
(SplayTree):
(SplayTree.prototype.isEmpty):
(SplayTree.prototype.insert):
(SplayTree.prototype.remove):
(SplayTree.prototype.find):
(SplayTree.prototype.findMax):
(SplayTree.prototype.findGreatestLessThan):
(SplayTree.prototype.exportKeys):
(SplayTree.prototype.splay_):
(SplayTree.Node):
(SplayTree.Node.prototype.traverse_):
(jscSetUp):
(jscTearDown):
(jscRun):
(averageAbovePercentile):
(printPercentile):

  • stress/splay-flash-access.js: Added.

(performance.now):
(this.Setup.setup.setup):
(this.TearDown.tearDown.tearDown):
(Benchmark):
(BenchmarkResult):
(BenchmarkResult.prototype.valueOf):
(BenchmarkSuite):
(alert):
(Math.random):
(BenchmarkSuite.ResetRNG):
(RunStep):
(BenchmarkSuite.RunSuites):
(BenchmarkSuite.CountBenchmarks):
(BenchmarkSuite.GeometricMean):
(BenchmarkSuite.GeometricMeanTime):
(BenchmarkSuite.AverageAbovePercentile):
(BenchmarkSuite.GeometricMeanLatency):
(BenchmarkSuite.FormatScore):
(BenchmarkSuite.prototype.NotifyStep):
(BenchmarkSuite.prototype.NotifyResult):
(BenchmarkSuite.prototype.NotifyError):
(BenchmarkSuite.prototype.RunSingleBenchmark):
(RunNextSetup):
(RunNextBenchmark):
(RunNextTearDown):
(BenchmarkSuite.prototype.RunStep):
(GeneratePayloadTree):
(GenerateKey):
(SplayUpdateStats):
(InsertNewNode):
(SplaySetup):
(SplayTearDown):
(SplayRun):
(SplayTree):
(SplayTree.prototype.isEmpty):
(SplayTree.prototype.insert):
(SplayTree.prototype.remove):
(SplayTree.prototype.find):
(SplayTree.prototype.findMax):
(SplayTree.prototype.findGreatestLessThan):
(SplayTree.prototype.exportKeys):
(SplayTree.prototype.splay_):
(SplayTree.Node):
(SplayTree.Node.prototype.traverse_):
(jscSetUp):
(jscTearDown):
(jscRun):
(averageAbovePercentile):
(printPercentile):

Source/JavaScriptCore:


This turns the collector thread's workflow into a state machine, so that the mutator thread can
run it directly. This reduces the amount of synchronization we do with the collector thread, and
means that most apps will never start the collector thread. The collector thread will still start
when we need to finish collecting and we don't have heap access.

In this new world, "stopping the world" means relinquishing control of collection to the mutator.
This means tracking who is conducting collection. I use the GCConductor enum to say who is
conducting. It's either GCConductor::Mutator or GCConductor::Collector. I use the term "conn" to
refer to the concept of conducting (having the conn, relinquishing the conn, taking the conn).
So, stopping the world means giving the mutator the conn. Releasing heap access means giving the
collector the conn.

This meant bringing back the conservative scan of the calling thread. It turns out that this
scan was too slow to be called on each GC increment because apparently setjmp() now does system
calls. So, I wrote our own callee save register saving for the GC. Then I had doubts about
whether or not it was correct, so I also made it so that the GC only rarely asks for the register
state. I think we still want to use my register saving code instead of setjmp because setjmp
seems to save things we don't need, and that could make us overly conservative.

It turns out that this new scheduling discipline makes the old space-time scheduler perform
better than the new stochastic space-time scheduler on systems with fewer than 4 cores. This is
because the mutator having the conn enables us to time the mutator<->collector context switches
by polling. The OS is never involved. So, we can use super precise timing. This allows the old
space-time schduler to shine like it hadn't before.

The splay results imply that this is all a good thing. On 2-core systems, this reduces pause
times by 40% and it increases throughput about 5%. On 1-core systems, this reduces pause times by
half and reduces throughput by 8%. On 4-or-more-core systems, this doesn't seem to have much
effect.

  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::visitChildren):

  • dfg/DFGWorklist.cpp:

(JSC::DFG::Worklist::ThreadBody::ThreadBody):
(JSC::DFG::Worklist::dump):
(JSC::DFG::numberOfWorklists):
(JSC::DFG::ensureWorklistForIndex):
(JSC::DFG::existingWorklistForIndexOrNull):
(JSC::DFG::existingWorklistForIndex):

  • dfg/DFGWorklist.h:

(JSC::DFG::numberOfWorklists): Deleted.
(JSC::DFG::ensureWorklistForIndex): Deleted.
(JSC::DFG::existingWorklistForIndexOrNull): Deleted.
(JSC::DFG::existingWorklistForIndex): Deleted.

  • heap/CollectingScope.h: Added.

(JSC::CollectingScope::CollectingScope):
(JSC::CollectingScope::~CollectingScope):

  • heap/CollectorPhase.cpp: Added.

(JSC::worldShouldBeSuspended):
(WTF::printInternal):

  • heap/CollectorPhase.h: Added.
  • heap/EdenGCActivityCallback.cpp:

(JSC::EdenGCActivityCallback::lastGCLength):

  • heap/FullGCActivityCallback.cpp:

(JSC::FullGCActivityCallback::doCollection):
(JSC::FullGCActivityCallback::lastGCLength):

  • heap/GCConductor.cpp: Added.

(JSC::gcConductorShortName):
(WTF::printInternal):

  • heap/GCConductor.h: Added.
  • heap/GCFinalizationCallback.cpp: Added.

(JSC::GCFinalizationCallback::GCFinalizationCallback):
(JSC::GCFinalizationCallback::~GCFinalizationCallback):

  • heap/GCFinalizationCallback.h: Added.

(JSC::GCFinalizationCallbackFuncAdaptor::GCFinalizationCallbackFuncAdaptor):
(JSC::createGCFinalizationCallback):

  • heap/Heap.cpp:

(JSC::Heap::Thread::Thread):
(JSC::Heap::Heap):
(JSC::Heap::lastChanceToFinalize):
(JSC::Heap::gatherStackRoots):
(JSC::Heap::updateObjectCounts):
(JSC::Heap::sweepSynchronously):
(JSC::Heap::collectAllGarbage):
(JSC::Heap::collectAsync):
(JSC::Heap::collectSync):
(JSC::Heap::shouldCollectInCollectorThread):
(JSC::Heap::collectInCollectorThread):
(JSC::Heap::checkConn):
(JSC::Heap::runNotRunningPhase):
(JSC::Heap::runBeginPhase):
(JSC::Heap::runFixpointPhase):
(JSC::Heap::runConcurrentPhase):
(JSC::Heap::runReloopPhase):
(JSC::Heap::runEndPhase):
(JSC::Heap::changePhase):
(JSC::Heap::finishChangingPhase):
(JSC::Heap::stopThePeriphery):
(JSC::Heap::resumeThePeriphery):
(JSC::Heap::stopTheMutator):
(JSC::Heap::resumeTheMutator):
(JSC::Heap::stopIfNecessarySlow):
(JSC::Heap::collectInMutatorThread):
(JSC::Heap::waitForCollector):
(JSC::Heap::acquireAccessSlow):
(JSC::Heap::releaseAccessSlow):
(JSC::Heap::relinquishConn):
(JSC::Heap::finishRelinquishingConn):
(JSC::Heap::handleNeedFinalize):
(JSC::Heap::notifyThreadStopping):
(JSC::Heap::finalize):
(JSC::Heap::addFinalizationCallback):
(JSC::Heap::requestCollection):
(JSC::Heap::waitForCollection):
(JSC::Heap::updateAllocationLimits):
(JSC::Heap::didFinishCollection):
(JSC::Heap::collectIfNecessaryOrDefer):
(JSC::Heap::notifyIsSafeToCollect):
(JSC::Heap::preventCollection):
(JSC::Heap::performIncrement):
(JSC::Heap::markToFixpoint): Deleted.
(JSC::Heap::shouldCollectInThread): Deleted.
(JSC::Heap::collectInThread): Deleted.
(JSC::Heap::stopTheWorld): Deleted.
(JSC::Heap::resumeTheWorld): Deleted.

  • heap/Heap.h:

(JSC::Heap::machineThreads):
(JSC::Heap::lastFullGCLength):
(JSC::Heap::lastEdenGCLength):
(JSC::Heap::increaseLastFullGCLength):

  • heap/HeapInlines.h:

(JSC::Heap::mutatorIsStopped): Deleted.

  • heap/HeapStatistics.cpp: Removed.
  • heap/HeapStatistics.h: Removed.
  • heap/HelpingGCScope.h: Removed.
  • heap/IncrementalSweeper.cpp:

(JSC::IncrementalSweeper::stopSweeping):
(JSC::IncrementalSweeper::willFinishSweeping): Deleted.

  • heap/IncrementalSweeper.h:
  • heap/MachineStackMarker.cpp:

(JSC::MachineThreads::gatherFromCurrentThread):
(JSC::MachineThreads::gatherConservativeRoots):
(JSC::callWithCurrentThreadState):

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

(JSC::MarkedAllocator::allocateSlowCaseImpl):

  • heap/MarkedBlock.cpp:

(JSC::MarkedBlock::Handle::sweep):

  • heap/MarkedSpace.cpp:

(JSC::MarkedSpace::sweep):

  • heap/MutatorState.cpp:

(WTF::printInternal):

  • heap/MutatorState.h:
  • heap/RegisterState.h: Added.
  • heap/RunningScope.h: Added.

(JSC::RunningScope::RunningScope):
(JSC::RunningScope::~RunningScope):

  • heap/SlotVisitor.cpp:

(JSC::SlotVisitor::SlotVisitor):
(JSC::SlotVisitor::drain):
(JSC::SlotVisitor::drainFromShared):
(JSC::SlotVisitor::drainInParallelPassively):
(JSC::SlotVisitor::donateAll):
(JSC::SlotVisitor::donate):

  • heap/SlotVisitor.h:

(JSC::SlotVisitor::codeName):

  • heap/StochasticSpaceTimeMutatorScheduler.cpp:

(JSC::StochasticSpaceTimeMutatorScheduler::beginCollection):
(JSC::StochasticSpaceTimeMutatorScheduler::synchronousDrainingDidStall):
(JSC::StochasticSpaceTimeMutatorScheduler::timeToStop):

  • heap/SweepingScope.h: Added.

(JSC::SweepingScope::SweepingScope):
(JSC::SweepingScope::~SweepingScope):

  • jit/JITWorklist.cpp:

(JSC::JITWorklist::Thread::Thread):

  • jsc.cpp:

(GlobalObject::finishCreation):
(functionFlashHeapAccess):

  • runtime/InitializeThreading.cpp:

(JSC::initializeThreading):

  • runtime/JSCellInlines.h:

(JSC::JSCell::classInfo):

  • runtime/Options.cpp:

(JSC::overrideDefaults):

  • runtime/Options.h:
  • runtime/TestRunnerUtils.cpp:

(JSC::finalizeStatsAtEndOfTesting):

Source/WebCore:

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:

Source/WTF:


Extend the use of AbstractLocker so that we can use more locking idioms.

  • wtf/AutomaticThread.cpp:

(WTF::AutomaticThreadCondition::notifyOne):
(WTF::AutomaticThreadCondition::notifyAll):
(WTF::AutomaticThreadCondition::add):
(WTF::AutomaticThreadCondition::remove):
(WTF::AutomaticThreadCondition::contains):
(WTF::AutomaticThread::AutomaticThread):
(WTF::AutomaticThread::tryStop):
(WTF::AutomaticThread::isWaiting):
(WTF::AutomaticThread::notify):
(WTF::AutomaticThread::start):
(WTF::AutomaticThread::threadIsStopping):

  • wtf/AutomaticThread.h:
  • wtf/NumberOfCores.cpp:

(WTF::numberOfProcessorCores):

  • wtf/ParallelHelperPool.cpp:

(WTF::ParallelHelperClient::finish):
(WTF::ParallelHelperClient::claimTask):
(WTF::ParallelHelperPool::Thread::Thread):
(WTF::ParallelHelperPool::didMakeWorkAvailable):
(WTF::ParallelHelperPool::hasClientWithTask):
(WTF::ParallelHelperPool::getClientWithTask):

  • wtf/ParallelHelperPool.h:

Tools:


Make more tests collect continuously.

  • Scripts/run-jsc-stress-tests:
12:07 AM Changeset in webkit [213036] by aestes@apple.com
  • 10 edits in trunk

Links cannot be activated when running Mobile Safari with external SDK build of WebKit for iOS Simulator
https://bugs.webkit.org/show_bug.cgi?id=141906

Reviewed by Tim Horton.

Source/WebKit2:

Even if Touch Events are disabled, we still need to register a
UIWebTouchEventsGestureRecognizer to record the layer tree transaction ID when a touch
begins. Click events are only generated for touches that occur after the current frame's
load has committed, and we use the transaction ID from when the touch began to implement
this check.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::handleTouchEventSynchronously):
(WebKit::WebPageProxy::resetState):

  • UIProcess/WebPageProxy.h:
  • UIProcess/ios/WKContentViewInteraction.h: Declared _layerTreeTransactionIdAtLastTouchStart.
  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView setupInteraction]): Register a UIWebTouchEventsGestureRecognizer even if
Touch Events are disabled.
(-[WKContentView cleanupInteraction]): Reset _layerTreeTransactionIdAtLastTouchStart to 0.
(-[WKContentView _webTouchEventsRecognized:]): Update _layerTreeTransactionIdAtLastTouchStart
when a touch begins, even if Touch Events are disabled.
(-[WKContentView _singleTapCommited:]): Passed _layerTreeTransactionIdAtLastTouchStart to
WebPageProxy::commitPotentialTap().
(-[WKContentView _attemptClickAtLocation:]): Ditto for WebPageProxy::handleTap().

  • UIProcess/ios/WebPageProxyIOS.mm:

(WebKit::WebPageProxy::commitPotentialTap):
(WebKit::WebPageProxy::handleTap):

LayoutTests:

Unskipped tests that now pass. Rewrote a test to use UIHelper so that it works on both
DumpRenderTree and WebKitTestRunner.

  • fast/events/can-click-element-on-page-with-active-pseudo-class-and-search-field.html:

Rewrote to use UIHelper.activateAt().

  • platform/ios-simulator-wk2/TestExpectations:
  • platform/ios-simulator/TestExpectations:

Feb 26, 2017:

11:59 PM Changeset in webkit [213035] by zandobersek@gmail.com
  • 6 edits in trunk/Source

[CoordinatedGraphics] Remove CoordinatedGraphicsScene::paintToGraphicsContext()
https://bugs.webkit.org/show_bug.cgi?id=168903

Reviewed by Carlos Garcia Campos.

Source/WebCore:

Remove the GraphicsContext pointer member from the TextureMapper class
since the getter and setter methods are not used anywhere.

  • platform/graphics/texmap/TextureMapper.cpp:

(WebCore::TextureMapper::TextureMapper):

  • platform/graphics/texmap/TextureMapper.h:

(WebCore::TextureMapper::setGraphicsContext): Deleted.
(WebCore::TextureMapper::graphicsContext): Deleted.

Source/WebKit2:

Remove the CoordinatedGraphicsScene::paintToGraphicsContext() method as it
is not used anywhere. Also enables removing the GraphicsContext pointer
member from the TextureMapper class.

  • Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:

(WebKit::CoordinatedGraphicsScene::paintToGraphicsContext): Deleted.

  • Shared/CoordinatedGraphics/CoordinatedGraphicsScene.h:
11:59 PM Changeset in webkit [213034] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.16/Source/WebKit2

Merge r212726 - Check what LocalStorage data exists in deleteDatabasesModifiedSince() before attempting deletion.
https://bugs.webkit.org/show_bug.cgi?id=168659
rdar://problem/22781730

Patch by Maureen Daum <mdaum@apple.com> on 2017-02-21
Reviewed by Brady Eidson.

Check what LocalStorage data exists in deleteDatabasesModifiedSince() before attempting deletion.
It is possible that another process has caused information to be added to LocalStorage
after we created this LocalStorageDatabaseTracker instance, so we should update our
internal state by checking the contents of StorageTracker.db and the other local
storage files so we know what databases actually exist. By calling importOriginIdentifiers()
at the start of deleteDatabasesModifiedSince(), m_origins will now have the up-to-date
list of origins LocalStorage contains data for.

  • UIProcess/Storage/LocalStorageDatabaseTracker.cpp:

(WebKit::LocalStorageDatabaseTracker::deleteDatabasesModifiedSince):

11:56 PM Changeset in webkit [213033] by Carlos Garcia Campos
  • 3 edits
    2 adds in releases/WebKitGTK/webkit-2.16

Merge r212710 - ASSERTION FAILED: "!scope.exception()" with Object.isSealed/isFrozen and uninitialized module bindings
https://bugs.webkit.org/show_bug.cgi?id=168605

Reviewed by Saam Barati.

JSTests:

  • modules/module-namespace-is-frozen.js: Added.

(from.string_appeared_here.shouldThrow):
(export.b):

  • modules/module-namespace-is-sealed.js: Added.

(from.string_appeared_here.shouldThrow):
(export.b):

Source/JavaScriptCore:

We should check exception state after calling getOwnPropertyDescriptor() since it can throw errors.

  • runtime/ObjectConstructor.cpp:

(JSC::objectConstructorIsSealed):
(JSC::objectConstructorIsFrozen):

11:55 PM Changeset in webkit [213032] by Carlos Garcia Campos
  • 6 edits in releases/WebKitGTK/webkit-2.16

Merge r212698 - ASSERTION FAILED: m_normalWorld->hasOneRef() under WorkerThread::stop
https://bugs.webkit.org/show_bug.cgi?id=168356
<rdar://problem/30592486>

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-02-20
Reviewed by Ryosuke Niwa.

Source/WebCore:

  • 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.

LayoutTests:

Unskip tests now that they no longer trigger assertions.

11:52 PM Changeset in webkit [213031] by Carlos Garcia Campos
  • 7 edits
    1 add in releases/WebKitGTK/webkit-2.16/Source/WebKit2

Merge r213030 - [GTK] Hangs when showing Google search results
https://bugs.webkit.org/show_bug.cgi?id=168699

Reviewed by Žan Doberšek.

Connection::sendOutgoingMessage() can poll forever if sendmsg fails with EAGAIN or EWOULDBLOCK. For example if
socket read buffers are full, poll will be blocked until we read the pending data, but we can't read because
the thread is blocked in the poll. In case of EAGAIN/EWOULDBLOCK we should poll using the run loop, to allow
reads to happen in thread while we wait for the socket to be writable again. In the GTK+ port we use
GSocketMonitor to poll socket file descriptor without blocking, using the run loop. This patch renames the
socket monitor as readSocketMonitor and adds another one for polling output. When sendmsg fails with
EAGAIN/EWOULDBLOCK, the pending message is saved and the write monitor starts polling. Once the socket is
writable again we send the pending message. Helper class MessageInfo and a new one UnixMessage have been moved
to its own header file to be able to use std::unique_ptr member to save the pending message.

  • Platform/IPC/Connection.cpp: Include UnixMessage.h as required by std::unique_ptr.
  • Platform/IPC/Connection.h: Add write socket monitor and also keep the GSocket as a member to reuse it.
  • Platform/IPC/glib/GSocketMonitor.cpp: Use Function instead of std::function.

(IPC::GSocketMonitor::start):

  • Platform/IPC/glib/GSocketMonitor.h:
  • Platform/IPC/unix/ConnectionUnix.cpp:

(IPC::Connection::platformInitialize): Initialize the GSocket here since we rely on it to take the ownership of
the descriptor. We were leaking it if the connection was invalidated without being opened.
(IPC::Connection::platformInvalidate): Destroy the GSocket even when not connected. Also stop the write monitor.
(IPC::Connection::processMessage):
(IPC::Connection::open):
(IPC::Connection::platformCanSendOutgoingMessages): Return false if we have a pending message to ensure
Connection doesn't try to send more messages until the pending message is dispatched. We don't need to check
m_isConnected because the caller already checks that.
(IPC::Connection::sendOutgoingMessage): Split it in two. This creates and prepares a UnixMessage and then calls
sendOutputMessage() to do the rest.
(IPC::Connection::sendOutputMessage): Send the message, or save it if sendmsg fails with EAGAIN or EWOULDBLOCK
to be sent later when the socket is writable.

  • Platform/IPC/unix/UnixMessage.h: Added.

(IPC::MessageInfo::MessageInfo):
(IPC::MessageInfo::setMessageBodyIsOutOfLine):
(IPC::MessageInfo::isMessageBodyIsOutOfLine):
(IPC::MessageInfo::bodySize):
(IPC::MessageInfo::attachmentCount):
(IPC::UnixMessage::UnixMessage):
(IPC::UnixMessage::~UnixMessage):
(IPC::UnixMessage::attachments):
(IPC::UnixMessage::messageInfo):
(IPC::UnixMessage::body):
(IPC::UnixMessage::bodySize):
(IPC::UnixMessage::appendAttachment):

  • PlatformGTK.cmake:
11:50 PM Changeset in webkit [213030] by Carlos Garcia Campos
  • 7 edits
    1 add in trunk/Source/WebKit2

[GTK] Hangs when showing Google search results
https://bugs.webkit.org/show_bug.cgi?id=168699

Reviewed by Žan Doberšek.

Connection::sendOutgoingMessage() can poll forever if sendmsg fails with EAGAIN or EWOULDBLOCK. For example if
socket read buffers are full, poll will be blocked until we read the pending data, but we can't read because
the thread is blocked in the poll. In case of EAGAIN/EWOULDBLOCK we should poll using the run loop, to allow
reads to happen in thread while we wait for the socket to be writable again. In the GTK+ port we use
GSocketMonitor to poll socket file descriptor without blocking, using the run loop. This patch renames the
socket monitor as readSocketMonitor and adds another one for polling output. When sendmsg fails with
EAGAIN/EWOULDBLOCK, the pending message is saved and the write monitor starts polling. Once the socket is
writable again we send the pending message. Helper class MessageInfo and a new one UnixMessage have been moved
to its own header file to be able to use std::unique_ptr member to save the pending message.

  • Platform/IPC/Connection.cpp: Include UnixMessage.h as required by std::unique_ptr.
  • Platform/IPC/Connection.h: Add write socket monitor and also keep the GSocket as a member to reuse it.
  • Platform/IPC/glib/GSocketMonitor.cpp: Use Function instead of std::function.

(IPC::GSocketMonitor::start):

  • Platform/IPC/glib/GSocketMonitor.h:
  • Platform/IPC/unix/ConnectionUnix.cpp:

(IPC::Connection::platformInitialize): Initialize the GSocket here since we rely on it to take the ownership of
the descriptor. We were leaking it if the connection was invalidated without being opened.
(IPC::Connection::platformInvalidate): Destroy the GSocket even when not connected. Also stop the write monitor.
(IPC::Connection::processMessage):
(IPC::Connection::open):
(IPC::Connection::platformCanSendOutgoingMessages): Return false if we have a pending message to ensure
Connection doesn't try to send more messages until the pending message is dispatched. We don't need to check
m_isConnected because the caller already checks that.
(IPC::Connection::sendOutgoingMessage): Split it in two. This creates and prepares a UnixMessage and then calls
sendOutputMessage() to do the rest.
(IPC::Connection::sendOutputMessage): Send the message, or save it if sendmsg fails with EAGAIN or EWOULDBLOCK
to be sent later when the socket is writable.

  • Platform/IPC/unix/UnixMessage.h: Added.

(IPC::MessageInfo::MessageInfo):
(IPC::MessageInfo::setMessageBodyIsOutOfLine):
(IPC::MessageInfo::isMessageBodyIsOutOfLine):
(IPC::MessageInfo::bodySize):
(IPC::MessageInfo::attachmentCount):
(IPC::UnixMessage::UnixMessage):
(IPC::UnixMessage::~UnixMessage):
(IPC::UnixMessage::attachments):
(IPC::UnixMessage::messageInfo):
(IPC::UnixMessage::body):
(IPC::UnixMessage::bodySize):
(IPC::UnixMessage::appendAttachment):

  • PlatformGTK.cmake:
11:43 PM Changeset in webkit [213029] by Carlos Garcia Campos
  • 7 edits
    2 adds in releases/WebKitGTK/webkit-2.16

Merge r212693 - Simple line layout: Implement absoluteQuadsForRange.
https://bugs.webkit.org/show_bug.cgi?id=168613
<rdar://problem/30614618>

Reviewed by Simon Fraser.

Source/WebCore:

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:

LayoutTests:

  • fast/dom/Range/simple-line-layout-getclientrects-expected.html: Added.
  • fast/dom/Range/simple-line-layout-getclientrects.html: Added.
11:43 PM Changeset in webkit [213028] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.16

Merge r212882 - [GTK] Compilation fails if using ninja together with icecream and cmake > 3.5
https://bugs.webkit.org/show_bug.cgi?id=168770

Reviewed by Carlos Garcia Campos.

If using cmake >= 3.6 together with ninja generator and icecream, the
build will fail as icecream does not correctly handle the response
files and it's not passing compiler flags from there to the compiler
itself (in our case it's not passing -fPIC which leads to the
failure while linking). Don't enable the ninja's response files
support if we fulfill the preconditions.

  • Source/cmake/OptionsCommon.cmake:
10:48 PM Changeset in webkit [213027] by Carlos Garcia Campos
  • 2 edits in trunk

Unreviewed. Bump GTK+ versions numbers.

  • Source/cmake/OptionsGTK.cmake:
10:44 PM Changeset in webkit [213026] by Carlos Garcia Campos
  • 2 edits in trunk

Unreviewed, rolling out r213024.

Wrong version numbers

Reverted changeset:

"[GTK] Unreviewed, bump GTK version numbers also on trunk"
http://trac.webkit.org/changeset/213024

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

Web Inspector: RTL: Docking Left doesn't constrain the page width
https://bugs.webkit.org/show_bug.cgi?id=168862

Patch by Devin Rousso <Devin Rousso> on 2017-02-26
Reviewed by Brian Burg.

  • UIProcess/mac/WebInspectorProxyMac.mm:

(WebKit::WebInspectorProxy::inspectedViewFrameDidChange):
Calculate the inspectedViewFrame to be the remaining space after WebInspector is opened
instead of using the original page size.

10:03 PM Changeset in webkit [213024] by Michael Catanzaro
  • 2 edits in trunk

[GTK] Unreviewed, bump GTK version numbers also on trunk

  • Source/cmake/OptionsGTK.cmake:
9:20 PM Changeset in webkit [213023] by ap@apple.com
  • 2 edits in trunk/Source/WebKit2

Stop exporting C++ member variables from WKDOMTextIterator
https://bugs.webkit.org/show_bug.cgi?id=168885

Reviewed by Dan Bernstein.

  • WebProcess/InjectedBundle/API/mac/WKDOMTextIterator.mm:
8:31 PM Changeset in webkit [213022] by ap@apple.com
  • 3 edits in trunk/Source/WebKit2

Add preprocessor guards to Mac specific files that are exposed as private headers on iOS
https://bugs.webkit.org/show_bug.cgi?id=168878

Reviewed by Dan Bernstein.

  • UIProcess/API/C/WKInspector.h:
  • WebProcess/InjectedBundle/API/c/mac/WKBundlePageBannerMac.h:
4:54 PM Changeset in webkit [213021] by ap@apple.com
  • 2 edits in trunk/Source/WebKit2

Remove spurious C++ include from _WKTestingDelegate.h
https://bugs.webkit.org/show_bug.cgi?id=168877

Reviewed by Dan Bernstein.

  • UIProcess/API/Cocoa/_WKTestingDelegate.h:
4:36 PM Changeset in webkit [213020] by mmaxfield@apple.com
  • 10 edits
    4 adds in trunk/Source

Stop compiling our own cursorMovementIterator()
https://bugs.webkit.org/show_bug.cgi?id=168211

Reviewed by David Hyatt.

Source/WebCore:

Covered by existing tests.

Hook up the caret iterator.

  • platform/graphics/ComplexTextController.cpp:

(WebCore::ComplexTextController::offsetForPosition):

  • rendering/RenderText.cpp:

(WebCore::RenderText::previousOffset):
(WebCore::RenderText::nextOffset):

  • rendering/RenderText.h:

Source/WTF:

This patch creates a unified Text Breaking API, which can be backed by either ICU
or CoreFoundation (for ports which can use it). Rather than using inheritance and
virtual functions to implement this, because there are only two subclasses, the
simpler option of just using a Variant is used instead. There is also a cache which
allows you to reuse iterators without reconstructing them. This cache is better
than the previous method of having a single static iterator because the cache
lets you use two iterators simultaneously.

In the future, I will hook up all iterators to use this shared class. However, for
this patch, I've only hooked up the caret position iterator (backed by CoreFoundation
on Cocoa ports and UBRK_CHARACTER on other ports).

  • WTF.xcodeproj/project.pbxproj:
  • wtf/spi/cf/CFStringSPI.h: Added.
  • wtf/text/TextBreakIterator.cpp:

(WTF::initializeIteratorWithRules): Deleted.
(WTF::cursorMovementIterator): Deleted.

  • wtf/text/TextBreakIterator.h:

(WTF::TextBreakIterator::preceding):
(WTF::TextBreakIterator::following):
(WTF::TextBreakIterator::isBoundary):
(WTF::TextBreakIterator::setText):
(WTF::TextBreakIterator::mode):
(WTF::TextBreakIterator::locale):
(WTF::TextBreakIteratorCache::singleton):
(WTF::TextBreakIteratorCache::take):
(WTF::TextBreakIteratorCache::put):
(WTF::TextBreakIteratorCache::TextBreakIteratorCache):

  • wtf/text/cf/TextBreakIteratorCF.h: Added.

(WTF::TextBreakIteratorCF::TextBreakIteratorCF):
(WTF::TextBreakIteratorCF::setText):
(WTF::TextBreakIteratorCF::preceding):
(WTF::TextBreakIteratorCF::following):
(WTF::TextBreakIteratorCF::isBoundary):

  • wtf/text/icu/TextBreakIteratorICU.h: Added.

(WTF::TextBreakIteratorICU::set8BitText):
(WTF::TextBreakIteratorICU::TextBreakIteratorICU):
(WTF::TextBreakIteratorICU::operator=):
(WTF::TextBreakIteratorICU::~TextBreakIteratorICU):
(WTF::TextBreakIteratorICU::setText):
(WTF::TextBreakIteratorICU::preceding):
(WTF::TextBreakIteratorICU::following):
(WTF::TextBreakIteratorICU::isBoundary):

  • wtf/text/icu/UTextProviderLatin1.h:
  • wtf/text/mac/TextBreakIteratorInternalICUMac.mm:

(WTF::mapModeToBackingIterator):
(WTF::TextBreakIterator::TextBreakIterator):

4:32 PM Changeset in webkit [213019] by commit-queue@webkit.org
  • 29 edits
    4 adds in trunk

op_get_by_id_with_this should use inline caching
https://bugs.webkit.org/show_bug.cgi?id=162124

Patch by Caio Lima <Caio Lima> on 2017-02-26
Reviewed by Saam Barati.

JSTests:

  • microbenchmarks/super-getter.js: Added.

(A.prototype.get f):
(A):
(B.prototype.get f):
(B):

  • stress/super-force-ic-fail.js: Added.

(let.assert):
(let.aObj.get foo):
(let.obj.jaz):
(let.bObj.get foo):
(let.obj2.foo):

  • stress/super-get-by-id.js: Added.

(assert):
(Base):
(Base.prototype.get name):
(Base.prototype.set name):
(Subclass.prototype.get name):
(Subclass):
(getterName):
(getterValue):
(PolymorphicSubclass.prototype.get value):
(PolymorphicSubclass):
(i.let.BaseCode):
(i.get value):
(MegamorphicSubclass.prototype.get value):
(MegamorphicSubclass):
(let.subObj.get value):
(i.catch):
(subObj.get value):
(BaseException):
(BaseException.prototype.get name):
(SubclassException.prototype.get name):
(SubclassException):
(prototype.foo):
(prototype.get name):
(SubclassExceptionComplex.prototype.get name):
(SubclassExceptionComplex):

  • stress/super-getter-reset-ic.js: Added.

(let.assert):
(let.B.f):

Source/JavaScriptCore:

This patch is enabling inline cache for op_get_by_id_with_this in all
tiers. It means that operations using super.member are going to
be able to be optimized by PIC. To enable it, we introduced a new
member of StructureStubInfo.patch named thisGPR, created a new class
to manage the IC named JITGetByIdWithThisGenerator and changed
PolymorphicAccess.regenerate that uses StructureStubInfo.patch.thisGPR
to decide the correct this value on inline caches.
With inline cached enabled, super.member are ~4.5x faster,
according microbenchmarks.

  • bytecode/AccessCase.cpp:

(JSC::AccessCase::generateImpl):

  • bytecode/PolymorphicAccess.cpp:

(JSC::PolymorphicAccess::regenerate):

  • bytecode/PolymorphicAccess.h:
  • bytecode/StructureStubInfo.cpp:

(JSC::StructureStubInfo::reset):

  • bytecode/StructureStubInfo.h:
  • dfg/DFGFixupPhase.cpp:

(JSC::DFG::FixupPhase::fixupNode):

  • dfg/DFGJITCompiler.cpp:

(JSC::DFG::JITCompiler::link):

  • dfg/DFGJITCompiler.h:

(JSC::DFG::JITCompiler::addGetByIdWithThis):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileIn):

  • dfg/DFGSpeculativeJIT.h:

(JSC::DFG::SpeculativeJIT::callOperation):

  • dfg/DFGSpeculativeJIT32_64.cpp:

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

  • dfg/DFGSpeculativeJIT64.cpp:

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

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileGetByIdWithThis):
(JSC::FTL::DFG::LowerDFGToB3::compileIn):
(JSC::FTL::DFG::LowerDFGToB3::getByIdWithThis):

  • jit/CCallHelpers.h:

(JSC::CCallHelpers::setupArgumentsWithExecState):

  • jit/ICStats.h:
  • jit/JIT.cpp:

(JSC::JIT::JIT):
(JSC::JIT::privateCompileSlowCases):
(JSC::JIT::link):

  • jit/JIT.h:
  • jit/JITInlineCacheGenerator.cpp:

(JSC::JITByIdGenerator::JITByIdGenerator):
(JSC::JITGetByIdWithThisGenerator::JITGetByIdWithThisGenerator):
(JSC::JITGetByIdWithThisGenerator::generateFastPath):

  • jit/JITInlineCacheGenerator.h:

(JSC::JITGetByIdWithThisGenerator::JITGetByIdWithThisGenerator):

  • jit/JITInlines.h:

(JSC::JIT::callOperation):

  • jit/JITOperations.cpp:
  • jit/JITOperations.h:
  • jit/JITPropertyAccess.cpp:

(JSC::JIT::emit_op_get_by_id_with_this):
(JSC::JIT::emitSlow_op_get_by_id_with_this):

  • jit/JITPropertyAccess32_64.cpp:

(JSC::JIT::emit_op_get_by_id_with_this):
(JSC::JIT::emitSlow_op_get_by_id_with_this):

  • jit/Repatch.cpp:

(JSC::appropriateOptimizingGetByIdFunction):
(JSC::appropriateGenericGetByIdFunction):
(JSC::tryCacheGetByID):

  • jit/Repatch.h:
  • jsc.cpp:

(WTF::CustomGetter::getOwnPropertySlot):
(WTF::CustomGetter::customGetterAcessor):

4:17 PM Changeset in webkit [213018] by ap@apple.com
  • 3 edits in trunk/Source/WebKit/mac

Don't import RetainPtr in WebNotification.h
https://bugs.webkit.org/show_bug.cgi?id=168876

Reviewed by Dan Bernstein.

This is an Objective-C SPI header.

  • WebView/WebNotification.h:
  • WebView/WebNotification.mm:

(-[WebNotification initWithCoreNotification:notificationID:]):
(-[WebNotification dealloc]):

4:16 PM Changeset in webkit [213017] by aakash_jain@apple.com
  • 2 edits in trunk/Source/WebKit/mac

Simplify EXPORTED_SYMBOLS_FILE variables in WebKitLegacy.xcconfig
https://bugs.webkit.org/show_bug.cgi?id=168819

Reviewed by Dan Bernstein.

  • Configurations/WebKitLegacy.xcconfig:
4:13 PM Changeset in webkit [213016] by ap@apple.com
  • 2 edits in trunk/Source/WebKit2

Remove unimplemented WKResourceLoadStatisticsManagerSetReducedTimestampResolution
https://bugs.webkit.org/show_bug.cgi?id=168880

Reviewed by Dan Bernstein.

  • UIProcess/API/C/WKResourceLoadStatisticsManager.h:
4:13 PM Changeset in webkit [213015] by ap@apple.com
  • 2 edits in trunk/Source/WebKit2

Remove leftover WebKit2 C API function declarations
https://bugs.webkit.org/show_bug.cgi?id=168879

Reviewed by Tim Horton.

  • UIProcess/API/C/WKPreferencesRefPrivate.h:
4:12 PM Changeset in webkit [213014] by ap@apple.com
  • 2 edits in trunk/Source/WebKit2

Remove some old WKSecurityOrigin binary compatibility stubs
https://bugs.webkit.org/show_bug.cgi?id=168881

Reviewed by Dan Bernstein.

  • Shared/API/c/WKSecurityOriginRef.cpp:

(WKSecurityOriginGetHost): Deleted.
(WKSecurityOriginGetProtocol): Deleted.

3:40 PM Changeset in webkit [213013] by commit-queue@webkit.org
  • 5 edits
    2 deletes in trunk

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

Made EWS very flaky (Requested by ap on #webkit).

Reverted changeset:

"[Modern Media Controls] Dragging controls in fullscreen on
macOS prevents scrubbing or interacting with controls"
https://bugs.webkit.org/show_bug.cgi?id=168820
http://trac.webkit.org/changeset/212942

3:06 PM Changeset in webkit [213012] by Wenson Hsieh
  • 6 edits
    1 copy
    1 add in trunk

REGRESSION (r211312): Double-clicking a word selects it along with the space that follows it
https://bugs.webkit.org/show_bug.cgi?id=168821
<rdar://problem/30690431>

Reviewed by Tim Horton.

Source/WebKit2:

Actually encode and decode smartInsertDeleteEnabled when sending WebPageCreationParameters over XPC.

  • Shared/WebPageCreationParameters.cpp:

(WebKit::WebPageCreationParameters::encode):
(WebKit::WebPageCreationParameters::decode):

Tools:

Adds the ability for TestWKWebView to send a sequence of clicks to its window, and uses this capability to
verify that double clicking to select a word in a WKWebView on Mac selects just the word, and not a trailing
space along with it.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit2Cocoa/double-click-does-not-select-trailing-space.html: Added.
  • TestWebKitAPI/Tests/mac/WKWebViewSelectionTests.mm: Copied from Tools/TestWebKitAPI/cocoa/TestWKWebView.h.

(TEST):

  • TestWebKitAPI/cocoa/TestWKWebView.h:
  • TestWebKitAPI/cocoa/TestWKWebView.mm:

(-[TestWKWebViewHostWindow _mouseDownAtPoint:simulatePressure:clickCount:]):
(-[TestWKWebViewHostWindow _mouseUpAtPoint:clickCount:]):
(-[TestWKWebView mouseDownAtPoint:simulatePressure:]):
(-[TestWKWebView mouseUpAtPoint:]):
(-[TestWKWebView sendClicksAtPoint:numberOfClicks:]):
(-[TestWKWebViewHostWindow _mouseDownAtPoint:simulatePressure:]): Deleted.
(-[TestWKWebViewHostWindow _mouseUpAtPoint:]): Deleted.

10:36 AM Changeset in webkit [213011] by Simon Fraser
  • 3 edits in trunk/Tools

Make check-webkit-style do some basic validation for CSSProperties.json
https://bugs.webkit.org/show_bug.cgi?id=168874

Reviewed by Zalan Bujtas.

Do checking of the keys and the value types.

Print exceptions if they occur; previously, coding errors caused silent failure.

  • Scripts/webkitpy/style/checker.py:

(CheckerDispatcher._create_checker):

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

(JSONFeaturesChecker.check):
(JSONCSSPropertiesChecker):
(JSONCSSPropertiesChecker.check):
(JSONCSSPropertiesChecker.validate_comment):
(JSONCSSPropertiesChecker.validate_type):
(JSONCSSPropertiesChecker.validate_boolean):
(JSONCSSPropertiesChecker.validate_string):
(JSONCSSPropertiesChecker.validate_array):
(JSONCSSPropertiesChecker.validate_codegen_properties):
(JSONCSSPropertiesChecker.check_property):
(JSONCSSPropertiesChecker.check_codegen_properties):

10:31 AM Changeset in webkit [213010] by Chris Dumez
  • 9 edits
    1 add in trunk

HitTestResult's linkSuggestedFilename should sanitize download attribute
https://bugs.webkit.org/show_bug.cgi?id=168856
<rdar://problem/30683109>

Reviewed by Antti Koivisto.

Source/WebCore:

HitTestResult's linkSuggestedFilename should sanitize download attribute.
This is used by the context menu's "Download Linked File" & "Download Linked
File As..." actions.

  • rendering/HitTestResult.cpp:

(WebCore::HitTestResult::linkSuggestedFilename):

  • rendering/HitTestResult.h:

Source/WebKit2:

HitTestResult's linkSuggestedFilename should sanitize download attribute.
This is used by the context menu's "Download Linked File" & "Download Linked
File As..." actions.

  • Shared/WebHitTestResultData.cpp:

(WebKit::WebHitTestResultData::WebHitTestResultData):

  • WebProcess/InjectedBundle/InjectedBundleHitTestResult.cpp:

(WebKit::InjectedBundleHitTestResult::linkSuggestedFilename):

Tools:

Add test coverage.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit2/link-with-download-attribute-with-slashes.html: Added.
  • TestWebKitAPI/Tests/WebKit2/mac/ContextMenuDownload.mm:

(TestWebKitAPI::decideDestinationWithSuggestedFilenameContainingSlashes):
(TestWebKitAPI::TEST):

Feb 25, 2017:

11:19 PM Changeset in webkit [213009] by Alan Bujtas
  • 6 edits
    2 adds in trunk/Source/WebCore

Simple line layout: Move coverage functions out of SimpleLineLayout.cpp
https://bugs.webkit.org/show_bug.cgi?id=168872

Reviewed by Simon Fraser.

SimpleLineLayout.cpp is for core functions only.

No change in functionality.

  • CMakeLists.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • rendering/RenderingAllInOne.cpp:
  • rendering/SimpleLineLayout.cpp:

(WebCore::SimpleLineLayout::canUseForWithReason):
(WebCore::SimpleLineLayout::printReason): Deleted.
(WebCore::SimpleLineLayout::printReasons): Deleted.
(WebCore::SimpleLineLayout::printTextForSubtree): Deleted.
(WebCore::SimpleLineLayout::textLengthForSubtree): Deleted.
(WebCore::SimpleLineLayout::collectNonEmptyLeafRenderBlockFlows): Deleted.
(WebCore::SimpleLineLayout::collectNonEmptyLeafRenderBlockFlowsForCurrentPage): Deleted.
(WebCore::SimpleLineLayout::toggleSimpleLineLayout): Deleted.
(WebCore::SimpleLineLayout::printSimpleLineLayoutBlockList): Deleted.
(WebCore::SimpleLineLayout::printSimpleLineLayoutCoverage): Deleted.

  • rendering/SimpleLineLayout.h:
  • rendering/SimpleLineLayoutCoverage.cpp: Added.

(WebCore::SimpleLineLayout::printReason):
(WebCore::SimpleLineLayout::printReasons):
(WebCore::SimpleLineLayout::printTextForSubtree):
(WebCore::SimpleLineLayout::textLengthForSubtree):
(WebCore::SimpleLineLayout::collectNonEmptyLeafRenderBlockFlows):
(WebCore::SimpleLineLayout::collectNonEmptyLeafRenderBlockFlowsForCurrentPage):
(WebCore::SimpleLineLayout::toggleSimpleLineLayout):
(WebCore::SimpleLineLayout::printSimpleLineLayoutBlockList):
(WebCore::SimpleLineLayout::printSimpleLineLayoutCoverage):

  • rendering/SimpleLineLayoutCoverage.h: Added.
2:18 PM Changeset in webkit [213008] by Alan Bujtas
  • 3 edits
    2 adds in trunk

Text might wrap when its preferred logical width is used for sizing the containing block.
https://bugs.webkit.org/show_bug.cgi?id=168864
<rdar://problem/30690734>

Reviewed by Antti Koivisto.

Source/WebCore:

In certain cases we end up measuring a text run in 2 different ways.

  1. preferred width computation -> slow path FontCascade::width()
  2. line breaking logic -> fast path FontCascade::widthForSimpleText()

FontCascade::width() and ::widthForSimpleText() might return different results for the same run even when
the individual glyph widths are measured to be the same. It's because they run diffrent set of
arithmetics on the float values and for certain values these arithmetics produce different results due to the floating point
precision.
Since RenderText::computePreferredLogicalWidths() currently forces us to use the slow path
(to retrieve fontfallback and glyph overflow information) the only alternative solution is to turn off the fast path
for all runs that have been already measured using the slow path (which would be just wasteful).

Test: fast/text/fast-run-width-vs-slow-run-width.html

  • platform/graphics/FontCascade.cpp:

(WebCore::FontCascade::widthForSimpleText): Mimics WidthIterator::applyFontTransforms. Use the same set of arithmetics here.

LayoutTests:

  • fast/text/fast-run-width-vs-slow-run-width-expected.html: Added.
  • fast/text/fast-run-width-vs-slow-run-width.html: Added.
11:02 AM Changeset in webkit [213007] by Simon Fraser
  • 3 edits in trunk/Source/WebCore

Improve how multiple codegen-properties are handled in CSSProperties.json
https://bugs.webkit.org/show_bug.cgi?id=168867

Reviewed by Zalan Bujtas.

To make upcoming metadata storage easier, it's better if property entries in CSSProperties.json
are always hashes. One property (line-height) used an array, in order to represent settings for
two different build flags (ENABLE_TEXT_AUTOSIZING and !ENABLE_TEXT_AUTOSIZING).

Fix by making "codegen-properties" optionally be an array. The relevant item is selected in
removeInactiveCodegenProperties() and used to replace the array.

Sort @internalProprerties when generating code, otherwise the contents of isInternalCSSProperty()
are unstable (the order in @allNames is not stable because it's the keys in a hash).

  • css/CSSProperties.json:
  • css/makeprop.pl:

(matchEnableFlags):
(removeInactiveCodegenProperties):
(isPropertyEnabled):

8:33 AM Changeset in webkit [213006] by Michael Catanzaro
  • 2 edits in trunk/LayoutTests

Unreviewed GTK test gardening

  • platform/gtk/TestExpectations:
7:47 AM Changeset in webkit [213005] by Michael Catanzaro
  • 2 edits in trunk/Source/WebKit2

[GTK] Unreviewed, document deficiency in webkit_website_data_manager_clear() API

Document that this function cannot currently delete cookie data for a particular period of
time.

  • UIProcess/API/gtk/WebKitWebsiteDataManager.cpp:
1:23 AM Changeset in webkit [213004] by commit-queue@webkit.org
  • 5 edits in trunk/Source/WebInspectorUI

Web Inspector: RTL: add support for Color Picker
https://bugs.webkit.org/show_bug.cgi?id=168853

Patch by Devin Rousso <Devin Rousso> on 2017-02-25
Reviewed by Brian Burg.

  • UserInterface/Views/ColorPicker.css:

(.color-picker):
(body[dir=ltr] .color-picker > .brightness):
(body[dir=rtl] .color-picker > .brightness):
(body[dir=ltr] .color-picker > .opacity):
(body[dir=rtl] .color-picker > .opacity):
(.color-picker > .brightness): Deleted.
(.color-picker > .opacity): Deleted.

  • UserInterface/Views/ColorWheel.js:

(WebInspector.ColorWheel.prototype.set dimension):
Set the CSS width and height style of the container element to ensure that the element only
takes up the space it needs.

  • UserInterface/Views/Slider.css:

(.slider):

  • UserInterface/Views/Variables.css:

(:root):
Add --slider-height CSS variable for convenience.

12:58 AM Changeset in webkit [213003] by Dewei Zhu
  • 4 edits in trunk/Websites/perf.webkit.org

Commit should order by 'commit_order' as secondary key.
https://bugs.webkit.org/show_bug.cgi?id=168866

Reviewed by Ryosuke Niwa.

Currently, commits are sorted by 'commit_time' only.
We should use 'commit_order' as secondary key when 'commit_time' is equal or null.

  • public/include/commit-log-fetcher.php:
  • public/include/db.php:
  • server-tests/api-commits.js:

(return.addSlaveForReport.subversionCommits.then):
(then):

12:44 AM Changeset in webkit [213002] by commit-queue@webkit.org
  • 4 edits in trunk/Source/WebInspectorUI

Web Inspector: RTL: add support for Bezier/Spring editor
https://bugs.webkit.org/show_bug.cgi?id=168854

Patch by Devin Rousso <Devin Rousso> on 2017-02-25
Reviewed by Brian Burg.

  • UserInterface/Views/BezierEditor.css:

(.bezier-editor):
(body[dir=ltr] .bezier-editor):
(body[dir=rtl] .bezier-editor):
(.bezier-editor > .bezier-preview-timing):
(body[dir=ltr] .bezier-editor > .bezier-preview-timing):
(body[dir=rtl] .bezier-editor > .bezier-preview-timing):
(@keyframes bezierPreview):
(body[dir=rtl] .bezier-editor > .bezier-container):
(.bezier-editor > .number-input-container > input):
(body[dir=ltr] .bezier-editor > .number-input-container > input):
(body[dir=rtl] .bezier-editor > .number-input-container > input):

  • UserInterface/Views/SpringEditor.css:

(.spring-editor > .spring-timing):
(.spring-editor > .spring-timing::before):
(.spring-editor > .spring-timing::after):
(body[dir=ltr] .spring-editor > .spring-timing::before, body[dir=rtl] .spring-editor > .spring-timing::after):
(body[dir=ltr] .spring-editor > .spring-timing::after, body[dir=rtl] .spring-editor > .spring-timing::before):
(.spring-editor > .number-input-container > .number-input-row > input):

  • UserInterface/Views/SpringEditor.js:

(WebInspector.SpringEditor.prototype._updatePreviewAnimation):

12:43 AM Changeset in webkit [213001] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: RTL: Elements tab Styles sidebar label/arrows need adjustment
https://bugs.webkit.org/show_bug.cgi?id=168746

Patch by Devin Rousso <Devin Rousso> on 2017-02-25
Reviewed by Brian Burg.

  • UserInterface/Views/ScopeRadioButtonNavigationItem.css:

(.scope-radio-button-navigation-item):
(.scope-radio-button-navigation-item > .scope-radio-button-item-select):
(body[dir=ltr] .scope-radio-button-navigation-item > .scope-radio-button-item-select):
(body[dir=rtl] .scope-radio-button-navigation-item > .scope-radio-button-item-select):
(.scope-radio-button-navigation-item > .scope-radio-button-item-select:focus):
(.scope-radio-button-navigation-item > .arrows):
(body[dir=ltr] .scope-radio-button-navigation-item > .arrows):
(body[dir=rtl] .scope-radio-button-navigation-item > .arrows):

12:29 AM Changeset in webkit [213000] by commit-queue@webkit.org
  • 5 edits in trunk/Source/WebInspectorUI

Web Inspector: copying a search result out of Search Tab navigation sidebar does nothing
https://bugs.webkit.org/show_bug.cgi?id=167074

Patch by Devin Rousso <Devin Rousso> on 2017-02-25
Reviewed by Brian Burg.

  • UserInterface/Base/Main.js:

(WebInspector._copy):

  • UserInterface/Views/SearchTabContentView.js:

(WebInspector.SearchTabContentView.prototype.handleCopyEvent):
Provide the container TabContentView with the opportunity to intercept the copy event.

  • UserInterface/Models/SourceCodeTextRange.js:

(WebInspector.SourceCodeTextRange.prototype.get synthesizedTextValue):

  • UserInterface/Views/SearchResultTreeElement.js:

(WebInspector.SearchResultTreeElement.prototype.get synthesizedTextValue):
Generate a string with the format ${url}:${lineNumber}:${resultLine}.

12:08 AM Changeset in webkit [212999] by commit-queue@webkit.org
  • 4 edits in trunk/Source/WebInspectorUI

Web Inspector: RTL: Styles - Rules sidebar icons are misaligned
https://bugs.webkit.org/show_bug.cgi?id=168807

Patch by Devin Rousso <Devin Rousso> on 2017-02-25
Reviewed by Brian Burg.

  • UserInterface/Views/CSSStyleDeclarationSection.css:

(.style-declaration-section > .header):
(body[dir=ltr] .style-declaration-section > .header):
(body[dir=rtl] .style-declaration-section > .header):
(.style-declaration-section.locked > .header > .locked-icon):
(body[dir=ltr] .style-declaration-section.locked > .header > .locked-icon):
(body[dir=rtl] .style-declaration-section.locked > .header > .locked-icon):
(.style-declaration-section > .header > .icon):
(body[dir=ltr] .style-declaration-section > .header > .icon):
(body[dir=rtl] .style-declaration-section > .header > .icon):
(.style-declaration-section > .header > textarea):
(body[dir=ltr] .style-declaration-section > .header > textarea):
(body[dir=rtl] .style-declaration-section > .header > textarea):
(.style-declaration-section.invalid-selector > .header > .icon):

  • UserInterface/Views/CSSStyleDetailsSidebarPanel.css:

(.sidebar > .panel.details.css-style > .content):
(.sidebar > .panel.details.css-style > .content ~ .options-container > .new-rule):
(body[dir=ltr] .sidebar > .panel.details.css-style > .content ~ .options-container > .new-rule):
(body[dir=rtl] .sidebar > .panel.details.css-style > .content ~ .options-container > .new-rule):
(.sidebar > .panel.details.css-style > .content ~ .options-container > .toggle-class-toggle):
(body[dir=ltr] .sidebar > .panel.details.css-style > .content ~ .options-container > .toggle-class-toggle):
(body[dir=rtl] .sidebar > .panel.details.css-style > .content ~ .options-container > .toggle-class-toggle):
(.sidebar > .panel.details.css-style > .content ~ .class-list-container > .new-class > .class-name-input):
(body[dir=ltr] .sidebar > .panel.details.css-style > .content ~ .class-list-container > .new-class > .class-name-input):
(body[dir=rtl] .sidebar > .panel.details.css-style > .content ~ .class-list-container > .new-class > .class-name-input):

  • UserInterface/Views/Variables.css:

(:root):

12:05 AM Changeset in webkit [212998] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: RTL: disclosure triangles in details section headers should be flipped and aligned right
https://bugs.webkit.org/show_bug.cgi?id=168283

Patch by Devin Rousso <Devin Rousso> on 2017-02-25
Reviewed by Brian Burg.

  • UserInterface/Views/DetailsSection.css:

(.details-section):
(.details-section > .header):
(body[dir=ltr] .details-section > .header):
(body[dir=rtl] .details-section > .header):
(.details-section > .header > .options > .navigation-bar):
(body[dir=ltr] .details-section > .header > :matches(label, .node-link, .go-to-arrow, .options > .navigation-bar), body[dir=rtl] .details-section > .header::before):
(body[dir=ltr] .details-section > .header::before, body[dir=rtl] .details-section > .header > :matches(label, .node-link, .go-to-arrow, .options > .navigation-bar)):
(.details-section > .header::before):
(body[dir=rtl] .details-section > .header::before):
(.details-section > .header > label):
(.details-section > .header > label > input[type="checkbox"]):
(body[dir=ltr] .details-section > .header > label > input[type="checkbox"]):
(body[dir=rtl] .details-section > .header > label > input[type="checkbox"]):
(.details-section > .header .go-to-arrow):
(body[dir=ltr] .details-section > .header .go-to-arrow):
(body[dir=rtl] .details-section > .header .go-to-arrow):
(.details-section > .content > .group > .row.simple > .label):
(body[dir=ltr] .details-section > .content > .group > .row.simple > .label):
(body[dir=rtl] .details-section > .content > .group > .row.simple > .label):
(.details-section > .content > .group > .row.simple > .value):
(body[dir=ltr] .details-section > .content > .group > .row.simple > .value):
(body[dir=rtl] .details-section > .content > .group > .row.simple > .value):
(.details-section > .content > .group > .row.simple > .value .go-to-arrow):
(body[dir=ltr] .details-section > .content > .group > .row.simple > .value .go-to-arrow):
(body[dir=rtl] .details-section > .content > .group > .row.simple > .value .go-to-arrow):
(.details-section > .header > :matches(.node-link, .go-to-arrow)): Deleted.

12:02 AM Changeset in webkit [212997] by rniwa@webkit.org
  • 7 edits in trunk/Websites/perf.webkit.org

REGRESSION(r212853): Comparisons to baseline no longer shows up
https://bugs.webkit.org/show_bug.cgi?id=168863

Reviewed by Joseph Pecoraro.

The bug was caused by ChartStatusView's code not being updated to use TimeSeriesView's.
Updated the code to use TimeSeriesView's methods to fix the bug.

Also made InteractiveTimeSeriesChart's currentPoint to return a (TimeSeriesView, point, isLocked) tuple
to consolidate it with lockedIndicator() to work towards making the baseline data points selectable.

  • browser-tests/time-series-chart-tests.js: Updated the test cases to use currentIndicator, and added

test cases for newly added lastPointInTimeRange.

  • public/v3/components/chart-pane.js:

(ChartPane.prototype.serializeState): Updated to use currentIndicator.
(ChartPane.prototype._renderFilteringPopover): Ditto.

  • public/v3/components/chart-status-view.js:

(ChartStatusView.prototype.updateStatusIfNeeded): Use currentIndicator for an interative time series.
Fixed the non-interactive chart's code path for TimeSeriesView.
(ChartStatusView.prototype._computeChartStatus): Modernized the code.
(ChartStatusView.prototype._findLastPointPriorToTime): Deleted. Replaced by TimeSeriesView's
lastPointInTimeRange.

  • public/v3/components/interactive-time-series-chart.js:

(InteractiveTimeSeriesChart.prototype.currentIndicator):
(InteractiveTimeSeriesChart.prototype.moveLockedIndicatorWithNotification):
(InteractiveTimeSeriesChart.prototype._renderChartContent):
(InteractiveTimeSeriesChart):

  • public/v3/models/time-series.js:

(TimeSeriesView.prototype.lastPointInTimeRange): Added.
(TimeSeriesView.prototype._reverse): Added. Traverses the view in the reverse order.

  • unit-tests/time-series-tests.js:

Feb 24, 2017:

11:53 PM Changeset in webkit [212996] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: RTL: add support for Error page
https://bugs.webkit.org/show_bug.cgi?id=168855

Patch by Devin Rousso <Devin Rousso> on 2017-02-24
Reviewed by Brian Burg.

  • UserInterface/Debug/UncaughtExceptionReporter.css:

(.uncaught-exception-sheet):
(body[dir=ltr] .uncaught-exception-sheet):
(body[dir=rtl] .uncaught-exception-sheet):
(.uncaught-exception-sheet h1 > img):
(body[dir=ltr] .uncaught-exception-sheet h1 > img):
(body[dir=rtl] .uncaught-exception-sheet h1 > img):
(.uncaught-exception-sheet h2 > img):
(body[dir=ltr] .uncaught-exception-sheet h2 > img):
(body[dir=rtl] .uncaught-exception-sheet h2 > img):
(.uncaught-exception-sheet dd):
(body[dir=ltr] .uncaught-exception-sheet dd):
(body[dir=rtl] .uncaught-exception-sheet dd):
(.uncaught-exception-sheet ul):
(body[dir=ltr] .uncaught-exception-sheet ul):
(body[dir=rtl] .uncaught-exception-sheet ul):

11:50 PM Changeset in webkit [212995] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Uncaught Exception: Unknown angle units "undefined"
https://bugs.webkit.org/show_bug.cgi?id=168851

Patch by Devin Rousso <Devin Rousso> on 2017-02-24
Reviewed by Brian Burg.

  • UserInterface/Views/GradientEditor.js:

(WebInspector.GradientEditor.prototype._gradientTypeChanged):

11:50 PM Changeset in webkit [212994] by Joseph Pecoraro
  • 9 edits in trunk

[Resource Timing] Media elements initiated loads should set the initiatorType to their element name (video/audio)
https://bugs.webkit.org/show_bug.cgi?id=168680

Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

  • web-platform-tests/resource-timing/rt-initiatorType-media-expected.txt:

Progression on the initiatorType.

Source/WebCore:

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::mediaPlayerCreateResourceLoader):
Pass in the element so it may be used as the initiator.

  • html/HTMLVideoElement.h:

Export create() for TestWebKitAPI to use.

  • loader/MediaResourceLoader.cpp:

(WebCore::MediaResourceLoader::MediaResourceLoader):
(WebCore::MediaResourceLoader::contextDestroyed):
(WebCore::MediaResourceLoader::requestResource):

  • loader/MediaResourceLoader.h:

Include the HTMLMediaElement as the initiator.

Tools:

  • TestWebKitAPI/Tests/WebCore/cocoa/WebCoreNSURLSession.mm:

(TestWebKitAPI::WebCoreNSURLSessionTest::SetUp):
Include a dummy HTMLVideoElement.

9:48 PM Changeset in webkit [212993] by Joseph Pecoraro
  • 97 edits
    2 moves
    13 adds in trunk

[Resource Timing] Gather timing information with reliable responseEnd time
https://bugs.webkit.org/show_bug.cgi?id=168351

Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

  • web-platform-tests/fetch/api/redirect/redirect-count-cross-origin-expected.txt:
  • web-platform-tests/fetch/api/redirect/redirect-count-cross-origin-worker-expected.txt:
  • web-platform-tests/fetch/api/redirect/redirect-count-expected.txt:
  • web-platform-tests/fetch/api/redirect/redirect-count-worker-expected.txt:
  • web-platform-tests/fetch/api/redirect/redirect-location-expected.txt:
  • web-platform-tests/fetch/api/redirect/redirect-location-worker-expected.txt:

New behavior for too many redirects caused by <rdar://problem/30610988>.

  • web-platform-tests/resource-timing/rt-nextHopProtocol-expected.txt: Added.
  • web-platform-tests/resource-timing/rt-nextHopProtocol.html: Added.
  • web-platform-tests/resource-timing/rt-nextHopProtocol.js: Added.
  • web-platform-tests/resource-timing/rt-nextHopProtocol.worker-expected.txt: Added.
  • web-platform-tests/resource-timing/rt-nextHopProtocol.worker.html: Added.
  • web-platform-tests/resource-timing/rt-nextHopProtocol.worker.js: Added.

New tests specific to just checking the nextHopProtocol property with
a non-cached resource to avoid flakeyness.

Source/WebCore:

This patch replaces the unused double finishTime in ResourceLoader's
didFinishLoad with a complete WebCore::NetworkLoadMetrics object. This
allows the NetworkProcess to give complete timing information, and more
final metrics about the load, to WebCore. Currently this is only used
by ResourceTiming, but it will soon be used by Web Inspector as well.
We may also end up extending this to the didFail path as well, since it
is possible that we have some metrics for load failures.

At the same time we want to start moving away from the legacy path that
populated a subset of this information in ResourceResponse's NetworkLoadMetrics.
It doesn't make sense to store this information on the ResourceResponse
for a few reasons: We don't want to store the metrics in our Network Cache and
not all of the load timing metrics have been populated yet (responseEnd).
In an effort to move off of this data we've renamed the accessor to
"deprecatedNetworkLoadMetrics". There are a few remaining clients
(ResourceHandle, PerformanceTiming, InspectorNetworkAgent) which can be
migrated separately from this patch.

Having both the legacy and new code paths adds a little bit of complexity.
One advantage of the new path is that the complete load timing data
(fetchStart -> dns -> connect -> request -> response -> responseEnd) can
be packaged together. The legacy path could not include a responseEnd, so
WebCore faked that value with its own timestamp. Having the fake responseEnd
caused issues as timestamps / clocks are different between processes. In order
for PerformanceResponseTiming to know whether or not the NetworkLoadMetrics
has the complete network timing metrics it checks isComplete(). If true
it knows it can use the responseEnd time from NetworkLoadMetrics, otherwise
it must fallback to the legacy value from LoadTiming. Once all of the
deprecatedNetworkLoadMetrics clients go away, we should always have the
complete data and this can be eliminated.

Tests: imported/w3c/web-platform-tests/resource-timing/rt-nextHopProtocol.html

imported/w3c/web-platform-tests/resource-timing/rt-nextHopProtocol.worker.html

  • PlatformMac.cmake:
  • WebCore.xcodeproj/project.pbxproj:

Rename NetworkLoadTiming -> NetworkLoadMetrics.

  • page/PerformanceResourceTiming.cpp:

(WebCore::entryStartTime):
(WebCore::entryEndTime):
(WebCore::PerformanceResourceTiming::PerformanceResourceTiming):
(WebCore::PerformanceResourceTiming::nextHopProtocol):
(WebCore::PerformanceResourceTiming::domainLookupStart):
(WebCore::PerformanceResourceTiming::domainLookupEnd):
(WebCore::PerformanceResourceTiming::connectStart):
(WebCore::PerformanceResourceTiming::connectEnd):
(WebCore::PerformanceResourceTiming::secureConnectionStart):
(WebCore::PerformanceResourceTiming::requestStart):
(WebCore::PerformanceResourceTiming::responseStart):
(WebCore::PerformanceResourceTiming::responseEnd):
(WebCore::PerformanceResourceTiming::networkLoadTimeToDOMHighResTimeStamp):

  • page/PerformanceResourceTiming.h:

Mostly just updating names and types. This does however need to get the
correct endTime based on whether the NetworkLoadMetrics are complete
(meaning includes responseEnd) or not (legacy, use LoadTiming value).

  • page/PerformanceResourceTiming.idl:

Add nextHopProtocol.

  • page/PerformanceTiming.cpp:

(WebCore::PerformanceTiming::domainLookupStart):
(WebCore::PerformanceTiming::domainLookupEnd):
(WebCore::PerformanceTiming::connectStart):
(WebCore::PerformanceTiming::connectEnd):
(WebCore::PerformanceTiming::secureConnectionStart):
(WebCore::PerformanceTiming::requestStart):
(WebCore::PerformanceTiming::responseStart):
(WebCore::PerformanceTiming::resourceLoadTimeRelativeToFetchStart):

  • page/PerformanceTiming.h:

Navigation Timing values still uses the NetworkLoadTiming values stored on
the DocumentLoader. This should be moved off of the deprecated path separately.

  • platform/network/NetworkLoadMetrics.h: Renamed from Source/WebCore/platform/network/NetworkLoadTiming.h.

(WebCore::NetworkLoadMetrics::NetworkLoadMetrics):
(WebCore::NetworkLoadMetrics::isolatedCopy):
(WebCore::NetworkLoadMetrics::reset):
(WebCore::NetworkLoadMetrics::operator==):
(WebCore::NetworkLoadMetrics::operator!=):
(WebCore::NetworkLoadMetrics::isComplete):
(WebCore::NetworkLoadMetrics::markComplete):
(WebCore::NetworkLoadMetrics::encode):
(WebCore::NetworkLoadMetrics::decode):
Re-introduce a reset() method (for NetworkLoadSoup to reset between redirects).
Add protocolName and "complete" boolean.

  • platform/network/cocoa/NetworkLoadMetrics.mm: Renamed from Source/WebCore/platform/network/cocoa/NetworkLoadTiming.mm.

(WebCore::timingValue):
(WebCore::copyTimingData):
(WebCore::setCollectsTimingData):
Use this opportunity to convert NetworkLoadTiming timestamps to WTF::Seconds.
Since we already have to modify all the clients this moves us to use the more
strongly typed units that are less ambiguous then "double". The rest of the
Performance API has already moved to these units.

  • inspector/InspectorNetworkAgent.cpp:

(WebCore::InspectorNetworkAgent::buildObjectForTiming):
(WebCore::InspectorNetworkAgent::buildObjectForResourceResponse):
(WebCore::InspectorNetworkAgent::didFinishLoading):

  • inspector/InspectorNetworkAgent.h:

Inspector was the only client of the finishTime, and since the value was
erratically coming from clients in different ways it was almost certainly
inaccurate. Simplify this in preparation for using NetworkLoadMetrics.

  • Modules/fetch/FetchLoader.cpp:

(WebCore::FetchLoader::didFinishLoading):

  • Modules/fetch/FetchLoader.h:
  • fileapi/FileReaderLoader.cpp:

(WebCore::FileReaderLoader::didFinishLoading):

  • fileapi/FileReaderLoader.h:
  • html/MediaFragmentURIParser.cpp:

(WebCore::MediaFragmentURIParser::parseNPTTime):

  • inspector/InspectorInstrumentation.cpp:

(WebCore::InspectorInstrumentation::didFinishLoadingImpl):

  • inspector/InspectorInstrumentation.h:

(WebCore::InspectorInstrumentation::didFinishLoading):

  • loader/CrossOriginPreflightChecker.cpp:

(WebCore::CrossOriginPreflightChecker::validatePreflightResponse):

  • loader/DocumentLoader.cpp:

(WebCore::DocumentLoader::notifyFinished):
(WebCore::DocumentLoader::finishedLoading):
(WebCore::DocumentLoader::continueAfterContentPolicy):
(WebCore::DocumentLoader::maybeLoadEmpty):

  • loader/DocumentLoader.h:
  • loader/DocumentThreadableLoader.cpp:

(WebCore::DocumentThreadableLoader::didReceiveResponse):
(WebCore::DocumentThreadableLoader::notifyFinished):
(WebCore::DocumentThreadableLoader::didFinishLoading):
(WebCore::DocumentThreadableLoader::loadRequest):

  • loader/DocumentThreadableLoader.h:
  • loader/NetscapePlugInStreamLoader.cpp:

(WebCore::NetscapePlugInStreamLoader::didFinishLoading):

  • loader/NetscapePlugInStreamLoader.h:
  • loader/ResourceLoadNotifier.cpp:

(WebCore::ResourceLoadNotifier::didFinishLoad):
(WebCore::ResourceLoadNotifier::dispatchDidFinishLoading):
(WebCore::ResourceLoadNotifier::sendRemainingDelegateMessages):

  • loader/ResourceLoadNotifier.h:
  • loader/ResourceLoader.cpp:

(WebCore::ResourceLoader::deliverResponseAndData):
(WebCore::ResourceLoader::loadDataURL):
(WebCore::ResourceLoader::didFinishLoading):
(WebCore::ResourceLoader::didFinishLoadingOnePart):

  • loader/ResourceLoader.h:
  • loader/ResourceTiming.cpp:

(WebCore::ResourceTiming::fromLoad):
(WebCore::ResourceTiming::fromSynchronousLoad):
(WebCore::ResourceTiming::ResourceTiming):
(WebCore::ResourceTiming::isolatedCopy):

  • loader/ResourceTiming.h:

(WebCore::ResourceTiming::networkLoadMetrics):
(WebCore::ResourceTiming::ResourceTiming):
(WebCore::ResourceTiming::networkLoadTiming): Deleted.

  • loader/SubresourceLoader.cpp:

(WebCore::SubresourceLoader::SubresourceLoader):
(WebCore::SubresourceLoader::willSendRequestInternal):
(WebCore::SubresourceLoader::didReceiveResponse):
(WebCore::SubresourceLoader::didFinishLoading):
(WebCore::SubresourceLoader::reportResourceTiming):

  • loader/SubresourceLoader.h:
  • loader/ThreadableLoaderClient.h:

(WebCore::ThreadableLoaderClient::didFinishLoading):

  • loader/ThreadableLoaderClientWrapper.h:

(WebCore::ThreadableLoaderClientWrapper::didFinishLoading):

  • loader/WorkerThreadableLoader.cpp:

(WebCore::WorkerThreadableLoader::MainThreadBridge::didFinishLoading):

  • loader/WorkerThreadableLoader.h:
  • loader/appcache/ApplicationCacheGroup.cpp:

(WebCore::ApplicationCacheGroup::didFinishLoading):

  • loader/appcache/ApplicationCacheGroup.h:
  • loader/cache/CachedResource.h:

(WebCore::CachedResource::setLoadFinishTime):

  • loader/ios/QuickLook.mm:

(-[WebPreviewLoader connectionDidFinishLoading:]):

  • page/EventSource.cpp:

(WebCore::EventSource::didFinishLoading):

  • page/EventSource.h:
  • platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:

(ResourceHandleStreamingClient::didFinishLoading):

  • platform/network/BlobResourceHandle.cpp:

(WebCore::doNotifyFinish):

  • platform/network/PingHandle.h:
  • platform/network/ResourceHandle.h:
  • platform/network/ResourceHandleClient.h:

(WebCore::ResourceHandleClient::didFinishLoading):

  • platform/network/ResourceResponseBase.cpp:

(WebCore::ResourceResponseBase::crossThreadData):
(WebCore::ResourceResponseBase::fromCrossThreadData):
(WebCore::ResourceResponseBase::compare):

  • platform/network/ResourceResponseBase.h:

(WebCore::ResourceResponseBase::deprecatedNetworkLoadMetrics):
(WebCore::ResourceResponseBase::encode):
(WebCore::ResourceResponseBase::decode):
(WebCore::ResourceResponseBase::networkLoadTiming): Deleted.

  • platform/network/SynchronousLoaderClient.cpp:

(WebCore::SynchronousLoaderClient::didFinishLoading):

  • platform/network/SynchronousLoaderClient.h:
  • platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.cpp:

(WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::didReceiveResponse):
(WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::didFinishLoading):

  • platform/network/cf/SynchronousResourceHandleCFURLConnectionDelegate.cpp:

(WebCore::SynchronousResourceHandleCFURLConnectionDelegate::didReceiveResponse):
(WebCore::SynchronousResourceHandleCFURLConnectionDelegate::didFinishLoading):

  • platform/network/curl/ResourceHandleCurl.cpp:

(WebCore::WebCoreSynchronousLoader::didFinishLoading):

  • platform/network/curl/ResourceHandleManager.cpp:

(WebCore::calculateWebTimingInformations):
(WebCore::ResourceHandleManager::downloadTimerCallback):
(WebCore::handleDataURL):
(WebCore::milisecondsSinceRequest): Deleted.

  • platform/network/mac/ResourceHandleMac.mm:

(WebCore::ResourceHandle::getConnectionTimingData):

  • platform/network/mac/WebCoreResourceHandleAsDelegate.mm:

(-[WebCoreResourceHandleAsDelegate connection:didReceiveResponse:]):
(-[WebCoreResourceHandleAsDelegate connectionDidFinishLoading:]):

  • platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm:

(-[WebCoreResourceHandleAsOperationQueueDelegate connection:didReceiveResponse:]):
(-[WebCoreResourceHandleAsOperationQueueDelegate connectionDidFinishLoading:]):

  • platform/network/soup/ResourceHandleSoup.cpp:

(WebCore::restartedCallback):
(WebCore::nextMultipartResponsePartCallback):
(WebCore::sendRequestCallback):
(WebCore::ResourceHandle::didStartRequest):
(WebCore::networkEventCallback):
(WebCore::ResourceHandle::sendPendingRequest):
(WebCore::readCallback):
(WebCore::milisecondsSinceRequest): Deleted.

  • workers/WorkerScriptLoader.cpp:

(WebCore::WorkerScriptLoader::didFinishLoading):

  • workers/WorkerScriptLoader.h:
  • xml/XMLHttpRequest.cpp:

(WebCore::XMLHttpRequest::didFinishLoading):

  • xml/XMLHttpRequest.h:

Eliminate the unused finishTime double.

Source/WebKit2:

Change from an unused double finishTime to a complete WebCore::NetworkLoadMetrics
object in the didFinishLoad ResourceLoader path. We may also extend this in the
didFail path later on. This allows the NetworkProcess to give complete timing
information, and more final metrics about the load, to WebCore.

  • NetworkProcess/NetworkDataTask.h:

(WebKit::NetworkDataTaskClient::didCompleteWithError):
Give the NetworkDataTaskClient a basic didCompleteWithError for a completion
without metrics. For loads that complete with an error, or haven't populated
any metrics, this will pass empty metrics onward.

  • NetworkProcess/Downloads/BlobDownloadClient.cpp:

(WebKit::BlobDownloadClient::didFinishLoading):

  • NetworkProcess/Downloads/BlobDownloadClient.h:
  • NetworkProcess/Downloads/PendingDownload.h:
  • NetworkProcess/PingLoad.h:
  • NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp:

(WebKit::NetworkCache::SpeculativeLoad::didFinishLoading):

  • NetworkProcess/cache/NetworkCacheSpeculativeLoad.h:
  • NetworkProcess/NetworkDataTaskBlob.cpp:

(WebKit::NetworkDataTaskBlob::didFail):

  • NetworkProcess/NetworkLoad.cpp:

(WebKit::NetworkLoad::continueWillSendRequest):
(WebKit::NetworkLoad::didCompleteWithError):
(WebKit::NetworkLoad::didFinishLoading):

  • NetworkProcess/NetworkLoad.h:
  • NetworkProcess/NetworkLoadClient.h:
  • NetworkProcess/NetworkResourceLoader.cpp:

(WebKit::NetworkResourceLoader::didFinishLoading):
(WebKit::NetworkResourceLoader::sendResultForCacheEntry):

  • NetworkProcess/NetworkResourceLoader.h:
  • WebProcess/Network/WebResourceLoader.cpp:

(WebKit::WebResourceLoader::didFinishResourceLoad):
(WebKit::WebResourceLoader::didReceiveResource):

  • WebProcess/Network/WebResourceLoader.h:
  • WebProcess/Network/WebResourceLoader.messages.in:

Change didFinishLoad paths to take a NetworkLoadMetrics object instead of finishTime.
Change didCompleteWithError pathes to include a NetworkLoadMetrics object instead of finishTime.

  • NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
  • NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:

(WebKit::NetworkDataTaskCocoa::didCompleteWithError):
Own a NetworkLoadTiming that will be populated with the load.

  • NetworkProcess/cocoa/NetworkSessionCocoa.h:
  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(-[WKNetworkSessionDelegate URLSession:task:didCompleteWithError:]):
(-[WKNetworkSessionDelegate URLSession:task:didFinishCollectingMetrics:]):
(-[WKNetworkSessionDelegate URLSession:dataTask:didReceiveResponse:completionHandler:]):
Populate NetworkLoadMetrics in the didFinishCollectingMetrics NSURLSessionTaskDelegate method.

  • NetworkProcess/soup/NetworkDataTaskSoup.cpp:

(WebKit::NetworkDataTaskSoup::NetworkDataTaskSoup):
(WebKit::NetworkDataTaskSoup::timeoutFired):
(WebKit::NetworkDataTaskSoup::didSendRequest):
(WebKit::NetworkDataTaskSoup::dispatchDidReceiveResponse):
(WebKit::NetworkDataTaskSoup::dispatchDidCompleteWithError):
(WebKit::NetworkDataTaskSoup::tlsErrorsChanged):
(WebKit::NetworkDataTaskSoup::continueHTTPRedirection):
(WebKit::NetworkDataTaskSoup::didFinishRead):
(WebKit::NetworkDataTaskSoup::didFinishRequestNextPart):
(WebKit::NetworkDataTaskSoup::didFailDownload):
(WebKit::NetworkDataTaskSoup::didFail):
(WebKit::NetworkDataTaskSoup::networkEvent):
(WebKit::NetworkDataTaskSoup::didStartRequest):
(WebKit::NetworkDataTaskSoup::didRestart):

  • NetworkProcess/soup/NetworkDataTaskSoup.h:

Instead of populating the NetworkLoadMetrics on the ResourceResponse, populate
a member variable during the entire load and dispatch didFinishCollectingMetrics
right before didCompleteLoadWithError.

Source/WTF:

  • wtf/persistence/Coders.h:

(WTF::Persistence::Coder<Seconds>::encode):
(WTF::Persistence::Coder<Seconds>::decode):

LayoutTests:

Now that nextHopProtocol is available on Mac mark the test as flakey
because the value can be set or not depending on whether or not the
resource was loaded from a cache.

  • platform/ios-simulator/TestExpectations:
  • platform/gtk/TestExpectations:
  • platform/mac/TestExpectations:
  • platform/win/TestExpectations:

Mark nextHopProtocol tests as expected to fail on ports that do not
yet support those values. Mark redirect tests as failing on ports
that encounter the CFNetwork issue causing unexpected callbacks.

  • performance-api/resource-timing-apis-expected.txt:
  • performance-api/resources/resource-timing-api.js:

Progressions.

  • platform/mac-elcapitan/imported/w3c/web-platform-tests/resource-timing/test_resource_timing-expected.txt: Added.
  • platform/mac/imported/w3c/web-platform-tests/resource-timing/test_resource_timing-expected.txt: Added.

Expected passing values on mac, except el capitan where this new resource timing data is unavailable.

8:54 PM Changeset in webkit [212992] by keith_miller@apple.com
  • 3 edits in trunk/Source/WTF

Rubber-stamped by Chris Dumez.

Replace typename Bool with typename BoolType because X11 has
#define Bool int for some unknown reason...

  • wtf/HashFunctions.h:

(WTF::TupleHash::allTrue):

  • wtf/HashTraits.h:

(WTF::TupleHashTraits::allTrue):

8:27 PM Changeset in webkit [212991] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Unreviewed GTK build fix after r212965

  • CMakeLists.txt:
8:05 PM Changeset in webkit [212990] by Wenson Hsieh
  • 4 edits in trunk/Tools

Unreviewed, temporarily disable all data interaction tests.

They will be reenabled once the bots are ready to build and run them.

  • TestWebKitAPI/Tests/ios/DataInteractionTests.mm:
  • TestWebKitAPI/ios/DataInteractionSimulator.h:
  • TestWebKitAPI/ios/DataInteractionSimulator.mm:
7:34 PM Changeset in webkit [212989] by Chris Dumez
  • 96 edits
    2 moves
    8 deletes in trunk

Unreviewed, rolling out r212944.

Caused a lot of failures on the debug bots

Reverted changeset:

"[Resource Timing] Gather timing information with reliable
responseEnd time"
https://bugs.webkit.org/show_bug.cgi?id=168351
http://trac.webkit.org/changeset/212944

7:24 PM Changeset in webkit [212988] by Wenson Hsieh
  • 2 edits in trunk/Tools

Unreviewed, fix the internal build.

  • TestWebKitAPI/ios/DataInteractionSimulator.mm:

(-[DataInteractionSimulator _advanceProgress]):

7:23 PM Changeset in webkit [212987] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Unreviewed, follow-up fix after r212972.

Fixes a few assertions on the debug build bots.
URL needs to be exactly the same as the parsed one given
that we are calling the ParsedURLString constructor.

  • platform/network/ResourceResponseBase.cpp:

(WebCore::ResourceResponseBase::sanitizeSuggestedFilename):

6:14 PM Changeset in webkit [212986] by Alan Bujtas
  • 7 edits
    2 adds in trunk/Source/WebCore

Simple line layout: Re-adjust paginated lines when block height changes.
https://bugs.webkit.org/show_bug.cgi?id=168838
<rdar://problem/30701233>

Reviewed by Antti Koivisto.

When the estimated block height is wrong, we issue an additional layout on the inline children
so that we get the pagination right (this layout is setChildNeedsLayout(MarkOnlyThis) only).
Since the height change only affects the struts and page breaks (and again, the relayoutChildren flag is false)
we don't need to re-layout the content, but instead we just need to re-adjust the pagination for the simple lines.
This patch also moves the pagination logic to SimpleLineLayoutPagination.cpp.

Not enabled yet.

  • CMakeLists.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::layoutSimpleLines):

  • rendering/RenderingAllInOne.cpp:
  • rendering/SimpleLineLayout.cpp:

(WebCore::SimpleLineLayout::canUseForWithReason):
(WebCore::SimpleLineLayout::create):
(WebCore::SimpleLineLayout::Layout::create):
(WebCore::SimpleLineLayout::Layout::Layout):
(WebCore::SimpleLineLayout::computeLineTopAndBottomWithOverflow): Deleted.
(WebCore::SimpleLineLayout::computeLineBreakIndex): Deleted.
(WebCore::SimpleLineLayout::computeOffsetAfterLineBreak): Deleted.
(WebCore::SimpleLineLayout::setPageBreakForLine): Deleted.
(WebCore::SimpleLineLayout::updateMinimumPageHeight): Deleted.
(WebCore::SimpleLineLayout::adjustLinePositionsForPagination): Deleted.

  • rendering/SimpleLineLayout.h:

(WebCore::SimpleLineLayout::Layout::setIsPaginated):
(WebCore::SimpleLineLayout::Layout::setLineStruts):

  • rendering/SimpleLineLayoutPagination.cpp: Added.

(WebCore::SimpleLineLayout::computeLineTopAndBottomWithOverflow):
(WebCore::SimpleLineLayout::computeLineBreakIndex):
(WebCore::SimpleLineLayout::computeOffsetAfterLineBreak):
(WebCore::SimpleLineLayout::setPageBreakForLine):
(WebCore::SimpleLineLayout::updateMinimumPageHeight):
(WebCore::SimpleLineLayout::adjustLinePositionsForPagination):

  • rendering/SimpleLineLayoutPagination.h: Added.
6:07 PM Changeset in webkit [212985] by jonlee@apple.com
  • 44 edits in trunk

Alias "system-ui" for the System font name
https://bugs.webkit.org/show_bug.cgi?id=151493

Reviewed by Tim Horton and Joseph Pecoraro.

Source/WebCore:

Updated existing tests.

  • WebCore.xcodeproj/project.pbxproj: Add WebKitFontFamilyNames.in for

convenience.

  • css/CSSValueKeywords.in: Add system-ui as a keyword.
  • css/WebKitFontFamilyNames.in: Add system-ui.
  • platform/graphics/ios/FontCacheIOS.mm:

(WebCore::platformFontWithFamilySpecialCase): Include "system-ui" as an
alias.

  • platform/graphics/mac/FontCacheMac.mm:

(WebCore::platformFontWithFamilySpecialCase): Ditto.

  • rendering/RenderThemeMac.mm:

(WebCore::RenderThemeMac::updateCachedSystemFontDescription): Update
serialization to "system-ui" from "-apple-system".

  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::identifierForFamily):

  • css/CSSFontFaceSet.cpp:

(WebCore::CSSFontFaceSet::familyNameFromPrimitive):

  • css/StyleBuilderCustom.h:

(WebCore::StyleBuilderCustom::applyValueFontFamily):

Source/WebInspectorUI:

  • UserInterface/Models/CSSKeywordCompletions.js: Ditto.

LayoutTests:

Add "system-ui" to the test.

  • fast/css/font-family-builtins.html:
  • fast/css/font-family-builtins-expected.txt:
  • fast/text/system-font-features.html:
  • fast/text/system-font-features-expected.html:
  • fast/text/system-font-legacy-name.html:
  • fast/text/system-font-legacy-name-expected.txt:
  • platform/ios-simulator/ios/fast/text/opticalFont.html:
  • platform/ios-simulator/ios/fast/text/opticalFont-expected.txt:
  • platform/ios-simulator/ios/fast/text/opticalFontWithTextStyle-expected.txt:

Unskip opticalFont* tests.

  • platform/ios-simulator/TestExpectations:

Update tests to use "system-ui" instead of "-apple-system" or the even
older "-apple-system-font".

  • fast/css/multiple-tabs-expected.html:
  • fast/css/multiple-tabs.html:
  • fast/text/international/system-language/han-quotes-expected-mismatch.html:
  • fast/text/international/system-language/han-quotes.html:
  • fast/text/international/system-language/hindi-system-font-punctuation-expected.html:
  • fast/text/international/system-language/hindi-system-font-punctuation.html:
  • fast/text/letterpress-different-expected-mismatch.html:
  • fast/text/letterpress-different.html:
  • fast/text/letterpress-paint.html:
  • fast/text/system-font-weight-italic.html:
  • fast/text/system-font-weight.html:
  • fast/text/text-node-remains-dirty-after-calling-surroundContents-expected.html:
  • fast/text/text-node-remains-dirty-after-calling-surroundContents.html:
  • fast/text/trak-optimizeLegibility.html:
  • fast/text/weighted-italicized-system-font-expected.html:
  • fast/text/weighted-italicized-system-font.html:
  • platform/ios-simulator/ios/fast/text/apple-logo.html:
  • platform/ios-simulator/ios/fast/text/opticalFontWithWeight-expected.txt:
  • platform/ios-simulator/ios/fast/text/opticalFontWithWeight.html:
  • platform/ios-simulator/ios/fast/text/underline-scaling.html:
  • platform/mac/fast/css/css2-system-fonts-expected.txt:
6:07 PM Changeset in webkit [212984] by Wenson Hsieh
  • 2 edits in trunk/Source/WebKit2

Unreviewed, fix the internal build

  • UIProcess/ios/WKContentViewInteraction.h:
6:02 PM Changeset in webkit [212983] by jfbastien@apple.com
  • 14 edits in trunk

WebAssembly: miscellaneous spec fixes
https://bugs.webkit.org/show_bug.cgi?id=168822

Reviewed by Saam Barati.

JSTests:

  • wasm.yaml: mark some skip tests as normal, now that they pass
  • wasm/Builder.js: error message was wrong, causing extra error if hit
  • wasm/js-api/global-error.js: new tests

(assert.throws):

  • wasm/spec-tests/call.wast.js: comment out stack check tests
  • wasm/spec-tests/call_indirect.wast.js: comment out stack check tests
  • wasm/spec-tests/fac.wast.js: comment out stack check tests
  • wasm/spec-tests/float_exprs.wast.js: wabt is wrong, bug reported, we should update
  • wasm/spec-tests/imports.wast.js: bug in old wabt, fixed in recent wabt

(assert_unlinkable):

Source/JavaScriptCore:

  • wasm/WasmModuleParser.cpp: "unknown" sections are now called "custom" sections
  • wasm/WasmSections.h:

(JSC::Wasm::validateOrder):
(JSC::Wasm::makeString): fix ASSERT_UNREACHABLE bug in printing

  • wasm/js/WebAssemblyInstanceConstructor.cpp:

(JSC::constructJSWebAssemblyInstance): disallow i64 import

  • wasm/js/WebAssemblyModuleRecord.cpp:

(JSC::WebAssemblyModuleRecord::link): disallow i64 export
(JSC::WebAssemblyModuleRecord::evaluate):

5:17 PM Changeset in webkit [212982] by mrajca@apple.com
  • 15 edits
    1 add in trunk

Media: notify clients when autoplay is denied
https://bugs.webkit.org/show_bug.cgi?id=168840

Reviewed by Alex Christensen.

Source/WebCore:

Added API tests.

  • WebCore.xcodeproj/project.pbxproj:
  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::setReadyState):
(WebCore::HTMLMediaElement::play):
(WebCore::HTMLMediaElement::playInternal):

  • page/AutoplayEvent.h: Added.
  • page/ChromeClient.h:

Source/WebKit2:

  • UIProcess/API/APIUIClient.h:

(API::UIClient::handleAutoplayEvent):
(API::UIClient::didPlayMediaPreventedFromPlayingWithoutUserGesture): Deleted.

  • UIProcess/API/C/WKPage.cpp:

(WKPageSetPageUIClient):

  • UIProcess/API/C/WKPageUIClient.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::handleAutoplayEvent):
(WebKit::WebPageProxy::didPlayMediaPreventedFromPlayingWithoutUserGesture): Deleted.

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::handleAutoplayEvent):
(WebKit::WebChromeClient::didPlayMediaPreventedFromPlayingWithoutUserGesture): Deleted.

  • WebProcess/WebCoreSupport/WebChromeClient.h:

Tools:

  • TestWebKitAPI/Tests/WebKit2Cocoa/WebsitePolicies.mm:

(handleAutoplayEvent):
(runUntilReceivesAutoplayEvent):
(TEST): Added.

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

curl: Improve errors by including the domain
https://bugs.webkit.org/show_bug.cgi?id=134340

Patch by Basuke Suzuki <Basuke.Suzuki@am.sony.com> on 2017-02-24
Reviewed by Alex Christensen.

Added proper error domain to ResourceError created by
Curl problem.

  • platform/network/curl/ResourceHandleManager.cpp:

(WebCore::ResourceHandleManager::downloadTimerCallback):
(WebCore::ResourceHandleManager::dispatchSynchronousJob):

5:03 PM Changeset in webkit [212980] by commit-queue@webkit.org
  • 8 edits
    2 copies in trunk

[Modern Media Controls] <audio> controls should center in their container when the page is scaled
https://bugs.webkit.org/show_bug.cgi?id=168841
<rdar://problem/28612794>

Patch by Antoine Quint <Antoine Quint> on 2017-02-24
Reviewed by Eric Carlson.

Source/WebCore:

When dealing with <audio> elements, we vertically center the controls relative to their containing
media element such that if the controls visually overflow, they overflow equally above and below
to minimize the likelihood of overlap with surrounding elements.

Test: media/modern-media-controls/media-controller/media-controller-scale-factor-audio.html

  • Modules/modern-media-controls/controls/media-controls.js:

(MediaControls.prototype.get shouldCenterControlsVertically):
(MediaControls.prototype.set shouldCenterControlsVertically):
(MediaControls.prototype.commitProperty):

  • Modules/modern-media-controls/media/media-controller.js:

(MediaController.prototype.get isAudio):
(MediaController.prototype.get layoutTraits):
(MediaController.prototype._updateControlsSize):

LayoutTests:

Adding test coverage for the "top" property set on the media controls to achieve vertical centering,
and creating a new test that checks the behavior for an <audio> element on iOS.

  • TestExpectations:
  • media/modern-media-controls/media-controller/media-controller-scale-factor-audio-expected.txt: Added.
  • media/modern-media-controls/media-controller/media-controller-scale-factor-audio.html: Added.
  • media/modern-media-controls/media-controller/media-controller-scale-factor-expected.txt:
  • media/modern-media-controls/media-controller/media-controller-scale-factor.html:
  • platform/ios-simulator/TestExpectations:
4:47 PM Changeset in webkit [212979] by jmarcell@apple.com
  • 1 copy in tags/Safari-603.1.30.1.30

Tag Safari-603.1.30.1.30.

4:46 PM Changeset in webkit [212978] by jmarcell@apple.com
  • 1 copy in tags/Safari-603.1.30.0.30

Tag Safari-603.1.30.0.30.

4:36 PM Changeset in webkit [212977] by achristensen@apple.com
  • 6 edits in trunk

Non-special relative URLs should not ignore extra slashes
https://bugs.webkit.org/show_bug.cgi?id=168834

Reviewed by Sam Weinig.

LayoutTests/imported/w3c:

  • web-platform-tests/url/a-element-expected.txt:
  • web-platform-tests/url/a-element-xhtml-expected.txt:
  • web-platform-tests/url/url-constructor-expected.txt:

Source/WebCore:

Special authority ignore slashes state should, as its name implies,
only be reached by special URLs. See https://url.spec.whatwg.org/#relative-slash-state

Covered by newly passing web platform tests.

  • platform/URLParser.cpp:

(WebCore::URLParser::parse):

4:20 PM Changeset in webkit [212976] by ap@apple.com
  • 2 edits in trunk/Source/WebCore

Build fix for newer clang
https://bugs.webkit.org/show_bug.cgi?id=168849
rdar://problem/30638741

Reviewed by Ryosuke Niwa.

  • dom/Range.cpp: (WebCore::Range::toString): std::max(0, <unsigned>) is not meaningful,

and now triggers a warning.

4:17 PM Changeset in webkit [212975] by mrajca@apple.com
  • 2 edits in trunk/Tools

API test WebKit2.WebsitePoliciesPlayAfterPreventedAutoplay is timing out
https://bugs.webkit.org/show_bug.cgi?id=167466

Reviewed by Alex Christensen.

  • TestWebKitAPI/Tests/WebKit2Cocoa/WebsitePolicies.mm:

(TEST): Use the correct API version.

4:05 PM Changeset in webkit [212974] by Wenson Hsieh
  • 11 edits in trunk

Refactor data interaction to use new WKDataInteraction SPI
https://bugs.webkit.org/show_bug.cgi?id=168602
Work towards <rdar://problem/30313681>

Reviewed by Tim Horton.

Source/WebKit2:

Adjust testing SPI to match new data interaction interfaces.

  • Platform/spi/ios/UIKitSPI.h:
  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _simulateDataInteractionEntered:]):
(-[WKWebView _simulateDataInteractionUpdated:]):
(-[WKWebView _simulateDataInteractionPerformOperation:]):
(-[WKWebView _simulateDataInteractionEnded:]):
(-[WKWebView _simulateDataInteractionSessionDidEnd:]):
(-[WKWebView _simulateWillBeginDataInteractionWithSession:]):
(-[WKWebView _simulatedItemsForSession:]):
(-[WKWebView _simulatePrepareForDataInteractionSession:completion:]):
(-[WKWebView _simulateDataInteractionSessionDidEnd:withOperation:]): Deleted.
(-[WKWebView _simulateFailedDataInteractionWithIndex:]): Deleted.
(-[WKWebView _simulateWillBeginDataInteractionWithIndex:withSession:]): Deleted.
(-[WKWebView _simulatedItemsForDataInteractionWithIndex:]): Deleted.

  • UIProcess/API/Cocoa/WKWebViewPrivate.h:
  • UIProcess/ios/WKContentViewInteraction.h:
  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView _positionInformationDidChange:]):

  • UIProcess/ios/WKScrollView.h:
  • UIProcess/ios/WKScrollView.mm:

Tools:

Update DataInteractionSimulator to simulate data interaction using updated SPI. See changes in WebKit2 for more details.

  • TestWebKitAPI/Tests/ios/DataInteractionTests.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/ios/DataInteractionSimulator.h:
  • TestWebKitAPI/ios/DataInteractionSimulator.mm:

(-[DataInteractionSimulator _resetSimulatedState]):
(-[DataInteractionSimulator runFrom:to:]):
(-[DataInteractionSimulator _advanceProgress]):
(-[DataInteractionSimulator _currentLocation]):
(-[DataInteractionSimulator _finishDataInteraction]): Deleted.
(-[DataInteractionSimulator webViewDidSendDataInteractionStartRequest:]): Deleted.
(-[DataInteractionSimulator webView:didReceiveDataInteractionStartResponse:]): Deleted.

4:05 PM Changeset in webkit [212973] by Wenson Hsieh
  • 8 edits in trunk

Remove the data interaction gesture recognizer
https://bugs.webkit.org/show_bug.cgi?id=168600
<rdar://problem/30313681>

Reviewed by Anders Carlsson.

Source/WebKit2:

The data interaction gesture recognizer will no longer be needed moving forward.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _simulateDataInteractionGestureRecognized]): Deleted.

  • UIProcess/API/Cocoa/WKWebViewPrivate.h:
  • UIProcess/ios/WKContentViewInteraction.h:
  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView setupInteraction]):
(-[WKContentView cleanupInteraction]):
(-[WKContentView _removeDefaultGestureRecognizers]):
(-[WKContentView _addDefaultGestureRecognizers]):
(-[WKContentView gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:]):
(-[WKContentView gestureRecognizerShouldBegin:]):
(-[WKContentView _dataInteractionGestureRecognizer]): Deleted.

Tools:

Adjust TestWebKitAPI for changes in WebKit2.

  • TestWebKitAPI/ios/DataInteractionSimulator.h:
  • TestWebKitAPI/ios/DataInteractionSimulator.mm:

(-[DataInteractionSimulator initWithWebView:]):
(-[DataInteractionSimulator runFrom:to:]):
(-[DataInteractionSimulator _advanceProgress]):
(-[DataInteractionSimulator _finishDataInteraction]):
(-[MockLongPressGestureRecognizer initWithWindow:]): Deleted.
(-[MockLongPressGestureRecognizer locationInView:]): Deleted.
(-[MockLongPressGestureRecognizer state]): Deleted.
(-[MockLongPressGestureRecognizer numberOfTouches]): Deleted.
(-[DataInteractionSimulator _recognizeGestureAtLocation:withState:]): Deleted.
(-[DataInteractionSimulator dataInteractionGestureRecognizer]): Deleted.
(-[DataInteractionSimulator webView:beginDataInteractionWithSourceIndex:gestureRecognizer:]): Deleted.

4:02 PM Changeset in webkit [212972] by Chris Dumez
  • 9 edits
    6 adds in trunk

Download attribute should be sanitized before being used as suggested filename
https://bugs.webkit.org/show_bug.cgi?id=168839
<rdar://problem/30683109>

Reviewed by Darin Adler.

Source/WebCore:

Sanitize Download attribute before using it as a suggested filename for the download.
We rely on ResourceResponse's sanitizing of the suggested filename to do so, which has
the benefit of being consistent with downloads without the download attribute.

Tests: fast/dom/HTMLAnchorElement/anchor-file-blob-download-includes-doublequote.html

fast/dom/HTMLAnchorElement/anchor-file-blob-download-includes-slashes.html
fast/dom/HTMLAnchorElement/anchor-file-blob-download-includes-unicode.html

  • html/HTMLAnchorElement.cpp:

(WebCore::HTMLAnchorElement::handleClick):

  • platform/network/ResourceResponseBase.cpp:

(WebCore::ResourceResponseBase::sanitizeSuggestedFilename):

  • platform/network/ResourceResponseBase.h:

LayoutTests:

Add layout test coverage.

  • fast/dom/HTMLAnchorElement/anchor-file-blob-download-includes-doublequote-expected.txt: Added.
  • fast/dom/HTMLAnchorElement/anchor-file-blob-download-includes-doublequote.html: Added.
  • fast/dom/HTMLAnchorElement/anchor-file-blob-download-includes-slashes-expected.txt: Added.
  • fast/dom/HTMLAnchorElement/anchor-file-blob-download-includes-slashes.html: Added.
  • fast/dom/HTMLAnchorElement/anchor-file-blob-download-includes-unicode-expected.txt: Added.
  • fast/dom/HTMLAnchorElement/anchor-file-blob-download-includes-unicode.html: Added.
  • platform/ios-simulator-wk1/TestExpectations:
  • platform/ios-simulator-wk2/TestExpectations:
  • platform/mac-wk1/TestExpectations:
  • platform/win/TestExpectations:
3:16 PM Changeset in webkit [212971] by achristensen@apple.com
  • 1 edit
    1 delete in trunk/Source/ThirdParty/libwebrtc

Remove unneeded protobuf tests directory.

Rubber-stamped by Joe Pecoraro.

This directory contained a swift file that was causing problems in an internal verification step.

  • Source/third_party/protobuf/objectivec/Tests: Removed.

(And everything in this subdirectory)

2:50 PM Changeset in webkit [212970] by fpizlo@apple.com
  • 48 edits
    4 adds in trunk/Source/JavaScriptCore

Move Arg::Type and Arg::Width out into the B3 namespace, since they are general concepts
https://bugs.webkit.org/show_bug.cgi?id=168833

Reviewed by Saam Barati.

I want to use the Air::Arg::Type and Air::Arg::Width concepts in B3. We are already
doing this a bit, and it's akward because of the namespacing. Throughout B3 we take the
approach that if something is not specific to Air, then it should be in the B3
namespace.

This moves Air::Arg::Type to B3::Bank. This moves Air::Arg::Width to B3::Width.

I renamed Arg::Type to Bank because there is already a B3::Type and because Arg::Type
was never really a type. Its purpose was always to identify register banks, and we use
this enum when the thing we care about is whether the value is most appropriate for
GPRs or FPRs.

I kept both as non-enum classes because I think that we've learned that terse compiler
code is a good thing. I don't want to say Bank::GP when I can say GP. With Width, the
argument is even stronger, since you cannot say Width::8 but you can say Width8.

  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • b3/B3Bank.cpp: Added.

(WTF::printInternal):

  • b3/B3Bank.h: Added.

(JSC::B3::forEachBank):
(JSC::B3::bankForType):

  • b3/B3CheckSpecial.cpp:

(JSC::B3::CheckSpecial::forEachArg):

  • b3/B3LegalizeMemoryOffsets.cpp:
  • b3/B3LowerToAir.cpp:

(JSC::B3::Air::LowerToAir::run):
(JSC::B3::Air::LowerToAir::tmp):
(JSC::B3::Air::LowerToAir::scaleForShl):
(JSC::B3::Air::LowerToAir::effectiveAddr):
(JSC::B3::Air::LowerToAir::addr):
(JSC::B3::Air::LowerToAir::createGenericCompare):
(JSC::B3::Air::LowerToAir::createBranch):
(JSC::B3::Air::LowerToAir::createCompare):
(JSC::B3::Air::LowerToAir::createSelect):
(JSC::B3::Air::LowerToAir::lower):

  • b3/B3MemoryValue.cpp:

(JSC::B3::MemoryValue::accessWidth):

  • b3/B3MemoryValue.h:
  • b3/B3MoveConstants.cpp:
  • b3/B3PatchpointSpecial.cpp:

(JSC::B3::PatchpointSpecial::forEachArg):

  • b3/B3StackmapSpecial.cpp:

(JSC::B3::StackmapSpecial::forEachArgImpl):

  • b3/B3Value.h:
  • b3/B3Variable.h:

(JSC::B3::Variable::width):
(JSC::B3::Variable::bank):

  • b3/B3WasmAddressValue.h:
  • b3/B3Width.cpp: Added.

(WTF::printInternal):

  • b3/B3Width.h: Added.

(JSC::B3::pointerWidth):
(JSC::B3::widthForType):
(JSC::B3::conservativeWidth):
(JSC::B3::minimumWidth):
(JSC::B3::bytes):
(JSC::B3::widthForBytes):

  • b3/air/AirAllocateRegistersByGraphColoring.cpp:
  • b3/air/AirAllocateStack.cpp:

(JSC::B3::Air::allocateStack):

  • b3/air/AirArg.cpp:

(JSC::B3::Air::Arg::canRepresent):
(JSC::B3::Air::Arg::isCompatibleBank):
(JSC::B3::Air::Arg::isCompatibleType): Deleted.

  • b3/air/AirArg.h:

(JSC::B3::Air::Arg::hasBank):
(JSC::B3::Air::Arg::bank):
(JSC::B3::Air::Arg::isBank):
(JSC::B3::Air::Arg::forEachTmp):
(JSC::B3::Air::Arg::forEachType): Deleted.
(JSC::B3::Air::Arg::pointerWidth): Deleted.
(JSC::B3::Air::Arg::typeForB3Type): Deleted.
(JSC::B3::Air::Arg::widthForB3Type): Deleted.
(JSC::B3::Air::Arg::conservativeWidth): Deleted.
(JSC::B3::Air::Arg::minimumWidth): Deleted.
(JSC::B3::Air::Arg::bytes): Deleted.
(JSC::B3::Air::Arg::widthForBytes): Deleted.
(JSC::B3::Air::Arg::hasType): Deleted.
(JSC::B3::Air::Arg::type): Deleted.
(JSC::B3::Air::Arg::isType): Deleted.

  • b3/air/AirArgInlines.h:

(JSC::B3::Air::ArgThingHelper<Tmp>::forEach):
(JSC::B3::Air::ArgThingHelper<Arg>::forEach):
(JSC::B3::Air::ArgThingHelper<Reg>::forEach):
(JSC::B3::Air::Arg::forEach):

  • b3/air/AirCCallSpecial.cpp:

(JSC::B3::Air::CCallSpecial::forEachArg):

  • b3/air/AirCCallingConvention.cpp:
  • b3/air/AirCode.cpp:

(JSC::B3::Air::Code::Code):
(JSC::B3::Air::Code::setRegsInPriorityOrder):
(JSC::B3::Air::Code::pinRegister):

  • b3/air/AirCode.h:

(JSC::B3::Air::Code::regsInPriorityOrder):
(JSC::B3::Air::Code::newTmp):
(JSC::B3::Air::Code::numTmps):
(JSC::B3::Air::Code::regsInPriorityOrderImpl):

  • b3/air/AirCustom.cpp:

(JSC::B3::Air::PatchCustom::isValidForm):
(JSC::B3::Air::ShuffleCustom::isValidForm):

  • b3/air/AirCustom.h:

(JSC::B3::Air::PatchCustom::forEachArg):
(JSC::B3::Air::CCallCustom::forEachArg):
(JSC::B3::Air::ColdCCallCustom::forEachArg):
(JSC::B3::Air::ShuffleCustom::forEachArg):
(JSC::B3::Air::WasmBoundsCheckCustom::forEachArg):

  • b3/air/AirDumpAsJS.cpp:

(JSC::B3::Air::dumpAsJS):

  • b3/air/AirEliminateDeadCode.cpp:

(JSC::B3::Air::eliminateDeadCode):

  • b3/air/AirEmitShuffle.cpp:

(JSC::B3::Air::emitShuffle):

  • b3/air/AirEmitShuffle.h:

(JSC::B3::Air::ShufflePair::ShufflePair):
(JSC::B3::Air::ShufflePair::width):

  • b3/air/AirFixObviousSpills.cpp:
  • b3/air/AirFixPartialRegisterStalls.cpp:

(JSC::B3::Air::fixPartialRegisterStalls):

  • b3/air/AirInst.cpp:

(JSC::B3::Air::Inst::hasArgEffects):

  • b3/air/AirInst.h:

(JSC::B3::Air::Inst::forEachTmp):

  • b3/air/AirInstInlines.h:

(JSC::B3::Air::Inst::forEach):
(JSC::B3::Air::Inst::forEachDef):
(JSC::B3::Air::Inst::forEachDefWithExtraClobberedRegs):

  • b3/air/AirLiveness.h:

(JSC::B3::Air::TmpLivenessAdapter::numIndices):
(JSC::B3::Air::TmpLivenessAdapter::acceptsBank):
(JSC::B3::Air::TmpLivenessAdapter::valueToIndex):
(JSC::B3::Air::TmpLivenessAdapter::indexToValue):
(JSC::B3::Air::StackSlotLivenessAdapter::acceptsBank):
(JSC::B3::Air::RegLivenessAdapter::acceptsBank):
(JSC::B3::Air::AbstractLiveness::AbstractLiveness):
(JSC::B3::Air::AbstractLiveness::LocalCalc::execute):
(JSC::B3::Air::TmpLivenessAdapter::acceptsType): Deleted.
(JSC::B3::Air::StackSlotLivenessAdapter::acceptsType): Deleted.
(JSC::B3::Air::RegLivenessAdapter::acceptsType): Deleted.

  • b3/air/AirLogRegisterPressure.cpp:

(JSC::B3::Air::logRegisterPressure):

  • b3/air/AirLowerAfterRegAlloc.cpp:

(JSC::B3::Air::lowerAfterRegAlloc):

  • b3/air/AirLowerMacros.cpp:

(JSC::B3::Air::lowerMacros):

  • b3/air/AirPadInterference.cpp:

(JSC::B3::Air::padInterference):

  • b3/air/AirReportUsedRegisters.cpp:

(JSC::B3::Air::reportUsedRegisters):

  • b3/air/AirSpillEverything.cpp:

(JSC::B3::Air::spillEverything):

  • b3/air/AirTmpInlines.h:

(JSC::B3::Air::AbsoluteTmpMapper<Arg::GP>::absoluteIndex): Deleted.
(JSC::B3::Air::AbsoluteTmpMapper<Arg::GP>::lastMachineRegisterIndex): Deleted.
(JSC::B3::Air::AbsoluteTmpMapper<Arg::GP>::tmpFromAbsoluteIndex): Deleted.
(JSC::B3::Air::AbsoluteTmpMapper<Arg::FP>::absoluteIndex): Deleted.
(JSC::B3::Air::AbsoluteTmpMapper<Arg::FP>::lastMachineRegisterIndex): Deleted.
(JSC::B3::Air::AbsoluteTmpMapper<Arg::FP>::tmpFromAbsoluteIndex): Deleted.

  • b3/air/AirTmpWidth.cpp:

(JSC::B3::Air::TmpWidth::recompute):

  • b3/air/AirTmpWidth.h:

(JSC::B3::Air::TmpWidth::width):
(JSC::B3::Air::TmpWidth::requiredWidth):
(JSC::B3::Air::TmpWidth::defWidth):
(JSC::B3::Air::TmpWidth::useWidth):
(JSC::B3::Air::TmpWidth::Widths::Widths):

  • b3/air/AirUseCounts.h:

(JSC::B3::Air::UseCounts::UseCounts):

  • b3/air/AirValidate.cpp:
  • b3/air/opcode_generator.rb:
  • b3/air/testair.cpp:

(JSC::B3::Air::compile): Deleted.
(JSC::B3::Air::invoke): Deleted.
(JSC::B3::Air::compileAndRun): Deleted.
(JSC::B3::Air::testSimple): Deleted.
(JSC::B3::Air::loadConstantImpl): Deleted.
(JSC::B3::Air::loadConstant): Deleted.
(JSC::B3::Air::loadDoubleConstant): Deleted.
(JSC::B3::Air::testShuffleSimpleSwap): Deleted.
(JSC::B3::Air::testShuffleSimpleShift): Deleted.
(JSC::B3::Air::testShuffleLongShift): Deleted.
(JSC::B3::Air::testShuffleLongShiftBackwards): Deleted.
(JSC::B3::Air::testShuffleSimpleRotate): Deleted.
(JSC::B3::Air::testShuffleSimpleBroadcast): Deleted.
(JSC::B3::Air::testShuffleBroadcastAllRegs): Deleted.
(JSC::B3::Air::testShuffleTreeShift): Deleted.
(JSC::B3::Air::testShuffleTreeShiftBackward): Deleted.
(JSC::B3::Air::testShuffleTreeShiftOtherBackward): Deleted.
(JSC::B3::Air::testShuffleMultipleShifts): Deleted.
(JSC::B3::Air::testShuffleRotateWithFringe): Deleted.
(JSC::B3::Air::testShuffleRotateWithFringeInWeirdOrder): Deleted.
(JSC::B3::Air::testShuffleRotateWithLongFringe): Deleted.
(JSC::B3::Air::testShuffleMultipleRotates): Deleted.
(JSC::B3::Air::testShuffleShiftAndRotate): Deleted.
(JSC::B3::Air::testShuffleShiftAllRegs): Deleted.
(JSC::B3::Air::testShuffleRotateAllRegs): Deleted.
(JSC::B3::Air::testShuffleSimpleSwap64): Deleted.
(JSC::B3::Air::testShuffleSimpleShift64): Deleted.
(JSC::B3::Air::testShuffleSwapMixedWidth): Deleted.
(JSC::B3::Air::testShuffleShiftMixedWidth): Deleted.
(JSC::B3::Air::testShuffleShiftMemory): Deleted.
(JSC::B3::Air::testShuffleShiftMemoryLong): Deleted.
(JSC::B3::Air::testShuffleShiftMemoryAllRegs): Deleted.
(JSC::B3::Air::testShuffleShiftMemoryAllRegs64): Deleted.
(JSC::B3::Air::combineHiLo): Deleted.
(JSC::B3::Air::testShuffleShiftMemoryAllRegsMixedWidth): Deleted.
(JSC::B3::Air::testShuffleRotateMemory): Deleted.
(JSC::B3::Air::testShuffleRotateMemory64): Deleted.
(JSC::B3::Air::testShuffleRotateMemoryMixedWidth): Deleted.
(JSC::B3::Air::testShuffleRotateMemoryAllRegs64): Deleted.
(JSC::B3::Air::testShuffleRotateMemoryAllRegsMixedWidth): Deleted.
(JSC::B3::Air::testShuffleSwapDouble): Deleted.
(JSC::B3::Air::testShuffleShiftDouble): Deleted.
(JSC::B3::Air::testX86VMULSD): Deleted.
(JSC::B3::Air::testX86VMULSDDestRex): Deleted.
(JSC::B3::Air::testX86VMULSDOp1DestRex): Deleted.
(JSC::B3::Air::testX86VMULSDOp2DestRex): Deleted.
(JSC::B3::Air::testX86VMULSDOpsDestRex): Deleted.
(JSC::B3::Air::testX86VMULSDAddr): Deleted.
(JSC::B3::Air::testX86VMULSDAddrOpRexAddr): Deleted.
(JSC::B3::Air::testX86VMULSDDestRexAddr): Deleted.
(JSC::B3::Air::testX86VMULSDRegOpDestRexAddr): Deleted.
(JSC::B3::Air::testX86VMULSDAddrOpDestRexAddr): Deleted.
(JSC::B3::Air::testX86VMULSDBaseNeedsRex): Deleted.
(JSC::B3::Air::testX86VMULSDIndexNeedsRex): Deleted.
(JSC::B3::Air::testX86VMULSDBaseIndexNeedRex): Deleted.
(JSC::B3::Air::run): Deleted.

2:14 PM Changeset in webkit [212969] by keith_miller@apple.com
  • 7 edits in trunk/Source

We should be able to use std::tuples as keys in HashMap
https://bugs.webkit.org/show_bug.cgi?id=168805

Reviewed by Filip Pizlo.

Source/JavaScriptCore:

Convert the mess of std::pairs we used as the keys in PrototypeMap
to a std::tuple. I also plan on using this for a HashMap in wasm.

(JSC::PrototypeMap::createEmptyStructure):
(JSC::PrototypeMap::clearEmptyObjectStructureForPrototype):

  • runtime/PrototypeMap.h:

Source/WTF:

This patch adds support for using std::tupeles as the key
type in HashMap. It is equivalent to doing a sequence of
std::pairs but has a nicer syntax.

  • wtf/HashFunctions.h:

(WTF::TupleHash::hash):
(WTF::TupleHash::equal):
(WTF::TupleHash::allTrue):

  • wtf/HashTraits.h:

(WTF::TupleHashTraits::allTrue):
(WTF::TupleHashTraits::emptyValue):
(WTF::TupleHashTraits::constructDeletedValue):
(WTF::TupleHashTraits::isDeletedValue):

12:44 PM Changeset in webkit [212968] by magomez@igalia.com
  • 2 edits in trunk/Source/WebCore

[GTK] WebkitWebProcess crashes on exit on nvidia if threaded compositing is enabled
https://bugs.webkit.org/show_bug.cgi?id=165522

Reviewed by Carlos Garcia Campos.

Before destrying a GLContextGLX we need to set the default framebufer to avoid a bug
in some nvidia drivers. Ensure that we set the context as current before performing
that operation, and set the appropriate current context after doing so.

No new tests.

  • platform/graphics/glx/GLContextGLX.cpp:

(WebCore::GLContextGLX::~GLContextGLX):

12:09 PM Changeset in webkit [212967] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WTF

Prepare to enable WebRTC on iOS
https://bugs.webkit.org/show_bug.cgi?id=168811

Patch by Alex Christensen <achristensen@webkit.org> on 2017-02-24
Reviewed by Youenn Fablet.

  • wtf/Platform.h:
12:04 PM Changeset in webkit [212966] by Antti Koivisto
  • 1 edit
    2 deletes in trunk/LayoutTests

Remove leftover html files.

  • http/tests/cache/disk-cache/shattered-deduplication-expected.html: Removed.
  • http/tests/cache/disk-cache/shattered-deduplication.html: Removed.
11:51 AM Changeset in webkit [212965] by Chris Dumez
  • 5 edits
    3 adds in trunk/Source

[iOS][WK2] Disable network cache speculative revalidation / loading in low power mode
https://bugs.webkit.org/show_bug.cgi?id=168832
<rdar://problem/30697911>

Reviewed by Antti Koivisto.

Source/WebCore:

Add LowPowerModeNotifier class to monitor low power mode state on iOS.

  • WebCore.xcodeproj/project.pbxproj:
  • platform/LowPowerModeNotifier.cpp: Added.

(WebCore::LowPowerModeNotifier::LowPowerModeNotifier):
(WebCore::LowPowerModeNotifier::isLowPowerModeEnabled):

  • platform/LowPowerModeNotifier.h: Added.
  • platform/ios/LowPowerModeNotifierIOS.mm: Added.

(-[WebLowPowerModeObserver initWithNotifier:]):
(-[WebLowPowerModeObserver dealloc]):
(-[WebLowPowerModeObserver _didReceiveLowPowerModeChange]):
(WebCore::LowPowerModeNotifier::LowPowerModeNotifier):
(WebCore::LowPowerModeNotifier::isLowPowerModeEnabled):
(WebCore::LowPowerModeNotifier::notifyLowPowerModeChanged):
(WebCore::notifyLowPowerModeChanged):

Source/WebKit2:

Disable network cache speculative revalidation / loading in low power mode on iOS to
save battery.

  • NetworkProcess/cache/NetworkCache.cpp:

(WebKit::NetworkCache::Cache::initialize):

  • NetworkProcess/cache/NetworkCache.h:
11:41 AM Changeset in webkit [212964] by matthew_hanson@apple.com
  • 19 edits in branches/safari-603.1.30.1-branch

Roll out r212459 via r212537. rdar://problem/30699480

11:41 AM Changeset in webkit [212963] by matthew_hanson@apple.com
  • 5 edits in branches/safari-603.1.30.1-branch/Source

Versioning.

11:36 AM Changeset in webkit [212962] by sbarati@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed. Remove inaccurate copy-paste comment from r212939.

  • dfg/DFGOperations.cpp:
11:24 AM Changeset in webkit [212961] by Chris Dumez
  • 4 edits in trunk/Source/WebCore

[Mac] Report domains using abnormally high memory usage via enhanced privacy logging
https://bugs.webkit.org/show_bug.cgi?id=168797
<rdar://problem/29964017>

Reviewed by Andreas Kling.

Report domains using abnormally high memory usage (> 2GB) via enhanced privacy
logging on Mac.

  • page/DiagnosticLoggingKeys.cpp:

(WebCore::DiagnosticLoggingKeys::domainCausingJetsamKey):

  • page/DiagnosticLoggingKeys.h:
  • page/PerformanceMonitor.cpp:

(WebCore::reportPageOverPostLoadResourceThreshold):
(WebCore::PerformanceMonitor::measurePostLoadCPUUsage):
(WebCore::PerformanceMonitor::measurePostLoadMemoryUsage):
(WebCore::reportPageOverPostLoadCPUUsageThreshold): Deleted.

9:50 AM Changeset in webkit [212960] by matthew_hanson@apple.com
  • 5 edits in branches/safari-603.1.30.0-branch/Source

Versioning.

9:10 AM Changeset in webkit [212959] by matthew_hanson@apple.com
  • 5 edits in branches/safari-603.1.30.4-branch/Source

Versioning.

9:07 AM Changeset in webkit [212958] by matthew_hanson@apple.com
  • 2 edits in branches/safari-603.1.30.4-branch/Source/WebCore

Merge r212822. rdar://problem/30682429

9:02 AM Changeset in webkit [212957] by matthew_hanson@apple.com
  • 2 edits in branches/safari-603.1.30.0-branch/Source/JavaScriptCore

rdar://problem/30675867

8:59 AM Changeset in webkit [212956]
  • in /

This is an empty revision for padding.

8:59 AM Changeset in webkit [212955] by matthew_hanson@apple.com
  • 5 edits in branches/safari-603.1.30.0-branch/Source

Versioning.

8:57 AM Changeset in webkit [212954] by matthew_hanson@apple.com
  • 5 edits in branches/safari-603.1.30.1-branch/Source

Versioning.

8:45 AM Changeset in webkit [212953] by achristensen@apple.com
  • 11 edits in trunk

.. should not remove windows drive letters in paths of file URLs
https://bugs.webkit.org/show_bug.cgi?id=168824

Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

  • web-platform-tests/url/a-element-expected.txt:
  • web-platform-tests/url/a-element-xhtml-expected.txt:
  • web-platform-tests/url/url-constructor-expected.txt:

Source/WebCore:

It's specified in https://url.spec.whatwg.org/#shorten-a-urls-path and helps behavior for browsers on Windows.
It can't hurt to pass a few more web platform tests, though.

  • platform/URLParser.cpp:

(WebCore::URLParser::copyURLPartsUntil):
(WebCore::URLParser::shouldPopPath):
(WebCore::URLParser::popPath):
(WebCore::URLParser::parse):

  • platform/URLParser.h:

LayoutTests:

  • fast/url/file-expected.txt:
  • fast/url/file-http-base-expected.txt:
  • fast/url/relative-win-expected.txt:
5:17 AM Changeset in webkit [212952] by Antti Koivisto
  • 1 edit
    3 deletes in trunk/LayoutTests

Reverting https://trac.webkit.org/r212951, landing this doesn't actually work due to Git infrastucture.

  • http/tests/cache/disk-cache/resources/shattered-1-nocollision.pdf: Removed.
  • http/tests/cache/disk-cache/resources/shattered-1.pdf: Removed.
  • http/tests/cache/disk-cache/resources/shattered-2-nocollision.pdf: Removed.
4:45 AM Changeset in webkit [212951] by Antti Koivisto
  • 1 edit
    5 adds in trunk/LayoutTests

Add a test verifying cache deduplication is not sensitive to SHA1 collision attack
https://bugs.webkit.org/show_bug.cgi?id=168774

Reviewed by Sam Weinig.

We use SHA1 for deduplicating disk cache resources. Since a real world SHA1 collision was demonstrated
recently (http://shattered.io/) we can add a test that shows it can't be used for cache poisoning.

There are two protections in the cache code that both individually stop this type of attack:

  • When deduplicating the data is verified to be equal by a bytewise comparison.
  • SHA1 computations include random salt unique to cache instance.

Commenting out both protections is needed to make this test fail.

  • http/tests/cache/disk-cache/resources/shattered-1-nocollision.pdf: Added.
  • http/tests/cache/disk-cache/resources/shattered-1.pdf: Added.
  • http/tests/cache/disk-cache/resources/shattered-2-nocollision.pdf: Added.
  • http/tests/cache/disk-cache/resources/shattered-2.pdf: Added.

Files shattered-1.pdf and shattered-2.pdf differ visually but have the same SHA1.
The nocollision versions for the ref have the same pixels but don't collide.

  • http/tests/cache/disk-cache/shattered-deduplication-expected.html: Added.
  • http/tests/cache/disk-cache/shattered-deduplication.html: Added.
1:34 AM Changeset in webkit [212950] by Csaba Osztrogonác
  • 2 edits in trunk/Source/WebCore

[Mac][cmake] Unreviewed buildfix after r212736.

  • PlatformMac.cmake:
1:19 AM Changeset in webkit [212949] by wilander@apple.com
  • 29 edits
    3 copies
    19 adds in trunk

Resource Load Statistics: Add alternate classification method
https://bugs.webkit.org/show_bug.cgi?id=168347
<rdar://problem/30352793>
<rdar://problem/30646710>
<rdar://problem/30660708>

Reviewed by Alex Christensen.

Source/WebCore:

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:

Source/WebKit2:

This patch adds a CorePrediction-based classifier to the WebResourceLoadStatisticsStore.
The CorePrediction framework is introduced as a dependency for macOS and iOS. The patch
also adds functions to support layout tests of the feature.

  • Platform/Logging.h:

Added channel ResourceLoadStatistics.

  • Platform/classifier/ResourceLoadStatisticsClassifier.h: Added.

Pulls in the Cocoa-specific classifier for Cocoa-based platforms.

(WebKit::ResourceLoadStatisticsClassifier::ResourceLoadStatisticsClassifier):

  • Platform/classifier/ResourceLoadStatisticsClassifierBase.cpp: Added.

(WebKit::ResourceLoadStatisticsClassifierBase::hasPrevalentResourceCharacteristics):

Shared classifier logic.

(WebKit::ResourceLoadStatisticsClassifierBase::classifyWithVectorThreshold):

Fallback classifier for when we don't have CorePrediction.

  • Platform/classifier/ResourceLoadStatisticsClassifierBase.h: Added.

(WebKit::ResourceLoadStatisticsClassifierBase::ResourceLoadStatisticsClassifierBase):
(WebKit::ResourceLoadStatisticsClassifierBase::~ResourceLoadStatisticsClassifierBase):

  • Platform/classifier/cocoa/CorePredictionSoftLink.h: Added.

Soft links to CorePrediction and the two functions we use from it.

  • Platform/classifier/cocoa/ResourceLoadStatisticsClassifierCocoa.cpp: Added.

(WebKit::ResourceLoadStatisticsClassifier::classify):
(WebKit::ResourceLoadStatisticsClassifier::storagePath):
(WebKit::ResourceLoadStatisticsClassifier::shouldUseCorePredictionAndHaveModelLoaded):
(WebKit::ResourceLoadStatisticsClassifier::singletonPredictionModel):

The new classifier for Cocoa platforms.

  • Platform/classifier/cocoa/ResourceLoadStatisticsClassifierCocoa.h: Added.
  • PlatformGTK.cmake:

Added Platform/classifier directory and ResourceLoadStatisticsClassifierBase.cpp.

  • PlatformMac.cmake:

Added Platform/classifier and Platform/classifier/cocoa directories, and
source files ResourceLoadStatisticsClassifierBase.cpp and
ResourceLoadStatisticsClassifierCocoa.cpp

  • Resources/ResourceLoadStatistics/corePrediction_model: Added.

Model file to load into CorePrediction.

  • UIProcess/API/C/WKResourceLoadStatisticsManager.cpp:

(WKResourceLoadStatisticsManagerSetSubframeUnderTopFrameOrigin):
(WKResourceLoadStatisticsManagerSetSubresourceUnderTopFrameOrigin):
(WKResourceLoadStatisticsManagerSetSubresourceUniqueRedirectTo):

Test infrastructure.

  • UIProcess/API/C/WKResourceLoadStatisticsManager.h:
  • UIProcess/WebResourceLoadStatisticsManager.cpp:

(WebKit::WebResourceLoadStatisticsManager::setSubframeUnderTopFrameOrigin):
(WebKit::WebResourceLoadStatisticsManager::setSubresourceUnderTopFrameOrigin):
(WebKit::WebResourceLoadStatisticsManager::setSubresourceUniqueRedirectTo):

Test infrastructure.

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

(WebKit::WebResourceLoadStatisticsStore::WebResourceLoadStatisticsStore):

Renamed m_storagePath to m_statisticsStoragePath for clarity.

(WebKit::WebResourceLoadStatisticsStore::classifyResource):

Now calls the classifier through its ResourceLoadStatisticsClassifier
member variable.

(WebKit::WebResourceLoadStatisticsStore::persistentStoragePath):

Renamed m_storagePath to m_statisticsStoragePath for clarity.

(WebKit::WebResourceLoadStatisticsStore::writeEncoderToDisk):

Renamed m_storagePath to m_statisticsStoragePath for clarity.

(WebKit::WebResourceLoadStatisticsStore::hasPrevalentResourceCharacteristics): Deleted.

  • UIProcess/WebResourceLoadStatisticsStore.h:
  • WebKit2.xcodeproj/project.pbxproj:

Added the new classifier source files under Platform/classifier and the
corePrediction_model file under Resources/ResourceLoadStatistics.

Tools:

Added three testRunner functions to facilitate layout tests:

  • setStatisticsSubframeUnderTopFrameOrigin()
  • setStatisticsSubresourceUnderTopFrameOrigin()
  • setStatisticsSubresourceUniqueRedirectTo()
  • WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
  • WebKitTestRunner/InjectedBundle/TestRunner.cpp:

(WTR::TestRunner::setStatisticsSubframeUnderTopFrameOrigin):
(WTR::TestRunner::setStatisticsSubresourceUnderTopFrameOrigin):
(WTR::TestRunner::setStatisticsSubresourceUniqueRedirectTo):

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

(WTR::TestController::setStatisticsSubframeUnderTopFrameOrigin):
(WTR::TestController::setStatisticsSubresourceUnderTopFrameOrigin):
(WTR::TestController::setStatisticsSubresourceUniqueRedirectTo):

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

(WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle):

LayoutTests:

  • http/tests/loading/resourceLoadStatistics/classify-as-non-prevalent-based-on-mixed-statistics-expected.txt: Added.
  • http/tests/loading/resourceLoadStatistics/classify-as-non-prevalent-based-on-mixed-statistics.html: Added.
  • http/tests/loading/resourceLoadStatistics/classify-as-non-prevalent-based-on-sub-frame-under-top-frame-origins-expected.txt: Added.
  • http/tests/loading/resourceLoadStatistics/classify-as-non-prevalent-based-on-sub-frame-under-top-frame-origins.html: Added.
  • http/tests/loading/resourceLoadStatistics/classify-as-non-prevalent-based-on-subresource-under-top-frame-origins-expected.txt: Added.
  • http/tests/loading/resourceLoadStatistics/classify-as-non-prevalent-based-on-subresource-under-top-frame-origins.html: Added.
  • http/tests/loading/resourceLoadStatistics/classify-as-non-prevalent-based-on-subresource-unique-redirects-to-expected.txt: Added.
  • http/tests/loading/resourceLoadStatistics/classify-as-non-prevalent-based-on-subresource-unique-redirects-to.html: Added.
  • http/tests/loading/resourceLoadStatistics/classify-as-prevalent-based-on-mixed-statistics-expected.txt: Added.
  • http/tests/loading/resourceLoadStatistics/classify-as-prevalent-based-on-mixed-statistics.html: Added.
  • http/tests/loading/resourceLoadStatistics/classify-as-prevalent-based-on-sub-frame-under-top-frame-origins-expected.txt: Added.
  • http/tests/loading/resourceLoadStatistics/classify-as-prevalent-based-on-sub-frame-under-top-frame-origins.html: Added.
  • http/tests/loading/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-under-top-frame-origins-expected.txt: Added.
  • http/tests/loading/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-under-top-frame-origins.html: Added.
  • http/tests/loading/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-unique-redirects-to-expected.txt: Added.
  • http/tests/loading/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-unique-redirects-to.html: Added.
  • http/tests/loading/resourceLoadStatistics/non-prevalent-resource-with-user-interaction.html:

Added a call to internals.setResourceLoadStatisticsEnabled(false) before testRunner.notifyDone().

  • http/tests/loading/resourceLoadStatistics/non-prevalent-resource-without-user-interaction.html:

Added a call to internals.setResourceLoadStatisticsEnabled(false) before testRunner.notifyDone().

  • http/tests/loading/resourceLoadStatistics/prevalent-resource-with-user-interaction-timeout.html:

Added a call to internals.setResourceLoadStatisticsEnabled(false) before testRunner.notifyDone().

  • http/tests/loading/resourceLoadStatistics/prevalent-resource-with-user-interaction.html:

Added a call to internals.setResourceLoadStatisticsEnabled(false) before testRunner.notifyDone().

  • http/tests/loading/resourceLoadStatistics/prevalent-resource-without-user-interaction.html:

Added a call to internals.setResourceLoadStatisticsEnabled(false) before testRunner.notifyDone().

  • platform/gtk/TestExpectations:

The whole http/tests/loading/resourceLoadStatistics marked as crashing based on
Carlos Garcia Campos's assessment in https://bugs.webkit.org/show_bug.cgi?id=168171.

  • platform/wk2/TestExpectations:

The above tests are only valid for WebKit2. Marked as [ Pass ].

Feb 23, 2017:

11:38 PM Changeset in webkit [212948] by commit-queue@webkit.org
  • 10 edits in trunk

[Modern Media Controls] No controls are shown for <audio preload="none">
https://bugs.webkit.org/show_bug.cgi?id=168800
<rdar://problem/30652142>

Patch by Antoine Quint <Antoine Quint> on 2017-02-23
Reviewed by Eric Carlson.

Source/WebCore:

A media element's currentSrc property will only be set when data has started
to load. In the case where preload="none" is used, regardless of whether a
source is specified, currentSrc would be the empty string and we wouldn't
show controls at all. Identifying whether a source is specified is a little
tricky because it could be specified in a variety of ways and dynamically
as well.

So instead we optimistically show controls always provided the "controls"
attribute is set.

  • Modules/modern-media-controls/media/controls-visibility-support.js:

(ControlsVisibilitySupport.prototype._updateControls):
(ControlsVisibilitySupport):

  • Modules/modern-media-controls/media/start-support.js:

(StartSupport.prototype._shouldShowStartButton):
(StartSupport):

LayoutTests:

Update tests to account for the new rules for controls visibility and force an older test
not to use modern media controls since we now show the play button and there is a bug
that prevents the play button from being positioned correctly when inside a region
(see https://bugs.webkit.org/show_bug.cgi?id=168823).

  • fast/regions/inline-block-inside-anonymous-overflow-with-covered-controls-expected.html
  • fast/regions/inline-block-inside-anonymous-overflow-with-covered-controls.html
  • media/modern-media-controls/controls-visibility-support/controls-visibility-support-controls-on-audio-expected.txt:
  • media/modern-media-controls/controls-visibility-support/controls-visibility-support-controls-on-audio.html:
  • media/modern-media-controls/start-support/start-support-no-source-expected.txt:
  • media/modern-media-controls/start-support/start-support-no-source.html:
11:17 PM Changeset in webkit [212947] by Dewei Zhu
  • 8 edits in trunk/Websites/perf.webkit.org

Rename 'commit_parent' in 'commits' table to 'commit_previous_commit'.
https://bugs.webkit.org/show_bug.cgi?id=168816

Reviewed by Ryosuke Niwa.

Rename 'commit_parent' to avoid ambiguity in the coming feature.
For exisiting database, run

"ALTER TABLE commits RENAME commit_parent TO commit_previous_commit;"

to update the database.

  • init-database.sql:
  • public/api/report-commits.php:
  • public/include/commit-log-fetcher.php:
  • server-tests/api-commits.js:

(then):

  • server-tests/api-report-commits-tests.js:

(then):

  • tools/sync-commits.py:

(main):
(Repository.fetch_commits_and_submit):
(GitRepository._revision_from_tokens):

  • unit-tests/analysis-task-tests.js:

(sampleAnalysisTask):

10:57 PM Changeset in webkit [212946] by rniwa@webkit.org
  • 7 edits in trunk/Websites/perf.webkit.org

New sampling algorithm shows very few points when zoomed out
https://bugs.webkit.org/show_bug.cgi?id=168813

Reviewed by Saam Barati.

When a chart is zoomed out to a large time interval, the new sampling algorithm introduced in r212853 can
hide most of the data points because the difference between the preceding point's time and the succeeding
point's time of most points will be below the threshold we computed.

Instead, rank each data point based on the aforementioned time interval difference, and pick the first M data
points when M data points are to be shown.

This makes the new algorithm behave like our old algorithm while keeping it stable still. Note that this
algorithm still biases data points without a close neighboring point but this seems to work out in practice
because such a point tends to be an important sample anyway, and we don't have a lot of space between
data points since we aim to show about one point per pixel.

  • browser-tests/index.html:

(CanvasTest.canvasContainsColor): Extracted from one of the test cases and generalized. Returns true when
the specified region of the canvas contains a specified color (alpha is optional).

  • browser-tests/time-series-chart-tests.js: Added a test case for sampling. It checks that sampling happens

and that we always show some data point even when zoomed out to a large time interval.
(createChartWithSampleCluster):

  • public/v3/components/interactive-time-series-chart.js:

(InteractiveTimeSeriesChart.prototype._sampleTimeSeries):

  • public/v3/components/time-series-chart.js:

(TimeSeriesChart.prototype._ensureSampledTimeSeries): M, the number of data points we pick must be computed
based on the width of data points we're about to draw constrained by the canvas size. e.g. when the canvas
is only half filled, we shouldn't be showing two points per pixel in the filled region.
(TimeSeriesChart.prototype._sampleTimeSeries): Refined the algorithm. First, compute the time difference or
the rank for each N data points. Sort those ranks in descending order (in the order we prefer), and include
all data points above the M-th rank in the sample.
(TimeSeriesChart.prototype.computeTimeGrid): Revert the inadvertent change in r212935.

  • public/v3/models/time-series.js:

(TimeSeriesView.prototype.filter): Fixed a bug that the indices passed onto the callback were shifted by the
starting index.

  • unit-tests/time-series-tests.js: Added a test case to ensure callbacks are called with correct data points

and indices.

10:52 PM Changeset in webkit [212945] by Joseph Pecoraro
  • 7 edits in trunk

[Resource Timing] Add Experimental Feature Flag
https://bugs.webkit.org/show_bug.cgi?id=167147

Reviewed by Ryosuke Niwa.

Source/WebKit2:

  • Shared/WebPreferencesDefinitions.h:

Move ResourceTiming to experimental section.
Disable it for El Capitan due to known issues.

Tools:

  • DumpRenderTree/mac/DumpRenderTree.mm:

(enableExperimentalFeatures):
(resetWebPreferencesToConsistentValues):

  • DumpRenderTree/win/DumpRenderTree.cpp:

(enableExperimentalFeatures):
(resetWebPreferencesToConsistentValues):
Put experimental flags in the experimental section.

Websites/webkit.org:

  • experimental-features.html:

Test for Resource Timing.

10:51 PM Changeset in webkit [212944] by Joseph Pecoraro
  • 96 edits
    2 moves
    13 adds in trunk

[Resource Timing] Gather timing information with reliable responseEnd time
https://bugs.webkit.org/show_bug.cgi?id=168351

Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

  • web-platform-tests/fetch/api/redirect/redirect-count-cross-origin-expected.txt:
  • web-platform-tests/fetch/api/redirect/redirect-count-cross-origin-worker-expected.txt:
  • web-platform-tests/fetch/api/redirect/redirect-count-expected.txt:
  • web-platform-tests/fetch/api/redirect/redirect-count-worker-expected.txt:
  • web-platform-tests/fetch/api/redirect/redirect-location-expected.txt:
  • web-platform-tests/fetch/api/redirect/redirect-location-worker-expected.txt:

New behavior for too many redirects caused by <rdar://problem/30610988>.

  • web-platform-tests/resource-timing/rt-nextHopProtocol-expected.txt: Added.
  • web-platform-tests/resource-timing/rt-nextHopProtocol.html: Added.
  • web-platform-tests/resource-timing/rt-nextHopProtocol.js: Added.
  • web-platform-tests/resource-timing/rt-nextHopProtocol.worker-expected.txt: Added.
  • web-platform-tests/resource-timing/rt-nextHopProtocol.worker.html: Added.
  • web-platform-tests/resource-timing/rt-nextHopProtocol.worker.js: Added.

New tests specific to just checking the nextHopProtocol property with
a non-cached resource to avoid flakeyness.

Source/WebCore:

This patch replaces the unused double finishTime in ResourceLoader's
didFinishLoad with a complete WebCore::NetworkLoadMetrics object. This
allows the NetworkProcess to give complete timing information, and more
final metrics about the load, to WebCore. Currently this is only used
by ResourceTiming, but it will soon be used by Web Inspector as well.
We may also end up extending this to the didFail path as well, since it
is possible that we have some metrics for load failures.

At the same time we want to start moving away from the legacy path that
populated a subset of this information in ResourceResponse's NetworkLoadMetrics.
It doesn't make sense to store this information on the ResourceResponse
for a few reasons: We don't want to store the metrics in our Network Cache and
not all of the load timing metrics have been populated yet (responseEnd).
In an effort to move off of this data we've renamed the accessor to
"deprecatedNetworkLoadMetrics". There are a few remaining clients
(ResourceHandle, PerformanceTiming, InspectorNetworkAgent) which can be
migrated separately from this patch.

Having both the legacy and new code paths adds a little bit of complexity.
One advantage of the new path is that the complete load timing data
(fetchStart -> dns -> connect -> request -> response -> responseEnd) can
be packaged together. The legacy path could not include a responseEnd, so
WebCore faked that value with its own timestamp. Having the fake responseEnd
caused issues as timestamps / clocks are different between processes. In order
for PerformanceResponseTiming to know whether or not the NetworkLoadMetrics
has the complete network timing metrics it checks isComplete(). If true
it knows it can use the responseEnd time from NetworkLoadMetrics, otherwise
it must fallback to the legacy value from LoadTiming. Once all of the
deprecatedNetworkLoadMetrics clients go away, we should always have the
complete data and this can be eliminated.

Tests: imported/w3c/web-platform-tests/resource-timing/rt-nextHopProtocol.html

imported/w3c/web-platform-tests/resource-timing/rt-nextHopProtocol.worker.html

  • PlatformMac.cmake:
  • WebCore.xcodeproj/project.pbxproj:

Rename NetworkLoadTiming -> NetworkLoadMetrics.

  • page/PerformanceResourceTiming.cpp:

(WebCore::entryStartTime):
(WebCore::entryEndTime):
(WebCore::PerformanceResourceTiming::PerformanceResourceTiming):
(WebCore::PerformanceResourceTiming::nextHopProtocol):
(WebCore::PerformanceResourceTiming::domainLookupStart):
(WebCore::PerformanceResourceTiming::domainLookupEnd):
(WebCore::PerformanceResourceTiming::connectStart):
(WebCore::PerformanceResourceTiming::connectEnd):
(WebCore::PerformanceResourceTiming::secureConnectionStart):
(WebCore::PerformanceResourceTiming::requestStart):
(WebCore::PerformanceResourceTiming::responseStart):
(WebCore::PerformanceResourceTiming::responseEnd):
(WebCore::PerformanceResourceTiming::networkLoadTimeToDOMHighResTimeStamp):

  • page/PerformanceResourceTiming.h:

Mostly just updating names and types. This does however need to get the
correct endTime based on whether the NetworkLoadMetrics are complete
(meaning includes responseEnd) or not (legacy, use LoadTiming value).

  • page/PerformanceResourceTiming.idl:

Add nextHopProtocol.

  • page/PerformanceTiming.cpp:

(WebCore::PerformanceTiming::domainLookupStart):
(WebCore::PerformanceTiming::domainLookupEnd):
(WebCore::PerformanceTiming::connectStart):
(WebCore::PerformanceTiming::connectEnd):
(WebCore::PerformanceTiming::secureConnectionStart):
(WebCore::PerformanceTiming::requestStart):
(WebCore::PerformanceTiming::responseStart):
(WebCore::PerformanceTiming::resourceLoadTimeRelativeToFetchStart):

  • page/PerformanceTiming.h:

Navigation Timing values still uses the NetworkLoadTiming values stored on
the DocumentLoader. This should be moved off of the deprecated path separately.

  • platform/network/NetworkLoadMetrics.h: Renamed from Source/WebCore/platform/network/NetworkLoadTiming.h.

(WebCore::NetworkLoadMetrics::NetworkLoadMetrics):
(WebCore::NetworkLoadMetrics::isolatedCopy):
(WebCore::NetworkLoadMetrics::reset):
(WebCore::NetworkLoadMetrics::operator==):
(WebCore::NetworkLoadMetrics::operator!=):
(WebCore::NetworkLoadMetrics::isComplete):
(WebCore::NetworkLoadMetrics::markComplete):
(WebCore::NetworkLoadMetrics::encode):
(WebCore::NetworkLoadMetrics::decode):
Re-introduce a reset() method (for NetworkLoadSoup to reset between redirects).
Add protocolName and "complete" boolean.

  • platform/network/cocoa/NetworkLoadMetrics.mm: Renamed from Source/WebCore/platform/network/cocoa/NetworkLoadTiming.mm.

(WebCore::timingValue):
(WebCore::copyTimingData):
(WebCore::setCollectsTimingData):
Use this opportunity to convert NetworkLoadTiming timestamps to WTF::Seconds.
Since we already have to modify all the clients this moves us to use the more
strongly typed units that are less ambiguous then "double". The rest of the
Performance API has already moved to these units.

  • inspector/InspectorNetworkAgent.cpp:

(WebCore::InspectorNetworkAgent::buildObjectForTiming):
(WebCore::InspectorNetworkAgent::buildObjectForResourceResponse):
(WebCore::InspectorNetworkAgent::didFinishLoading):

  • inspector/InspectorNetworkAgent.h:

Inspector was the only client of the finishTime, and since the value was
erratically coming from clients in different ways it was almost certainly
inaccurate. Simplify this in preparation for using NetworkLoadMetrics.

  • Modules/fetch/FetchLoader.cpp:

(WebCore::FetchLoader::didFinishLoading):

  • Modules/fetch/FetchLoader.h:
  • fileapi/FileReaderLoader.cpp:

(WebCore::FileReaderLoader::didFinishLoading):

  • fileapi/FileReaderLoader.h:
  • html/MediaFragmentURIParser.cpp:

(WebCore::MediaFragmentURIParser::parseNPTTime):

  • inspector/InspectorInstrumentation.cpp:

(WebCore::InspectorInstrumentation::didFinishLoadingImpl):

  • inspector/InspectorInstrumentation.h:

(WebCore::InspectorInstrumentation::didFinishLoading):

  • loader/CrossOriginPreflightChecker.cpp:

(WebCore::CrossOriginPreflightChecker::validatePreflightResponse):

  • loader/DocumentLoader.cpp:

(WebCore::DocumentLoader::notifyFinished):
(WebCore::DocumentLoader::finishedLoading):
(WebCore::DocumentLoader::continueAfterContentPolicy):
(WebCore::DocumentLoader::maybeLoadEmpty):

  • loader/DocumentLoader.h:
  • loader/DocumentThreadableLoader.cpp:

(WebCore::DocumentThreadableLoader::didReceiveResponse):
(WebCore::DocumentThreadableLoader::notifyFinished):
(WebCore::DocumentThreadableLoader::didFinishLoading):
(WebCore::DocumentThreadableLoader::loadRequest):

  • loader/DocumentThreadableLoader.h:
  • loader/NetscapePlugInStreamLoader.cpp:

(WebCore::NetscapePlugInStreamLoader::didFinishLoading):

  • loader/NetscapePlugInStreamLoader.h:
  • loader/ResourceLoadNotifier.cpp:

(WebCore::ResourceLoadNotifier::didFinishLoad):
(WebCore::ResourceLoadNotifier::dispatchDidFinishLoading):
(WebCore::ResourceLoadNotifier::sendRemainingDelegateMessages):

  • loader/ResourceLoadNotifier.h:
  • loader/ResourceLoader.cpp:

(WebCore::ResourceLoader::deliverResponseAndData):
(WebCore::ResourceLoader::loadDataURL):
(WebCore::ResourceLoader::didFinishLoading):
(WebCore::ResourceLoader::didFinishLoadingOnePart):

  • loader/ResourceLoader.h:
  • loader/ResourceTiming.cpp:

(WebCore::ResourceTiming::fromLoad):
(WebCore::ResourceTiming::fromSynchronousLoad):
(WebCore::ResourceTiming::ResourceTiming):
(WebCore::ResourceTiming::isolatedCopy):

  • loader/ResourceTiming.h:

(WebCore::ResourceTiming::networkLoadMetrics):
(WebCore::ResourceTiming::ResourceTiming):
(WebCore::ResourceTiming::networkLoadTiming): Deleted.

  • loader/SubresourceLoader.cpp:

(WebCore::SubresourceLoader::SubresourceLoader):
(WebCore::SubresourceLoader::willSendRequestInternal):
(WebCore::SubresourceLoader::didReceiveResponse):
(WebCore::SubresourceLoader::didFinishLoading):
(WebCore::SubresourceLoader::reportResourceTiming):

  • loader/SubresourceLoader.h:
  • loader/ThreadableLoaderClient.h:

(WebCore::ThreadableLoaderClient::didFinishLoading):

  • loader/ThreadableLoaderClientWrapper.h:

(WebCore::ThreadableLoaderClientWrapper::didFinishLoading):

  • loader/WorkerThreadableLoader.cpp:

(WebCore::WorkerThreadableLoader::MainThreadBridge::didFinishLoading):

  • loader/WorkerThreadableLoader.h:
  • loader/appcache/ApplicationCacheGroup.cpp:

(WebCore::ApplicationCacheGroup::didFinishLoading):

  • loader/appcache/ApplicationCacheGroup.h:
  • loader/cache/CachedResource.h:

(WebCore::CachedResource::setLoadFinishTime):

  • loader/ios/QuickLook.mm:

(-[WebPreviewLoader connectionDidFinishLoading:]):

  • page/EventSource.cpp:

(WebCore::EventSource::didFinishLoading):

  • page/EventSource.h:
  • platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:

(ResourceHandleStreamingClient::didFinishLoading):

  • platform/network/BlobResourceHandle.cpp:

(WebCore::doNotifyFinish):

  • platform/network/PingHandle.h:
  • platform/network/ResourceHandle.h:
  • platform/network/ResourceHandleClient.h:

(WebCore::ResourceHandleClient::didFinishLoading):

  • platform/network/ResourceResponseBase.cpp:

(WebCore::ResourceResponseBase::crossThreadData):
(WebCore::ResourceResponseBase::fromCrossThreadData):
(WebCore::ResourceResponseBase::compare):

  • platform/network/ResourceResponseBase.h:

(WebCore::ResourceResponseBase::deprecatedNetworkLoadMetrics):
(WebCore::ResourceResponseBase::encode):
(WebCore::ResourceResponseBase::decode):
(WebCore::ResourceResponseBase::networkLoadTiming): Deleted.

  • platform/network/SynchronousLoaderClient.cpp:

(WebCore::SynchronousLoaderClient::didFinishLoading):

  • platform/network/SynchronousLoaderClient.h:
  • platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.cpp:

(WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::didReceiveResponse):
(WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::didFinishLoading):

  • platform/network/cf/SynchronousResourceHandleCFURLConnectionDelegate.cpp:

(WebCore::SynchronousResourceHandleCFURLConnectionDelegate::didReceiveResponse):
(WebCore::SynchronousResourceHandleCFURLConnectionDelegate::didFinishLoading):

  • platform/network/curl/ResourceHandleCurl.cpp:

(WebCore::WebCoreSynchronousLoader::didFinishLoading):

  • platform/network/curl/ResourceHandleManager.cpp:

(WebCore::calculateWebTimingInformations):
(WebCore::ResourceHandleManager::downloadTimerCallback):
(WebCore::handleDataURL):
(WebCore::milisecondsSinceRequest): Deleted.

  • platform/network/mac/ResourceHandleMac.mm:

(WebCore::ResourceHandle::getConnectionTimingData):

  • platform/network/mac/WebCoreResourceHandleAsDelegate.mm:

(-[WebCoreResourceHandleAsDelegate connection:didReceiveResponse:]):
(-[WebCoreResourceHandleAsDelegate connectionDidFinishLoading:]):

  • platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm:

(-[WebCoreResourceHandleAsOperationQueueDelegate connection:didReceiveResponse:]):
(-[WebCoreResourceHandleAsOperationQueueDelegate connectionDidFinishLoading:]):

  • platform/network/soup/ResourceHandleSoup.cpp:

(WebCore::restartedCallback):
(WebCore::nextMultipartResponsePartCallback):
(WebCore::sendRequestCallback):
(WebCore::ResourceHandle::didStartRequest):
(WebCore::networkEventCallback):
(WebCore::ResourceHandle::sendPendingRequest):
(WebCore::readCallback):
(WebCore::milisecondsSinceRequest): Deleted.

  • workers/WorkerScriptLoader.cpp:

(WebCore::WorkerScriptLoader::didFinishLoading):

  • workers/WorkerScriptLoader.h:
  • xml/XMLHttpRequest.cpp:

(WebCore::XMLHttpRequest::didFinishLoading):

  • xml/XMLHttpRequest.h:

Eliminate the unused finishTime double.

Source/WebKit2:

Change from an unused double finishTime to a complete WebCore::NetworkLoadMetrics
object in the didFinishLoad ResourceLoader path. We may also extend this in the
didFail path later on. This allows the NetworkProcess to give complete timing
information, and more final metrics about the load, to WebCore.

  • NetworkProcess/NetworkDataTask.h:

(WebKit::NetworkDataTaskClient::didCompleteWithError):
Give the NetworkDataTaskClient a basic didCompleteWithError for a completion
without metrics. For loads that complete with an error, or haven't populated
any metrics, this will pass empty metrics onward.

  • NetworkProcess/Downloads/BlobDownloadClient.cpp:

(WebKit::BlobDownloadClient::didFinishLoading):

  • NetworkProcess/Downloads/BlobDownloadClient.h:
  • NetworkProcess/Downloads/PendingDownload.h:
  • NetworkProcess/PingLoad.h:
  • NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp:

(WebKit::NetworkCache::SpeculativeLoad::didFinishLoading):

  • NetworkProcess/cache/NetworkCacheSpeculativeLoad.h:
  • NetworkProcess/NetworkDataTaskBlob.cpp:

(WebKit::NetworkDataTaskBlob::didFail):

  • NetworkProcess/NetworkLoad.cpp:

(WebKit::NetworkLoad::continueWillSendRequest):
(WebKit::NetworkLoad::didCompleteWithError):
(WebKit::NetworkLoad::didFinishLoading):

  • NetworkProcess/NetworkLoad.h:
  • NetworkProcess/NetworkLoadClient.h:
  • NetworkProcess/NetworkResourceLoader.cpp:

(WebKit::NetworkResourceLoader::didFinishLoading):
(WebKit::NetworkResourceLoader::sendResultForCacheEntry):

  • NetworkProcess/NetworkResourceLoader.h:
  • WebProcess/Network/WebResourceLoader.cpp:

(WebKit::WebResourceLoader::didFinishResourceLoad):
(WebKit::WebResourceLoader::didReceiveResource):

  • WebProcess/Network/WebResourceLoader.h:
  • WebProcess/Network/WebResourceLoader.messages.in:

Change didFinishLoad paths to take a NetworkLoadMetrics object instead of finishTime.
Change didCompleteWithError pathes to include a NetworkLoadMetrics object instead of finishTime.

  • NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
  • NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:

(WebKit::NetworkDataTaskCocoa::didCompleteWithError):
Own a NetworkLoadTiming that will be populated with the load.

  • NetworkProcess/cocoa/NetworkSessionCocoa.h:
  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(-[WKNetworkSessionDelegate URLSession:task:didCompleteWithError:]):
(-[WKNetworkSessionDelegate URLSession:task:didFinishCollectingMetrics:]):
(-[WKNetworkSessionDelegate URLSession:dataTask:didReceiveResponse:completionHandler:]):
Populate NetworkLoadMetrics in the didFinishCollectingMetrics NSURLSessionTaskDelegate method.

  • NetworkProcess/soup/NetworkDataTaskSoup.cpp:

(WebKit::NetworkDataTaskSoup::NetworkDataTaskSoup):
(WebKit::NetworkDataTaskSoup::timeoutFired):
(WebKit::NetworkDataTaskSoup::didSendRequest):
(WebKit::NetworkDataTaskSoup::dispatchDidReceiveResponse):
(WebKit::NetworkDataTaskSoup::dispatchDidCompleteWithError):
(WebKit::NetworkDataTaskSoup::tlsErrorsChanged):
(WebKit::NetworkDataTaskSoup::continueHTTPRedirection):
(WebKit::NetworkDataTaskSoup::didFinishRead):
(WebKit::NetworkDataTaskSoup::didFinishRequestNextPart):
(WebKit::NetworkDataTaskSoup::didFailDownload):
(WebKit::NetworkDataTaskSoup::didFail):
(WebKit::NetworkDataTaskSoup::networkEvent):
(WebKit::NetworkDataTaskSoup::didStartRequest):
(WebKit::NetworkDataTaskSoup::didRestart):

  • NetworkProcess/soup/NetworkDataTaskSoup.h:

Instead of populating the NetworkLoadMetrics on the ResourceResponse, populate
a member variable during the entire load and dispatch didFinishCollectingMetrics
right before didCompleteLoadWithError.

Source/WTF:

  • wtf/persistence/Coders.h:

(WTF::Persistence::Coder<Seconds>::encode):
(WTF::Persistence::Coder<Seconds>::decode):

LayoutTests:

Now that nextHopProtocol is available on Mac mark the test as flakey
because the value can be set or not depending on whether or not the
resource was loaded from a cache.

  • platform/ios-simulator/TestExpectations:
  • platform/gtk/TestExpectations:
  • platform/mac/TestExpectations:
  • platform/win/TestExpectations:

Mark nextHopProtocol tests as expected to fail on ports that do not
yet support those values. Mark redirect tests as failing on ports
that encounter the CFNetwork issue causing unexpected callbacks.

  • performance-api/resource-timing-apis-expected.txt:
  • performance-api/resources/resource-timing-api.js:

Progressions.

  • platform/mac-elcapitan/imported/w3c/web-platform-tests/resource-timing/test_resource_timing-expected.txt: Added.
  • platform/mac/imported/w3c/web-platform-tests/resource-timing/test_resource_timing-expected.txt: Added.

Expected passing values on mac, except el capitan where this new resource timing data is unavailable.

10:40 PM Changeset in webkit [212943] by commit-queue@webkit.org
  • 17 edits
    2 adds in trunk

[Modern Media Controls] Controls overflow when media element has border or padding
https://bugs.webkit.org/show_bug.cgi?id=168818
<rdar://problem/30689780>

Patch by Antoine Quint <Antoine Quint> on 2017-02-23
Reviewed by Jon Lee.

Source/WebCore:

We used to query the media element's layout size to compute the size of the media controls,
which would account for border and padding. Instead, we should use the size of the container,
at the root of the ShadowRoot, which will always match the size of the media.

Test: media/modern-media-controls/media-controller/media-controller-controls-sizing-with-border-and-padding.html

  • Modules/modern-media-controls/controls/media-controls.css:

(.media-controls-container,):

  • Modules/modern-media-controls/media/media-controller.js:

(MediaController.prototype._updateControlsSize):
(MediaController.prototype._controlsWidth):

LayoutTests:

Updating a host of tests to ensure they have an explicitly host and add a new test
to check that we have the correct size with borders and padding.

  • media/modern-media-controls/fullscreen-support/fullscreen-support-click.html:
  • media/modern-media-controls/media-controller/media-controller-compact-expected.txt:
  • media/modern-media-controls/media-controller/media-controller-compact.html:
  • media/modern-media-controls/media-controller/media-controller-controls-sizing-with-border-and-padding-expected.txt: Added.
  • media/modern-media-controls/media-controller/media-controller-controls-sizing-with-border-and-padding.html: Added.
  • media/modern-media-controls/media-controller/media-controller-reduced-padding-expected.txt:
  • media/modern-media-controls/media-controller/media-controller-reduced-padding.html:
  • media/modern-media-controls/media-controller/media-controller-tight-padding-expected.txt:
  • media/modern-media-controls/media-controller/media-controller-tight-padding.html:
  • media/modern-media-controls/pip-support/pip-support-click.html:
  • media/modern-media-controls/scrubber-support/scrubber-support-click.html:
  • media/modern-media-controls/scrubber-support/scrubber-support-drag.html:
  • media/modern-media-controls/volume-support/volume-support-click.html:
  • media/modern-media-controls/volume-support/volume-support-drag.html:
  • media/track/track-cue-rendering-snap-to-lines-not-set.html: Turn modern media controls off for this test to pass.
9:41 PM Changeset in webkit [212942] by commit-queue@webkit.org
  • 5 edits
    1 copy
    1 add in trunk

[Modern Media Controls] Dragging controls in fullscreen on macOS prevents scrubbing or interacting with controls
https://bugs.webkit.org/show_bug.cgi?id=168820
<rdar://problem/30690281>

Patch by Antoine Quint <Antoine Quint> on 2017-02-23
Reviewed by Jon Lee.

Source/WebCore:

We broke this in https://bugs.webkit.org/show_bug.cgi?id=168755. We restore the check that the
event target when initiating a drag is the controls bar itself and not some of its content.

Since this wasn't caught by our existing tests, we add a test that attemps to initiate a drag
starting over one of the controls and notice that no dragging occurs.

Test: media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-drag-is-prevented-over-button.html

  • Modules/modern-media-controls/controls/macos-fullscreen-media-controls.js:

(MacOSFullscreenMediaControls.prototype._handleMousedown):

LayoutTests:

Making the existing test more robust and adding a new test that checks what happens
when we initiate a drag over some controls.

  • media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-drag-expected.txt:
  • media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-drag-is-prevented-over-button-expected.txt: Added.
  • media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-drag-is-prevented-over-button.html: Added.
  • media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-drag.html:
9:33 PM Changeset in webkit [212941] by Simon Fraser
  • 3 edits
    2 adds in trunk

REGRESSION (r211305): Masks on composited elements with preserve-3d broken
https://bugs.webkit.org/show_bug.cgi?id=168815
rdar://problem/30676846

Reviewed by Jon Lee.

Source/WebCore:

r211305 moved the mask layer to be on the structural layer if there is one, to fix
masking backdrops. However, with preserve-3d the structural layer can be a CATransformLayer,
which doesn't take a mask, so limit the previous change to backdrops only.

Test: compositing/masks/mask-with-preserve-3d.html

  • platform/graphics/ca/GraphicsLayerCA.cpp:

(WebCore::GraphicsLayerCA::updateMaskLayer):

LayoutTests:

  • compositing/masks/mask-with-preserve-3d-expected.html: Added.
  • compositing/masks/mask-with-preserve-3d.html: Added.
9:27 PM Changeset in webkit [212940] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

[Modern Media Controls] Show "Loading" until playback starts
https://bugs.webkit.org/show_bug.cgi?id=168809
<rdar://problem/30687468>

Patch by Antoine Quint <Antoine Quint> on 2017-02-23
Reviewed by Jon Lee.

We now display the "Loading" status as soon as we've started loading and
until we've obtained enough data to play. No test provided since we don't
have a way to specifically set networkState and readyState to the satisfactory
values.

  • Modules/modern-media-controls/media/status-support.js:

(StatusSupport.prototype.syncControl):
(StatusSupport):

8:07 PM Changeset in webkit [212939] by sbarati@apple.com
  • 28 edits
    2 adds in trunk

Intrinsicify parseInt
https://bugs.webkit.org/show_bug.cgi?id=168627

Reviewed by Filip Pizlo.

JSTests:

  • stress/parse-int-intrinsic.js: Added.

(assert):
(testIntrinsic.let.s):
(testIntrinsic):
(testIntrinsic2.baz):
(testIntrinsic2):
(testIntrinsic3.foo):
(testIntrinsic3):
(testIntrinsic4.foo):
(testIntrinsic4):
(testIntrinsic5.foo):
(testIntrinsic5):
(testIntrinsic6.foo):
(testIntrinsic6):
(testIntrinsic7.foo):
(testIntrinsic7):

Source/JavaScriptCore:

This patch makes parseInt an intrinsic in the DFG and FTL.
We do our best to eliminate this node. If we speculate that
the first operand to the operation is an int32, and that there
isn't a second operand, we convert to the identity of the first
operand. That's because parseInt(someInt) === someInt.

If the first operand is proven to be an integer, and the second
operand is the integer 0 or the integer 10, we can eliminate the
node by making it an identity over its first operand. That's
because parseInt(someInt, 0) === someInt and parseInt(someInt, 10) === someInt.

If we are not able to constant fold the node away, we try to remove
checks. The most common use case of parseInt is that its first operand
is a proven string. The DFG might be able to remove type checks in this
case. We also set up CSE rules for parseInt(someString, someIntRadix)
because it's a "pure" operation (modulo resolving a rope).

This looks to be a 4% Octane/Box2D progression.

  • dfg/DFGAbstractInterpreterInlines.h:

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

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::handleIntrinsicCall):

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

  • dfg/DFGConstantFoldingPhase.cpp:

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

  • dfg/DFGDoesGC.cpp:

(JSC::DFG::doesGC):

  • dfg/DFGFixupPhase.cpp:

(JSC::DFG::FixupPhase::fixupNode):

  • dfg/DFGNode.h:

(JSC::DFG::Node::hasHeapPrediction):

  • dfg/DFGNodeType.h:
  • dfg/DFGOperations.cpp:

(JSC::DFG::parseIntResult):

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

(JSC::DFG::safeToExecute):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileParseInt):

  • dfg/DFGSpeculativeJIT.h:

(JSC::DFG::SpeculativeJIT::callOperation):
(JSC::DFG::SpeculativeJIT::appendCallSetResult):

  • 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::compileParseInt):

  • jit/JITOperations.h:
  • parser/Lexer.cpp:
  • runtime/ErrorInstance.cpp:
  • runtime/Intrinsic.h:
  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::init):

  • runtime/JSGlobalObjectFunctions.cpp:

(JSC::toStringView): Deleted.
(JSC::isStrWhiteSpace): Deleted.
(JSC::parseDigit): Deleted.
(JSC::parseIntOverflow): Deleted.
(JSC::parseInt): Deleted.

  • runtime/JSGlobalObjectFunctions.h:
  • runtime/ParseInt.h: Added.

(JSC::parseDigit):
(JSC::parseIntOverflow):
(JSC::isStrWhiteSpace):
(JSC::parseInt):
(JSC::toStringView):

  • runtime/StringPrototype.cpp:
7:22 PM Changeset in webkit [212938] by Chris Dumez
  • 5 edits in trunk/LayoutTests

Unreviewed, try to reduce flakiness to timer throttling tests

Try to reduce flakiness to timer throttling tests by increasing
tolerance.

  • fast/dom/timer-throttling-hidden-page-expected.txt:
  • fast/dom/timer-throttling-hidden-page-non-nested-expected.txt:
  • fast/dom/timer-throttling-hidden-page-non-nested.html:
  • fast/dom/timer-throttling-hidden-page.html:
7:13 PM Changeset in webkit [212937] by matthew_hanson@apple.com
  • 1 copy in tags/Safari-603.1.30.1.20

Tag Safari-603.1.30.1.20.

7:12 PM Changeset in webkit [212936] by matthew_hanson@apple.com
  • 1 copy in tags/Safari-603.1.30.0.20

Tag Safari-603.1.30.0.20.

7:12 PM Changeset in webkit [212935] by rniwa@webkit.org
  • 3 edits in trunk/Websites/perf.webkit.org

REGRESSION(r212542): Make TimeSeriesChart.computeTimeGrid stops x-axis grid prematurely
https://bugs.webkit.org/show_bug.cgi?id=168812

Reviewed by Joseph Pecoraro.

Add time iterator of two months, three months, and four months with some tests.

Also for one-month time iterator, round the day of month to 1 or 15 whichever is closer.

  • browser-tests/time-series-chart-tests.js: Added more tests.
  • public/v3/components/time-series-chart.js:

(TimeSeriesChart._timeIterators.next):
(TimeSeriesChart._timeIterators):

7:11 PM Changeset in webkit [212934] by jfernandez@igalia.com
  • 2 edits in trunk/LayoutTests

[GTK] Layout test imported/w3c/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-api-texttracks.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=168799

Unreviewed test gardening.

  • platform/gtk/TestExpectations:
5:44 PM Changeset in webkit [212933] by commit-queue@webkit.org
  • 5 edits in trunk

[Modern Media Controls] Enforce a minimum layout height of 50pt for <audio>
https://bugs.webkit.org/show_bug.cgi?id=168801
<rdar://problem/30683453>

Patch by Antoine Quint <Antoine Quint> on 2017-02-23
Reviewed by Eric Carlson.

Source/WebCore:

We enforce a 50pt minimum layout height for <audio> elements. There is no way
for the page author to override this value since the min-height property is set
as !important in a <style> element contained in a ShadowRoot.

  • Modules/modern-media-controls/controls/media-controls.css:

(:host(audio)):

LayoutTests:

Update the existing <audio> metrics test to check that we correctly maintain
a 50pt minimum height even if an inline style attribute sets a shorter height
on an <audio> element, and also check that providing a taller height is respected.

  • media/modern-media-controls/audio/audio-controls-metrics-expected.txt:
  • media/modern-media-controls/audio/audio-controls-metrics.html:
5:22 PM Changeset in webkit [212932] by matthew_hanson@apple.com
  • 3 edits
    2 deletes in tags/Safari-603.1.30.0.4

Roll out r212737 via r212740. rdar://problem/30636274

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

[WebRTC] Outgoing video quality is poor
https://bugs.webkit.org/show_bug.cgi?id=168778
<rdar://problem/30674673>

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

Covered by manually ensuring the voice process thread is not spinning.

  • platform/mediastream/libwebrtc/LibWebRTCAudioModule.h: Setting the next call to max was not a good idea since the thread process is adding some value to it, making it a negative value.
3:38 PM Changeset in webkit [212930] by Wenson Hsieh
  • 4 edits in trunk/Source/WebCore

Data interaction with a URL should navigate the page if the operation is not handled
https://bugs.webkit.org/show_bug.cgi?id=168798
<rdar://problem/30665969>

Reviewed by Tim Horton.

Refactors some drag and drop code on the Mac, and implements PlatformPasteboard::stringForType.

  • page/DragController.cpp:

(WebCore::DragController::performDragOperation):

  • platform/ios/PlatformPasteboardIOS.mm:

(WebCore::PlatformPasteboard::stringForType):

  • platform/mac/DragDataMac.mm:
3:33 PM Changeset in webkit [212929] by Beth Dakin
  • 6 edits
    3 adds in trunk

Source/WebKit2:
No reliable way to get a snapshot of WKWebView
https://bugs.webkit.org/show_bug.cgi?id=161450
-and corresponding-
<rdar://problem/23846039>

Patch by Beth Dakin <Beth Dakin> + Dan Saunders <dasau@microsoft.com> on 2017-02-23
Reviewed by Tim Horton.

This patch adds a new API to WKWebView to snapshot a rect:
takeSnapshotWithConfiguration:completionHandler:

It also adds a new API object WKSnapshotConfiguration.

  • UIProcess/API/Cocoa/WKSnapshotConfiguration.h: Added.
  • UIProcess/API/Cocoa/WKSnapshotConfiguration.mm: Added.

(-[WKSnapshotConfiguration copyWithZone:]):

  • UIProcess/API/Cocoa/WKWebView.h:
  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView takeSnapshotWithConfiguration:completionHandler:]):

  • WebKit2.xcodeproj/project.pbxproj:

Tools:
No reliable way to get a snapshot of WKWebView (macOS)
https://bugs.webkit.org/show_bug.cgi?id=161450
-and corresponding-
<rdar://problem/23846039>

Patch by Beth Dakin <Beth Dakin> + Dan Saunders <dasau@microsoft.com> on 2017-02-23
Reviewed by Tim Horton.

Test for WKWebView’s new API takeSnapshotWithConfiguration:completionHandler:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit2Cocoa/WKWebViewSnapshot.mm: Added.

(convertToCGImage):
(getPixelIndex):
(TEST):

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

[WebRTC] RealtimeOutgoingAudioSource does not need to upsample audio buffers
https://bugs.webkit.org/show_bug.cgi?id=168796

Patch by Youenn Fablet <youenn@apple.com> on 2017-02-23
Reviewed by Jer Noble.

Covered by manual testing.
Limiting RealtimeOutgoingAudioSource conversion to interleaving and float-to-integer.
Removed the sample rate conversion.

  • platform/mediastream/mac/RealtimeOutgoingAudioSource.cpp:

(WebCore::libwebrtcAudioFormat):
(WebCore::RealtimeOutgoingAudioSource::audioSamplesAvailable):
(WebCore::RealtimeOutgoingAudioSource::pullAudioData):

2:52 PM Changeset in webkit [212927] by achristensen@apple.com
  • 5 edits in trunk/Source/WebCore

Re-soft-link CoreVideo after r212906
https://bugs.webkit.org/show_bug.cgi?id=168803

Reviewed by Jer Noble.

CoreVideo should be soft linked to reduce startup time.
Linking against the framework just for a few symbols used in one file was the wrong solution.

  • Configurations/WebCore.xcconfig:
  • platform/cocoa/CoreVideoSoftLink.cpp:
  • platform/cocoa/CoreVideoSoftLink.h:
  • platform/mediastream/mac/RealtimeOutgoingVideoSource.cpp:
2:51 PM Changeset in webkit [212926] by matthew_hanson@apple.com
  • 5 edits in tags/Safari-603.1.30.0.4/Source

Versioning.

2:35 PM Changeset in webkit [212925] by matthew_hanson@apple.com
  • 1 copy in tags/Safari-603.1.30.0.4

New Tag.

2:04 PM Changeset in webkit [212924] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebKit2

ASSERT in RTCNetwork::IPAddress::decode()
https://bugs.webkit.org/show_bug.cgi?id=168792

Reviewed by Tim Horton.

An ASSERT added to RTCNetwork::IPAddress::decode in r212781 was hit due to a bad encode of SocketAddress; an
extra boolean value was added to the encoder unnecessarily, leading to garbage data being decoded in the following
IPAddress.

Drive-by-fix: allow the IPAddress encoder/decoder to pass through a value of AF_UNSPEC for an IPAddress to support
passing through an "empty" IPAddress value.

  • Shared/RTCNetwork.cpp:

(WebKit::RTCNetwork::IPAddress::decode):
(WebKit::RTCNetwork::IPAddress::encode):
(WebKit::RTCNetwork::SocketAddress::encode):

1:39 PM Changeset in webkit [212923] by rniwa@webkit.org
  • 8 edits in trunk/Websites/perf.webkit.org

Add tests for InteractiveTimeSeriesChart and adopt actions
https://bugs.webkit.org/show_bug.cgi?id=168750

Reviewed by Chris Dumez.

Added tests for InteractiveTimeSeriesChart.

Also replaced selection.onchange, selection.onzoom, indicator.onchange, annotations.onclick callbacks
by "selectionChange", "zoom", "indicatorChange", and "annotationClick" actions respectively.

Also fixed various bugs and bad code I encountered while writing these tests.

  • browser-tests/index.html:

(waitForComponentsToRender): Delay the call to enqueueToRender until the next run loop because there
might be outstanding promises that just got resolved. e.g. for fetching measurement sets JSONs. Let
all those promises get resolved first. Otherwise, some tests become racy.
(canvasImageData): Extracted from time-series-chart-tests.js.
(canvasRefTest): Ditto.
(CanvasTest): Ditto.
(CanvasTest.fillCanvasBeforeRedrawCheck): Ditto.
(CanvasTest.hasCanvasBeenRedrawn): Ditto.
(CanvasTest.canvasImageData): Ditto.
(CanvasTest.expectCanvasesMatch): Ditto.
(CanvasTest.expectCanvasesMismatch): Ditto.

  • browser-tests/time-series-chart-tests.js: Fixed some test cases where dpr multipler was not doing

the right thing anymore in Safari under a high DPI screen. Also added a lot of test cases for interactive
time series chart and one for rendering annotations.
(scripts): Moved.
(posixTime): Added. A helper function for sampleCluster.
(dayInMilliseconds): Ditto.
(sampleCluster): Moved here. Made the same cluster more artifical for an easier testing.
(createChartWithSampleCluster): Moved out of one of the tests.
(respondWithSampleCluster): Ditto.

  • public/v3/components/chart-pane-base.js:

(ChartPaneBase.prototype.configure): Adopted new actions in InteractiveTimeSeriesChart.

  • public/v3/components/chart-status-view.js:

(ChartStatusView.prototype.updateStatusIfNeeded): Removed a superflous console.log.

  • public/v3/components/chart-styles.js:

(ChartStyles.mainChartOptions): Set zoomButton to true. InteractiveTimeSeriesChart used to determine
whether to show the zoom button or not based on the precense of the zoom callback. We made it explicit.

  • public/v3/components/interactive-time-series-chart.js:

(InteractiveTimeSeriesChart.prototype.setIndicator): Explicitly call _notifySelectionChanged with false
instead of relying on undefined to be treated as falsey.
(InteractiveTimeSeriesChart.prototype._createCanvas): Use id instead of selector to find elements.
(InteractiveTimeSeriesChart.htmlTemplate):
(InteractiveTimeSeriesChart.cssTemplate):
(InteractiveTimeSeriesChart.prototype._mouseMove): Explicitly call _startOrContinueDragging with false
instead of relying on undefined treated as falsey. Also added the missing call to enqueueToRender found
by new tests. This was working fine on the dashboard due to other components invoking enqueueToRender
but won't work in a standalone instance of InteractiveTimeSeriesChart.
(InteractiveTimeSeriesChart.prototype._mouseLeave): Ditto, adding the missing call to enqueueToRender.
(InteractiveTimeSeriesChart.prototype._click): Removed the assignment to _forceRender when calling
_mouseMove in an early exist, which does set this flag and invokes enqueueToRender, and added the missing
call to enqueueToRender in the other code path.
(InteractiveTimeSeriesChart.prototype._startOrContinueDragging): Replaced annotations.onclick callback
by the newly added "annotationClick" action, and added the missing call to enqueueToRender.
(InteractiveTimeSeriesChart.prototype._endDragging): Use arrow function.
(InteractiveTimeSeriesChart.prototype._notifyIndicatorChanged): Replaced indicator.onchange callback by
the newly added "indicatorChange" action.
(InteractiveTimeSeriesChart.prototype._notifySelectionChanged): Replaced selection.onchange callback by
the newly added "selectionChange" action.
(InteractiveTimeSeriesChart.prototype._renderChartContent): Show the zoom button when options.zoomButton
is set instead of relying on the presence of selection.onzoom especially now that the callback has been
replaced by the "zoom" action.

  • public/v3/components/time-series-chart.js:

(TimeSeriesChart.prototype.setAnnotations): Added the missing call to enqueueToRender.

  • public/v3/main.js:
1:36 PM Changeset in webkit [212922] by jfbastien@apple.com
  • 63 edits in trunk

WebAssembly: support 0x1 version
https://bugs.webkit.org/show_bug.cgi?id=168672

Reviewed by Keith Miller.

JSTests:

Update the version number for all the tests. Note that the spec
tests are only updated with a new version number because spec+wabt
aren't ready for 0x1 yet. This is tracked by bug #168784.

  • wasm/import-spec-tests.rb: use the new spec repository layout
  • wasm/js-api/test_basic_api.js:
  • wasm/self-test/test_BuilderWebAssembly.js:

(EmptyModule):
(CustomSection):

  • wasm/spec-tests/address.wast.js:
  • wasm/spec-tests/binary.wast.js:
  • wasm/spec-tests/block.wast.js:
  • wasm/spec-tests/br.wast.js:
  • wasm/spec-tests/br_if.wast.js:
  • wasm/spec-tests/br_table.wast.js:
  • wasm/spec-tests/break-drop.wast.js:
  • wasm/spec-tests/call.wast.js:
  • wasm/spec-tests/call_indirect.wast.js:
  • wasm/spec-tests/comments.wast.js:
  • wasm/spec-tests/conversions.wast.js:
  • wasm/spec-tests/custom_section.wast.js:
  • wasm/spec-tests/endianness.wast.js:
  • wasm/spec-tests/exports.wast.js:
  • wasm/spec-tests/f32.wast.js:
  • wasm/spec-tests/f32_cmp.wast.js:
  • wasm/spec-tests/f64.wast.js:
  • wasm/spec-tests/f64_cmp.wast.js:
  • wasm/spec-tests/fac.wast.js:
  • wasm/spec-tests/float_exprs.wast.js:
  • wasm/spec-tests/float_literals.wast.js:
  • wasm/spec-tests/float_memory.wast.js:
  • wasm/spec-tests/float_misc.wast.js:
  • wasm/spec-tests/forward.wast.js:
  • wasm/spec-tests/func.wast.js:
  • wasm/spec-tests/func_ptrs.wast.js:
  • wasm/spec-tests/get_local.wast.js:
  • wasm/spec-tests/globals.wast.js:
  • wasm/spec-tests/i32.wast.js:
  • wasm/spec-tests/i64.wast.js:
  • wasm/spec-tests/imports.wast.js:
  • wasm/spec-tests/int_exprs.wast.js:
  • wasm/spec-tests/int_literals.wast.js:
  • wasm/spec-tests/left-to-right.wast.js:
  • wasm/spec-tests/linking.wast.js:
  • wasm/spec-tests/loop.wast.js:
  • wasm/spec-tests/memory.wast.js:
  • wasm/spec-tests/memory_redundancy.wast.js:
  • wasm/spec-tests/memory_trap.wast.js:
  • wasm/spec-tests/names.wast.js:
  • wasm/spec-tests/nop.wast.js:
  • wasm/spec-tests/resizing.wast.js:
  • wasm/spec-tests/return.wast.js:
  • wasm/spec-tests/select.wast.js:
  • wasm/spec-tests/set_local.wast.js:
  • wasm/spec-tests/skip-stack-guard-page.wast.js:
  • wasm/spec-tests/stack.wast.js:
  • wasm/spec-tests/start.wast.js:
  • wasm/spec-tests/store_retval.wast.js:
  • wasm/spec-tests/switch.wast.js:
  • wasm/spec-tests/tee_local.wast.js:
  • wasm/spec-tests/traps.wast.js:
  • wasm/spec-tests/typecheck.wast.js:
  • wasm/spec-tests/unreachable.wast.js:
  • wasm/spec-tests/unwind.wast.js:
  • wasm/wasm.json:

Source/JavaScriptCore:

  • wasm/wasm.json: update the version number, everything is based

on its value

1:25 PM Changeset in webkit [212921] by sbarati@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Make Briggs fixpoint validation run only with validateGraphAtEachPhase
https://bugs.webkit.org/show_bug.cgi?id=168795

Rubber stamped by Keith Miller.

The Briggs allocator was running intensive validation
on each step of the fixpoint. Instead, it now will just
do it when shouldValidateIRAtEachPhase() is true because
doing this for all !ASSERT_DISABLED builds takes too long.

  • b3/air/AirAllocateRegistersByGraphColoring.cpp:
12:56 PM Changeset in webkit [212920] by Chris Dumez
  • 4 edits in trunk/Source/WebCore

Report domains using abnormally high CPU usage via enhanced privacy logging
https://bugs.webkit.org/show_bug.cgi?id=168794
<rdar://problem/29964018>

Reviewed by Ryosuke Niwa.

Report domains using abnormally high CPU usage (> 20%) via enhanced privacy
logging.

  • page/DiagnosticLoggingKeys.cpp:

(WebCore::DiagnosticLoggingKeys::domainCausingEnergyDrainKey):

  • page/DiagnosticLoggingKeys.h:
  • page/PerformanceMonitor.cpp:

(WebCore::reportPageOverPostLoadCPUUsageThreshold):
(WebCore::PerformanceMonitor::measurePostLoadCPUUsage):

12:51 PM Changeset in webkit [212919] by matthew_hanson@apple.com
  • 3 edits in branches/safari-603-branch/Source/WebCore

Merge r212828. rdar://problem/30636274

12:51 PM Changeset in webkit [212918] by matthew_hanson@apple.com
  • 3 edits
    2 deletes in branches/safari-603-branch

Roll out r212737 via r212740. rdar://problem/30636274

12:51 PM Changeset in webkit [212917] by matthew_hanson@apple.com
  • 4 edits in branches/safari-603-branch/Source/WebCore

Merge r212554. rdar://problem/30636115

12:51 PM Changeset in webkit [212916] by matthew_hanson@apple.com
  • 2 edits in branches/safari-603-branch/Source/JavaScriptCore

rdar://problem/30635733

12:39 PM Changeset in webkit [212915] by eric.carlson@apple.com
  • 2 edits in trunk/Source/WebKit2

[WebRTC][Mac][WebKit2] WebRTC requires media capture
https://bugs.webkit.org/show_bug.cgi?id=168782
<rdar://problem/30675242>

Reviewed by Youenn Fablet.

  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::platformInitializeWebProcess): Extend the sanbox to allow microphone access
if media stream OR WebRTC is enabled.

12:32 PM Changeset in webkit [212914] by matthew_hanson@apple.com
  • 6 edits in trunk/Source

Versioning.

12:24 PM Changeset in webkit [212913] by commit-queue@webkit.org
  • 4 edits in trunk/Source/WebInspectorUI

Web Inspector: RTL: DOM Tree spacing is wrong
https://bugs.webkit.org/show_bug.cgi?id=168744

Patch by Devin Rousso <Devin Rousso> on 2017-02-23
Reviewed by Brian Burg.

  • UserInterface/Base/Utilities.js:

(Element.prototype.totalOffsetRight):

  • UserInterface/Views/DOMTreeOutline.css:

(.tree-outline.dom):
(.tree-outline.dom ol):
(body[dir=ltr] .tree-outline.dom ol):
(body[dir=rtl] .tree-outline.dom ol):
(.tree-outline.dom li:matches(.hovered, .selected) + ol.children.expanded):
(body[dir=ltr] .tree-outline.dom li:matches(.hovered, .selected) + ol.children.expanded):
(body[dir=rtl] .tree-outline.dom li:matches(.hovered, .selected) + ol.children.expanded):
(.tree-outline.dom li.selected + ol.children.expanded):
(.tree-outline.dom li):
(body[dir=ltr] .tree-outline.dom li):
(body[dir=rtl] .tree-outline.dom li):
(.tree-outline.dom li.pseudo-class-enabled > .selection-area::before):
(body[dir=rtl] .tree-outline.dom li.pseudo-class-enabled > .selection-area::before):
(body[dir=ltr] .tree-outline.dom.single-node li):
(body[dir=rtl] .tree-outline.dom.single-node li):
(.tree-outline.dom li.parent):
(body[dir=ltr] .tree-outline.dom li.parent):
(body[dir=rtl] .tree-outline.dom li.parent):
(body[dir=ltr] .tree-outline.dom li .html-tag.close):
(body[dir=rtl] .tree-outline.dom li .html-tag.close):
(.tree-outline.dom li.parent::before):
(body[dir=rtl] .tree-outline.dom li.parent::before):
(body[dir=ltr] .tree-outline.dom li.parent::before):
(.tree-outline.dom li.parent.shadow::after):
(body[dir=ltr] .tree-outline.dom li.parent.shadow::after):
(body[dir=rtl] .tree-outline.dom li.parent.shadow::after):
(.tree-outline.dom.single-node li): Deleted.
(.tree-outline.dom li .html-tag.close): Deleted.

  • UserInterface/Views/TreeElement.js:

(WebInspector.TreeElement.prototype.isEventWithinDisclosureTriangle):
Calculate the position of the ::before triangle based on the layout direction.

12:12 PM Changeset in webkit [212912] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

Simple line layout: Adjust RunResolver::lineIndexForHeight with line struts.
https://bugs.webkit.org/show_bug.cgi?id=168783
<rdar://problem/30676449>

Reviewed by Antti Koivisto.

When there's a pagination gap between lines the simple lineIndex = y / lineHeight formula does not work anymore.
This patch takes the line gaps into account by offsetting the y position accordingly.

Not enabled yet.

  • rendering/SimpleLineLayoutResolver.cpp:

(WebCore::SimpleLineLayout::RunResolver::lineIndexForHeight):

11:56 AM Changeset in webkit [212911] by sbarati@apple.com
  • 2 edits in trunk/Tools

Speculative fix for jsc timing out tests
https://bugs.webkit.org/show_bug.cgi?id=168791

Rubber Stamped by Keith Miller.

Play musical chairs with IRC and Briggs options on
ftl-eager and ftl-eager-no-cjit.

  • Scripts/run-jsc-stress-tests:
11:55 AM Changeset in webkit [212910] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: RTL: navigation sidebar section disclosure triangles and tree element icons should be aligned right
https://bugs.webkit.org/show_bug.cgi?id=168284

Patch by Devin Rousso <Devin Rousso> on 2017-02-23
Reviewed by Brian Burg.

  • UserInterface/Views/TreeOutline.css:

(.tree-outline,):
(.tree-outline.large .item):
(body[dir=ltr] .tree-outline .item :matches(.disclosure-button, .icon)):
(body[dir=rtl] .tree-outline .item :matches(.disclosure-button, .icon)):
(body[dir=ltr] .tree-outline:not(.hide-disclosure-buttons) .item:not(.parent) > .icon):
(body[dir=rtl] .tree-outline:not(.hide-disclosure-buttons) .item:not(.parent) > .icon):
(.tree-outline .item .disclosure-button):
(body[dir=rtl] .tree-outline .item .disclosure-button):
(.tree-outline .item .icon):
(body[dir=ltr] .tree-outline .item .icon):
(body[dir=rtl] .tree-outline .item .icon):
(.tree-outline.large .item .icon):
(.tree-outline .item .status):
(body[dir=ltr] .tree-outline .item .status):
(body[dir=rtl] .tree-outline .item .status):
(.tree-outline:not(.hide-disclosure-buttons) .item:not(.parent) > .icon): Deleted.

  • UserInterface/Views/TreeOutline.js:

(WebInspector.TreeOutline._generateStyleRulesIfNeeded):

11:47 AM Changeset in webkit [212909] by fpizlo@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

SpeculativeJIT::compilePutByValForIntTypedArray should only do the constant-folding optimization when the constant passes the type check
https://bugs.webkit.org/show_bug.cgi?id=168787

Reviewed by Michael Saboff and Mark Lam.

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compilePutByValForIntTypedArray):

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

Ensure that the end of the last invalidation point does not extend beyond the end of the buffer.
https://bugs.webkit.org/show_bug.cgi?id=168786

Reviewed by Filip Pizlo.

In practice, we will always have multiple instructions after invalidation points,
and have enough room in the JIT buffer for the invalidation point to work with.
However, as a precaution, we can guarantee that there's enough room by always
emitting a label just before we link the buffer. The label will emit nop padding
if needed.

  • assembler/LinkBuffer.cpp:

(JSC::LinkBuffer::linkCode):

11:25 AM Changeset in webkit [212907] by achristensen@apple.com
  • 2 edits in trunk/Websites/webkit.org

Add WebRTC to experimental-features.html
https://bugs.webkit.org/show_bug.cgi?id=168757

Reviewed by Tim Horton.

  • experimental-features.html:
11:22 AM Changeset in webkit [212906] by achristensen@apple.com
  • 2 edits in trunk/Source/WebCore

Fix iOS WebRTC build after r212812
https://bugs.webkit.org/show_bug.cgi?id=168790

Reviewed by Tim Horton.

  • Configurations/WebCore.xcconfig:
11:04 AM Changeset in webkit [212905] by clopez@igalia.com
  • 4 edits in trunk/Tools

Improve error message when the WPT server fails to start.
https://bugs.webkit.org/show_bug.cgi?id=168759

Reviewed by Ryosuke Niwa.

Check if the WPT server is running after 1 second, and if is not
print useful information for helping the user to debug the issue.

Using check_running_pid() to check if the process is still running
doesn't work. A process started via subprocess popen that has ended
will be in a zombie state until a call to wait/communicate/poll
is done, or until the object is deleted or garbage collected.

This adds also support for testing the behaviour of subprocess
poll() on the unit tests that use MockProcess.

A new test is added also for the battery of tests for the WPT
server.

  • Scripts/webkitpy/common/system/executive_mock.py:

(MockProcess.init):
(MockProcess.wait):
(MockProcess.communicate):
(MockProcess.poll):
(MockExecutive.popen):

  • Scripts/webkitpy/layout_tests/servers/web_platform_test_server.py:

(WebPlatformTestServer.init):
(WebPlatformTestServer._prepare_config):
(WebPlatformTestServer._spawn_process):

  • Scripts/webkitpy/layout_tests/servers/web_platform_test_server_unittest.py:

(TestWebPlatformTestServer.test_corrupted_subserver_files):
(TestWebPlatformTestServer):
(TestWebPlatformTestServer.test_server_fails_to_start_throws_exception):

11:01 AM Changeset in webkit [212904] by Brent Fulgham
  • 2 edits in trunk/Source/WebKit2

[Mac] Remove unneeded sandbox exceptions for media elements
https://bugs.webkit.org/show_bug.cgi?id=168767

Reviewed by Alex Christensen.

Remove several sandbox exceptions that have not been needed for the past four
or five macOS releases.

  • WebProcess/com.apple.WebProcess.sb.in:
11:00 AM Changeset in webkit [212903] by aakash_jain@apple.com
  • 3 edits in trunk/Source/WebKit/ios

Move instance member from WebFixedPositionContent to implementation file
https://bugs.webkit.org/show_bug.cgi?id=168766

Reviewed by Tim Horton.

  • WebCoreSupport/WebFixedPositionContent.h: Moving instance member to implementation file.
  • WebCoreSupport/WebFixedPositionContent.mm: Ditto.
10:59 AM Changeset in webkit [212902] by Brent Fulgham
  • 3 edits in trunk/Source/WebKit2

[Mac] Remove com.apple.audio.VDCAssistant from sandboxes
https://bugs.webkit.org/show_bug.cgi?id=168764
<rdar://problem/16736919>

Reviewed by Alex Christensen.

Remove unneeded sandbox class.

  • PluginProcess/mac/com.apple.WebKit.plugin-common.sb.in:
  • WebProcess/com.apple.WebProcess.sb.in:
10:25 AM Changeset in webkit [212901] by Wenson Hsieh
  • 2 edits in trunk/Tools

Unreviewed, temporarily disable DataInteractionTests in TestWebKitAPI.

These will be reenabled in https://bugs.webkit.org/show_bug.cgi?id=168602.

  • TestWebKitAPI/Tests/ios/DataInteractionTests.mm:
10:20 AM Changeset in webkit [212900] by keith_miller@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed, fix the cloop build. Needed a #if.

  • jit/ExecutableAllocator.cpp:
10:18 AM Changeset in webkit [212899] by Jon Davis
  • 2 edits in trunk/Websites/webkit.org

Fixed saving survey data
https://bugs.webkit.org/show_bug.cgi?id=168730

Reviewed by Joseph Pecoraro.

  • wp-content/themes/webkit/functions.php:
9:23 AM Changeset in webkit [212898] by Wenson Hsieh
  • 9 edits in trunk

Data interaction causes selection to fall out of sync between web/UI processes
https://bugs.webkit.org/show_bug.cgi?id=168735
<rdar://problem/30657817>

Reviewed by Tim Horton.

Source/WebKit2:

Fixes a bug with data interaction causing selection state to fall out of sync between the UI and web processes,
and also introduces testing infrastructure and tests for grabbing UI-side selection view rects in TestWebKitAPI.
While performing a data interaction operation, we now lift restrictions for assisting the focused node.

  • UIProcess/ios/WKContentViewInteraction.h:
  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView cleanupInteraction]):
(-[WKContentView _startAssistingNode:userIsInteracting:blurPreviousNode:userObject:]):

Tools:

Adds a new method to TestWKWebView for querying selection view rects from the UI process and augments data
interaction unit tests to check for selection rects using this new hook.

  • TestWebKitAPI/Tests/ios/DataInteractionTests.mm:

(makeCGRectValue):
(TestWebKitAPI::TEST):

  • TestWebKitAPI/cocoa/TestWKWebView.h:
  • TestWebKitAPI/cocoa/TestWKWebView.mm:

(-[TestWKWebView selectionRectsAfterPresentationUpdate]):

  • TestWebKitAPI/ios/DataInteractionSimulator.h:
  • TestWebKitAPI/ios/DataInteractionSimulator.mm:

(-[DataInteractionSimulator _resetSimulatedState]):
(-[DataInteractionSimulator runFrom:to:]):
(-[DataInteractionSimulator finalSelectionRects]):

8:58 AM Changeset in webkit [212897] by matthew_hanson@apple.com
  • 2 edits in branches/safari-603.1.30.0-branch/Source/JavaScriptCore

rdar://problem/30635733

8:58 AM Changeset in webkit [212896] by matthew_hanson@apple.com
  • 5 edits in branches/safari-603.1.30.0-branch/Source

Versioning.

8:54 AM Changeset in webkit [212895] by matthew_hanson@apple.com
  • 3 edits in branches/safari-603.1.30.1-branch/Source/WebCore

Merge r212828. rdar://problem/30636288

8:54 AM Changeset in webkit [212894] by matthew_hanson@apple.com
  • 3 edits
    2 deletes in branches/safari-603.1.30.1-branch

Roll out r212737 via r212740. rdar://problem/30636288

8:54 AM Changeset in webkit [212893] by matthew_hanson@apple.com
  • 4 edits in branches/safari-603.1.30.1-branch/Source/WebCore

Merge r212554. rdar://problem/30636115

8:54 AM Changeset in webkit [212892] by matthew_hanson@apple.com
  • 5 edits in branches/safari-603.1.30.1-branch/Source

Versioning.

8:47 AM Changeset in webkit [212891] by Carlos Garcia Campos
  • 5 edits in trunk/Source/WebKit2

[GTK] Crash attempting to load Flash plugin in Wayland
https://bugs.webkit.org/show_bug.cgi?id=163159

Reviewed by Michael Catanzaro.

The problem is that we check if the current diplay is X11 or Wayland also in the plugin process, but with GTK2
plugins the display is always X11. We should early reject plugins requiring GTK2 in the UI process when the
current display is Wayland.

  • UIProcess/Plugins/unix/PluginInfoStoreUnix.cpp:

(WebKit::PluginInfoStore::getPluginInfo):

  • UIProcess/Plugins/unix/PluginProcessProxyUnix.cpp:

(WebKit::PluginProcessProxy::scanPlugin):

  • UIProcess/gtk/WebPageProxyGtk.cpp:

(WebKit::WebPageProxy::createPluginContainer): Add an assert to ensure this message is never received on a
non-X11 display.

  • WebProcess/Plugins/PluginView.cpp:

(WebKit::PluginView::createPluginContainer): Never send CreatePluginContainer message to the UI process if the
display is not X11.

8:39 AM Changeset in webkit [212890] by clopez@igalia.com
  • 2 edits in trunk/LayoutTests

[GTK] Gardening of some flaky tests

Unreviewed.

  • platform/gtk/TestExpectations: Update some expectations or add new cases of flaky tests.
8:28 AM Changeset in webkit [212889] by Carlos Garcia Campos
  • 3 edits in trunk/Source/WebCore

[GStreamer] Several layout tests trigger GStreamer-CRITICAL : gst_bin_get_by_name: assertion 'GST_IS_BIN (bin)' failed
https://bugs.webkit.org/show_bug.cgi?id=167016

Reviewed by Xabier Rodriguez-Calvar.

This is because we create AudioSourceProviderGStreamer objects that are never loaded. In the destructor the
AudioSourceProviderGStreamer calls gst_bin_get_by_name() on its m_audioSinkBin that is nullptr. We could simply
check m_audioSinkBin in the destructor, but I think it's better to simply not create
AudioSourceProviderGStreamer for nothing. MediaPlayerPrivateGStreamer should create the AudioSourceProvider on demand.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::MediaPlayerPrivateGStreamer): Do not create the AudioSourceProvider.
(WebCore::MediaPlayerPrivateGStreamer::createAudioSink): Call ensureAudioSourceProvider() before using m_audioSourceProvider.
(WebCore::MediaPlayerPrivateGStreamer::ensureAudioSourceProvider): Create the AudioSourceProvider if needed.
(WebCore::MediaPlayerPrivateGStreamer::audioSourceProvider): Ensure and return the m_audioSourceProvider.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:
8:15 AM Changeset in webkit [212888] by matthew_hanson@apple.com
  • 3 edits in branches/safari-603.1.30.0-branch/Source/WebCore

Merge r212828. rdar://problem/30636274

8:15 AM Changeset in webkit [212887] by matthew_hanson@apple.com
  • 3 edits
    2 deletes in branches/safari-603.1.30.0-branch

Roll out r212737 via r212740. rdar://problem/30636274

8:15 AM Changeset in webkit [212886] by matthew_hanson@apple.com
  • 4 edits in branches/safari-603.1.30.0-branch/Source/WebCore

Merge r212554. rdar://problem/30636115

8:15 AM Changeset in webkit [212885] by matthew_hanson@apple.com
  • 5 edits in branches/safari-603.1.30.0-branch/Source

Versioning.

7:54 AM Changeset in webkit [212884] by clopez@igalia.com
  • 3 edits
    1 delete in trunk/LayoutTests

[GTK] MediaStream and WebRTC layout test gardening

Unreviewed.

  • TestExpectations: Clarify some comments.
  • platform/gtk/TestExpectations: Unskip most of the MediaStream / WebRTC tests for GTK and mark the expected failures accordingly.
  • platform/gtk/fast/mediastream/RTCPeerConnection-more-media-to-negotiate-expected.txt: Removed. The test passes on GTK with the

general test expectation.

7:13 AM Changeset in webkit [212883] by eric.carlson@apple.com
  • 2 edits in trunk/Source/WebKit2

[MediaStream iOS] Allow web process sandbox to be extended for media capture
https://bugs.webkit.org/show_bug.cgi?id=168756

Reviewed by Brent Fulgham.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb: Add rules to dynamically

extend the sandbox to allow access to the camera and/or microphone.

3:27 AM Changeset in webkit [212882] by tpopela@redhat.com
  • 2 edits in trunk

[GTK] Compilation fails if using ninja together with icecream and cmake > 3.5
https://bugs.webkit.org/show_bug.cgi?id=168770

Reviewed by Carlos Garcia Campos.

If using cmake >= 3.6 together with ninja generator and icecream, the
build will fail as icecream does not correctly handle the response
files and it's not passing compiler flags from there to the compiler
itself (in our case it's not passing -fPIC which leads to the
failure while linking). Don't enable the ninja's response files
support if we fulfill the preconditions.

  • Source/cmake/OptionsCommon.cmake:
3:24 AM Changeset in webkit [212881] by tpopela@redhat.com
  • 9 edits
    2 adds in trunk

[GTK] Drag and drop is always moving the content even if copy is requested
https://bugs.webkit.org/show_bug.cgi?id=168424

Reviewed by Carlos Garcia Campos.

Source/WebCore:

Drag and drop is always moving the content around even if the copy is
requested (i.e. by pressing the Control key).

Test: editing/pasteboard/drag-drop-copy-content.html

  • page/gtk/DragControllerGtk.cpp:

(WebCore::DragController::isCopyKeyDown):

Source/WebKit2:

Drag and drop is always moving the content around even if the copy is
requested (i.e. by pressing the Control key).

  • UIProcess/gtk/DragAndDropHandler.cpp:

(WebKit::DragAndDropHandler::drop):

LayoutTests:

Mark the editing/pasteboard/drag-drop-copy-content.html as failing
as WTR doesn't know how to perform drag and drop in WK2. Also the
test does not pass on the mac WK1, created a bug for it.

  • platform/efl/TestExpectations:
  • platform/gtk-wayland/TestExpectations:
  • platform/gtk/TestExpectations:
  • platform/mac-wk2/TestExpectations:
  • platform/mac/TestExpectations:
Note: See TracTimeline for information about the timeline view.